תוכן עניינים:
- שלב 1: טיפ לזכור
- שלב 2: MCP23016
- שלב 3: כתובת
- שלב 4: פקודות
- שלב 5: קטגוריות
- שלב 6: מבנה לתקשורת
- שלב 7: תכנית
- שלב 8: MCP23016
- שלב 9: ESP-01
- שלב 10: הרכבה של ESP01
- שלב 11: ספריות ומשתנים
- שלב 12: התקנה
- שלב 13: לולאה
- שלב 14: ParserData
- שלב 15: ConfigurePort
- שלב 16: WritePinData
- שלב 17: WriteBlockData & SetupWiFi
- שלב 18: יישום
- שלב 19: הורדה
וִידֵאוֹ: אוטומציה בעלות נמוכה עם ESP01: 19 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:16
היום נדון באוטומציה באמצעות ESP01 עם 16 ממסרים. זהו דגם עיצוב סופר זול שבו תוכלו להכפיל את המודולים ולקבל עד 128 ממסרים, מכיוון שניתן להכניס עד שמונה מרחיבי יציאות במיקרו -בקר זה.
במעגל שלנו תהיה לך אפליקציה בסמארטפון המתקשר עם ה- ESP01. יהיה לו מרחיב עם 16 יציאות, כל אחת מחוברת לממסר. יש לנו גם מקור מתכוונן 3v3. לכן נשלוט במודול ממסר בן 16 ערוצים באמצעות ESP01 באמצעות אפליקציית האנדרואיד, אותה אני מעמיד לרשותך.
שלב 1: טיפ לזכור
חשוב לציין, חברים, שהשתמשתי בשבב זה במעגל בשם MCP23016. חשוב לך גם לצפות בסרטון EXPANSOR OF IOS FOR ESP32, ESP8266 ו- ARDUINO, בו אני בודק את המכשיר ומראה שהוא פועל עבור שלושת סוגי הלוחות הללו.
שלב 2: MCP23016
כאן יש לנו תמונה של MCP23016, שהוא שבב עם 28 סיכות. חשוב להזכיר שישנו גם את דגם MCP23017, שהוא נפוץ יותר ואינו זקוק לנגד קבלים, מכיוון שיש לו שעון פנימי. זה מקל על זה, אבל הצמדתו שונה ממה שאנו מציגים בסרטון זה.
שלב 3: כתובת
כדי להגדיר את כתובת ה- MCP23016, אנו משתמשים בסיכות A0, A1 ו- A2. אתה יכול פשוט להשאיר אותם ב- HIGH או LOW לשינוי הכתובת.
הכתובת תיווצר כדלקמן:
MCP_Address = 20 + (A2 A1 A0)
כאשר A2 A1 A0 יכול לקחת ערכים HIGH / LOW, מספר בינארי מ -0 עד 7 צורות.
לדוגמה:
A2> GND, A1> GND, A0> GND (פירושו 000, ואז 20 + 0 = 20)
אחרת, A2> HIGH, A1> GND, A0> HIGH (פירושו 101, ואז 20 + 5 = 25)
שלב 4: פקודות
להלן טבלה עם פקודות לתקשורת:
שלב 5: קטגוריות
GP0 / GP1 - רשימות יציאות נתונים
ישנם שני רגיסטרים המספקים גישה לשתי יציאות ה- GPIO.
קריאת הרישום מספקת את מצב הפינים ביציאה זו.
Bit = 1> HIGH Bit = 0> נמוך
IODIR0 / IODIR1
ישנם שני אוגרים השולטים במצב הסיכה. (קלט או פלט)
Bit = 1> INPUT Bit = 0> OUTPUT
שלב 6: מבנה לתקשורת
כאן אנו מדברים על כתובת השבב, ונגשים לפקודה ולנתונים, שהם מעין פרוטוקול שצריך לעשות כדי לשלוח מידע.
שלב 7: תכנית
נכין תוכנית שמורכבת מתקשורת של ESP01 עם MCP23016 על מנת שיהיו יותר GPIO לשימוש. 16 מכשירי ה- GPIO החדשים האלה שיהיו לנו הולכים לשלוט במודול ממסר בן 16 ערוצים.
פקודות יישלחו ל- ESP01 באמצעות אפליקציית Android.
שלב 8: MCP23016
שלב 9: ESP-01
זהו לוח 16 ממסר.
שלב 10: הרכבה של ESP01
שלב 11: ספריות ומשתנים
אנו נכלול את הספריות האחראיות לתקשורת i2c, וליצירת נקודת הגישה ושרת האינטרנט. אנו מגדירים את כתובת השבב והיציאות. לבסוף, אנו מגדירים את המשתנים לאחסון הערכים של סיכות MCP.
#include // responsável pela comunicação i2c. #include // responsavvel for criar o accesspoint eo webserver server Server Server (80); // webserver for acessarmos através do aplicativo // endereço I2C do MCP23016 #define MCPAddress 0x20 // ENDEREOS הגדר GP0 0x00 // רישום DATA PORT 0 #define GP1 0x01 // DATA PORT REGISTER 1 #define IODIR0 0x06 // I/O DIRECTION REGISTER 0 #define IODIR1 0x07 // I/O DIRECTION REGISTER 1 // guarda os valores dos pinos האם MCP uint8_t currentValueGP0 = 0; uint8_t currentValueGP1 = 0;
שלב 12: התקנה
אנו מאתחלים את ESP01 ומגדירים את היציאות. אנו גם מגדירים את נקודת הגישה ומאתחלים את השרת.
הגדרת void () {Serial.begin (9600); עיכוב (1000); Wire.begin (0, 2); // ESP01 Wire.setClock (200000); configurePort (IODIR0, OUTPUT); configurePort (IODIR1, OUTPUT); writeBlockData (GP0, 0x00); writeBlockData (GP1, 0x00); setupWiFi (); // תצורה של שרת נקודת גישה. Begin (); // רשמי שרת}
שלב 13: לולאה
כאן אני בודק אם לקוחות מחוברים לשרת. קראנו גם את שורת הבקשות הראשונה. אנו חולצים את הנתונים לצורך מניפולציה, מגדירים את כותרת ברירת המחדל של התגובה ושולחים תגובה זו ללקוח.
לולאת void () {WiFiClient client = server.available (); // Verifica se um cliente foi conectado if (! Client) {return; } מחרוזת req = client.readStringUntil ('\ r'); // Faz a leitura da primeira linha da requisição/ */MR é o header prefixo para saber se a requisição é a esperada para os relés */if (req.indexOf ("/MR")! = -1) {parserData (דרישה); // a partir da requisição extrai os dados para manipulação} else {Serial.println ("בקשה לא חוקית"); לַחֲזוֹר; } client.flush (); מחרוזת s = "HTTP/1.1 200 OK / r / n"; // cabeçalho padrão de resposta client.print (ים); // envia a resposta para o cliente delay (1); } // לולאת סיום
שלב 14: ParserData
מהבקשה, אנו מחפשים את הנתונים הקשורים לממסרים. לאחר מכן אנו שולחים את הנתונים ל- MCP23016.
// a partir da requisição busca os dados referente aos relésvoid parserData (נתוני מחרוזת) {uint8_t relay = -1; uint8_t gp = -1; ערך uint8_t = -1; int index = data.indexOf ("/MR"); // busca o index do prefixo MR if (data [index+5] == '/') ///MR01/1, onde 0 = GP; 1 = RELE; 1 = ESTADO (הפעלה/כיבוי) {gp = data [index+3]-'0'; ממסר = נתונים [אינדקס+4]-'0'; value = data [אינדקס+6]-'0'; // envia os dados para o MCP23016 // [relay-1] porque o MCP vai de 0-7 os pinos writePinData (ממסר -1, ערך, gp); }}
שלב 15: ConfigurePort
הגדרנו את מצב PIN PIN (GP0 או GP1).
// konfigura o modo dos pinos GPIO (GP0 ou GP1) // como parametro passamos: // port: GP0 ou GP1 // INPUT para todos as portas do GP trabalharem como entrada // OUTPUT para todos as portas do GP trabalharem como saida // מותאם אישית ערך של 0-255 אינדיקציות או אופציות (1 = INPUT, 0 = OUTPUT) (uint8_t port, uint8_t custom) {if (custom == INPUT) {writeBlockData (יציאה, 0xFF); } אחרת אם (custom == OUTPUT) {writeBlockData (יציאה, 0x00); } else {writeBlockData (יציאה, מותאם אישית); }}
שלב 16: WritePinData
בחלק זה של הקוד, אנו משנים את מצב הסיכה הרצויה ושולחים את הנתונים ל- MCP.
// muda o estado de um pino desejado, passando como parametro: // pin = pino desejado; value = 0/1 (הפעלה/כיבוי); gp = 0/1 (PORT do MCP) void writePinData (int pin, int value, uint8_t gp) {uint8_t statusGP = 0; אם (gp == GP0) statusGP = currentValueGP0; אחרת statusGP = currentValueGP1; אם (value == 0) {statusGP & = ~ (B00000001 << (pin)); // עוד הודעה עבור LOW} אחרת אם (value == 1) {statusGP | = (B00000001 << (pin)); // muda o pino para HIGH} if (gp == GP0) currentValueGP0 = statusGP; אחרת currentValueGP1 = statusGP; // envia os dados para o MCP writeBlockData (gp, statusGP); עיכוב (10); }
שלב 17: WriteBlockData & SetupWiFi
כאן אנו שולחים נתונים ל- MCP23016 באמצעות אוטובוס i2c. לאחר מכן, אנו מגדירים את המאפיינים כדי לאפשר את נקודת הגישה. לבסוף, הגדרנו את ה- WiFi למצב נקודת גישה ויצרנו AP עם SSID ו- PASSWORD.
// envia dados para o MCP23016 através do barramento i2c // reg: REGISTRADOR // data: dados (0-255) void writeBlockData (uint8_t port, uint8_t data) {Wire.beginTransmission (MCPAddress); Wire.write (יציאה); Wire.write (נתונים); Wire.endTransmission (); עיכוב (10); }
// konfigura as propriedades para habilitar o ACCESS POINTvoid setupWiFi () {WiFi.mode (WIFI_AP); WiFi.softAP ("ESP01_RELAY", "12345678"); }
שלב 18: יישום
כדי ליצור את היישום, אנו משתמשים ב- MIT App Inventor 2, שאפשר לגשת אליו דרך הקישור:
ai2.appinventor.mit.edu/
האפליקציה מורכבת משני מסכים המכילים שמונה זוגות כפתורים בכל אחד, המציינים את הסטטוס של כל ממסר.
להלן חלק מחוסמי התכנות המשמשים:
חשוב: כתובת ה- IP המוגדרת כברירת מחדל של ה- ESP, מכיוון שנקודת הגישה היא 192.168.4.1
1. כאשר המסך מאתחל, אנו מאחסנים את ה- IP בזיכרון ומתקשרים לפרוצדורה לשחזור מצב הלחצנים (ON / OFF).
2. התקשרו למסך השני
1. בלחיצה על כפתור ON של אחד מממסרי, נבצע שינויים ויזואליים בכפתור (בלוקים ירוקים). WebViewer1. GoToUrl מבקש בקשה ל- ESP01 שלנו על ידי קישור נתוני MR01 / 1 בכתובת האתר.
2. בלחיצה על כפתור OFF של אחד הממסרים, נבצע שינויים חזותיים בכפתור (בלוקים ירוקים). WebViewer1. GoToUrl מגיש בקשה ל- ESP01 שלנו על ידי קישור נתוני MR01 / 0 בכתובת האתר.
הליך זה משמש לשחזור מצב הלחצנים (ממסרים), מכיוון שבעת שינוי המסך הוא חוזר לדפוס היצירה.
הבלוק הצהוב חוזר על כל אחד מזוגות הכפתורים.
שלב 19: הורדה
להלן קובצי הפרויקט להורדה:
קובץ הפרויקט MIT App Inventor 2 - הורדה
יישום APK להתקנה באנדרואיד - הורדה
הורד את שאר הקבצים:
INO
מוּמלָץ:
Rheometer בעלות נמוכה: 11 שלבים (עם תמונות)
Rheometer בעלות נמוכה: מטרתו של מדריך זה היא יצירת rheometer בעלות נמוכה למציאת ניסוי צמיגות הנוזל. פרויקט זה נוצר על ידי צוות של סטודנטים לתואר ראשון ושני באוניברסיטת בראון בכיתה רטט של מערכות מכניות
כיצד לבנות מכשיר א.ק.ג בעלות נמוכה: 26 שלבים
איך בונים מכשיר א.ק.ג בעלות נמוכה: שלום לכולם! שמי מריאנו ואני מהנדס ביו -רפואי. ביליתי כמה סופי שבוע בעיצוב ומימוש אב טיפוס של מכשיר א.ק.ג בעלות נמוכה המבוססת על לוח Arduino המחובר באמצעות Bluetooth למכשיר אנדרואיד (סמארטפון או טאבלט). אני אעשה
תקשורת אלחוטית של LoRa 3 עד 8 קילומטרים עם E32 בעלות נמוכה (sx1278/sx1276) עבור Arduino, Esp8266 או Esp32: 15 שלבים
תקשורת אלחוטית של LoRa 3Km עד 8Km עם E32 בעלות נמוכה (sx1278/sx1276) עבור Arduino, Esp8266 או Esp32: אני יוצר ספרייה לניהול EBYTE E32 המבוססת על סדרת Semtech של מכשיר LoRa, מכשיר חזק מאוד, פשוט וזול. אתה יכול למצוא גרסת 3 ק"מ כאן, גירסת 8 ק"מ כאן הם יכולים לעבוד על מרחק של 3000m עד 8000m, ויש להם הרבה תכונות ו
Pandemi: מערכת החיטוי הרובוטית בעלות נמוכה: 7 שלבים
Pandemi: מערכת החיטוי הרובוטית בעלות נמוכה: זהו רובוט זול וקל להכנה. הוא יכול לעקר את החדר שלכם באור UV-C, הוא קליל וזריז, הוא יכול ללכת על כל שטח, והוא יכול להתאים לכל פתח. הוא גם בטוח לאדם, ואוטונומי לחלוטין
רדיומטר בעלות נמוכה בעלות נמוכה: 11 שלבים (עם תמונות)
רדיומטר בילי-לייט בעלות נמוכה: תוכנן על ידי גרג נוס ואדווית קוטצ'ה מטרתו של מדריך זה היא ייצור מכשיר בעלות נמוכה, נוחה ותחזוקה נמוכה למדידת היעילות של נורות פוטותרפיה דו-נורות לטיפול בהיפרבילרובינמיה. (כן