Inhoudsopgave:
- Stap 1: Tip om te onthouden
- Stap 2: MCP23016
- Stap 3: Adres
- Stap 4: Opdrachten
- Stap 5: Categorieën
- Stap 6: Structuur voor communicatie
- Stap 7: Programmeren
- Stap 8: MCP23016
- Stap 9: ESP-01
- Stap 10: ESP01. monteren
- Stap 11: Bibliotheken en variabelen
- Stap 12: Instellen
- Stap 13: Loop
- Stap 14: ParserData
- Stap 15: Poort configureren
- Stap 16: SchrijfPinData
- Stap 17: WriteBlockData & SetupWiFi
- Stap 18: App
- Stap 19: Downloaden
Video: Goedkope automatisering met ESP01 - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:18
Vandaag bespreken we automatisering met ESP01 met 16 relais. Dit is een super goedkoop ontwerpmodel waarbij je de modules kunt vermenigvuldigen en tot 128 relais kunt krijgen, aangezien het mogelijk is om tot acht poortuitbreidingen in deze microcontroller te plaatsen.
In ons circuit heb je een applicatie op een smartphone die communiceert met de ESP01. Het zal een uitbreiding hebben met 16 poorten, elk verbonden met een relais. We hebben ook een 3v3 instelbare bron. We zullen daarom een 16-kanaals relaismodule met ESP01 aansturen via de Android-applicatie, die ik u ter beschikking stel.
Stap 1: Tip om te onthouden
Het is belangrijk op te merken, mijn vrienden, dat ik deze chip heb gebruikt in een circuit genaamd MCP23016. Het is ook belangrijk dat je de video EXPANSOR OF IOS FOR ESP32, ESP8266 AND ARDUINO bekijkt, waarin ik het apparaat test en laat zien dat het werkt voor deze drie soorten boards.
Stap 2: MCP23016
Hier hebben we een afbeelding van de MCP23016, een chip met 28 pinnen. Het is belangrijk om te vermelden dat er ook het MCP23017-model is, dat vaker voorkomt en geen weerstand en condensator nodig heeft, omdat het een interne klok heeft. Dit maakt het gemakkelijker, maar het vastzetten is anders dan wat we in deze video laten zien.
Stap 3: Adres
Om het adres van de MCP23016 te definiëren, gebruiken we pinnen A0, A1 en A2. U kunt ze gewoon op HOOG of LAAG laten staan voor de adreswijziging.
Het adres wordt als volgt gevormd:
MCP_Adres = 20 + (A2 A1 A0)
Waar A2 A1 A0 HOGE / LAGE waarden kan aannemen, vormt zich een binair getal van 0 tot 7.
Bijvoorbeeld:
A2> GND, A1> GND, A0> GND (betekent 000, dan 20 + 0 = 20)
Of anders, A2> HOOG, A1> GND, A0> HOOG (betekent 101, dan 20 + 5 = 25)
Stap 4: Opdrachten
Hier is een tabel met opdrachten voor communicatie:
Stap 5: Categorieën
GP0 / GP1 - Gegevenspoortregisters
Er zijn twee registers die toegang geven tot de twee GPIO-poorten.
De registeruitlezing geeft de status van de pinnen op die poort weer.
Bit = 1> HOOG Bit = 0> LAAG
IODIR0 / IODIR1
Er zijn twee registers die de pin-modus regelen. (Ingang of Uitgang)
Bit = 1> INGANG Bit = 0> UITGANG
Stap 6: Structuur voor communicatie
Hier hebben we het over het adres van de chip en hebben we toegang tot de opdracht en gegevens, wat een soort protocol is dat moet worden gedaan om informatie te verzenden.
Stap 7: Programmeren
We zullen een programma doen dat bestaat uit het communiceren van de ESP01 met de MCP23016 om meer GPIO's te gebruiken. Deze 16 nieuwe GPIO's die we zullen hebben, gaan een 16-kanaals relaismodule aansturen.
Opdrachten worden via een Android-applicatie naar ESP01 gestuurd.
Stap 8: MCP23016
Stap 9: ESP-01
Dit is een bord met 16 relais.
Stap 10: ESP01. monteren
Stap 11: Bibliotheken en variabelen
We zullen de bibliotheken opnemen die verantwoordelijk zijn voor i2c-communicatie en voor het maken van het toegangspunt en de webserver. We definiëren het adres van de chip en de poorten. Ten slotte definiëren we de variabelen om de waarden van de MCP-pinnen op te slaan.
#include // responsavel pela comunicação i2c.#include //responsavel por criar o accesspoint eo webserver WiFiServer server(80);//webserver para acessarmos através através do aplicativo //endereço I2C do MCP23016 #define MCPAddress 0x20 //ENDERE 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 doe MCP uint8_t currentValueGP0 = 0; uint8_t currentValueGP1 = 0;
Stap 12: Instellen
We initialiseren de ESP01 en configureren de poorten. We configureren ook het Access Point en initialiseren de server.
void setup() { Serial.begin(9600); vertraging (1000); Draad.begin(0, 2); // ESP01 Wire.setClock (200000); configurePort (IODIR0, UITGANG); configurePort (IODIR1, UITGANG); writeBlockData(GP0, 0x00); writeBlockData(GP1, 0x00); wifi instellen(); //configuratie van Access Point server.begin();//inicializa o server}
Stap 13: Loop
Hier controleer ik of er clients zijn verbonden met de server. We lezen ook de eerste verzoekregel. We extraheren de gegevens voor manipulatie, definiëren de standaard antwoordheader en sturen dit antwoord naar de klant.
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 é een esperada para os relés */ if(req.indexOf ("/MR") != -1) { parserData(req); //een deel van de vereiste extrai os dados para manipulação } else{ Serial.println ("ongeldig verzoek"); opbrengst; } cliënt.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
Vanuit het verzoek gaan we op zoek naar de gegevens met betrekking tot de relais. Wij sturen de gegevens vervolgens naar de MCP23016.
// een partir da requisição busca os dados referente en relésvoid parserData (String data) { uint8_t relay = -1; uint8_t gp = -1; uint8_t waarde = -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(aan/uit) { gp = data[index+3]-'0'; relais = data[index+4]-'0'; waarde = gegevens[index+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: Poort configureren
We stellen de GPIO-pinmodus in (GP0 of GP1).
//configura of modo dos pinos GPIO (GP0 of GP1)//como parametro passamos: // port: GP0 of 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 of modo das portas (1=INPUT, 0=OUTPUT) // ex: 0x01 of B00000001 of 1: indica que apenas of GPX.0 trabalhará como entrada, of restante como saida void configurePort (uint8_t poort, uint8_t aangepast) {if(aangepast == INPUT) {writeBlockData(poort, 0xFF); } else if(custom == OUTPUT) {writeBlockData(poort, 0x00); } else {writeBlockData(poort, aangepast); } }
Stap 16: SchrijfPinData
In dit deel van de code veranderen we de status van een gewenste pin en sturen de gegevens naar de MCP.
//muda o estado de um pino desejado, passando como parametro://pin = pino desejado; waarde = 0/1 (aan/uit); gp = 0/1 (PORT do MCP) void writePinData (int pin, int value, uint8_t gp) { uint8_t statusGP = 0; if(gp == GP0) statusGP = huidigeWaardeGP0; anders statusGP = huidigeWaardeGP1; if (waarde == 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; anders huidige WaardeGP1 = statusGP; //Envia os dados para o MCP writeBlockData(gp, statusGP); vertraging(10); }
Stap 17: WriteBlockData & SetupWiFi
Hier sturen we data naar de MCP23016 via de i2c bus. Vervolgens configureren we de eigenschappen om het toegangspunt in te schakelen. Ten slotte hebben we de WiFi geconfigureerd voor de Access Point-modus en een AP gemaakt met SSID en het PASWOORD.
//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 (gegevens); Wire.endTransmission(); vertraging(10); }
// configureren als propriedades para habilitar o ACCESS POINTvoid setupWiFi () {WiFi.mode (WIFI_AP); WiFi.softAP("ESP01_RELAY", "12345678"); }
Stap 18: App
Om de applicatie te maken, gebruiken we MIT App Inventor 2, die toegankelijk is via de link:
ai2.appinventor.mit.edu/
De applicatie bestaat uit twee schermen met elk acht paar knoppen, die de status van elk relais aangeven.
Hieronder volgen enkele van de gebruikte programmeerblokken:
BELANGRIJK: Het standaard IP-adres van de ESP, aangezien het toegangspunt 192.168.4.1 is
1. Wanneer het scherm wordt geïnitialiseerd, slaan we het IP-adres op in het geheugen en roepen we de procedure op om de status van de knoppen te herstellen (AAN / UIT).
2. Bel het andere scherm
1. Wanneer u op de AAN-knop van een van de relais klikt, zullen we visuele wijzigingen aanbrengen in de knop (groene blokken). WebViewer1. GoToUrl doet een aanvraag voor onze ESP01 door de MR01/1 data in de URL te linken.
2. Wanneer u op de UIT-knop van een van de relais klikt, zullen we visuele wijzigingen aanbrengen in de knop (groene blokken). WebViewer1. GoToUrl doet een verzoek aan onze ESP01 door de MR01 / 0-gegevens in de URL te koppelen.
Deze procedure wordt gebruikt om de status van de knoppen (relais) te herstellen, omdat bij het veranderen van het scherm terugkeert naar het aanmaakpatroon.
Het gele blok wordt herhaald voor elk van de knopparen.
Stap 19: Downloaden
Hier zijn de projectbestanden om te downloaden:
MIT App Inventor 2 projectbestand - downloaden
Applicatie APK om op Android te installeren - downloaden
Download de andere bestanden:
INO
Aanbevolen:
AUTOMATISERING MET PIR-SENSOR: 5 stappen
AUTOMATISERING MET GEBRUIK VAN PIR-SENSOR: PIR-sensoren of passieve infraroodsensoren zijn bepaalde typen sensoren die infraroodstraling detecteren. Alle warmbloedige wezens, zoals mensen of dieren, zenden een bepaalde hoeveelheid IR-straling of warmte uit die kan worden gedetecteerd door IR-sensoren. Actieve IR-sensoren
Iedereen wil automatisering met een groot scherm!: 16 stappen
Iedereen wil automatisering met een groot display!: Ja, nog een video over DISPLAYS, een onderwerp dat ik erg leuk vind! Weet je waarom? Want daarmee is het mogelijk om de gebruikersinterface te verbeteren. Automatiseringsgebruikers hebben een goede visuele indicatie nodig. Dus ik breng je een voorbeeld met een 7 inch-scherm, met capaciteit
Automatisering met NodeMCU: 5 stappen
Automatisering met behulp van NodeMCU: hoe relais te besturen met behulp van een webserver
Arduino-gebaseerde industriële automatisering -- VFD (aandrijvingen met variabele frequentie): 10 stappen
Arduino-gebaseerde industriële automatisering || VFD (Variable Frequency Drives): In deze instructable laat ik je zien hoe je1. Op maat ontworpen Arduino-bord voor industriële automatisering 2. Hoe VFD [Variable Frequency Drives] te besturen met Arduino 3. Hoe een moederbord te ontwerpen voor DigiCone MDF-wikkelmachine
HOME-automatisering en energievoorspelling: 6 stappen (met afbeeldingen)
HOME-automatisering en energievoorspelling: HAEP (Home Automation and Energy Prediction System) is een project over een huisautomatiseringssysteem dat is gebouwd rond het idee van het meten en voorspellen van het energieverbruik van het huis. Het is alweer een aantal jaren geleden dat domotica de stap heeft gezet