Kazalo:

Nizkocenovna avtomatizacija z ESP01: 19 korakov
Nizkocenovna avtomatizacija z ESP01: 19 korakov

Video: Nizkocenovna avtomatizacija z ESP01: 19 korakov

Video: Nizkocenovna avtomatizacija z ESP01: 19 korakov
Video: aBOTs - Nizkocenovna Robotika 2024, November
Anonim
Image
Image
MCP23016
MCP23016

Danes bomo razpravljali o avtomatizaciji z uporabo ESP01 s 16 releji. To je super poceni model oblikovanja, kjer lahko pomnožite module in dobite do 128 relejev, saj je v ta mikrokrmilnik mogoče vstaviti do osem razširilnikov vrat.

V našem vezju boste imeli na pametnem telefonu aplikacijo, ki komunicira z ESP01. Imel bo razširjevalnik s 16 vrati, od katerih je vsak priključen na rele. Imamo tudi nastavljiv vir 3v3. 16-kanalni relejni modul bomo zato nadzirali z uporabo ESP01 prek aplikacije za Android, ki vam jo dajem na voljo.

Korak: Nasvet, ki si ga morate zapomniti

Pomembno je omeniti, prijatelji, da sem ta čip uporabil v vezju, imenovanem MCP23016. Pomembno je tudi, da si ogledate video EXPANSOR IOS za ESP32, ESP8266 IN ARDUINO, v katerem preizkusim napravo in pokažem, da deluje za te tri vrste plošč.

2. korak: MCP23016

Tukaj imamo sliko MCP23016, ki je čip z 28 zatiči. Pomembno je omeniti, da obstaja tudi model MCP23017, ki je pogostejši in ne potrebuje upora in kondenzatorja, ker ima notranjo uro. To olajša, vendar je njegovo pripenjanje drugačno od tistega, kar prikazujemo v tem videoposnetku.

3. korak: Naslov

Naslov
Naslov

Za določitev naslova MCP23016 uporabimo zatiče A0, A1 in A2. Za spremembo naslova jih lahko pustite na HIGH ali LOW.

Naslov bo oblikovan na naslednji način:

Naslov MCP_20 = 20 + (A2 A1 A0)

Kjer lahko A2 A1 A0 sprejme vrednosti VISOKO / NIZKO, se oblikuje binarno število od 0 do 7.

Na primer:

A2> GND, A1> GND, A0> GND (pomeni 000, nato 20 + 0 = 20)

Ali drugače, A2> HIGH, A1> GND, A0> HIGH (pomeni 101, nato 20 + 5 = 25)

4. korak: Ukazi

Ukazi
Ukazi

Tu je tabela z ukazi za komunikacijo:

5. korak: Kategorije

GP0 / GP1 - Registri podatkovnih vrat

Obstajata dva registra, ki omogočata dostop do dveh vrat GPIO.

Odčitavanje registra prikazuje stanje zatičev na teh vratih.

Bit = 1> HIGH Bit = 0> LOW

IODIR0 / IODIR1

Obstajata dva registra, ki upravljata način pin. (Vhod ali izhod)

Bit = 1> INPUT Bit = 0> OUTPUT

6. korak: Struktura komunikacije

Struktura za komunikacijo
Struktura za komunikacijo

Tu govorimo o naslovu čipa in dostopu do ukaza in podatkov, kar je neke vrste protokol, ki ga je treba narediti za pošiljanje informacij.

7. korak: Program

Program
Program

Izvedli bomo program, ki bo sestavljen iz komuniciranja ESP01 z MCP23016, da bomo lahko uporabljali več GPIO -jev. Teh 16 novih GPIO, ki jih bomo imeli, bo upravljalo 16-kanalni relejni modul.

Ukazi bodo poslani na ESP01 prek aplikacije za Android.

8. korak: MCP23016

MCP23016
MCP23016

9. korak: ESP-01

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

To je plošča s 16 releji.

10. korak: Namestitev ESP01

Montaža ESP01
Montaža ESP01

11. korak: Knjižnice in spremenljivke

Vključili bomo knjižnice, odgovorne za komunikacijo i2c ter za ustvarjanje dostopne točke in spletnega strežnika. Določimo naslov čipa in vrata. Na koncu določimo spremenljivke za shranjevanje vrednosti zatičev MCP.

#include // responvel pela comunicação i2c. #include // responsável por criar o accesspoint eo webserver WiFiServer server (80); // webserver para acessarmos através to aplicativo // endereço I2C do MCP23016 #define MCPAddress 0x20 // ENDEREADOS REGES define GP0 0x00 // REGISTRAT PORTOV PODATKOV 0 #define GP1 0x01 // REGISTRAT PORTOV PODATKOV 1 #define IODIR0 0x06 // V/I SMERNIK REGISTRACIJE 0 #define IODIR1 0x07 // I/O DIRECTION REGISTER 1 // guarda os valores dos pinos naredi MCP uint8_t currentValueGP0 = 0; uint8_t currentValueGP1 = 0;

12. korak: Nastavitev

Inicializiramo ESP01 in konfiguriramo vrata. Prav tako konfiguriramo dostopno točko in inicializiramo strežnik.

void setup () {Serial.begin (9600); zamuda (1000); Wire.begin (0, 2); // ESP01 Wire.setClock (200000); configurePort (IODIR0, OUTPUT); configurePort (IODIR1, OUTPUT); writeBlockData (GP0, 0x00); writeBlockData (GP1, 0x00); setupWiFi (); // konfiguracijo dostopne točke server.begin (); // inicializacijo strežnika}

Korak: Zanka

Tu preverim, ali so s strežnikom povezane kakšne stranke. Prebrali smo tudi prvo vrstico zahteve. Izvlečemo podatke za manipulacijo, določimo privzeto glavo odziva in ta odgovor pošljemo odjemalcu.

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 predpono glave, za sabre se zahteva kot esperada za os relés */if (req.indexOf ("/MR")! = -1) {parserData (req); // delček, ki zahteva dodatne zahteve za manipulação} else {Serial.println ("neveljavna zahteva"); vrnitev; } client.flush (); Niz s = "HTTP/1.1 200 V redu / r / n"; // cabeçalho padrão de resposta client.print (s); // envia a resposta para o cliente delay (1); } // zaključna zanka

14. korak: ParserData

ParserData
ParserData

Iz zahteve iščemo podatke v zvezi z releji. Nato podatke pošljemo na MCP23016.

// a partir da requisição busca os dados referente aos relésvoid parserData (Podatkovni niz) {uint8_t relay = -1; uint8_t gp = -1; uint8_t vrednost = -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 (vklop/izklop) {gp = podatki [indeks+3]-'0'; rele = podatki [indeks+4]-'0'; vrednost = podatki [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); }}

Korak: Konfigurirajte Port

Nastavili smo pin način GPIO (GP0 ali GP1).

// konfiguracija modo dos pinos GPIO (GP0 ali GP1) // como parametro passamos: // vrata: GP0 ou GP1 // VPIS para todos kot portas do GP trabalharem como entrada // OUTPUT para todos as portas do GP trabalharem como saida // po meri um valor de 0-255 indicando o modo das portas (1 = INPUT, 0 = OUTPUT) // ex: 0x01 ou B00000001 ou 1: indica que apenas o GPX.0 trabalhará como entrada, o restante como saida void configurePort (vrata uint8_t, uint8_t po meri) {if (po meri == INPUT) {writeBlockData (vrata, 0xFF); } else if (custom == OUTPUT) {writeBlockData (vrata, 0x00); } else {writeBlockData (vrata, po meri); }}

16. korak: WritePinData

V tem delu kode spremenimo stanje želenega zatiča in podatke pošljemo v MCP.

// muda o estado de um pino desejado, passando como parametro: // pin = pino desejado; vrednost = 0/1 (vklop/izklop); 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 (vrednost == 0) {statusGP & = ~ (B00000001 << (pin)); // muda o pino para LOW} else if (value == 1) {statusGP | = (B00000001 << (pin)); // muda o pino para HIGH} if (gp == GP0) currentValueGP0 = statusGP; drugače currentValueGP1 = statusGP; // envia os dados para MCP writeBlockData (gp, statusGP); zamuda (10); }

17. korak: WriteBlockData & SetupWiFi

Tukaj pošiljamo podatke na MCP23016 prek vodila i2c. Nato nastavimo lastnosti, da omogočimo dostopno točko. Končno smo konfigurirali WiFi za način dostopne točke in ustvarili dostopno točko s SSID in GESLO.

// enva dados para 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 (vrata); Wire.write (podatki); Wire.endTransmission (); zamuda (10); }

// konfiguriramo kot lastniško nastavljeno za TOČKO DOSTOPA in preprečimo nastavitevWiFi () {WiFi.mode (WIFI_AP); WiFi.softAP ("ESP01_RELAY", "12345678"); }

18. korak: Aplikacija

Aplikacija
Aplikacija
Aplikacija
Aplikacija
Aplikacija
Aplikacija
Aplikacija
Aplikacija

Za izdelavo aplikacije uporabljamo MIT App Inventor 2, do katerega lahko dostopate prek povezave:

ai2.appinventor.mit.edu/

Aplikacijo sestavljata dva zaslona, ki vsebujejo osem parov gumbov na vsakem, ki označujeta stanje vsakega releja.

Sledi nekaj uporabljenih programskih blokov:

POMEMBNO: Privzeti naslov IP ESP, saj je dostopna točka 192.168.4.1

1. Ko se zaslon inicializira, IP shranimo v pomnilnik in pokličemo postopek za obnovitev stanja gumbov (ON / OFF).

2. Pokličite drugi zaslon

1. Ko kliknemo gumb VKLOP na enem od relejev, bomo v gumbu naredili vizualne spremembe (zeleni bloki). WebViewer1. GoToUrl vloži zahtevo za naš ESP01 s povezovanjem podatkov MR01 / 1 v URL -ju.

2. Ko kliknemo gumb IZKLOP na enem od relejev, bomo v gumbu naredili vizualne spremembe (zeleni bloki). WebViewer1. GoToUrl pošlje zahtevo našemu ESP01 s povezovanjem podatkov MR01 / 0 v URL -ju.

Ta postopek se uporablja za obnovitev stanja gumbov (relejev), ker se ob spreminjanju zaslona vrne na vzorec ustvarjanja.

Rumeni blok se ponovi za vsak par gumbov.

19. korak: Prenesite

Tu so datoteke projekta za prenos:

Projektna datoteka MIT App Inventor 2 - prenos

APK aplikacije za namestitev na android - prenos

Prenesite druge datoteke:

PDF

JAZ NE

Priporočena: