Sisukord:

Madala hinnaga automatiseerimine ESP01 abil: 19 sammu
Madala hinnaga automatiseerimine ESP01 abil: 19 sammu

Video: Madala hinnaga automatiseerimine ESP01 abil: 19 sammu

Video: Madala hinnaga automatiseerimine ESP01 abil: 19 sammu
Video: Mashallah Song | Ek Tha Tiger | Salman Khan, Katrina Kaif, Shreya Ghoshal, Sajid-Wajid, Kausar Munir 2024, November
Anonim
Image
Image
MCP23016
MCP23016

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

Aadress
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

Käsud
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

Suhtluse struktuur
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

Programm
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

MCP23016
MCP23016

9. samm: ESP-01

ESP-01
ESP-01
ESP-01
ESP-01

See on 16 releega plaat.

Samm: ESP01 paigaldamine

Paigaldus ESP01
Paigaldus ESP01

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

ParserData
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

Rakendus
Rakendus
Rakendus
Rakendus
Rakendus
Rakendus
Rakendus
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:

PDF

INO

Soovitan: