- భాగాలు అవసరం
- APDS9960 RGB & సంజ్ఞ సెన్సార్
- సర్క్యూట్ రేఖాచిత్రం
- కోడ్ వివరణ
- సంజ్ఞ నియంత్రిత టచ్లెస్ లిఫ్ట్ను పరీక్షిస్తోంది
కరోనా మహమ్మారి యొక్క ఈ సమయంలో, ఎలివేటర్లు ప్రతి ఒక్కరూ ఒకే బటన్లను తాకిన అధిక-ప్రమాద ప్రదేశంగా మారాయి. చాలా చోట్ల, లిఫ్ట్ బటన్లను నొక్కడానికి పంపింగ్ పేపర్, టూత్పిక్లు లేదా శానిటరీ కణజాలాలను ఉపయోగించడం వంటి ఎలివేటర్ బటన్లతో సంబంధాన్ని నివారించడానికి ప్రజలు ఉపాయాలు కనుగొన్నారు.
కాబట్టి ఆటోమేటిక్ శానిటైజర్ మెషిన్, కాంటాక్ట్లెస్ టెంపరేచర్ మానిటరింగ్ మరియు సోషల్ డిస్టెన్స్ డిటెక్టర్ వంటి మా మునుపటి కరోనా భద్రతా ప్రాజెక్టుల కొనసాగింపుగా, ఇక్కడ మేము ఆర్డునో నానో ఉపయోగించి సంజ్ఞ నియంత్రిత ఎలివేటర్ ప్రోటోటైప్ను నిర్మించబోతున్నాము.
ఈ కాంటాక్ట్లెస్ ఎలివేటర్ అర్డునో నానో, APDS9960 సంజ్ఞ సెన్సార్ మరియు OLED డిస్ప్లే మాడ్యూల్ను ఉపయోగిస్తోంది. ఈ సంజ్ఞ ఆధారిత నియంత్రణ ప్యానెల్తో, మీరు చేతి సంజ్ఞ చేయడం ద్వారా మీ లిఫ్ట్ను సులభంగా నియంత్రించవచ్చు. హావభావాలను చదవడానికి APDS9960 సెన్సార్ ఉపయోగించబడుతుంది. ఫ్లోర్ నంబర్ను సెట్ చేయడానికి UP మరియు DOWN హావభావాలు ఉపయోగించబడతాయి, ఎడమ సంజ్ఞ లిఫ్ట్ తలుపును మూసివేసి ఫ్లోర్ నంబర్ ప్రకారం లిఫ్ట్ను తరలించడం మరియు తలుపు తెరవడానికి కుడి సంజ్ఞ ఉపయోగించబడుతుంది.
భాగాలు అవసరం
- ఆర్డునో నానో
- OLED డిస్ప్లే మాడ్యూల్
- APDS9960 RGB & సంజ్ఞ సెన్సార్
- బ్రెడ్బోర్డ్
- జంపర్ వైర్లు
APDS9960 RGB & సంజ్ఞ సెన్సార్
APDS9960 RGB & సంజ్ఞ డిటెక్షన్ మాడ్యూల్ ఒక చిన్న బ్రేక్అవుట్ బోర్డు, ఇది అంతర్నిర్మిత APDS-9960 సెన్సార్, UV మరియు IR బ్లాకింగ్ ఫిల్టర్లు, వేర్వేరు దిశలకు సున్నితమైన నాలుగు వేర్వేరు డయోడ్లు మరియు I2C అనుకూల ఇంటర్ఫేస్తో వస్తుంది. ఈ సెన్సార్ పరిసర కాంతి మరియు రంగు కొలత, సామీప్యత గుర్తింపు మరియు టచ్లెస్ సంజ్ఞ సెన్సింగ్ కోసం ఉపయోగించవచ్చు. ఇది 10 నుండి 20 సెం.మీ వరకు సంజ్ఞను గుర్తించే పరిధిని కలిగి ఉంది మరియు మైక్రోకంట్రోలర్, రోబోట్ మరియు అనేక ఇతర ప్రాజెక్టులలో నియంత్రించడానికి ఉపయోగించవచ్చు.
లక్షణాలు:
- కార్యాచరణ వోల్టేజ్: 2.4 వి నుండి 3.6 వి
- ఆపరేటింగ్ రేంజ్: 4-8in (10-20 సెం.మీ).
- I2C ఇంటర్ఫేస్ (I2C చిరునామా: 0x39).
- యాంబియంట్ లైట్ మరియు RGB కలర్ సెన్సింగ్, సామీప్యం
- ఆప్టికల్ మాడ్యూల్లో సెన్సింగ్ మరియు సంజ్ఞ గుర్తింపు
- I2C- బస్ ఫాస్ట్ మోడ్ 400 kHz వరకు డేటా రేట్లతో అనుకూలమైన ఇంటర్ఫేస్.
సర్క్యూట్ రేఖాచిత్రం
APDS9960 ఉపయోగించి కాంటాక్ట్లెస్ ఎలివేటర్ కోసం సర్క్యూట్ రేఖాచిత్రం క్రింద ఇవ్వబడింది.
మేము ఆర్డినో నానోను APDS9960 సెన్సార్ మరియు OLED డిస్ప్లేతో ఇంటర్ఫేస్ చేస్తున్నాము. APDS9960 సెన్సార్ మరియు OLED డిస్ప్లే రెండింటి యొక్క VCC మరియు GND పిన్స్ 3.3V మరియు ఆర్డునో యొక్క GND కి అనుసంధానించబడి ఉన్నాయి. APDS9960 సెన్సార్ మరియు OLED డిస్ప్లే యొక్క SCL మరియు SDA పిన్లు Arduino యొక్క A5 మరియు A4 పిన్లకు అనుసంధానించబడి ఉన్నాయి.
OLED & APDS9960 పిన్ |
ఆర్డునో నానో పిన్ |
వీసీసీ |
3.3 వి |
GND |
GND |
ఎస్సీఎల్ |
A5 |
SDA |
ఎ 4 |
ఆర్డునో ఉపయోగించి సంజ్ఞ నియంత్రిత ఎలివేటర్ కోసం పూర్తి సెటప్ ఈ విధంగా కనిపిస్తుంది:
OLED డిస్ప్లే మరియు ఇతర మైక్రోకంట్రోలర్లతో దాని ఇంటర్ఫేసింగ్ గురించి మరింత తెలుసుకోవడానికి, లింక్ను అనుసరించండి.
కోడ్ వివరణ
APDS9960 ఉపయోగించి కాంటాక్ట్లెస్ ఎలివేటర్ కోసం పూర్తి కోడ్ పేజీ చివరిలో ఇవ్వబడింది. ఇక్కడ మేము కోడ్ యొక్క కొన్ని ముఖ్యమైన భాగాలను వివరిస్తున్నాము. ఈ ప్రోగ్రామ్లో, మేము APDS9960 మరియు Adafruit_SH1106 లైబ్రరీలను ఉపయోగించబోతున్నాము . APDS9960 లైబ్రరీని Arduino IDE నుండి డౌన్లోడ్ చేసుకోవచ్చు. లైబ్రరీని డౌన్లోడ్ చేయడానికి, స్కెచ్> లైబ్రరీ మేనేజర్> సెర్చ్కు వెళ్లి, ఆపై ఆర్డునో APDS9960 కోసం నమోదు చేయండి. అయితే Adafruit_SH1106 లైబ్రరీ ఇక్కడ నుండి డౌన్లోడ్ చేసుకోవచ్చు.
కాబట్టి ఎప్పటిలాగే అవసరమైన అన్ని లైబ్రరీలను చేర్చడం ద్వారా కోడ్ను ప్రారంభించండి. Adafruit_SH1106.h అనేది అసలు Adafruit లైబ్రరీ యొక్క సవరించిన సంస్కరణ.
# చేర్చండి
తరువాతి పంక్తులలో, వినియోగదారు వెళ్లాలనుకుంటున్న ప్రస్తుత అంతస్తు మరియు నేల సంఖ్యను నిల్వ చేయడానికి వేరియబుల్స్ను నిర్వచించండి.
int ఫ్లోర్నమ్ = 0; int currentfloor = 0;
ఆ తరువాత, యుపి బాణం, డౌన్ బాణం, ఓపెన్ డోర్ మరియు క్లోజ్ డోర్ చిత్రాల కోసం బిట్మ్యాప్లను నమోదు చేయండి. Image2cpp వంటి కన్వర్టర్ను ఉపయోగించడం ద్వారా చిత్రం కోసం HEX కోడ్ను రూపొందించవచ్చు. Image2cpp ని ఎలా ఉపయోగించాలో గురించి మరింత తెలుసుకోవడానికి , ఈ Arduino QR కోడ్ జెనరేటర్ ట్యుటోరియల్ ను అనుసరించండి.
const సంతకం చేయని చార్ అప్ PROGMEM = x 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, …………………………. ……………………………………………..}; const సంతకం చేయని చార్ డౌన్ PROGMEM = x 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, …………………………. ……………………………………………..}; const సంతకం చేయని చార్ డూరోపెన్ PROGMEM = x 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xc0, 0x1f, 0xff, 0xff, 0xe0,, ………………………. …………………………………………………..};
లో సెటప్ () ఫంక్షన్, డీబగ్గింగ్ ప్రయోజనాల కోసం 9600 యొక్క బాడ్ రేటు వద్ద సీరియల్ మానిటర్ ప్రారంభించడం. తరువాత పంక్తులలో, OLED డిస్ప్లే మరియు APDS9960 సెన్సార్ను ప్రారంభ () పద్ధతిలో ఈ క్రింది విధంగా ప్రారంభించండి:
సీరియల్.బెగిన్ (9600); if (! APDS.begin ()) {Serial.println ("APDS9960 సెన్సార్ను ప్రారంభించడంలో లోపం!"); } Serial.println ("సంజ్ఞలను గుర్తించడం…"); display.begin (SH1106_SWITCHCAPVCC, 0x3C);
డిస్ప్లే మరియు సెన్సార్ను ప్రారంభించిన తరువాత, డిస్ప్లే బఫర్ను క్లియర్డిస్ప్లే () పద్ధతిలో క్లియర్ చేసి, డిస్ప్లే.సెట్టెక్స్ట్సైజ్ () మరియు డిస్ప్లే.సెట్టెక్స్ట్ కలర్ () పద్ధతులను ఉపయోగించి ఫాంట్ పరిమాణం మరియు రంగును సెట్ చేయండి.
display.setTextSize (2); display.setTextColor (WHITE); display.clearDisplay (); display.display ();
ఇన్సైడ్ గర్జన లూప్ () , ఏ సంజ్ఞ చేస్తే నిరంతరం తనిఖీ. అవును అయితే, సంజ్ఞ విలువలను చదవండి మరియు ఇది ఏ సంజ్ఞ (UP, DOWN, RIGHT, LEFT) అని తనిఖీ చేయండి మరియు సీరియల్ మానిటర్లో సంబంధిత పఠనాన్ని ప్రింట్ చేస్తుంది. వినియోగదారు వెళ్లాలనుకుంటున్న ఫ్లోర్ నంబర్ను సెట్ చేయడానికి UP మరియు DOWN సంజ్ఞలు ఉపయోగించబడతాయి. ఎడమ సంజ్ఞ అంటే లిఫ్ట్ తలుపును మూసివేసి ఫ్లోర్ నంబర్ ప్రకారం లిఫ్ట్ను తరలించడం, తలుపు తెరవడానికి కుడి సంజ్ఞ ఉపయోగించబడుతుంది.
if (APDS.gestureAvailable ()) {int సంజ్ఞ = APDS.readGesture (); స్విచ్ (సంజ్ఞ) {కేసు GESTURE_UP: Serial.println ("కనుగొనబడిన యుపి సంజ్ఞ"); display.clearDisplay (); ఫ్లోర్నమ్ ++; home1 (); విచ్ఛిన్నం; కేసు GESTURE_DOWN: Serial.println ("DOWN సంజ్ఞ కనుగొనబడింది"); display.clearDisplay (); ఫ్లోర్నమ్ -; home1 (); విచ్ఛిన్నం; కేసు GESTURE_LEFT: Serial.println ("కనుగొనబడిన ఎడమ సంజ్ఞ"); display.clearDisplay (); ప్రారంభం (); విచ్ఛిన్నం; కేసు GESTURE_RIGHT: Serial.println ("కనుగొనబడిన RIGHT సంజ్ఞ"); display.clearDisplay (); home1 (); విచ్ఛిన్నం; డిఫాల్ట్: విరామం; }
Home1 () ఫంక్షన్ ఒక ఎలివేటర్ కోసం ఇంటి ప్రదర్శన డ్రా ఉపయోగిస్తారు. ఇది పైకి బాణం, క్రింది బాణం, ఓపెన్ డోర్, క్లోజ్ డోర్ సంకేతాలు మరియు ప్రస్తుత అంతస్తు సంఖ్యను కలిగి ఉంటుంది. డ్రాబిట్మాప్ () ఫంక్షన్ OLED డిస్ప్లేలోని చిత్రాలను గీయడానికి ఉపయోగించబడుతుంది. డ్రాబిట్మాప్ () ఫంక్షన్ కోసం సింటాక్స్ క్రింద ఇవ్వబడింది:
drawBitmap (int16_t x, int16_t y, bitmap, int16_t w, int16_t h, color);
ఎక్కడ:
int16_t x, int16_t y అనేది OLED డిస్ప్లే యొక్క X మరియు Y కోఆర్డినేట్లు
బిట్మ్యాప్ అంటే బిట్మ్యాప్ పేరు
int16_t w, int16_t h చిత్రం యొక్క ఎత్తు మరియు బరువు.
void home1 () {display.setCursor (101,23); display.println (ఫ్లోర్నమ్); display.drawBitmap (23, 0, అప్రో, 40, 18, వైట్); display.drawBitmap (26, 46, డౌనారో, 40, 18, వైట్); display.drawBitmap (0, 15, డూరోపెన్, 29, 30, వైట్); display.drawBitmap (60, 15, క్లోజూర్, 29, 30, వైట్); display.display (); }
ప్రారంభంలో () ఫంక్షన్ పైకి లేదా క్రిందికి లిఫ్ట్ తరలించడానికి ఉపయోగిస్తారు. దాని కోసం, ప్రస్తుత ఫ్లోర్ నంబర్ యూజర్ వెళ్లాలనుకునే ఫ్లోర్ నంబర్తో పోల్చబడుతుంది. ఫ్లోర్ సంఖ్య ప్రస్తుత ఫ్లోర్ నం కంటే ఎక్కువగా ఉంటే. అప్పుడు లిఫ్ట్ పైకి కదులుతుంది మరియు ఫ్లోర్ సంఖ్య ప్రస్తుత ఫ్లోర్ నం కంటే తక్కువగా ఉంటే. అప్పుడు లిఫ్ట్ క్రిందికి కదులుతుంది. ప్రస్తుత అంతస్తు సంఖ్య రెండూ ఉన్నప్పుడు లిఫ్ట్ ఆగిపోతుంది. మరియు నేల సంఖ్య. ఒకటే.
void start () {అయితే (ఫ్లోర్నమ్> కరెంట్ఫ్లోర్) {Serial.println ("UP వెళుతోంది"); కరెంట్ఫ్లోర్ ++; display.drawBitmap (0, 0, పైకి, 100, 64, WHITE); display.setCursor (101,23); display.println (కరెంట్ఫ్లోర్); display.display (); display.clearDisplay (); ఆలస్యం (2000); } ఉండగా (ఫ్లోర్నమ్ <కరెంట్ఫ్లోర్) {సీరియల్.ప్రింట్ల్న్ ("డౌన్ గోయింగ్"); currentfloor--; display.drawBitmap (0, 0, డౌన్, 100, 64, వైట్); display.setCursor (101,23); display.println (కరెంట్ఫ్లోర్); display.display (); display.clearDisplay (); ఆలస్యం (2000); } if (floornum == currentfloor) {Serial.println ("చేరుకుంది"); display.clearDisplay (); home1 (); సీరియల్.ప్రింట్ (కరెంట్ఫ్లోర్); }}
సంజ్ఞ నియంత్రిత టచ్లెస్ లిఫ్ట్ను పరీక్షిస్తోంది
హార్డ్వేర్ మరియు కోడ్ సిద్ధమైన తర్వాత, ఆర్డునో నానోను ల్యాప్టాప్కు కనెక్ట్ చేయండి మరియు క్రింద ఇచ్చిన పూర్తి కోడ్ను అప్లోడ్ చేయండి. మీరు అప్రమేయంగా చూడగలిగినట్లుగా OLED ఎలివేటర్ UI ని ప్రదర్శిస్తుంది.
ఇప్పుడు మీరు వెళ్లాలనుకుంటున్న అంతస్తును సెట్ చేయడానికి, క్రింది వీడియోలో చూపిన విధంగా మీ చేతిని పైకి లేదా క్రిందికి వేవ్ చేయండి. ఆ అంతస్తుకు వెళ్ళడానికి లిఫ్ట్ను అంగీకరించినందుకు ఎడమ సంజ్ఞ చేయండి. మీరు లిఫ్ట్ ఆపాలనుకుంటే, మీ చేతితో సరైన సంజ్ఞ చేయండి.
ఈ ప్రాజెక్ట్ కోసం పూర్తి పని వీడియో మరియు కోడ్ క్రింద ఇవ్వబడ్డాయి. మీరు ఈ ప్రాజెక్ట్ను నిర్మించడాన్ని ఆస్వాదించారని ఆశిస్తున్నాము. ఈ ప్రాజెక్టుకు సంబంధించి మీకు ఏవైనా ప్రశ్నలు ఉంటే, దయచేసి వాటిని వ్యాఖ్య విభాగంలో ఉంచండి.