Sisällysluettelo:
- Vaihe 1: Muistettava vinkki
- Vaihe 2: MCP23016
- Vaihe 3: Osoite
- Vaihe 4: Komennot
- Vaihe 5: Luokat
- Vaihe 6: Viestinnän rakenne
- Vaihe 7: Ohjelmoi
- Vaihe 8: MCP23016
- Vaihe 9: ESP-01
- Vaihe 10: ESP01: n asennus
- Vaihe 11: Kirjastot ja muuttujat
- Vaihe 12: Asennus
- Vaihe 13: Silmukka
- Vaihe 14: ParserData
- Vaihe 15: ConfigurePort
- Vaihe 16: Kirjoita PinData
- Vaihe 17: WriteBlockData & SetupWiFi
- Vaihe 18: Sovellus
- Vaihe 19: Lataa
Video: Edullinen automaatio ESP01: 19 askeleella
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:02
Tänään keskustelemme automaatiosta ESP01: n avulla 16 releen kanssa. Tämä on erittäin halpa suunnittelumalli, jossa voit kertoa moduuleja ja saada jopa 128 relettä, koska tähän mikrokontrolleriin on mahdollista asentaa jopa kahdeksan portin laajenninta.
Piirissämme on älypuhelimessa sovellus, joka kommunikoi ESP01: n kanssa. Siinä on laajennin, jossa on 16 porttia, joista jokainen on kytketty releeseen. Meillä on myös säädettävä 3v3 -lähde. Siksi hallitsemme 16-kanavaista välitysmoduulia ESP01: n avulla Android-sovelluksen kautta, jonka annan sinulle saataville.
Vaihe 1: Muistettava vinkki
On tärkeää huomata, ystäväni, että käytin tätä sirua piirissä nimeltä MCP23016. Sinun on myös tärkeää katsoa video EXPANSOR OF IOS FOR ESP32, ESP8266 JA ARDUINO, jossa testaan laitetta ja näytän toimivan näillä kolmella tyyppisellä levyllä.
Vaihe 2: MCP23016
Tässä on kuva MCP23016: sta, joka on siru, jossa on 28 nastaa. On tärkeää mainita, että on myös MCP23017 -malli, joka on yleisempi eikä vaadi vastusta ja kondensaattoria, koska siinä on sisäinen kello. Tämä helpottaa sitä, mutta sen kiinnitys on erilainen kuin tässä videossa.
Vaihe 3: Osoite
MCP23016: n osoitteen määrittämiseen käytämme nastoja A0, A1 ja A2. Voit jättää ne osoitteeseen HIGH tai LOW osoitteenmuutosta varten.
Osoite muodostetaan seuraavasti:
MCP_osoite = 20 + (A2 A1 A0)
Jos A2 A1 A0 voi ottaa HIGH / LOW arvoja, binääriluku 0-7.
Esimerkiksi:
A2> GND, A1> GND, A0> GND (tarkoittaa 000, sitten 20 + 0 = 20)
Tai muuten, A2> HIGH, A1> GND, A0> HIGH (tarkoittaa 101, sitten 20 + 5 = 25)
Vaihe 4: Komennot
Tässä on taulukko kommunikointikomennoilla:
Vaihe 5: Luokat
GP0 / GP1 - Dataportin rekisterit
On olemassa kaksi rekisteriä, jotka tarjoavat pääsyn kahteen GPIO -porttiin.
Rekisterin lukema näyttää kyseisen portin nastojen tilan.
Bitti = 1> HIGH Bit = 0> LOW
IODIR0 / IODIR1
Pin -tilaa ohjaavat kaksi rekisteriä. (Tulo tai lähtö)
Bitti = 1> TULOBitti = 0> LÄHTÖ
Vaihe 6: Viestinnän rakenne
Tässä puhumme sirun osoitteesta ja pääsemme komentoon ja tietoihin, mikä on eräänlainen protokolla, joka on tehtävä tietojen lähettämiseksi.
Vaihe 7: Ohjelmoi
Teemme ohjelman, joka koostuu ESP01: n kommunikoinnista MCP23016: n kanssa, jotta meillä on enemmän GPIO: ita. Nämä 16 uutta GPIO: ta, joita meillä on, ohjaavat 16-kanavaista välitysmoduulia.
Komennot lähetetään ESP01: een Android -sovelluksen kautta.
Vaihe 8: MCP23016
Vaihe 9: ESP-01
Tämä on 16-releinen kortti.
Vaihe 10: ESP01: n asennus
Vaihe 11: Kirjastot ja muuttujat
Mukana ovat kirjastot, jotka vastaavat i2c -viestinnästä sekä tukiaseman ja verkkopalvelimen luomisesta. Määritämme sirun osoitteen ja portit. Lopuksi määritämme muuttujat MCP -nastojen arvojen tallentamiseksi.
#include // responseável pela comunicação i2c. #include // responseá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 // ENDEREÇOS 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 tee MCP uint8_t currentValueGP0 = 0; uint8_t currentValueGP1 = 0;
Vaihe 12: Asennus
Alustamme ESP01: n ja määritämme portit. Määritämme myös tukiaseman ja alustamme palvelimen.
void setup () {Serial.begin (9600); viive (1000); Lanka.alku (0, 2); // ESP01 Wire.setClock (200000); configurePort (IODIR0, OUTPUT); configurePort (IODIR1, OUTPUT); writeBlockData (GP0, 0x00); writeBlockData (GP1, 0x00); setupWiFi (); // tukiaseman palvelimen konfigurointi.begin (); // inicializa tai palvelin}
Vaihe 13: Silmukka
Täällä tarkistan, onko asiakkaita kytketty palvelimeen. Luimme myös ensimmäisen pyyntörivin. Otamme tiedot käsittelyyn, määritämme oletusvastausotsikon ja lähetämme tämän vastauksen asiakkaalle.
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 ("virheellinen pyyntö"); palata; } client.flush (); Merkkijono 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); } // lopetuslenkki
Vaihe 14: ParserData
Etsimme pyynnöstä releisiin liittyviä tietoja. Lähetämme tiedot sitten MCP23016 -laitteeseen.
// 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 -arvo = -1; int -indeksi = data.indexOf ("/MR"); // busca o index do etuliite MR if (data [index+5] == '/') ///MR01/1, onde 0 = GP; 1 = RELE; 1 = ESTADO (päällä/pois) {gp = data [indeksi+3]-'0'; rele = data [indeksi+4]-'0'; arvo = data [indeksi+6]-'0'; // envia os dados para o MCP23016 // [relay-1] porque o MCP vai de 0-7 os pinos writePinData (rele 1, arvo, gp); }}
Vaihe 15: ConfigurePort
Asetamme GPIO -pin -tilan (GP0 tai GP1).
// konfigurointi tai modo dos pinos GPIO (GP0 tai GP1) // como parametro passamos: // portti: 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) // esim: 0x01 ou B00000001 ou 1: indica que apenas o GPX.0 trabalhará como entrada, o restante como saida void configurePort (uint8_t -portti, uint8_t mukautettu) {if (custom == INPUT) {writeBlockData (portti, 0xFF); } else if (custom == LÄHTÖ) {writeBlockData (portti, 0x00); } else {writeBlockData (portti, mukautettu); }}
Vaihe 16: Kirjoita PinData
Tässä koodin osassa muutamme halutun nastan tilaa ja lähetämme tiedot MCP: hen.
// muda o estado de um pino desejado, passando como parametro: // pin = pino desejado; arvo = 0/1 (päälle/pois); gp = 0/1 (PORT do MCP) void writePinData (int pin, int value, uint8_t gp) {uint8_t statusGP = 0; jos (gp == GP0) statusGP = currentValueGP0; else statusGP = currentValueGP1; if (arvo == 0) {statusGP & = ~ (B00000001 << (nasta)); // muda o pino para LOW} else if (arvo == 1) {statusGP | = (B00000001 << (nasta)); // muda o pino para HIGH} if (gp == GP0) currentValueGP0 = statusGP; else currentValueGP1 = statusGP; // envia os dados para tai MCP writeBlockData (gp, statusGP); viive (10); }
Vaihe 17: WriteBlockData & SetupWiFi
Tässä lähetämme tietoja MCP23016 -laitteeseen i2c -väylän kautta. Seuraavaksi määritämme ominaisuudet ottamaan käyttöön tukiaseman. Lopuksi konfiguroimme WiFi -yhteyspistetilan ja loimme tukiaseman SSID: llä ja SALASANALLA.
// 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 (portti); Wire.write (data); Wire.endTransmission (); viive (10); }
// configura as propriedades para habilitar o ACCESS POINTvoid setupWiFi () {WiFi.mode (WIFI_AP); WiFi.softAP ("ESP01_RELAY", "12345678"); }
Vaihe 18: Sovellus
Sovelluksen luomisessa käytämme MIT App Inventor 2 -ohjelmaa, johon pääsee linkin kautta:
ai2.appinventor.mit.edu/
Sovellus koostuu kahdesta näytöstä, joissa kummassakin on kahdeksan painiketta, mikä ilmaisee kunkin releen tilan.
Seuraavassa on joitain käytettyjä ohjelmointilohkoja:
TÄRKEÄÄ: ESP: n oletus -IP -osoite, koska tukiasema on 192.168.4.1
1. Kun näyttö käynnistyy, tallennamme IP -osoitteen muistiin ja kutsumme menettelyn painikkeiden tilan palauttamiseksi (ON / OFF).
2. Soita toiseen näyttöön
1. Kun napsautat jonkin releen ON -painiketta, teemme visuaalisia muutoksia painikkeeseen (vihreät lohkot). WebViewer1. GoToUrl pyytää ESP01: tämme linkittämällä MR01 / 1 -tiedot URL -osoitteeseen.
2. Kun napsautat jonkin releen OFF -painiketta, teemme visuaalisia muutoksia painikkeeseen (vihreät lohkot). WebViewer1. GoToUrl tekee pyynnön ESP01: lle linkittämällä MR01 / 0 -tiedot URL -osoitteeseen.
Tätä menettelyä käytetään painikkeiden (releiden) tilan palauttamiseen, koska näyttöä vaihdettaessa se palaa luontikuvioon.
Keltainen lohko toistuu jokaiselle painikeparille.
Vaihe 19: Lataa
Tässä ovat ladattavat projektitiedostot:
MIT App Inventor 2 -projektitiedosto - lataa
Sovellus -APK Androidille asennettavaksi - lataa
Lataa muut tiedostot:
INO
Suositeltava:
Puhuva automaatio -- Ääni Arduinolta -- Puheohjattu automaatio -- HC -05 Bluetooth -moduuli: 9 vaihetta (kuvilla)
Puhuva automaatio || Ääni Arduinolta || Puheohjattu automaatio || HC - 05 Bluetooth -moduuli: …………………………. Tilaa YouTube -kanavani saadaksesi lisää videoita …. …. Tässä videossa olemme rakentaneet puhuvan automaation. Kun lähetät äänikomennon matkapuhelimen kautta, se käynnistää kodin laitteet ja lähettää palautetta
Tee digitaalinen logiikka -analysaattori alle $ 1: 5 askeleella
Tee digitaalinen logiikka -analysaattori alle 1 dollarilla: Loogisen tason anturi on laite, joka tunnistaa, onko komponentin lähtö 1 tai 0 (positiivinen tai negatiivinen). Tiedätkö ne mukavat tasoanturit LCD -näytöillä, jotka maksavat noin 25 dollaria? Tämä on naurettavan halvempi ja tekee saman (Se i
Toista Doom iPodilla 5 helpolla askeleella !: 5 vaihetta
Toista Doom iPodilla 5 helpolla askeleella !: Vaiheittainen opas Rockboxin kaksoiskäynnistyksestä iPodilla Doomin ja kymmenien muiden pelien pelaamiseen. Se on jotain todella helppoa tehdä, mutta monet ihmiset hämmästyvät silti nähdessään minut soittavan doomia iPodillani ja hämmentyneet ohjeista
Arduino Uno Fish Feeder 6 edullisella ja helpolla askeleella !: 6 vaihetta
Arduino Uno Fish Feeder 6 edullisella ja helpolla askeleella !: Joten tähän projektiin saatetaan tarvita hieman taustaa. Ihmisillä, joilla on lemmikkieläimiä, oli todennäköisesti sama ongelma kuin minulla: lomat ja unohtaminen. Unohdin jatkuvasti ruokkia kalojani ja ryntäsin aina tekemään sen ennen kuin se meni
MQTT/Googlen kotitulva/vesi WIFI-anturi ESP-01: 7 askeleella
MQTT/Google Home Flood/Water WIFI -anturi ESP-01: Tässä ohjeessa näytän sinulle, kuinka rakentaa wifi-tulva-/vesianturi pienin kustannuksin. Koko projekti maksaa minulle alle 8 dollaria osista, jotka hankin ebaystä ja nykyisistä varaosistani. Tässä projektissa käytämme ESP-01: tä Wif