Բովանդակություն:
- Քայլ 1: Հիշելու հուշում
- Քայլ 2: MCP23016
- Քայլ 3: Հասցե
- Քայլ 4: Հրամաններ
- Քայլ 5: Կատեգորիաներ
- Քայլ 6. Հաղորդակցության կառուցվածքը
- Քայլ 7: րագիր
- Քայլ 8: MCP23016
- Քայլ 9: ESP-01
- Քայլ 10: ESP01 տեղադրում
- Քայլ 11: Գրադարաններ և փոփոխականներ
- Քայլ 12: Կարգավորում
- Քայլ 13: Օղակ
- Քայլ 14: ParserData
- Քայլ 15: ConfigurePort
- Քայլ 16: WritePinData
- Քայլ 17: WriteBlockData & SetupWiFi
- Քայլ 18: Հավելված
- Քայլ 19: Ներբեռնեք
Video: Costածր ծախսերի ավտոմատացում ESP01- ով `19 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:50
Այսօր մենք կքննարկենք ESP01- ի միջոցով ավտոմատացումը ՝ 16 ռելեով: Սա սուպեր էժան դիզայնի մոդել է, որտեղ կարող եք բազմապատկել մոդուլները և ստանալ մինչև 128 ռելե, քանի որ այս միկրոկոնտրոլերում հնարավոր է տեղադրել մինչև ութ նավահանգիստ ընդլայնիչ:
Մեր շրջագծում դուք կունենաք ծրագիր սմարթֆոնի վրա, որը շփվում է ESP01- ի հետ: Այն կունենա 16 նավահանգիստ ունեցող ընդլայնիչ, որոնցից յուրաքանչյուրը միացված է ռելեին: Մենք ունենք նաև 3v3 կարգավորելի աղբյուր: Հետևաբար, մենք վերահսկելու ենք ESP01- ի միջոցով օգտագործվող 16-ալիքային ռելեի մոդուլը ՝ Android հավելվածի միջոցով, որը ես ձեզ հասանելի եմ դարձնում:
Քայլ 1: Հիշելու հուշում
Կարևոր է նշել, ընկերներ, որ ես օգտագործել եմ այս չիպը MCP23016 կոչվող միացումում: Ձեզ համար նույնպես կարևոր է դիտել EXPANSOR OF IOS FOR ESP32, ESP8266 AND ARDUINO տեսանյութը, որում ես սարքը փորձարկում եմ և ցույց տալիս, որ այն աշխատում է այս երեք տիպի տախտակների համար:
Քայլ 2: MCP23016
Այստեղ մենք ունենք MCP23016- ի պատկերը, որը 28 կապում ունեցող չիպ է: Կարևոր է նշել, որ կա նաև MCP23017 մոդելը, որն ավելի տարածված է և չունի դիմադրության և կոնդենսատորի կարիք, քանի որ ունի ներքին ժամացույց: Սա հեշտացնում է, բայց դրա ամրացումը տարբերվում է այն բանից, ինչ մենք ցույց ենք տալիս այս տեսանյութում:
Քայլ 3: Հասցե
MCP23016 հասցեն սահմանելու համար մենք օգտագործում ենք A0, A1 և A2 կապում: Հասցեի փոփոխության համար դրանք կարող եք թողնել HIGH կամ LOW- ում:
Հասցեն կձևավորվի հետևյալ կերպ.
MCP_ Հասցե = 20+ (A2 A1 A0)
Այն դեպքում, երբ A2 A1 A0- ն կարող է վերցնել HIGH / LOW արժեքներ, երկուական թիվ ՝ 0 -ից 7 ձև:
Օրինակ:
A2> GND, A1> GND, A0> GND (նշանակում է 000, ապա 20 + 0 = 20)
Կամ այլ կերպ, A2> HIGH, A1> GND, A0> HIGH (նշանակում է 101, ապա 20 + 5 = 25)
Քայլ 4: Հրամաններ
Ահա մի սեղան ՝ հաղորդակցության հրամանների հետ.
Քայլ 5: Կատեգորիաներ
GP0 / GP1 - Տվյալների նավահանգստի գրանցամատյաններ
Կան երկու գրանցամատյաններ, որոնք ապահովում են մուտքը GPIO երկու նավահանգիստներին:
Գրանցիչի ընթերցումը ապահովում է այդ նավահանգստի կապերի կարգավիճակը:
Bit = 1> HIGH Bit = 0> LOW
IODIR0 / IODIR1
Կան երկու գրանցամատյաններ, որոնք վերահսկում են քորոցային ռեժիմը: (Մուտք կամ ելք)
Բիթ = 1> Մուտք Bit = 0> Ելք
Քայլ 6. Հաղորդակցության կառուցվածքը
Այստեղ մենք խոսում ենք չիպի հասցեի և հրամանի և տվյալների հասանելիության մասին, ինչը մի տեսակ արձանագրություն է, որը պետք է արվի տեղեկատվություն ուղարկելու համար:
Քայլ 7: րագիր
Մենք կանենք ծրագիր, որը բաղկացած է ESP01- ի MCP23016- ի հետ հաղորդակցվելուց `ավելի շատ GPIO- ներ օգտագործելու համար: Այս 16 նոր GPIO- ները, որոնք մենք կունենանք, վերահսկելու են 16-ալիքային ռելեի մոդուլը:
Հրամանները ESP01- ին կուղարկվեն Android հավելվածի միջոցով:
Քայլ 8: MCP23016
Քայլ 9: ESP-01
Սա 16 ռելեի տախտակ է:
Քայլ 10: ESP01 տեղադրում
Քայլ 11: Գրադարաններ և փոփոխականներ
Մենք կներառենք i2c հաղորդակցության, ինչպես նաև Access Point և վեբ սերվեր ստեղծելու համար պատասխանատու գրադարանները: Մենք սահմանում ենք չիպի և նավահանգիստների հասցեն: Վերջապես, մենք սահմանում ենք փոփոխականները ՝ MCP կապերի արժեքները պահելու համար:
#include // responsável pela comunicação i2c. #include // responsável por criar or accesspoint eo webserver WiFiServer server (80); // webserver para acessarmos através do aplicativo // endereço I2C do MCP23016 #define MCPAddress 0XOR // #ENDERE սահմանել GP0 0x00 // ՏՎՅԱԼՆԵՐԻ ՀԱՄԱԳՈՐԱԿՈ 0ԹՅՈՆ 0 #սահմանել GP1 0x01 // ՏՎՅԱԼՆԵՐԻ ՄԱՍԻՆ ԳՐԱՆՈ 1Մ 1 #սահմանել IODIR0 0x06 // I/O DIRECTION REGISTER 0 #սահմանել IODIR1 0x07 // I/O DIRECTION REGISTER 1 // guarda os valores dos pinos անել MCP uint8_t currentValueGP0 = 0; uint8_t ընթացիկԱրժեքԳՊ 1 = 0;
Քայլ 12: Կարգավորում
Մենք նախաստորագրում ենք ESP01- ը և կարգավորում նավահանգիստները: Մենք նաև կարգավորում ենք Access Point- ը և նախաստորագրում սերվերը:
void setup () {Serial.begin (9600); ուշացում (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}
Քայլ 13: Օղակ
Այստեղ ես ստուգում եմ, արդյոք որևէ հաճախորդ միացված է սերվերին: Մենք կարդում ենք նաև հարցման առաջին տողը: Մենք արդյունահանում ենք տվյալները մանիպուլյացիայի համար, սահմանում ենք կանխադրված պատասխանի վերնագիրը և այս պատասխանը ուղարկում ենք հաճախորդին:
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 (պահանջ); // a partir da requisição extrai os dados para manipulação} else {Serial.println («անվավեր պահանջ»); վերադարձ; } client.flush (); Տող s = "HTTP/1.1 200 OK / r / n"; // cabeçalho padrão de resposta client.print (ներ); // envia a resposta para o հաճախորդների ուշացում (1); } // ավարտի հանգույց
Քայլ 14: ParserData
Հարցումից մենք փնտրում ենք ռելեների հետ կապված տվյալները: Այնուհետեւ մենք տվյալները ուղարկում ենք MCP23016:
// a partir da requisição busca os dados referente aos relésvoid parserData (Լարային տվյալներ) {uint8_t ռելե = -1; uint8_t gp = -1; uint8_t արժեք = -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 (միացված/անջատված) {gp = տվյալներ [ինդեքս+3]-'0'; փոխանցում = տվյալներ [ինդեքս+4]-'0'; արժեք = տվյալներ [ինդեքս+6]-'0'; // envia os dados para o MCP23016 // [ռելե -1] porque o MCP vai de 0-7 os pinos writePinData (ռելե -1, արժեք, gp); }}
Քայլ 15: ConfigurePort
Մենք սահմանում ենք GPIO կապի ռեժիմը (GP0 կամ 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 // 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, or restante como saida void configurePort (uint8_t նավահանգիստ, uint8_t մաքսային) {if (custom == INPUT) {writeBlockData (port, 0xFF); } else if (custom == OUTPUT) {writeBlockData (նավահանգիստ, 0x00); } else {writeBlockData (նավահանգիստ, հարմարեցված); }}
Քայլ 16: WritePinData
Կոդի այս հատվածում մենք փոխում ենք ցանկալի քորոցի վիճակը և տվյալները ուղարկում MCP:
// muda o estado de um pino desejado, passando como parametro: // pin = pino desejado; արժեքը = 0/1 (միացված/անջատված); gp = 0/1 (PORT do MCP) void writePinData (int pin, int value, uint8_t gp) {uint8_t կարգավիճակ GP = 0; եթե (gp == GP0) կարգավիճակը GP = ընթացիկԱրժեքը GP0; այլ կարգավիճակ GP = currentValueGP1; եթե (արժեքը == 0) {statusGP & = ~ (B00000001 << (քորոց)); // muda o pino para LOW} այլ դեպքում, եթե (արժեքը == 1) {statusGP | = (B00000001 << (քորոց)); // muda o pino para HIGH} if (gp == GP0) currentValueGP0 = statusGP; այլ ընթացիկValueGP1 = statusGP; // envia os dados para o MCP writeBlockData (gp, statusGP); ուշացում (10); }
Քայլ 17: WriteBlockData & SetupWiFi
Այստեղ մենք տվյալներ ենք ուղարկում MCP23016 i2c ավտոբուսի միջոցով: Հաջորդը, մենք կարգավորում ենք հատկությունները `մուտքի կետը միացնելու համար: Ի վերջո, մենք կազմաձևեցինք WiFi- ի մուտքի կետի ռեժիմի համար և ստեղծեցինք APID ՝ SSID- ով և 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 (նավահանգիստ); Wire.write (տվյալներ); Wire.endTransmission (); ուշացում (10); }
// configura as propriedades para habilitar o ACCESS POINTvoid setupWiFi () {WiFi.mode (WIFI_AP); WiFi.softAP ("ESP01_RELAY", "12345678"); }
Քայլ 18: Հավելված
Հավելվածը ստեղծելու համար մենք օգտագործում ենք MIT App Inventor 2 -ը, որին կարելի է ծանոթանալ հետևյալ հղումով.
ai2.appinventor.mit.edu/
Հավելվածը բաղկացած է երկու էկրանից, որոնցում յուրաքանչյուրը պարունակում է ութ զույգ կոճակ ՝ նշելով յուրաքանչյուր ռելեի կարգավիճակը:
Ստորև բերված են որոշ ծրագրավորման բլոկներ.
ԿԱՐԵՎՈՐ. ESP- ի կանխադրված IP հասցեն, քանի որ Մուտքի կետը 192.168.4.1 է
1. Երբ էկրանը սկզբնավորվում է, մենք պահում ենք IP- ն հիշողության մեջ և կանչում կոճակների վիճակը վերականգնելու կարգը (ON / OFF):
2. Callանգահարեք մյուս էկրանին
1. Ռելեներից մեկի ON կոճակին սեղմելիս մենք կոճակում տեսողական փոփոխություններ կկատարենք (կանաչ բլոկներ): WebViewer1. GoToUrl- ը հարցում է ներկայացնում մեր ESP01- ի համար ՝ MR01 / 1 տվյալները URL- ին կապելով:
2. Ռելեներից մեկի OFF կոճակը սեղմելիս մենք կոճակում տեսողական փոփոխություններ կկատարենք (կանաչ բլոկներ): WebViewer1. GoToUrl- ը հարցում է անում մեր ESP01- ին ՝ URL- ում կապելով MR01 / 0 տվյալները:
Այս ընթացակարգը օգտագործվում է կոճակների (ռելեներ) վիճակը վերականգնելու համար, քանի որ էկրանը փոխելիս այն վերադառնում է ստեղծման օրինակին:
Դեղին բլոկը կրկնվում է կոճակների զույգերից յուրաքանչյուրի համար:
Քայլ 19: Ներբեռնեք
Ահա նախագծի ֆայլերը ներբեռնման համար.
MIT App Inventor 2 նախագծի ֆայլ - ներբեռնում
Android հավելվածում տեղադրելու APK հավելված - ներբեռնեք
Ներբեռնեք այլ ֆայլեր.
ԻՆՈ
Խորհուրդ ենք տալիս:
Costածր ծախսերի MR խաղ ՝ 9 քայլ
Costածր ծախսերի MR խաղ ՝ Demo of Low Price MR խաղ. նշան, նրանք կրակում են միմյանց խաղի աշխարհում: Օգտագործեք AR- ն ՝ անկյունային խաղադրույքը պարզելու համար
Costածր ծախսերի խելացի տուն - վերահսկողություն աշխարհի ցանկացած վայրից. 6 քայլ
Costածր ծախսերի խելացի տուն - վերահսկողություն աշխարհի ցանկացած վայրից. Մոտավորապես Մեր օրերում երկու ծնողներն էլ աշխատում են ընտանիքի համար հարմարավետ կյանք ունենալու համար: Այսպիսով, մենք ունենք բազմաթիվ էլեկտրոնային տեխնիկա, ինչպիսիք են aterեռուցիչը, AC- ն, Լվացքի մեքենան և այլն:
Costածր ծախսերի բիոպրինտեր. 13 քայլ (նկարներով)
Costածր արժեք ունեցող կենսապրինտեր. Մենք UC Davis- ի ուսանողների կողմից ղեկավարվող հետազոտական թիմ ենք: Մենք BioInnovation Group- ի մի մասն ենք, որը գործում է TEAM- ի մոլեկուլային նախատիպավորման և կենսաինովացիոն լաբորատորիայում (խորհրդատուներ ՝ դոկտոր Մարկ Ֆասիոտի և Էնդրյու Յաո, Մ. Ս.): Լաբորատորիան միավորում է ուսանողներին
Costածր ծախսերի վերահսկիչ ՝ 5 քայլ (նկարներով)
Lowածր ծախսերի վերահսկիչ. PIC12F675 միկրո վերահսկիչի հիման վրա արևի լուսավորության վերահսկիչ, որն օգտագործվում է արևային վահանակով, մարտկոցով և LED 12V լույսով, այն կառուցված է մատչելի նյութերով և պատրաստ է օգտագործման համար, պարզապես միացրեք սարքերը և կատարեք, այս վերահսկիչը գործառույթ
Costածր ծախսերի միացման տախտակի նախաէլեկտրակայան զոդման աշխատանքների համար. 12 քայլ
Costածր ծախսերի միացման տախտակի նախաեռուցման աշխատանքային կայան oldոդման աշխատանքների համար. Շրջանակային տախտակի նախատաքացման աշխատատեղերը շատ թանկ են `$ 350.00-$ 2500.00: Այս հրահանգի նպատակն է ցույց տալ, թե ինչպես կարելի է տպատախտակին նախապես տաքացնել աշխատատեղ ՝ մոտ 50,00 դոլարով, առանց հատուկ գործիքների և նյութերի մեծամասնության