Sisukord:
- Samm: näpunäide, mida meeles pidada
- 2. samm: MCP23016
- 3. samm: aadress
- 4. samm: käsud
- Samm: kategooriad
- 6. samm: suhtluse struktuur
- Samm: programm
- 8. samm: MCP23016
- 9. samm: ESP-01
- Samm: ESP01 paigaldamine
- 11. samm: raamatukogud ja muutujad
- 12. samm: seadistamine
- 13. samm: silmus
- 14. samm: ParserData
- Samm 15: ConfigurePort
- 16. samm: kirjutage PinData
- Samm 17: WriteBlockData & SetupWiFi
- 18. samm: rakendus
- Samm: laadige alla
Video: Madala hinnaga automatiseerimine ESP01 abil: 19 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:49
Täna arutame automatiseerimist ESP01 abil 16 releega. See on ülimalt odav disainimudel, kus saate mooduleid korrutada ja hankida kuni 128 releed, kuna sellesse mikrokontrollerisse on võimalik panna kuni kaheksa pordi laiendajat.
Meie vooluringis on teil nutitelefonis rakendus, mis suhtleb ESP01 -ga. Sellel on 16 portiga laiendaja, millest igaüks on ühendatud releega. Meil on ka 3v3 reguleeritav allikas. Seetõttu kontrollime 16-kanalilist releemoodulit, kasutades ESP01-d, Android-rakenduse kaudu, mille teen teile kättesaadavaks.
Samm: näpunäide, mida meeles pidada
Oluline on märkida, mu sõbrad, et ma kasutasin seda kiipi vooluringis nimega MCP23016. Samuti on oluline vaadata videot ESP32, ESP8266 JA ARDUINO IOS EXPANSOR, milles testin seadet ja näitan, et see töötab nende kolme tüüpi plaatide puhul.
2. samm: MCP23016
Siin on meil pilt MCP23016 -st, mis on 28 tihvtiga kiip. Oluline on mainida, et on olemas ka mudel MCP23017, mis on tavalisem ja ei vaja takistit ja kondensaatorit, kuna sellel on sisemine kell. See muudab selle lihtsamaks, kuid selle kinnitamine erineb sellest, mida me selles videos näitame.
3. samm: aadress
MCP23016 aadressi määratlemiseks kasutame tihvte A0, A1 ja A2. Aadressi muutmiseks võite need lihtsalt jätta HIGH või LOW.
Aadress moodustatakse järgmiselt:
MCP_aadress = 20 + (A2 A1 A0)
Kui A2 A1 A0 võib võtta HIGH / LOW väärtusi, moodustub kahendarv 0 kuni 7.
Näiteks:
A2> GND, A1> GND, A0> GND (tähendab 000, siis 20 + 0 = 20)
Või muidu, A2> HIGH, A1> GND, A0> HIGH (tähendab 101, siis 20 + 5 = 25)
4. samm: käsud
Siin on tabel suhtluskäskudega:
Samm: kategooriad
GP0 / GP1 - andmepordiregistrid
On kaks registrit, mis võimaldavad juurdepääsu kahele GPIO -pordile.
Registri näit annab selle pordi tihvtide oleku.
Bitt = 1> HIGH Bit = 0> LOW
IODIR0 / IODIR1
Pin -režiimi kontrollivad kaks registrit. (Sisend või väljund)
Bitt = 1> SISENDBIT = 0> VÄLJUND
6. samm: suhtluse struktuur
Siin räägime kiibi aadressist ja pääseme juurde käsule ja andmetele, mis on omamoodi protokoll, mida tuleb teabe saatmiseks teha.
Samm: programm
Teeme programmi, mis koosneb ESP01 suhtlemisest MCP23016 -ga, et kasutada rohkem GPIO -sid. Need 16 uut GPIO-d, mis meil on, hakkavad juhtima 16-kanalilist releemoodulit.
Käsud saadetakse ESP01 -le Androidi rakenduse kaudu.
8. samm: MCP23016
9. samm: ESP-01
See on 16 releega plaat.
Samm: ESP01 paigaldamine
11. samm: raamatukogud ja muutujad
Kaasame raamatukogud, mis vastutavad i2c -suhtluse ning pääsupunkti ja veebiserveri loomise eest. Me määratleme kiibi aadressi ja pordid. Lõpuks määratleme muutujad MCP -tihvtide väärtuste salvestamiseks.
#include // responseável pela comunicação i2c. #include // responseável por criar o accesspoint eo veebiserver WiFiServer server (80); // weberver para acessarmos através do aplicativo // endereço I2C do MCP23016 #define MCPAddress 0x20 // ENDEREOSOS DE REGISTR 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 teha MCP uint8_t currentValueGP0 = 0; uint8_t currentValueGP1 = 0;
12. samm: seadistamine
Vormistame ESP01 ja konfigureerime pordid. Samuti konfigureerime pääsupunkti ja lähtestame serveri.
void setup () {Serial.begin (9600); viivitus (1000); Traat.algus (0, 2); // ESP01 Wire.setClock (200000); configurePort (IODIR0, OUTPUT); configurePort (IODIR1, OUTPUT); writeBlockData (GP0, 0x00); writeBlockData (GP1, 0x00); setupWiFi (); // pääsupunkti serveri konfigureerimine.begin (); // algatamine või server}
13. samm: silmus
Siin kontrollin, kas mõni klient on serveriga ühendatud. Lugesime ka esimest päringurida. Me ekstraheerime andmed manipuleerimiseks, määratleme vastuse vaikepäise ja saadame selle vastuse kliendile.
void loop () {WiFiClient klient = 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 päise eesliide 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 ("kehtetu taotlus"); tagasipöördumine; } 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); } // lõpptsükkel
14. samm: ParserData
Taotlusest otsime releedega seotud andmeid. Seejärel saadame andmed MCP23016 -le.
// a partir da requisição busca os dados referente aos relésvoid parserData (String andmed) {uint8_t relee = -1; uint8_t gp = -1; uint8_t väärtus = -1; int indeks = andmed.indexOf ("/MR"); // busca o index do prefix MR if (data [index+5] == '/') ///MR01/1, onde 0 = GP; 1 = RELE; 1 = ESTADO (sisse/välja) {gp = andmed [indeks+3]-'0'; relee = andmed [indeks+4]-'0'; väärtus = andmed [indeks+6]-'0'; // envia os dados para o MCP23016 // [relee-1] portree o MCP või de 0-7 os pinos writePinData (relee-1, väärtus, gp); }}
Samm 15: ConfigurePort
Seadsime GPIO pin režiimi (GP0 või GP1).
// konfigureerimine või modo dos pinos GPIO (GP0 või GP1) // como parameetrid 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 // custom um valor de 0-255 indicando o modo das portas (1 = INPUT, 0 = OUTPUT) // nt: 0x01 ou B00000001 ou 1: indica que apenas o GPX.0 trabalhará como entrada, o restante como saida void configurePort (uint8_t port, uint8_t custom) {if (custom == INPUT) {writeBlockData (port, 0xFF); } else if (custom == VÄLJUND) {writeBlockData (port, 0x00); } else {writeBlockData (port, kohandatud); }}
16. samm: kirjutage PinData
Selles koodi osas muudame soovitud tihvti olekut ja saadame andmed MCP -le.
// muda o estado de um pino desejado, passando como parameeter: // pin = pino desejado; väärtus = 0/1 (sisse/välja); gp = 0/1 (PORT do MCP) void writePinData (int pin, int value, uint8_t gp) {uint8_t statusGP = 0; if (gp == GP0) statusGP = currentValueGP0; else statusGP = currentValueGP1; if (väärtus == 0) {statusGP & = ~ (B00000001 << (tihvt)); // muda o pino para LOW} else if (väärtus == 1) {statusGP | = (B00000001 << (tihvt)); // muda o pino para HIGH} if (gp == GP0) currentValueGP0 = statusGP; else currentValueGP1 = statusGP; // envia os dados para või MCP writeBlockData (gp, statusGP); viivitus (10); }
Samm 17: WriteBlockData & SetupWiFi
Siin saadame andmed iCP -siini kaudu MCP23016 -le. Järgmisena konfigureerime atribuudid juurdepääsupunkti lubamiseks. Lõpuks seadistasime WiFi pääsupunkti režiimi jaoks ja lõime SSID -ga ja parooliga AP -i.
// envia dados para o MCP23016 através do barramento i2c // reg: REGISTRADOR // andmed: dados (0-255) void writeBlockData (uint8_t port, uint8_t andmed) {Wire.beginTransmission (MCPAddress); Wire.write (port); Wire.write (andmed); Wire.endTransmission (); viivitus (10); }
// configura as propriedades para habilitar o ACCESS POINTvoid setupWiFi () {WiFi.mode (WIFI_AP); WiFi.softAP ("ESP01_RELAY", "12345678"); }
18. samm: rakendus
Rakenduse loomiseks kasutame MIT App Inventor 2, millele pääseb ligi lingi kaudu:
ai2.appinventor.mit.edu/
Rakendus koosneb kahest ekraanist, milles kummaski on kaheksa paari nuppe, mis näitavad iga relee olekut.
Siin on mõned kasutatavad programmeerimisplokid:
TÄHTIS: ESP vaikimisi IP -aadress, kuna pääsupunkt on 192.168.4.1
1. Kui ekraan käivitub, salvestame IP mällu ja kutsume protseduuri nuppude oleku taastamiseks (ON / OFF).
2. Helistage teisele ekraanile
1. Kui vajutate ühe relee ON nuppu, teeme nupus visuaalseid muudatusi (rohelised plokid). WebViewer1. GoToUrl esitab taotluse meie ESP01 jaoks, linkides URL -is MR01 / 1 andmed.
2. Kui vajutate ühe relee nuppu OFF, teeme nupus visuaalseid muudatusi (rohelised plokid). WebViewer1. GoToUrl esitab taotluse meie ESP01 -le, linkides URL -is MR01 / 0 andmed.
Seda protseduuri kasutatakse nuppude (releede) oleku taastamiseks, sest ekraani vahetades naaseb see loomise mustrisse.
Kollane plokk kordub iga nupupaari puhul.
Samm: laadige alla
Siin on projektifailid allalaadimiseks:
MIT App Inventor 2 projektifail - allalaadimine
Rakenduse APK Androidile installimiseks - allalaadimine
Laadige alla muud failid:
INO
Soovitan:
Kasvuhoone automatiseerimine LoRa abil! (2. osa) -- Mootoriga aknaavaja: 6 sammu (piltidega)
Kasvuhoone automatiseerimine LoRa abil! (2. osa) || Mootoriga aknaavaja: Selles projektis näitan teile, kuidas lõin oma kasvuhoonele mootoriga aknaavaja. See tähendab, et näitan teile, millist mootorit ma kasutasin, kuidas ma tegeliku mehaanilise süsteemi kavandasin, kuidas ma mootorit juhtisin ja lõpuks, kuidas ma kasutasin Arduino LoRa -d
Kasvuhoone automatiseerimine LoRa abil! (1. osa) -- Andurid (temperatuur, niiskus, mulla niiskus): 5 sammu
Kasvuhoone automatiseerimine LoRa abil! (1. osa) || Andurid (temperatuur, niiskus, mulla niiskus): Selles projektis näitan teile, kuidas ma kasvuhoonet automatiseerisin. See tähendab, et näitan teile, kuidas ma kasvuhoone ehitasin ja kuidas toite- ja automaatikaelektroonika ühendasin. Samuti näitan teile, kuidas programmeerida Arduino tahvlit, mis kasutab L
Madala hinnaga reguleeritav IoT projekti päikesepaneeli kinnitus: 4 sammu
Madala hinnaga reguleeritav IoT-projekti päikesepaneelide kinnitus: kui teil on elektroonika või IoT-projektid, mis on varustatud väikese päikesepaneeliga, võib teil olla raske leida odavaid ja hõlpsasti reguleeritavaid kinnitusi, et hoida paneeli õiges asendis. Selles projektis näitan teile lihtsat viisi, kuidas luua sobiv
Madala hinnaga lainekuju generaator (0–20 MHz): 20 sammu (piltidega)
Odav lainekuju generaator (0–20 MHz): ABSTRATH See projekt tuleneb vajadusest hankida lainegeneraator ribalaiusega üle 10 Mhz ja harmooniline moonutus alla 1%, seda kõike madala hinnaga. See dokument kirjeldab lainegeneraatori konstruktsiooni, mille ribalaius on üle
UDuino: väga madala hinnaga Arduino ühilduv arendusnõukogu: 7 sammu (koos piltidega)
UDuino: väga madalate kuludega Arduino ühilduv arendusnõukogu: Arduino plaadid sobivad suurepäraselt prototüüpimiseks. Kuid need lähevad üsna kalliks, kui teil on mitu samaaegset projekti või vajate suurema projekti jaoks palju kontrollerplaate. On mõningaid suurepäraseid ja odavamaid alternatiive (Boarduino, Freeduino), kuid