Satura rādītājs:
- 1. solis: padoms, kas jāatceras
- 2. darbība: MCP23016
- 3. darbība: adrese
- 4. solis: komandas
- 5. darbība. Kategorijas
- 6. darbība: saziņas struktūra
- 7. solis: programma
- 8. darbība: MCP23016
- 9. darbība: ESP-01
- 10. darbība: ESP01 uzstādīšana
- 11. darbība: bibliotēkas un mainīgie
- 12. darbība: iestatīšana
- 13. darbība: cilpa
- 14. darbība: ParserData
- 15. darbība. ConfigurePort
- 16. darbība. RakstietPinData
- 17. darbība: WriteBlockData & SetupWiFi
- 18. darbība: lietotne
- 19. darbība: lejupielādējiet
Video: Zemu izmaksu automatizācija ar ESP01: 19 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:57
Šodien mēs apspriedīsim automatizāciju, izmantojot ESP01 ar 16 relejiem. Šis ir īpaši lēts dizaina modelis, kurā varat pavairot moduļus un iegūt līdz 128 relejiem, jo šajā mikrokontrollerī ir iespējams ievietot līdz astoņiem portu paplašinātājiem.
Mūsu ķēdē jums būs lietojumprogramma viedtālrunī, kas sazinās ar ESP01. Tam būs paplašinātājs ar 16 portiem, katrs savienots ar releju. Mums ir arī 3v3 regulējams avots. Tāpēc mēs kontrolēsim 16 kanālu releja moduli, izmantojot ESP01, izmantojot Android lietojumprogrammu, kuru es jums darīšu pieejamu.
1. solis: padoms, kas jāatceras
Mani draugi, ir svarīgi atzīmēt, ka es izmantoju šo mikroshēmu ķēdē ar nosaukumu MCP23016. Jums arī ir svarīgi noskatīties video IOS EXPANSOR OF ESP32, ESP8266 UN ARDUINO, kurā es testēju ierīci un parādīju, ka tā darbojas šo trīs veidu dēļiem.
2. darbība: MCP23016
Šeit mums ir MCP23016 attēls, kas ir mikroshēma ar 28 tapām. Ir svarīgi pieminēt, ka ir arī modelis MCP23017, kas ir biežāk sastopams un kuram nav nepieciešams rezistors un kondensators, jo tam ir iekšējais pulkstenis. Tas padara to vieglāku, taču tā piespraude atšķiras no tā, ko mēs parādām šajā videoklipā.
3. darbība: adrese
Lai definētu MCP23016 adresi, mēs izmantojam tapas A0, A1 un A2. Jūs varat vienkārši atstāt tos HIGH vai LOW adreses maiņai.
Adrese tiks veidota šādi:
MCP_Address = 20 + (A2 A1 A0)
Ja A2 A1 A0 var iegūt HIGH / LOW vērtības, binārs skaitlis no 0 līdz 7.
Piemēram:
A2> GND, A1> GND, A0> GND (nozīmē 000, tad 20 + 0 = 20)
Vai citādi, A2> HIGH, A1> GND, A0> HIGH (nozīmē 101, tad 20 + 5 = 25)
4. solis: komandas
Šeit ir tabula ar komandām saziņai:
5. darbība. Kategorijas
GP0 / GP1 - datu portu reģistri
Ir divi reģistri, kas nodrošina piekļuvi abiem GPIO portiem.
Reģistra nolasījums nodrošina tapas statusu šajā ostā.
Bits = 1> HIGH Bit = 0> LOW
IODIR0 / IODIR1
Ir divi reģistri, kas kontrolē tapas režīmu. (Ievads vai izvads)
Bits = 1> IEVADES bits = 0> IZEJA
6. darbība: saziņas struktūra
Šeit mēs runājam par mikroshēmas adresi un piekļūstam komandai un datiem, kas ir sava veida protokols, kas jādara, lai nosūtītu informāciju.
7. solis: programma
Mēs izveidosim programmu, kas sastāv no ESP01 saziņas ar MCP23016, lai varētu izmantot vairāk GPIO. Šie 16 jaunie GPIO, kas mums būs, kontrolēs 16 kanālu releja moduli.
Komandas tiks nosūtītas uz ESP01, izmantojot Android lietojumprogrammu.
8. darbība: MCP23016
9. darbība: ESP-01
Šī ir 16 releju dēlis.
10. darbība: ESP01 uzstādīšana
11. darbība: bibliotēkas un mainīgie
Mēs iekļausim bibliotēkas, kas atbildīgas par i2c komunikāciju, kā arī par piekļuves punkta un tīmekļa servera izveidi. Mēs definējam mikroshēmas adresi un portus. Visbeidzot, mēs definējam mainīgos, lai saglabātu MCP tapas vērtības.
#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 definēt GP0 0x00 // DATU PORTU REĢISTRS 0 #define GP1 0x01 // DATU PORTU REĢISTRS 1 #define IODIR0 0x06 // I/O DIRECTION REGISTER 0 #define IODIR1 0x07 // I/O DIRECTION REGISTER 1 // guarda os valores dos pinos vai MCP uint8_t currentValueGP0 = 0; uint8_t currentValueGP1 = 0;
12. darbība: iestatīšana
Mēs inicializējam ESP01 un konfigurējam portus. Mēs arī konfigurējam piekļuves punktu un inicializējam serveri.
void setup () {Serial.begin (9600); kavēšanās (1000); Wire.begin (0, 2); // ESP01 Wire.setClock (200000); configurePort (IODIR0, OUTPUT); configurePort (IODIR1, OUTPUT); writeBlockData (GP0, 0x00); writeBlockData (GP1, 0x00); setupWiFi (); // konfigurējiet piekļuves punkta serveri.begin (); // inicializa o server}
13. darbība: cilpa
Šeit es pārbaudu, vai serverim ir pievienoti klienti. Mēs arī izlasījām pirmo pieprasījuma rindiņu. Mēs iegūstam datus manipulācijām, definējam noklusējuma atbildes galveni un nosūtām šo atbildi klientam.
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 ("nederīgs pieprasījums"); atgriešanās; } client.flush (); String s = "HTTP/1.1 200 Labi / r / n"; // cabeçalho padrão de resposta client.print (s); // envia a resposta para o cliente delay (1); } // beigu cilpa
14. darbība: ParserData
Pēc pieprasījuma mēs meklējam datus, kas saistīti ar relejiem. Pēc tam mēs nosūtām datus uz MCP23016.
// a partir da requisição busca os dados referente aos relésvoid parserData (String data) {uint8_t relejs = -1; uint8_t gp = -1; uint8_t vērtība = -1; int indekss = data.indexOf ("/MR"); // busca o index do prefixo MR if (data [index+5] == '/') ///MR01/1, onde 0 = GP; 1 = RELE; 1 = ESTADO (ieslēgts/izslēgts) {gp = dati [indekss+3]-'0'; relejs = dati [indekss+4]-'0'; vērtība = dati [indekss+6]-'0'; // envia os dados para o MCP23016 // [relay-1] porque o MCP vai de 0-7 os pinos writePinData (relejs-1, vērtība, gp); }}
15. darbība. ConfigurePort
Mēs iestatām GPIO pin režīmu (GP0 vai GP1).
// konfigurācija vai modo dos pinos GPIO (GP0 vai GP1) // como parametro passamos: // ports: 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) // ex: 0x01 ou B00000001 ou 1: indica que apenas o GPX.0 trabalhará como entrada, o restante como saida void configurePort (uint8_t ports, uint8_t pielāgots) {if (custom == INPUT) {writeBlockData (ports, 0xFF); } cits if (custom == OUTPUT) {writeBlockData (ports, 0x00); } else {writeBlockData (ports, pielāgots); }}
16. darbība. RakstietPinData
Šajā koda daļā mēs mainām vēlamās tapas stāvokli un nosūtām datus uz MCP.
// muda o estado de um pino desejado, passando como parametro: // pin = pino desejado; vērtība = 0/1 (ieslēgts/izslēgts); gp = 0/1 (PORT do MCP) void writePinData (int pin, int value, uint8_t gp) {uint8_t statusGP = 0; ja (gp == GP0) statusGP = currentValueGP0; cits statusGP = currentValueGP1; ja (vērtība == 0) {statusGP & = ~ (B00000001 << (pin)); // muda o pino para LOW} else if (vērtība == 1) {statusGP | = (B00000001 << (pin)); // muda o pino para HIGH} if (gp == GP0) currentValueGP0 = statusGP; cits currentValueGP1 = statusGP; // envia os dados para vai MCP writeBlockData (gp, statusGP); kavēšanās (10); }
17. darbība: WriteBlockData & SetupWiFi
Šeit mēs nosūtām datus uz MCP23016, izmantojot i2c kopni. Tālāk mēs konfigurējam rekvizītus, lai iespējotu piekļuves punktu. Visbeidzot, mēs konfigurējām WiFi piekļuves punkta režīmam un izveidojām AP ar SSID un PASSWORD.
// envia dados para o MCP23016 através do barramento i2c // reg: REGISTRADOR // dati: dados (0-255) void writeBlockData (uint8_t ports, uint8_t dati) {Wire.beginTransmission (MCPAddress); Wire.write (ports); Wire.write (dati); Wire.endTransmission (); kavēšanās (10); }
// configura as propriedades para habilitar o ACCESS POINTvoid setupWiFi () {WiFi.mode (WIFI_AP); WiFi.softAP ("ESP01_RELAY", "12345678"); }
18. darbība: lietotne
Lai izveidotu lietojumprogrammu, mēs izmantojam MIT App Inventor 2, kuram var piekļūt, izmantojot saiti:
ai2.appinventor.mit.edu/
Lietojumprogramma sastāv no diviem ekrāniem, kuros katrā ir astoņi pogu pāri, norādot katra releja statusu.
Šeit ir daži no izmantotajiem programmēšanas blokiem:
SVARĪGI: ESP noklusējuma IP adrese, jo piekļuves punkts ir 192.168.4.1
1. Kad ekrāns tiek inicializēts, mēs saglabājam IP atmiņā un izsaucam procedūru, lai atjaunotu pogu stāvokli (ON / OFF).
2. Zvaniet uz citu ekrānu
1. Noklikšķinot uz viena no relejiem pogas IESLĒGT, mēs vizuāli mainīsim pogu (zaļie bloki). WebViewer1. GoToUrl pieprasa mūsu ESP01, saistot MR01 / 1 datus URL.
2. Noklikšķinot uz viena no relejiem pogas IZSLĒGT, mēs vizuāli mainīsim pogu (zaļie bloki). WebViewer1. GoToUrl iesniedz pieprasījumu mūsu ESP01, URL sasaistot MR01 / 0 datus.
Šo procedūru izmanto, lai atjaunotu pogu (releju) stāvokli, jo, mainot ekrānu, tas atgriežas pie izveides modeļa.
Dzeltenais bloks atkārtojas katram pogu pārim.
19. darbība: lejupielādējiet
Šeit ir lejupielādējami projekta faili:
MIT App Inventor 2 projekta fails - lejupielādēt
Lietojumprogrammas APK instalēšanai android - lejupielādēt
Lejupielādējiet citus failus:
ES NĒ
Ieteicams:
DIY zemu izmaksu mājas automatizācija, izmantojot Esp8266: 6 soļi
DIY zemu izmaksu mājas automatizācija, izmantojot Esp8266: Sveiki visiem! Šodien šajā pamācībā es jums parādīšu, kā es sagatavoju savu mājas automatizāciju kā soli ceļā uz gudru māju, izmantojot ESP 8266 moduli, kas parasti pazīstams kā nodemcu, tādējādi netērējot laiku sāksim:)
ZEMU IZMAKSU ZAGŠANAS NOTEIKŠANAS IERĪCE (Pi Home Security): 7 soļi
ZEMU CENU ZAGŠANAS NOTEIKŠANAS IERĪCE (Pi Home Security): sistēma ir paredzēta, lai atklātu ielaušanos (neatļautu iekļūšanu) ēkā vai citās vietās. Šo projektu var izmantot dzīvojamos, komerciālos, rūpnieciskos un militāros īpašumos, lai aizsargātu pret ielaušanos vai īpašuma bojājumiem, kā arī
3D drukāts - zemu izmaksu gaismas zobens!: 12 soļi
3D drukāts - zemu izmaksu gaismas zobens!: Zemas izmaksas, 3D drukāts un saliekams gaismas zobens. RGB gaismas diode ļauj izvēlēties starp sarkanām, zaļām un zilām vārpstām, kuras var izvēlēties, izmantojot rotējošo slēdzi, kas atrodas gaismas zobena rokturī. Vārpstas saliekamais raksturs padara to par
Arduino vienkārša zemu izmaksu kontrolējama roka: 5 soļi
Arduino vienkārša zemu izmaksu kontrolējama roka: plašajā internetā ir daudz dārgu 3D drukātu un elastīgu sensoru balstītu robotu. Tomēr, būdams students, man nav daudz piekļuves tādām lietām kā CNC, 3D printeri un elektriskie instrumenti. Man ir risinājums, mēs izveidosim l
MQmax 0,7 zemu izmaksu WiFi IoT platforma, kuras pamatā ir Esp8266 un Arduino Mini Pro: 6 soļi
MQmax 0,7 zemu izmaksu WiFi IoT platforma, kuras pamatā ir Esp8266 un Arduino Mini Pro: Sveiki! Šī ir mana otrā pamācība (no šī brīža es pārstāju skaitīt). Es to izveidoju, lai izveidotu vienkāršu (vismaz man), lētu, viegli izgatavojamu un efektīvu platformu Real IoT lietojumprogrammām, kas ietver M2M darbu. Šī platforma darbojas ar esp8266 un