Indholdsfortegnelse:
- Trin 1: Tip at huske
- Trin 2: MCP23016
- Trin 3: Adresse
- Trin 4: Kommandoer
- Trin 5: Kategorier
- Trin 6: Struktur for kommunikation
- Trin 7: Programmer
- Trin 8: MCP23016
- Trin 9: ESP-01
- Trin 10: Montering af ESP01
- Trin 11: Biblioteker og variabler
- Trin 12: Opsætning
- Trin 13: Sløjfe
- Trin 14: ParserData
- Trin 15: ConfigurePort
- Trin 16: WritePinData
- Trin 17: WriteBlockData & SetupWiFi
- Trin 18: App
- Trin 19: Download
Video: Lavprisautomatisering med ESP01: 19 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:29
I dag diskuterer vi automatisering ved hjælp af ESP01 med 16 relæer. Dette er en superbillig designmodel, hvor du kan multiplicere modulerne og få op til 128 relæer, da det er muligt at sætte op til otte portudvidere i denne mikrokontroller.
I vores kredsløb har du en applikation på en smartphone, der kommunikerer med ESP01. Det vil have en ekspander med 16 porte, der hver er forbundet til et relæ. Vi har også en 3v3 justerbar kilde. Vi vil derfor styre et 16-kanals relæmodul ved hjælp af ESP01 via Android-applikationen, som jeg stiller til rådighed for dig.
Trin 1: Tip at huske
Det er vigtigt at bemærke, mine venner, at jeg brugte denne chip i et kredsløb kaldet MCP23016. Det er også vigtigt for dig at se videoen EXPANSOR OF IOS FOR ESP32, ESP8266 AND ARDUINO, hvor jeg tester enheden og viser, at den fungerer til disse tre typer tavler.
Trin 2: MCP23016
Her har vi et billede af MCP23016, som er en chip med 28 ben. Det er vigtigt at nævne, at der også er MCP23017 -modellen, som er mere almindelig og ikke har brug for en modstand og kondensator, fordi den har et internt ur. Dette gør det lettere, men dets fastgørelse er forskellig fra det, vi viser i denne video.
Trin 3: Adresse
For at definere adressen på MCP23016 bruger vi benene A0, A1 og A2. Du kan bare lade dem stå på HIGH eller LOW for adresseændringen.
Adressen dannes således:
MCP_Address = 20 + (A2 A1 A0)
Hvor A2 A1 A0 kan tage HIGH / LOW værdier, dannes et binært tal fra 0 til 7.
For eksempel:
A2> GND, A1> GND, A0> GND (betyder 000, derefter 20 + 0 = 20)
For ellers, A2> HØJ, A1> GND, A0> HØJ (betyder 101, derefter 20 + 5 = 25)
Trin 4: Kommandoer
Her er en tabel med kommandoer til kommunikation:
Trin 5: Kategorier
GP0 / GP1 - Dataportregistre
Der er to registre, der giver adgang til de to GPIO -porte.
Registerlæsningen giver status for benene på den pågældende port.
Bit = 1> HIGH Bit = 0> LAV
IODIR0 / IODIR1
Der er to registre, der styrer pin -tilstanden. (Input eller Output)
Bit = 1> INPUT Bit = 0> OUTPUT
Trin 6: Struktur for kommunikation
Her taler vi om chipens adresse og får adgang til kommandoen og dataene, som er en slags protokol, der skal gøres for at sende information.
Trin 7: Programmer
Vi laver et program, der består i at kommunikere ESP01 med MCP23016 for at have flere GPIO'er at bruge. Disse 16 nye GPIO'er, som vi får, skal styre et 16-kanals relæmodul.
Kommandoer sendes til ESP01 via en Android -applikation.
Trin 8: MCP23016
Trin 9: ESP-01
Dette er et 16-relæbræt.
Trin 10: Montering af ESP01
Trin 11: Biblioteker og variabler
Vi vil inkludere de biblioteker, der er ansvarlige for i2c -kommunikation, og for at oprette Access Point og webserver. Vi definerer adressen på chippen og portene. Endelig definerer vi variablerne til at gemme værdierne for MCP -benene.
#include // responsável pela comunicação i2c. #include // responsável por criar o accesspoint eo webserver WiFiServer server (80); // webserver para acessarmos através do aplicativo // endereço I2C do MCP23016 #define MCPAddress 0x20 // REGISTRERE definere 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 gør MCP uint8_t currentValueGP0 = 0; uint8_t currentValueGP1 = 0;
Trin 12: Opsætning
Vi initialiserer ESP01 og konfigurerer portene. Vi konfigurerer også adgangspunktet og initialiserer serveren.
ugyldig opsætning () {Serial.begin (9600); forsinkelse (1000); Wire.begin (0, 2); // ESP01 Wire.setClock (200000); configurePort (IODIR0, OUTPUT); configurePort (IODIR1, OUTPUT); writeBlockData (GP0, 0x00); writeBlockData (GP1, 0x00); setupWiFi (); // konfiguration af adgangspunktserver.begin (); // server til server}
Trin 13: Sløjfe
Her kontrollerer jeg, om der er tilsluttet nogen klienter til serveren. Vi læste også den første anmodningslinje. Vi udtrækker dataene til manipulation, definerer standard svaroverskriften og sender dette svar til klienten.
void loop () {WiFiClient client = server.available (); // Verifica se um cliente foi conectado if (! Client) {return; } String 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 (req); // a partir da requisição extrai os dados para manipulação} else {Serial.println ("ugyldig anmodning"); Vend tilbage; } client.flush (); String s = "HTTP/1.1 200 OK / r / n"; // cabeçalho padrão de resposta client.print (s); // envia a resposta para o cliente delay (1); } // slutsløjfe
Trin 14: ParserData
Fra anmodningen leder vi efter data relateret til relæerne. Vi sender derefter dataene til 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 værdi = -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'; relæ = data [indeks+4]-'0'; værdi = data [indeks+6]-'0'; // envia os dados para o MCP23016 // [relay-1] porque o MCP vai de 0-7 os pinos writePinData (relay-1, value, gp); }}
Trin 15: ConfigurePort
Vi indstiller GPIO pin -tilstand (GP0 eller GP1).
// konfiguration 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 // brugerdefineret værdi for 0-255 indikationer for modas das portas (1 = INPUT, 0 = OUTPUT) // ex: 0x01 ou B00000001 ou 1: indica que apenas o GPX.0 trabalhará como entrada, or restante como saida void configurePort (uint8_t port, uint8_t brugerdefineret) {if (custom == INPUT) {writeBlockData (port, 0xFF); } ellers hvis (tilpasset == OUTPUT) {writeBlockData (port, 0x00); } ellers {writeBlockData (port, brugerdefineret); }}
Trin 16: WritePinData
I denne del af koden ændrer vi tilstanden for en ønsket pin og sender dataene til MCP.
// muda o estado de um pino desejado, passando como parametro: // pin = pino desejado; værdi = 0/1 (tænd/sluk); gp = 0/1 (PORT do MCP) void writePinData (int pin, int value, uint8_t gp) {uint8_t statusGP = 0; hvis (gp == GP0) statusGP = currentValueGP0; ellers statusGP = currentValueGP1; hvis (værdi == 0) {statusGP & = ~ (B00000001 << (pin)); // Muda o pino para LOW} ellers hvis (værdi == 1) {statusGP | = (B00000001 << (pin)); // Muda o pino para HIGH} if (gp == GP0) currentValueGP0 = statusGP; ellers currentValueGP1 = statusGP; // envia os dados para o MCP writeBlockData (gp, statusGP); forsinkelse (10); }
Trin 17: WriteBlockData & SetupWiFi
Her sender vi data til MCP23016 via i2c -bussen. Dernæst konfigurerer vi egenskaberne til at aktivere adgangspunktet. Endelig konfigurerede vi WiFi til Access Point -tilstand og oprettede et AP med SSID og 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 (data); Wire.endTransmission (); forsinkelse (10); }
// konfigura as propriedades para habilitar o ACCESS POINTvoid setupWiFi () {WiFi.mode (WIFI_AP); WiFi.softAP ("ESP01_RELAY", "12345678"); }
Trin 18: App
For at oprette applikationen bruger vi MIT App Inventor 2, som kan tilgås via linket:
ai2.appinventor.mit.edu/
Applikationen består af to skærme indeholdende otte par knapper i hver, der angiver status for hvert relæ.
Følgende er nogle af de anvendte programmeringsblokke:
VIGTIGT: Standard -IP -adressen for ESP, da adgangspunktet er 192.168.4.1
1. Når skærmen initialiseres, gemmer vi IP'en i hukommelsen og kalder proceduren for at gendanne tasternes tilstand (ON / OFF).
2. Ring til den anden skærm
1. Når du klikker på TIL -knappen på et af relæerne, foretager vi visuelle ændringer i knappen (grønne blokke). WebViewer1. GoToUrl anmoder om vores ESP01 ved at linke MR01 / 1 -dataene i URL'en.
2. Når du klikker på OFF -knappen på et af relæerne, foretager vi visuelle ændringer i knappen (grønne blokke). WebViewer1. GoToUrl fremsætter en anmodning til vores ESP01 ved at linke MR01 / 0 -dataene i URL'en.
Denne procedure bruges til at gendanne tilstanden på knapperne (relæer), fordi når du ændrer skærmen, vender den tilbage til oprettelsesmønsteret.
Den gule blok gentages for hvert af knapparrene.
Trin 19: Download
Her er projektfilerne til download:
MIT App Inventor 2 projektfil - download
Applikations -APK til installation på Android - download
Download de andre filer:
INO
Anbefalede:
ESP01 programmering printkort: 5 trin
ESP01 Programmering Printed Circuit Board: For nylig var jeg nødt til at skrive en kode på min ESP01 og besluttede at bruge en adapter til at overføre koden til CHIP'en. Det var imidlertid nødvendigt at foretage nogle ændringer af adapteren, så koden kunne overføres. Det vil sige, adapteren var ikke hel
Totoro Project - IoT & MQTT & ESP01: 7 trin (med billeder)
Totoro Project - IoT & MQTT & ESP01: Totoro Project er et dejligt IoT -projekt, du kan kopiere i mange andre forskellige former. Ved hjælp af ESP01 -kortet kan du med MQTT -protokollen kommunikere status for knappen til MQTT -mægleren (i min case AdafruitIO). En nyttig vejledning til MQTT og Ad
ESP01 Moodlight With Firebase i realtid + OTA: 7 trin
ESP01 Moodlight With Firebase i realtid + OTA: Det understøtter R-G-B-tilstand og Fade-effekt. Der er også understøttelse af lysstyrkekontrol. Understøttelse af OTA -opdatering
Flash AT Command Firmware til ESP01 -modul (kræver en USB til TTL -adapter): 5 trin
Flash AT Command Firmware til ESP01 -modul (kræver en USB til TTL -adapter): Af Jay Amiel AjocGensan PHfacebook.com/geeamealyoutube.com/jayamielajoc
ESP01/01S RELAY MODULE TUTORIAL: 4 trin
ESP01/ 01S RELAY MODULE TUTORIAL: Beskrivelse Dette WiFi-relæ baseret på AI-Thinker ESP-01/ 01S WiFi-modul, vi bruger GPIO0 fra ESP-01/ 01S til at styre relæet ved lavt niveau. Det er let at gøre din smarte switch til enhver enhed med din telefon overalt med dette smarte relæ.SpecifikationerW