Sisällysluettelo:

Edullinen automaatio ESP01: 19 askeleella
Edullinen automaatio ESP01: 19 askeleella

Video: Edullinen automaatio ESP01: 19 askeleella

Video: Edullinen automaatio ESP01: 19 askeleella
Video: Ny (G)RILLataan! SILVYN® RILL + KLICK 2024, Marraskuu
Anonim
Image
Image
MCP23016
MCP23016

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

Osoite
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

Komennot
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

Viestinnän rakenne
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

Ohjelmoida
Ohjelmoida

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

MCP23016
MCP23016

Vaihe 9: ESP-01

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

Tämä on 16-releinen kortti.

Vaihe 10: ESP01: n asennus

Asennus ESP01
Asennus ESP01

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

ParserData
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

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

PDF

INO

Suositeltava: