INHOUDSOPGAWE:

Lae koste -outomatisering met ESP01: 19 stappe
Lae koste -outomatisering met ESP01: 19 stappe

Video: Lae koste -outomatisering met ESP01: 19 stappe

Video: Lae koste -outomatisering met ESP01: 19 stappe
Video: How to Program ESP01 WiFi Module | Arduino IDE | DIY 2024, November
Anonim
Image
Image
MCP23016
MCP23016

Vandag bespreek ons outomatisering met behulp van ESP01 met 16 relais. Dit is 'n super goedkoop ontwerpmodel, waar u die modules kan vermenigvuldig en tot 128 relais kan kry, aangesien dit moontlik is om tot agt poortuitbreiders in hierdie mikrobeheerder te plaas.

In ons kring het u 'n toepassing op 'n slimfoon wat met die ESP01 kommunikeer. Dit sal 'n uitbreiding hê met 16 poorte, elk gekoppel aan 'n aflos. Ons het ook 'n 3v3 verstelbare bron. Daarom beheer ons 'n 16-kanaals aflosmodule met behulp van ESP01 via die Android-toepassing, wat ek aan u beskikbaar stel.

Stap 1: Wenk om te onthou

Dit is belangrik om daarop te let, my vriende, dat ek hierdie chip in 'n kring genaamd MCP23016 gebruik het. Dit is ook belangrik dat u na die video EXPANSOR OF IOS FOR ESP32, ESP8266 AND ARDUINO kyk, waarin ek die toestel toets en wys dat dit vir hierdie drie soorte borde werk.

Stap 2: MCP23016

Hier het ons 'n beeld van die MCP23016, 'n chip met 28 penne. Dit is belangrik om te noem dat daar ook die MCP23017 -model is, wat meer gereeld voorkom en geen weerstand en kondensator nodig het nie, omdat dit 'n interne klok het. Dit maak dit makliker, maar die vasmaak daarvan is anders as wat ons in hierdie video wys.

Stap 3: Adres

Adres
Adres

Om die adres van die MCP23016 te definieer, gebruik ons penne A0, A1 en A2. U kan hulle net op HOOG of LAAG laat vir die adresverandering.

Die adres sal soos volg gevorm word:

MCP_Address = 20 + (A2 A1 A0)

Waar A2 A1 A0 HOOG / LAAG waardes kan aanneem, vorm 'n binêre getal van 0 tot 7.

Byvoorbeeld:

A2> GND, A1> GND, A0> GND (beteken 000, dan 20 + 0 = 20)

Of andersins, A2> HOOG, A1> GND, A0> HOOG (beteken 101, dan 20 + 5 = 25)

Stap 4: bevele

Opdragte
Opdragte

Hier is 'n tabel met opdragte vir kommunikasie:

Stap 5: Kategorieë

GP0 / GP1 - Data Port Registers

Daar is twee registers wat toegang tot die twee GPIO -poorte bied.

Die registerlesing gee die status van die penne op die poort.

Bit = 1> HOOG Bit = 0> LAAG

IODIR0 / IODIR1

Daar is twee registers wat die penmodus beheer. (Invoer of uitvoer)

Bit = 1> INPUT Bit = 0> UITGANG

Stap 6: Struktuur vir kommunikasie

Struktuur vir kommunikasie
Struktuur vir kommunikasie

Hier praat ons oor die adres van die skyfie en kry ons toegang tot die opdrag en data, wat 'n soort protokol is wat gedoen moet word om inligting te stuur.

Stap 7: Programmeer

Program
Program

Ons doen 'n program wat bestaan uit die kommunikasie van die ESP01 met die MCP23016 om meer GPIO's te kan gebruik. Hierdie 16 nuwe GPIO's wat ons het, gaan 'n 16-kanaal aflosmodule beheer.

Opdragte sal via 'n Android -program na ESP01 gestuur word.

Stap 8: MCP23016

MCP23016
MCP23016

Stap 9: ESP-01

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

Dit is 'n 16-aflosbord.

Stap 10: Monteer ESP01

Montage ESP01
Montage ESP01

Stap 11: Biblioteke en veranderlikes

Ons sal die biblioteke insluit wat verantwoordelik is vir i2c -kommunikasie, en vir die skep van die toegangspunt en webbediener. Ons definieer die adres van die chip en die poorte. Laastens definieer ons die veranderlikes om die waardes van die MCP -penne te stoor.

#include // responsável pela comunicação i2c. #include // responsável por criar o accesspoint eo webserver WiFiServer server (80); // webserver for acessarmos através do aplicativo // endereço I2C do MCP23016 #define MCPAddress 0x20 // REGISTRERE definieer 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 doen MCP uint8_t currentValueGP0 = 0; uint8_t currentValueGP1 = 0;

Stap 12: Opstel

Ons initialiseer die ESP01 en stel die poorte op. Ons stel ook die toegangspunt op en initialiseer die bediener.

ongeldige opstelling () {Serial.begin (9600); vertraging (1000); Wire.begin (0, 2); // ESP01 Wire.setClock (200000); configurePort (IODIR0, OUTPUT); configurePort (IODIR1, OUTPUT); writeBlockData (GP0, 0x00); skryfBlockData (GP1, 0x00); setupWiFi (); // konfigurasie vir toegangspunt bediener.begin (); // amptelike bediener}

Stap 13: Lus

Hier kyk ek of daar 'n kliënt aan die bediener gekoppel is. Ons lees ook die eerste versoekreël. Ons onttrek die data vir manipulasie, definieer die standaard antwoordopskrif en stuur hierdie antwoord na die kliënt.

leemte -lus () {WiFiClient -kliënt = 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 ("ongeldige versoek"); terugkeer; } 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); } // eindlus

Stap 14: ParserData

ParserData
ParserData

Uit die versoek soek ons na die data wat verband hou met die relais. Ons stuur dan die data na die MCP23016.

// 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 waarde = -1; int indeks = data.indexOf ("/MR"); // busca o index do prefixo MR if (data [index+5] == '/') ///MR01/1, onde 0 = GP; 1 = RELE; 1 = ESTADO (aan/af) {gp = data [indeks+3]-'0'; relais = data [indeks+4]-'0'; waarde = data [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); }}

Stap 15: ConfigurePort

Ons stel die GPIO -penmodus in (GP0 of GP1).

// configura o modo dos pinos GPIO (GP0 ou GP1) // como parametro 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 // aangepaste waarde van 0-255 aanduidings vir portas (1 = INPUT, 0 = OUTPUT) (uint8_t -poort, uint8_t -aangepas) {if (custom == INPUT) {writeBlockData (poort, 0xFF); } anders as (custom == OUTPUT) {writeBlockData (poort, 0x00); } anders {writeBlockData (poort, pasgemaak); }}

Stap 16: WritePinData

In hierdie deel van die kode verander ons die toestand van die gewenste pen en stuur die data na die MCP.

// muda o estado de um pino desejado, passando como parametro: // pin = pino desejado; waarde = 0/1 (aan/af); gp = 0/1 (PORT tot MCP) void writePinData (int pin, int value, uint8_t gp) {uint8_t statusGP = 0; as (gp == GP0) statusGP = currentValueGP0; anders statusGP = currentValueGP1; as (waarde == 0) {statusGP & = ~ (B00000001 << (pen)); // muda o pino para LOW} anders as (waarde == 1) {statusGP | = (B00000001 << (pin)); // muda o pino para HIGH} if (gp == GP0) currentValueGP0 = statusGP; anders currentValueGP1 = statusGP; // envia os dados for MCP writeBlockData (gp, statusGP); vertraging (10); }

Stap 17: WriteBlockData & SetupWiFi

Hier stuur ons data via die i2c -bus na die MCP23016. Vervolgens stel ons die eienskappe op om die toegangspunt moontlik te maak. Uiteindelik het ons die WiFi vir die toegangspuntmodus opgestel en 'n AP met SSID en die WAGWOORD geskep.

// 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 (poort); Wire.write (data); Wire.endTransmission (); vertraging (10); }

// konfigura as propriedades para habilitar o ACCESS POINTvoid setupWiFi () {WiFi.mode (WIFI_AP); WiFi.softAP ("ESP01_RELAY", "12345678"); }

Stap 18: App

App
App
App
App
App
App
App
App

Om die toepassing te skep, gebruik ons MIT App Inventor 2, wat via die skakel verkry kan word:

ai2.appinventor.mit.edu/

Die toepassing bestaan uit twee skerms met agt pare knoppies in elk, wat die status van elke aflos aandui.

Die volgende is 'n paar van die programmeerblokke wat gebruik word:

BELANGRIK: Die standaard IP -adres van die ESP, aangesien die toegangspunt 192.168.4.1 is

1. As die skerm geïnitialiseer word, stoor ons die IP -geheue in die geheue en skakel die prosedure om die toestand van die knoppies te herstel (AAN / UIT).

2. Bel die ander skerm

1. As u op die AAN -knoppie van een van die aflosse klik, sal ons die knoppie visueel verander (groen blokkies). WebViewer1. GoToUrl rig 'n versoek vir ons ESP01 deur die MR01 / 1 -data in die URL te koppel.

2. As u op die OFF -knoppie van een van die relais klik, sal ons die knoppie visueel verander (groen blokkies). WebViewer1. GoToUrl rig 'n versoek aan ons ESP01 deur die MR01 / 0 -data in die URL te koppel.

Hierdie prosedure word gebruik om die toestand van die knoppies (relais) te herstel, want as u die skerm verander, keer dit terug na die skeppatroon.

Die geel blokkie herhaal vir elk van die knoppiepare.

Stap 19: Laai af

Hier is die projeklêers om af te laai:

MIT App Inventor 2 -projeklêer - aflaai

APK -toepassing om op Android te installeer - aflaai

Laai die ander lêers af:

PDF

EK NEE

Aanbeveel: