INHOUDSOPGAWE:
- Stap 1: Wenk om te onthou
- Stap 2: MCP23016
- Stap 3: Adres
- Stap 4: bevele
- Stap 5: Kategorieë
- Stap 6: Struktuur vir kommunikasie
- Stap 7: Programmeer
- Stap 8: MCP23016
- Stap 9: ESP-01
- Stap 10: Monteer ESP01
- Stap 11: Biblioteke en veranderlikes
- Stap 12: Opstel
- Stap 13: Lus
- Stap 14: ParserData
- Stap 15: ConfigurePort
- Stap 16: WritePinData
- Stap 17: WriteBlockData & SetupWiFi
- Stap 18: App
- Stap 19: Laai af
Video: Lae koste -outomatisering met ESP01: 19 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:27
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
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
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
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
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
Stap 9: ESP-01
Dit is 'n 16-aflosbord.
Stap 10: Monteer 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
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
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:
EK NEE
Aanbeveel:
LoRa 3 tot 8 km draadlose kommunikasie met lae koste E32 (sx1278/sx1276) -toestel vir Arduino, Esp8266 of Esp32: 15 stappe
LoRa 3 km tot 8 km draadlose kommunikasie met lae koste E32 (sx1278/sx1276) -apparaat vir Arduino, Esp8266 of Esp32: ek skep 'n biblioteek om EBYTE E32 te bestuur, gebaseer op die Semtech -reeks LoRa -toestelle, baie kragtig, eenvoudig en goedkoop. 3 km weergawe hier, 8 km weergawe hier Hulle kan oor 'n afstand van 3000m tot 8000m werk, en hulle het baie funksies en
DIY Lae koste tuisautomatisering met behulp van Esp8266: 6 stappe
DIY Lae koste tuisautomatisering met behulp van Esp8266: Hallo almal, vandag gaan ek in hierdie instruksies vir u wys hoe ek my eie outomatisering van die huis voorberei het as 'n stap in die rigting van 'n slim huis met 'n ESP 8266 -module, algemeen bekend as nodemcu, sonder om die tyd te mors laat ons begin:)
The 'Sup - 'n muis vir mense met Quadriplegia - lae koste en open source: 12 stappe (met foto's)
The 'Sup - 'n muis vir mense met Quadriplegia - lae koste en open source: In die lente van 2017 het die familie van my beste vriend my gevra of ek na Denver wil vlieg en hulle met 'n projek wil help. Hulle het 'n vriend, Allen, wat quadriplegia het as gevolg van 'n bergfietsongeluk. Ek en Felix (my vriend) het vinnig gaan kyk
Lae koste biodrukker: 13 stappe (met foto's)
Lae koste-bioprinter: ons is 'n voorgraadse navorsingspan by UC Davis. Ons is deel van die BioInnovation Group, wat werksaam is in die TEAM Molecular Prototyping and BioInnovation Lab (adviseurs dr. Marc Facciotti en Andrew Yao, MS). Die laboratorium bring studente van
Lae koste draadlose sensornetwerk op 433MHz -band: 5 stappe (met foto's)
Lae koste draadlose sensornetwerk op 433MHz -band: baie dankie aan Teresa Rajba dat u my vriendelik aanvaar het om data uit hul publikasies in hierdie artikel te gebruik.*In die prent hierbo - die vyf sensor -sender -eenhede wat ek gebruik het om te toets netwerke? 'N Eenvoudige definisie sou