Talaan ng mga Nilalaman:
- Hakbang 1: Tip na Tandaan
- Hakbang 2: MCP23016
- Hakbang 3: Address
- Hakbang 4: Mga Utos
- Hakbang 5: Mga Kategorya
- Hakbang 6: Istraktura para sa Komunikasyon
- Hakbang 7: Programa
- Hakbang 8: MCP23016
- Hakbang 9: ESP-01
- Hakbang 10: Pag-mount ng ESP01
- Hakbang 11: Mga Aklatan at Variable
- Hakbang 12: Pag-setup
- Hakbang 13: Loop
- Hakbang 14: ParserData
- Hakbang 15: I-configure ang Port
- Hakbang 16: WritePinData
- Hakbang 17: WritingBlockData & SetupWiFi
- Hakbang 18: App
- Hakbang 19: Mag-download
Video: Mababang Gastos na Awtomatiko Sa ESP01: 19 Mga Hakbang
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:14
Ngayon, tatalakayin namin ang pag-aautomat gamit ang ESP01 na may 16 na relay. Ito ay isang sobrang murang modelo ng disenyo kung saan maaari mong i-multiply ang mga module at makakuha ng hanggang sa 128 relay, dahil posible na maglagay ng hanggang walong mga port expander sa microcontroller na ito.
Sa aming circuit, magkakaroon ka ng isang application sa isang smartphone na nakikipag-usap sa ESP01. Magkakaroon ito ng isang expander na may 16 port, bawat isa ay konektado sa isang relay. Mayroon din kaming 3v3 na naaakma na mapagkukunan. Samakatuwid makokontrol namin ang isang 16-channel module ng relay gamit ang ESP01 sa pamamagitan ng Android application, na ginagawa kong magagamit sa iyo.
Hakbang 1: Tip na Tandaan
Mahalagang tandaan, mga kaibigan, na ginamit ko ang chip na ito sa isang circuit na tinatawag na MCP23016. Mahalaga rin para sa iyo na panoorin ang video na EXPANSOR OF IOS PARA SA ESP32, ESP8266 AT ARDUINO, kung saan sinusubukan ko ang aparato at ipinapakita na gumagana ito para sa tatlong uri ng mga board.
Hakbang 2: MCP23016
Narito mayroon kaming isang imahe ng MCP23016, na kung saan ay isang maliit na tilad na may 28 mga pin. Mahalagang banggitin mayroon ding modelo ng MCP23017, na mas karaniwan at hindi nangangailangan ng risistor at kapasitor, sapagkat mayroon itong panloob na orasan. Ginagawa nitong mas madali, ngunit ang pag-pin nito ay naiiba sa ipinapakita namin sa video na ito.
Hakbang 3: Address
Upang tukuyin ang address ng MCP23016, gumagamit kami ng mga pin na A0, A1, at A2. Iiwan mo lang sila sa TAAS o LOW para sa pagbabago ng address.
Ang address ay mabubuo tulad ng sumusunod:
MCP_Address = 20 + (A2 A1 A0)
Kung saan ang A2 A1 A0 ay maaaring tumagal ng TAAS / Mababang halaga, isang binary number mula 0 hanggang 7 na form.
Halimbawa:
A2> GND, A1> GND, A0> GND (nangangahulugang 000, pagkatapos ay 20 + 0 = 20)
O kung hindi man, A2> TAAS, A1> GND, A0> TAAS (nangangahulugang 101, pagkatapos 20 + 5 = 25)
Hakbang 4: Mga Utos
Narito ang isang talahanayan na may mga utos para sa komunikasyon:
Hakbang 5: Mga Kategorya
GP0 / GP1 - Mga Rehistro sa Port ng Data
Mayroong dalawang rehistro na nagbibigay ng pag-access sa dalawang port ng GPIO.
Ang pagbasa ng rehistro ay nagbibigay ng katayuan ng mga pin sa port na iyon.
Bit = 1> MATAAS Bit = 0> Mababa
IODIR0 / IODIR1
Mayroong dalawang mga rehistro na kumokontrol sa mode ng pin. (Input o Output)
Bit = 1> INPUT Bit = 0> OUTPUT
Hakbang 6: Istraktura para sa Komunikasyon
Pinag-uusapan natin dito ang tungkol sa address ng chip, at i-access ang utos at data, na isang uri ng protokol na kailangang gawin upang magpadala ng impormasyon.
Hakbang 7: Programa
Gagawa kami ng isang programa na binubuo ng pakikipag-usap sa ESP01 sa MCP23016 upang magkaroon ng maraming GPIO na magagamit. Ang 16 na bagong GPIO na magkakaroon kami ay makokontrol ang isang 16-channel module ng relay.
Ipapadala ang mga utos sa ESP01 sa pamamagitan ng isang Android application.
Hakbang 8: MCP23016
Hakbang 9: ESP-01
Ito ay isang 16-relay board.
Hakbang 10: Pag-mount ng ESP01
Hakbang 11: Mga Aklatan at Variable
Isasama namin ang mga aklatan na responsable para sa komunikasyon ng i2c, at para sa paglikha ng Access Point at webserver. Tinutukoy namin ang address ng maliit na tilad at mga port. Sa wakas, tinutukoy namin ang mga variable upang maiimbak ang mga halaga ng mga MCP pin.
#include // responsável pela comunicação i2c. # isama // responsable sa pag-access sa webserver server ng WiFiServer (80); // webserver para sa acessarmos através gawin aplicativo // endereço I2C gawin ang MCP23016 #define MCPAddress 0x20 // ENDEREÇOS DE REGIST tukuyin ang 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 gawin MCP uint8_t kasalukuyangValueGP0 = 0; uint8_t kasalukuyangValueGP1 = 0;
Hakbang 12: Pag-setup
Pinasimuno namin ang ESP01 at ise-configure ang mga port. Inaayos din namin ang Access Point at pinasimulan ang server.
void setup () {Serial.begin (9600); pagkaantala (1000); Wire.begin (0, 2); // ESP01 Wire.setClock (200000); configurePort (IODIR0, OUTPUT); configurePort (IODIR1, OUTPUT); writeBlockData (GP0, 0x00); writeBlockData (GP1, 0x00); setupWiFi (); // configuração do Access Point server.begin (); // inicializa o server}
Hakbang 13: Loop
Narito ko suriin kung ang anumang mga kliyente ay konektado sa server. Nabasa din namin ang unang linya ng kahilingan. Kinukuha namin ang data para sa pagmamanipula, tinutukoy ang default na header ng tugon, at ipinapadala ang tugon na ito sa kliyente.
void loop () {WiFiClient client = server.available (); // Verifica se um cliente foi conectado kung (! 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 ("invalid request"); bumalik; } 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); } // end loop
Hakbang 14: ParserData
Mula sa kahilingan, hinahanap namin ang data na nauugnay sa mga relay. Ipinadala namin ang data sa 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 halaga = -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 (on / off) {gp = data [index + 3] - '0'; relay = data [index + 4] - '0'; halaga = data [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); }}
Hakbang 15: I-configure ang Port
Itinakda namin ang GPIO pin mode (GP0 o GP1).
// configura o modo dos pinos GPIO (GP0 ou GP1) // como parametro passamos: // port: GP0 ou GP1 // INPUT para sa mga todos bilang mga porta na gagawin ng GP trabalharem como entrada // OUTPUT para sa mga todo tulad ng mga porta do GP trabalharem como saida // custom um valor de 0-255 indikasyon o modo das portas (1 = INPUT, 0 = OUTPUT) // hal: 0x01 ou B00000001 ou 1: indica que apenas o GPX.0 trabalhará como entrada, o restante como saida void configurePort (uint8_t port, uint8_t pasadyang) {kung (pasadyang == INPUT) {writeBlockData (port, 0xFF); } iba pa kung (pasadyang == OUTPUT) {writeBlockData (port, 0x00); } iba pa {writeBlockData (port, pasadyang); }}
Hakbang 16: WritePinData
Sa bahaging ito ng code, binabago namin ang estado ng isang nais na pin at ipadala ang data sa MCP.
// muda o estado de um pino desejado, passando como parametro: // pin = pino desejado; halaga = 0/1 (on / off); gp = 0/1 (PORT gawin MCP) walang bisa ang writePinData (int pin, int halaga, uint8_t gp) {uint8_t statusGP = 0; kung (gp == GP0) statusGP = kasalukuyangValueGP0; iba statusGP = kasalukuyangValueGP1; kung (halaga == 0) {statusGP & = ~ (B00000001 << (pin)); // muda o pino para LOW} iba pa kung (halaga == 1) {statusGP | = (B00000001 << (pin)); // muda o pino para HIGH} kung (gp == GP0) kasalukuyangValueGP0 = statusGP; iba pa kasalukuyangValueGP1 = statusGP; // envia os dados para o MCP writeBlockData (gp, statusGP); antala (10); }
Hakbang 17: WritingBlockData & SetupWiFi
Dito, nagpapadala kami ng data sa MCP23016 sa pamamagitan ng i2c bus. Susunod, iko-configure namin ang mga pag-aari upang paganahin ang Access Point. Panghuli, na-configure namin ang WiFi para sa mode ng Access Point at lumikha ng isang AP na may SSID at ang PASSWORD.
// 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 (port); Wire.write (data); Wire.endTransmission (); antala (10); }
// configura as propriedades para habilitar o ACCESS POINTvoid setupWiFi () {WiFi.mode (WIFI_AP); WiFi.softAP ("ESP01_RELAY", "12345678"); }
Hakbang 18: App
Upang likhain ang application, gumagamit kami ng MIT App Inventor 2, na maaaring ma-access sa pamamagitan ng link:
ai2.appinventor.mit.edu/
Ang application ay binubuo ng dalawang mga screen na naglalaman ng walong mga pares ng mga pindutan sa bawat isa, na nagpapahiwatig ng katayuan ng bawat relay.
Ang mga sumusunod ay ilan sa mga bloke ng programa na ginamit:
MAHALAGA: Ang default IP address ng ESP, dahil ang Access Point ay 192.168.4.1
1. Kapag pinasimulan ang screen, iniimbak namin ang IP sa memorya at tawagan ang pamamaraan upang mabawi ang estado ng mga pindutan (ON / OFF).
2. Tumawag sa kabilang screen
1. Kapag nag-click sa pindutang ON ng isa sa mga relay, gagawa kami ng mga visual na pagbabago sa pindutan (berdeng mga bloke). Ang WebViewer1. GoToUrl ay humihiling para sa aming ESP01 sa pamamagitan ng pag-link sa MR01 / 1 data sa URL.
2. Kapag nag-click sa OFF button ng isa sa mga relay, gagawa kami ng mga visual na pagbabago sa pindutan (berdeng mga bloke). Ang WebViewer1. GoToUrl ay humihiling sa aming ESP01 sa pamamagitan ng pag-link sa data ng MR01 / 0 sa URL.
Ginagamit ang pamamaraang ito upang mabawi ang estado ng mga pindutan (relay), dahil kapag binabago ang screen, bumalik ito sa pattern ng paglikha.
Ang dilaw na bloke ay inuulit para sa bawat isa sa mga pares ng pindutan.
Hakbang 19: Mag-download
Narito ang mga file ng proyekto para sa pag-download:
File ng proyekto ng MIT App Inventor 2 - mag-download
Application APK upang mai-install sa android - i-download
I-download ang iba pang mga file:
INO
Inirerekumendang:
Mababang Gastos na Rheometer: 11 Mga Hakbang (na may Mga Larawan)
Mababang Gastos na Rheometer: Ang layunin ng pagtuturo na ito ay upang lumikha ng isang mababang gastos na rheometer upang eksperimentong hanapin ang lapot ng isang likido. Ang proyektong ito ay nilikha ng isang pangkat ng undergrad at nagtapos na mag-aaral ng Brown University sa klase na Vibration of Mechanical Systems.
Gumawa ng isang Mababang Gastos na Sensored Track sa Mga Minuto !: 10 Hakbang (na may Mga Larawan)
Gumawa ng isang Mababang Subaybayan na Sensored Cost sa Minuto!: Sa aking dating Maaaring Makatuturo, ipinakita ko sa iyo kung paano gumawa ng isang layout ng modelo ng tren na may awtomatikong panghaliling daan. Gumamit ito ng isang segment ng track, na pinangalanang 'sensored track'. Ito ay isang kapaki-pakinabang na bagay na magkaroon sa isang modelo ng layout ng riles. Maaari akong magamit para sa mga sumusunod: I-block
Laptop sa isang Badyet: isang Pagpipilian sa Powerhouse na may mababang gastos (Dalawang Panloob na Mga Pagmamaneho, Batay sa Lenovo): 3 Mga Hakbang
Laptop sa isang Badyet: isang Pagpipilian sa Powerhouse na may mababang gastos (Dalawang Panloob na Mga Pagmamaneho, Batay sa Lenovo): Ang itinuturo na ito ay magtutuon sa isang na-update na pagsasaayos sa laptop na Lenovo T540p bilang isang pang-araw-araw na driver machine para sa pagba-browse sa web, pagproseso ng salita, magaan na paglalaro, at audio . Ito ay naka-configure gamit ang solidong estado at mekanikal na imbakan para sa bilis at capacit
Ang 'Sup - isang Mouse para sa Mga Taong May Quadriplegia - Mababang Gastos at Buksan ang Pinagmulan: 12 Hakbang (na may Mga Larawan)
Ang 'Sup - isang Mouse para sa Mga Taong May Quadriplegia - Mababang Gastos at Bukas na Pinagmulan: Noong tagsibol ng 2017, tinanong ako ng pamilya ng aking matalik na kaibigan kung nais kong lumipad sa Denver at tulungan sila sa isang proyekto. Mayroon silang kaibigan, si Allen, na nagkaroon ng quadriplegia bilang resulta ng isang aksidente sa pagbibisikleta. Si Felix (aking kaibigan) at gumawa ako ng mabilis na muling paglagay
Arduino Wedding Photo Booth - Mga Naka-print na Bahaging 3D, Awtomatiko at Mababang Badyet: 22 Hakbang (na may Mga Larawan)
Arduino Wedding Photo Booth - 3D Printed Parts, Automated at Mababang Budget: Kamakailan ay naimbitahan ako sa kasal ng kapatid ng aking kapareha at tinanong nila dati kung maaari naming maitayo sa kanila ang isang photo booth dahil masyadong malaki ang gastos sa pag-upa. Ito ang naisip namin at pagkatapos ng maraming mga papuri, napagpasyahan kong gawing isang panturo