בתקופה זו של מגיפת קורונה, מעליות הפכו למקום בסיכון גבוה בו כולם נוגעים באותם כפתורים. במקומות רבים אנשים גילו טריקים למניעת מגע עם כפתורי המעלית כמו שימוש בנייר שאיבה, קיסמים או רקמות סניטריות ללחיצה על כפתורי ההרמה.
אז בהמשך לפרויקטים הבטיחותיים של קורונה כמו מכונת חיטוי אוטומטית, ניטור טמפרטורה ללא מגע וגלאי מרחקים חברתיים, כאן אנו הולכים לבנות אב טיפוס של מעלית מבוקרת מחוות באמצעות Arduino Nano.
זו מעלית מגע משתמש Arduino Nano, מחווה APDS9960 חיישן, ואת מודול התצוגה OLED. באמצעות לוח הבקרה המבוסס על מחוות זה, אתה יכול לשלוט בקלות בהרמה שלך על ידי ביצוע תנועת יד. חיישן APDS9960 משמש לקריאת המחוות. מחוות למעלה ולמטה משמשות להגדרת מספר הרצפה, המחווה השמאלית היא לסגור את דלת המעלית ולהזיז את המעלית לפי מספר הרצפה והמחווה הימנית משמשת לפתיחת הדלת.
רכיבים נדרשים
- ארדואינו ננו
- מודול תצוגת OLED
- APDS9960 RGB וחיישן תנועה
- קרש לחם
- חוטי מגשר
APDS9960 RGB וחיישן תנועה
מודול ה- RGB & זיהוי המחוות APDS9960 הוא לוח פריצה קטן המגיע עם חיישן APDS-9960 מובנה, מסנני חסימת UV ו- IR, ארבע דיודות נפרדות הרגישות לכיוונים שונים וממשק תואם I2C. ניתן להשתמש בחיישן זה למדידת אור וסביבה בסביבה, איתור קרבה וחישה מחוות ללא מגע. יש לו טווח זיהוי מחוות של 10 עד 20 ס"מ והוא יכול לשמש לשליטה על מיקרו-בקר, רובוט ובפרויקטים רבים אחרים.
תכונות:
- מתח תפעולי: 2.4V עד 3.6V
- טווח פעולה: 4-8 אינץ '(10-20 ס"מ).
- ממשק I2C (כתובת I2C: 0x39).
- אור הסביבה ו- RGB צבע חישה, קרבה
- חישה וגילוי מחוות במודול אופטי
- ממשק תואם למצב מהיר של אוטובוס I2C עם קצב נתונים עד 400 קילוהרץ.
תרשים מעגל
תרשים מעגלים למעלית ללא מגע באמצעות APDS9960 מוצג להלן.
אנו מממשקים את Arduino Nano עם חיישן APDS9960 ותצוגת OLED. סיכות VCC ו- GND של חיישן APDS9960 ותצוגת OLED מחוברות ל- 3.3V ו- GND של Arduino. בעוד שסיכות SCL ו- SDA של חיישן APDS9960 ותצוגת OLED מחוברות בהתאמה לסיכות A5 ו- A4 של Arduino.
OLED ו- APDS9960 פין |
פין ננו של ארדואינו |
VCC |
3.3 וולט |
GND |
GND |
SCL |
A5 |
SDA |
A4 |
כך תיראה ההתקנה המלאה עבור מעלית מבוקרת מחוות באמצעות ארדואינו:
למידע נוסף על תצוגת OLED והתממשקותה עם מיקרו-בקרים אחרים, עקוב אחר הקישור.
הסבר קוד
הקוד השלם עבור מעלית ללא מגע באמצעות APDS9960 ניתן בסוף העמוד. כאן אנו מסבירים כמה חלקים חשובים בקוד. בתוכנית זו אנו נשתמש בספריות APDS9960 ו- Adafruit_SH1106 . ניתן להוריד את ספריית APDS9960 מ- Arduino IDE. כדי להוריד את הספרייה, עבור אל סקיצה> מנהל הספרייה> חיפוש ואז הזן את Arduino APDS9960. בעוד שניתן להוריד את ספריית Adafruit_SH1106 מכאן.
אז כרגיל התחל את הקוד על ידי הכללת כל הספריות הנדרשות. Adafruit_SH1106.h היא הגרסה המתוקנת של ספריית Adafruit המקורית.
#לִכלוֹל
בשורות הבאות הגדירו את המשתנים לאחסון הקומה הנוכחית ומספר הקומה שאליהם המשתמש רוצה להגיע.
int floornum = 0; רצף אינטר הנוכחי = 0;
לאחר מכן, הזן את מפת הסיביות לתמונות חץ למעלה, חץ למטה, דלת פתוחה וסגור דלת. ניתן ליצור קוד HEX לתמונה באמצעות ממיר כמו Image2cpp. למידע נוסף על אופן השימוש ב- Image2cpp, עקוב אחר הדרכה זו למחולל קוד ה- Arduino.
const un חתום עד PROGMEM = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ……………………………… ……………………………………………………………..}; const לא חתום למטה PROGMEM = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ……………………………… ……………………………………………………………..}; const un חתום דלת פתיחה PROGMEM = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xc0, 0x1f, 0xff, 0xff, 0xe0,, ………………………… ………………………………………………………………..};
ב ההתקנה () הפונקציה, לאתחל את הצג הסידורי בקצב שידור של 9600 למטרת איתור באגים. ואז בשורות הבאות, אתחל את תצוגת ה- OLED ואת חיישן APDS9960 בשיטת start () באופן הבא:
Serial.begin (9600); אם (! APDS.begin ()) {Serial.println ("שגיאה באתחול חיישן APDS9960!"); } Serial.println ("איתור מחוות…"); display.begin (SH1106_SWITCHCAPVCC, 0x3C);
לאחר אתחול התצוגה והחיישן, נקה את מאגר התצוגה בשיטת clearDisplay () והגדר את גודל הגופן והצבע בשיטות display.setTextSize () ו- display.setTextColor () .
display.setTextSize (2); display.setTextColor (WHITE); display.clearDisplay (); display.display ();
בתוך לולאת החלל () , לבדוק כל זמן אם בכלל מחווה נעשתה. אם כן, קרא את ערכי המחווה ובדוק באיזו מחווה מדובר (למעלה, למטה, ימינה, שמאלה) והדפיס את הקריאה המתאימה על הצג הסדרתי. מחוות למעלה ולמטה משמשות להגדרת מספר הרצפה שאליו המשתמש רוצה להגיע. המחווה השמאלית היא לסגור את דלת המעלית ולהזיז את המעלית לפי מספר הרצפה ואילו המחווה הימנית משמשת לפתיחת הדלת.
אם (APDS.gestureAvailable ()) {int gest = APDS.readGesture (); מתג (מחווה) {מקרה GESTURE_UP: Serial.println ("זוהה מחווה UP"); display.clearDisplay (); floornum ++; בית 1(); לשבור; מקרה GESTURE_DOWN: Serial.println ("זוהה מחווה למטה"); display.clearDisplay (); קומה מספר -; בית 1(); לשבור; מקרה GESTURE_LEFT: Serial.println ("זוהתה מחווה שמאלה"); display.clearDisplay (); הַתחָלָה(); לשבור; מקרה GESTURE_RIGHT: Serial.println ("זוהתה מחווה ימנית"); display.clearDisplay (); בית 1(); לשבור; ברירת מחדל: הפסקה; }
Home1 () הפונקציה משמשת לצייר התצוגה הביתה במעלית. זה מורכב מחץ למעלה, חץ למטה, דלת פתוחה, שלטי דלת סגורה ומספר קומה נוכחי. פונקציית drawBitmap () משמשת לציור התמונות בתצוגת OLED. התחביר לפונקציה drawBitmap () ניתן להלן:
drawBitmap (int16_t x, int16_t y, bitmap, int16_t w, int16_t h, צבע);
איפה:
int16_t x, int16_t y הם קואורדינטות X ו- Y של תצוגת OLED
מפת הסיביות היא שם מפת הסיביות
int16_t w, int16_t h הם הגובה והמשקל של התמונה.
void home1 () {display.setCursor (101,23); display.println (קומה מספר); display.drawBitmap (23, 0, uparrow, 40, 18, WHITE); display.drawBitmap (26, 46, downarrow, 40, 18, WHITE); display.drawBitmap (0, 15, dooropen, 29, 30, WHITE); display.drawBitmap (60, 15, closedoor, 29, 30, WHITE); display.display (); }
ההתחלה () הפונקציה משמשת כדי להזיז את המעלית כלפי מעלה או מטה. לשם כך, הקומה הנוכחית לא מושווה למספר הקומה שאליו המשתמש רוצה להגיע. אם מספר הקומה גדול מהקומה הנוכחית. אז המעלית תנוע כלפי מעלה ואם מספר הקומה נמוך מהקומה הנוכחית. ואז המעלית תנוע כלפי מטה. המעלית תיעצר כאשר גם הקומה הנוכחית לא. וקומה לא. אותו הדבר.
בטל התחלה () {while (floornum> currentfloor) {Serial.println ("הולך למעלה"); currentfloor ++; display.drawBitmap (0, 0, up, 100, 64, WHITE); display.setCursor (101,23); display.println (הנוכחי רצפה); display.display (); display.clearDisplay (); עיכוב (2000); } while (רצף מספר <currentfloor) {Serial.println ("הולך למטה"); רצפה שוטפת-- display.drawBitmap (0, 0, למטה, 100, 64, לבן); display.setCursor (101,23); display.println (הנוכחי רצפה); display.display (); display.clearDisplay (); עיכוב (2000); } if (floornum == currentfloor) {Serial.println ("הגיע"); display.clearDisplay (); בית 1(); Serial.print (הנוכחי רצפה); }}
בדיקת ההרמה הנשלטת ללא מגע
לאחר שהחומרה והקוד מוכנים, חבר את ה- Arduino Nano למחשב הנייד והעלה את הקוד השלם המופיע להלן. כפי שניתן לראות כברירת מחדל OLED יציג את ממשק המשתמש של מעלית.
כעת נפנף את היד למעלה או למטה, כמו שמוצג בסרטון למטה, כדי להגדיר את הרצפה לאן אתה רוצה להגיע. ואז הפעל את המחווה השמאלית לאישור המעלית כדי להגיע לקומה ההיא. אם ברצונך לעצור את המעלית, עשה את המחווה הנכונה בידך.
סרטון העבודה והקוד המלא לפרויקט זה מובאים להלן. מקווה שנהניתם לבנות את הפרויקט הזה. אם יש לך שאלות בנוגע לפרויקט זה, אנא השאר אותן במדור התגובות.