הרעיון מושאל מהפרויקט. ESP8266 תצוגת מזג אוויר.
החלטתי להביא את זה למוח.
המשימות הבאות נקבעו:
- עדכן את קוד הקשור לשימוש גרסה חדשה ספריות ArduinoJson.h.
- שכתב את הקוד באמצעות פונקציית millis () במקום פונקציית ההשהיה (). ברור ששימוש בעיכוב לקביעת הפוגה בין שינוי מידע בתצוגה, אי אפשר ליישם פקדי כפתורים;
- לעשות הורד סקיצות דרך Wifi - -;
- התרחק מה- Wemos D1 R2 המגושם במיני Wemos D1;
- בכל הזדמנות אפשרית תצוגה של רוסיפי;
- השתמש בתיק מוכן עם חורי כפתור למכשירים המבוססים על LCD1602;
- השתמש בכפתורי 6x6 סטנדרטיים המולחמים ללוח הגישה. הוסף לחצני בקרת תאורה אחורית, כפתור קרוסלה לשינוי הנתונים המוצגים וכפתור לעדכון נתונים מאולץ מהשרת.
נעשה שימוש במרכיבים הבאים:
- המארז עשוי מפלסטיק ABS עם סט מכסים לכפתורים;
- יתדות ניילון 6 + 5 M M זכר שחור, 4 יח ';
- אגוזי ניילון M3 שחור, 4 יח ';
- עמודי ניילון 6 + 5 מ"מ M2 לבן זכר, 3 יח ';
- מעמד ניילון 6 מ"מ לבן אם, 1 יח ';
- מעמד ניילון 8 מ"מ לבן אם, 1 יח ';
- מתלי ניילון 10 מ"מ לבן אם, 2 יח ';
- LCD 1602 (I2C), צהוב;
- Wemos d1 mini;
- Wemos d1 DC-Power מגן;
- קרש לוח 3x7;
- כפתורים 6x6, גובה 7 מ"מ, 3 יחידות;
- חוטי דופונט 10 ס"מ אם-אם, 4 יח ';
- 24 חוטי AWG שחור ואדום;
- חוטי סיליקון 20 AWG כחול לבן;
- נגדים 5 kOhm - 2 יח ', 10 kOhm - 1 pc (שהגיעו ביד);
- מתאם מתח 9V 1A;
- דבק אפוקסי דו-רכיבי.
למקרה המשומש כמה יתרונות. ראשית, בנוסף לתצוגה, לוח הניתוק הרגיל 3x7 רגיל עם רכיביו מותקנים משני הצדדים ממוקם בגובה בצורה מושלמת. שנית, בשני קצוות יש פתחים מלבניים לקירור. התברר כי המגשרים בין החורים הללו נחתכים בצורה מושלמת על ידי קבצי מיני 3 ו -4 מ"מ. אם חותכים כמה מגשרים וחותכים חור מלבני קטן בתיק, אז מחבר הכוח DC-005 נכנס בצורה מושלמת לחור שנוצר בגיאומטריה מורכבת. כמו כן, בחלק האחורי של המארז יש חור מרובע גדול, שככל הנראה היה אמור להתקין סוללות.דרכו, נוח לחבר משהו בפנים מבלי לפרק את התיק. לאחר מכן ניתן פשוט לסגור אותו עם זכוכית או פלסטיק.
בנה התקדמות:
ראשית, אב טיפוס נעשה על לוח לחם.
ואז התיק מסתיים עם תיק.
לאחר מכן הרכיבים העיקריים מולחמים וההתאמה מתבצעת. הרגליים היו כפופות במיוחד כך שהמפרקים הניתנים להתאמה היו בגובה. היה צורך להגיש כמה מתלים מניילון כך שכל הכפתורים היו באותו גובה.
כתוצאה מכך, הצד הקדמי של הלוח עם כפתורים, נגדים וחוטים הוא כדלקמן:
כתוצאה מכך, פנים המכשיר נראה כך:
כאשר הוא מורכב, המכשיר נראה כך:
התגברות על קשיים:
- במשך זמן רב לא יכולתי להבין מדוע הכפתורים לא פעלו, אם כי המולטימטר הראה בבירור 0 כאשר לחיצים על הכפתורים ו- 4.6 - 5.0 V בעת לחיצה (תלוי בספק הכוח). התברר כי במכשירי Wemos / Lolin יש צורך לציין מספרי GPIO כמספרי סיכה בסקיצה. לדוגמה, D5 הוא GPIO14. אז זהו הסיכה ה -14.
const int buttonPin = 14;
- כדי להציג את מזג האוויר, התנאי הכרחי:
currentMillis - הקודם מיליס == weatherTime
התכתבויות קפדניות, מכיוון שיש לעשות זאת פעם אחת.
כדי להגיש בקשה לשרת, התנאי הכרחי:currentMillis - previousMillis> = getDataTime
תאימות רופף, מכיוון שהוא מבוצע עד להגדרת דגל "הנתונים שהתקבלו".
למעשה, זה לא מובן מאליו, וכדי להבין זאת, זה לקח זמן רב למדי. - הייתי צריך גם להתייסר עם תגובת השרת:
מזג אוויר מחרוזת = שורש ["מזג אוויר"] [0] ["עיקרי"]; תיאור מחרוזת = שורש ["מזג אוויר"] [0] ["תיאור"];
אפס לא היה ברור לחלוטין. מסתבר שיש שתי תחנות מזג אוויר במוסקבה, והשנייה מהן לא תמיד עובדת (כדי לקבל נתונים ממנה, עליך לציין [1] אם הוא פעיל).
המאגר עם הקוד והספריות נמצא כאן.