Cuprins:
- Pasul 1: Sfat de reținut
- Pasul 2: MCP23016
- Pasul 3: adresa
- Pasul 4: Comenzi
- Pasul 5: Categorii
- Pasul 6: Structura pentru comunicare
- Pasul 7: Program
- Pasul 8: MCP23016
- Pasul 9: ESP-01
- Pasul 10: Montarea ESP01
- Pasul 11: Biblioteci și variabile
- Pasul 12: Configurare
- Pasul 13: Buclă
- Pasul 14: ParserData
- Pasul 15: ConfigurePort
- Pasul 16: WritePinData
- Pasul 17: WriteBlockData & SetupWiFi
- Pasul 18: aplicație
- Pasul 19: Descărcați
Video: Automatizare low cost cu ESP01: 19 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:45
Astăzi, vom discuta despre automatizarea utilizării ESP01 cu 16 relee. Acesta este un model de design foarte ieftin în care puteți multiplica modulele și puteți obține până la 128 de relee, deoarece este posibil să puneți până la opt dispozitive de expansiune în acest microcontroler.
În circuitul nostru, veți avea o aplicație pe un smartphone care comunică cu ESP01. Va avea un expansor cu 16 porturi, fiecare conectat la un releu. De asemenea, avem o sursă reglabilă 3v3. Prin urmare, vom controla un modul de releu cu 16 canale folosind ESP01 prin intermediul aplicației Android, pe care vi-l pun la dispoziție.
Pasul 1: Sfat de reținut
Este important de menționat, prieteni, că am folosit acest cip într-un circuit numit MCP23016. De asemenea, este important să vizionați videoclipul EXPANSOR OF IOS FOR ESP32, ESP8266 AND ARDUINO, în care testez dispozitivul și arăt că funcționează pentru aceste trei tipuri de plăci.
Pasul 2: MCP23016
Aici avem o imagine a MCP23016, care este un cip cu 28 de pini. Este important de menționat că există și modelul MCP23017, care este mai frecvent și nu are nevoie de rezistență și condensator, deoarece are un ceas intern. Acest lucru îl face mai ușor, dar fixarea acestuia este diferită de ceea ce arătăm în acest videoclip.
Pasul 3: adresa
Pentru a defini adresa MCP23016, folosim pinii A0, A1 și A2. Puteți doar să le lăsați la HIGH sau LOW pentru schimbarea adresei.
Adresa va fi formată după cum urmează:
MCP_Address = 20 + (A2 A1 A0)
Unde A2 A1 A0 poate lua valori HIGH / LOW, un număr binar de la 0 la 7 forme.
De exemplu:
A2> GND, A1> GND, A0> GND (înseamnă 000, apoi 20 + 0 = 20)
Sau altfel, A2> HIGH, A1> GND, A0> HIGH (înseamnă 101, apoi 20 + 5 = 25)
Pasul 4: Comenzi
Iată un tabel cu comenzi pentru comunicare:
Pasul 5: Categorii
GP0 / GP1 - Registre de porturi de date
Există două registre care oferă acces la cele două porturi GPIO.
Citirea registrului oferă starea pinilor de pe acel port.
Bit = 1> HIGH Bit = 0> LOW
IODIR0 / IODIR1
Există două registre care controlează modul pin. (Intrare sau ieșire)
Bit = 1> INPUT Bit = 0> OUTPUT
Pasul 6: Structura pentru comunicare
Aici vorbim despre adresa cipului și accesăm comanda și datele, care este un fel de protocol care trebuie făcut pentru a trimite informații.
Pasul 7: Program
Vom face un program care constă în comunicarea ESP01 cu MCP23016 pentru a avea mai multe GPIO-uri de utilizat. Aceste 16 noi GPIO-uri pe care le vom avea vor controla un modul de releu cu 16 canale.
Comenzile vor fi trimise către ESP01 printr-o aplicație Android.
Pasul 8: MCP23016
Pasul 9: ESP-01
Aceasta este o placă cu 16 relee.
Pasul 10: Montarea ESP01
Pasul 11: Biblioteci și variabile
Vom include bibliotecile responsabile pentru comunicarea i2c și pentru crearea punctului de acces și a serverului web. Definim adresa cipului și a porturilor. În cele din urmă, definim variabilele pentru a stoca valorile pinilor MCP.
#include // responsável pela comunicação i2c. # include // responsável por criar o accesspoint eo webserver WiFiServer server (80); // webserver pentru acessarmos através do aplicativo // endereço I2C do MCP23016 #define MCPAddress 0x20 // ENDEREÇOS DE REGISTRADORES # define GP0 0x00 // DATA PORT REGISTER 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 faceți MCP uint8_t currentValueGP0 = 0; uint8_t currentValueGP1 = 0;
Pasul 12: Configurare
Inițializăm ESP01 și configurăm porturile. De asemenea, configurăm punctul de acces și inițializăm serverul.
void setup () {Serial.begin (9600); întârziere (1000); Wire.begin (0, 2); // ESP01 Wire.setClock (200000); configurePort (IODIR0, OUTPUT); configurePort (IODIR1, OUTPUT); writeBlockData (GP0, 0x00); writeBlockData (GP1, 0x00); setupWiFi (); // configurarea Access Point server.begin (); // inițializarea serverului}
Pasul 13: Buclă
Aici verific dacă au fost conectați clienți la server. De asemenea, am citit prima linie de solicitare. Extragem datele pentru manipulare, definim antetul de răspuns implicit și trimitem acest răspuns clientului.
bucla void () {client WiFiClient = server.available (); // Verifica se um client a fost conectat if (! Client) {return; } String req = client.readStringUntil ('\ r'); // Faz a leitura da prima 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 (req); // a partir da requisição extrai os dados para manipulação} else {Serial.println ("invalid request"); întoarcere; } client.flush (); Șirul s = "HTTP / 1.1 200 OK / r / n"; // cabeçalho padrão de răspuns client.print (s); // envia a răspuns pentru o client delay (1); } // sfârșitul buclei
Pasul 14: ParserData
Din cerere, căutăm datele legate de relee. Apoi trimitem datele către MCP23016.
// a partir da requisição busca os dados referente aos relésvoid parserData (String data) {uint8_t relay = -1; uint8_t gp = -1; uint8_t valoare = -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 (on / off) {gp = data [index + 3] - '0'; releu = date [index + 4] - '0'; valoare = date [index + 6] - '0'; // envia os dados para o MCP23016 // [relay-1] porque o MCP vai de 0-7 os pinos writePinData (relay-1, value, gp); }}
Pasul 15: ConfigurePort
Setăm modul pin GPIO (GP0 sau GP1).
// configura o modo dos pinos GPIO (GP0 ou GP1) // as parametro passamos: // port: GP0 ou GP1 // INPUT pentru toți ca porti de GP de lucru ca intrare // OUTPUT pentru toți ca porti de GP de lucru ca saida // custom um valor de 0-255 indicando o modo das portas (1 = INPUT, 0 = OUTPUT) // ex: 0x01 ou B00000001 ou 1: indica ce apenas o GPX.0 lucrare ca intrare, sau restante ca saida void configurePort (port uint8_t, uint8_t custom) {if (custom == INPUT) {writeBlockData (port, 0xFF); } else if (custom == OUTPUT) {writeBlockData (port, 0x00); } else {writeBlockData (port, personalizat); }}
Pasul 16: WritePinData
În această parte a codului, schimbăm starea pinului dorit și trimitem datele către MCP.
// muda o stare de um pino desejado, trecând ca parametru: // pin = pino desejado; valoare = 0/1 (pornit / oprit); gp = 0/1 (PORT do MCP) void writePinData (pin int, valoare int, uint8_t gp) {uint8_t statusGP = 0; if (gp == GP0) statusGP = currentValueGP0; else statusGP = CurrentValueGP1; if (valoare == 0) {statusGP & = ~ (B00000001 << (pin)); // muda o pino para LOW} else if (valoare == 1) {statusGP | = (B00000001 << (pin)); // muda o pino para HIGH} if (gp == GP0) currentValueGP0 = statusGP; else currentValueGP1 = statusGP; // envia os dados para o MCP writeBlockData (gp, statusGP); întârziere (10); }
Pasul 17: WriteBlockData & SetupWiFi
Aici, trimitem date către MCP23016 prin magistrala i2c. Apoi, configurăm proprietățile pentru a activa punctul de acces. În cele din urmă, am configurat WiFi pentru modul Punct de acces și am creat un AP cu SSID și 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 (port); Wire.write (date); Wire.endTransmission (); întârziere (10); }
// configurați ca programe pentru abilitare o ACCESS POINTvoid setupWiFi () {WiFi.mode (WIFI_AP); WiFi.softAP ("ESP01_RELAY", "12345678"); }
Pasul 18: aplicație
Pentru a crea aplicația, folosim MIT App Inventor 2, care poate fi accesat prin link:
ai2.appinventor.mit.edu/
Aplicația constă din două ecrane care conțin opt perechi de butoane în fiecare, indicând starea fiecărui releu.
Următoarele sunt câteva dintre blocurile de programare utilizate:
IMPORTANT: Adresa IP implicită a ESP, deoarece punctul de acces este 192.168.4.1
1. Când ecranul se inițializează, stocăm IP-ul în memorie și apelăm procedura de recuperare a stării butoanelor (ON / OFF).
2. Apelați celălalt ecran
1. Când facem clic pe butonul PORNIT al unuia dintre relee, vom face modificări vizuale în buton (blocuri verzi). WebViewer1. GoToUrl face o solicitare pentru ESP01 prin legarea datelor MR01 / 1 în URL.
2. Când facem clic pe butonul OPRIT al unuia dintre relee, vom face modificări vizuale în buton (blocuri verzi). WebViewer1. GoToUrl face o solicitare către ESP01 prin legarea datelor MR01 / 0 din URL.
Această procedură este utilizată pentru a recupera starea butoanelor (relee), deoarece la schimbarea ecranului, acesta revine la modelul de creație.
Blocul galben se repetă pentru fiecare dintre perechile de butoane.
Pasul 19: Descărcați
Iată fișierele proiectului pentru descărcare:
Fișierul proiectului MIT App Inventor 2 - descărcați
Aplicație APK pentru instalare pe Android - descărcare
Descărcați celelalte fișiere:
EU NU
Recomandat:
Cum să construiți un dispozitiv ECG low cost: 26 de pași
Cum să construiți un dispozitiv ECG low cost: Bună ziua tuturor! Numele meu este Mariano și sunt inginer biomedical. Am petrecut câteva weekenduri pentru a proiecta și realiza un prototip de dispozitiv ECG cu cost redus bazat pe placa Arduino conectată prin Bluetooth la un dispozitiv Android (smartphone sau tabletă). Aș
Comunicare fără fir LoRa de 3Km la 8Km cu dispozitiv E32 (sx1278 / sx1276) low cost pentru Arduino, Esp8266 sau Esp32: 15 pași
Comunicare wireless LoRa de 3Km la 8Km cu dispozitiv E32 low cost (sx1278 / sx1276) pentru Arduino, Esp8266 sau Esp32: Creez o bibliotecă pentru gestionarea EBYTE E32 bazată pe seria Semtech de dispozitive LoRa, dispozitiv foarte puternic, simplu și ieftin. Puteți găsi Versiunea de 3 km aici, versiunea de 8 km aici Pot funcționa pe o distanță de 3000m până la 8000m și au o mulțime de caracteristici și
Automatizare vorbitoare -- Audio de la Arduino -- Automatizare controlată prin voce -- Modul Bluetooth HC - 05: 9 pași (cu imagini)
Automatizare vorbitoare || Audio de la Arduino || Automatizare controlată prin voce || HC - 05 Bluetooth Module: …………………………. Vă rugăm să vă ABONAȚI la canalul meu de YouTube pentru mai multe videoclipuri …. …. În acest videoclip am construit o Automatizare Vorbitoare .. Când veți trimite o comandă vocală prin mobil, aceasta va porni dispozitivele de acasă și va trimite feedback
Demo de joc MR low cost: 9 pași
Demo de joc MR low cost: http://www.bilibili.com/video/av7937721/ (url video în China continentală) Vizualizare generală: Setați imaginea marcajului pe suportul cu două axe. marcați, se împușcă reciproc în lumea jocului. Utilizați AR pentru a afla unghiul pariat
MOLBED - Afișaj electronic modular Braille low cost: 5 pași (cu imagini)
MOLBED - Afișaj electronic modular Braille Low Cost: Descriere Obiectivul acestui proiect este de a crea un sistem electronic Braille care să fie accesibil și care poate pune această tehnologie la dispoziția tuturor. După evaluarea inițială, a fost clar că astfel proiectarea personajului individual h