Агуулгын хүснэгт:

ESP01: 19 алхам бүхий хямд өртөгтэй автоматжуулалт
ESP01: 19 алхам бүхий хямд өртөгтэй автоматжуулалт

Видео: ESP01: 19 алхам бүхий хямд өртөгтэй автоматжуулалт

Видео: ESP01: 19 алхам бүхий хямд өртөгтэй автоматжуулалт
Видео: 125 САМЫХ ИННОВАЦИОННЫХ ЭЛЕКТРОТРАНСПОРТНЫХ И ЛИЧНЫХ ТРАНСПОРТНЫХ СРЕДСТВ 2024, Арваннэгдүгээр
Anonim
Image
Image
MCP23016
MCP23016

Өнөөдөр бид ESP01 ашиглан 16 реле бүхий автоматжуулалтын талаар ярилцах болно. Энэ бол маш хямд дизайны загвар бөгөөд та модулийг үржүүлж, 128 хүртэлх реле авах боломжтой бөгөөд энэ микроконтроллерт найман порт өргөтгөгч оруулах боломжтой юм.

Манай хэлхээнд та ESP01 -тэй холбогддог ухаалаг гар утсан дээрх програмтай болно. Энэ нь тус бүрдээ релетэй холбогдсон 16 порттой өргөтгөгчтэй болно. Бид бас 3v3 тохируулгатай эх үүсвэртэй. Тиймээс бид ESP01 ашиглан 16 сувгийн реле модулийг Андройд аппликейшнээр дамжуулан хянаж үзэх болно.

Алхам 1: Санах зөвлөмж

Найзууд минь, би энэ чипийг MCP23016 хэмээх хэлхээнд ашигласан гэдгийг анхаарах нь чухал юм. ISP -ийн ESP32, ESP8266, ARDUINO -д зориулсан EXPANSOR видеог үзэх нь чухал бөгөөд энэ төхөөрөмж дээр би эдгээр гурван төрлийн самбар дээр ажилладаг болохыг харуулж байна.

Алхам 2: MCP23016

Энд бид 28 зүү бүхий чип болох MCP23016 -ийн дүр төрхийг олж авсан болно. MCP23017 загвар нь илүү түгээмэл байдаг бөгөөд дотоод цагтай тул резистор ба конденсатор шаардлагагүй байдаг гэдгийг дурдах нь чухал юм. Энэ нь үүнийг илүү хялбар болгодог, гэхдээ түүний бэхэлгээ нь энэ видеонд үзүүлсэнээс өөр юм.

Алхам 3: Хаяг

Хаяг
Хаяг

MCP23016 хаягийг тодорхойлохын тулд бид A0, A1, A2 зүү ашигладаг. Та хаягаа солихын тулд тэдгээрийг HIGH эсвэл LOW түвшинд үлдээж болно.

Хаягийг дараах байдлаар бүрдүүлэх болно.

MCP_Address = 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

Пин горимыг хянадаг хоёр регистр байдаг. (Оролт эсвэл гаралт)

Bit = 1> INPUT Bit = 0> OUTPUT

Алхам 6: Харилцааны бүтэц

Харилцааны бүтэц
Харилцааны бүтэц

Энд бид чипийн хаягийн талаар ярьж, мэдээлэл илгээхэд шаардлагатай нэг төрлийн протокол болох өгөгдөлд хандах боломжтой болно.

Алхам 7: Хөтөлбөр

Хөтөлбөр
Хөтөлбөр

Бид илүү GPIO ашиглахын тулд ESP01 -ийг MCP23016 -тэй холбохоос бүрдэх програмыг хийх болно. Эдгээр 16 шинэ GPIO нь бидэнд 16 сувгийн реле модулийг удирдах болно.

Командыг Android програмаар дамжуулан ESP01 руу илгээх болно.

Алхам 8: MCP23016

MCP23016
MCP23016

Алхам 9: ESP-01

ESP-01
ESP-01
ESP-01
ESP-01

Энэ бол 16 буухиа самбар юм.

Алхам 10: ESP01 -ийг суурилуулах

ESP01 холбох
ESP01 холбох

Алхам 11: Номын сан ба хувьсагчид

Бид i2c холбоо, хандалтын цэг болон вэб сервер үүсгэх үүрэгтэй номын сангуудыг оруулах болно. Бид чип болон портуудын хаягийг тодорхойлдог. Эцэст нь бид MCP тээглүүрүүдийн утгыг хадгалах хувьсагчдыг тодорхойлдог.

#Include // responsável pela comunicação i2c. #include // responsável criar o accesspoint eo webserver WiFiServer server (80); // webserver para acessarmos através do aplicativo // endereço I2C do MCP23016 #MCPAddress 0x20 -ийг тодорхойлно уу. GP0 0x00 // DATA PORT REGISTER 0 #тодорхойлох GP1 0x01 // DATA PORT REGISTER 1 #deodine IODIR0 0x06 // I/O DIRECTION REGISTER 0 #deodine IODIR1 0x07 // I/O DIRECTION REGISTER 1 // guarda os valores dos pin. MCP uint8_t currentValueGP0 = 0 хийх; uint8_t currentValueGP1 = 0;

Алхам 12: Тохиргоо

Бид ESP01 -ийг эхлүүлж, портуудыг тохируулдаг. Бид мөн хандалтын цэгийг тохируулж, серверийг эхлүүлдэг.

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 (); // Access Point серверийг тохируулах.begin (); // албан ёсны сервер эсвэл сервер}

Алхам 13: Loop

Энд би ямар нэгэн үйлчлүүлэгч сервертэй холбогдсон эсэхийг шалгадаг. Бид мөн эхний хүсэлтийн мөрийг уншдаг. Бид өгөгдлийг удирдах зорилгоор гаргаж, үндсэн хариултын толгойг тодорхойлж, энэ хариуг үйлчлүүлэгчид илгээдэг.

void loop () {WiFiClient client = server.available (); // Verifica se um cliente foi conectado if (! Client) {return; } String req = Client.readStringUntil ('\ r'); ("/MR")! = -1) {parserData (req); // a partir da Requisição extrai os dados para manipulação} else {Serial.println ("хүчингүй хүсэлт"); буцах; } 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 kliente саатал (1); } // төгсгөлийн гогцоо

Алхам 14: ParserData

ParserData
ParserData

Хүсэлтээс бид релейтэй холбоотой өгөгдлийг хайж олох болно. Дараа нь бид өгөгдлийг 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 утга = -1; int index = data.indexOf ("/MR"); // busca o index to prefixo MR if (data [index+5] == '/') ///MR01/1, on 0 = GP; 1 = RELE; 1 = ESTADO (асаах/унтраах) {gp = өгөгдөл [индекс+3]-'0'; реле = өгөгдөл [индекс+4]-'0'; утга = өгөгдөл [индекс+6]-'0'; // envia os dados para o MCP23016 // [relay-1] porque o MCP vai de 0-7 os pinos writePinData (буухиа-1, утга, gp); }}

Алхам 15: Port -ийг тохируулна уу

Бид GPIO зүү горимыг тохируулсан (GP0 эсвэл GP1).

// GPU (GP0 ou GP1) тохиргооны тохиргоо // passo параметрүүд: // порт: GP0 эсвэл GP1 // INPUT нь todos шиг портууд GP trabalharem como entrada хийх ёстой // 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 custom) {if (custom == INPUT) {writeBlockData (порт, 0xFF); } else if (custom == OUTPUT) {writeBlockData (порт, 0x00); } өөр {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) хүчингүй writePinData (int pin, int value, uint8_t gp) {uint8_t statusGP = 0; хэрэв (gp == GP0) statusGP = currentValueGP0; else statusGP = currentValueGP1; if (утга == 0) {statusGP & = ~ (B00000001 << (зүү)); // muda o pino para LOW} else if (утга == 1) {statusGP | = (B00000001 << (зүү)); // muda o pino para HIGH} if (gp == GP0) currentValueGP0 = statusGP; else currentValueGP1 = statusGP; // envia os dados para or MCP writeBlockData (gp, statusGP); саатал (10); }

Алхам 17: WriteBlockData & SetupWiFi

Энд бид өгөгдлийг i2c автобусаар MCP23016 руу илгээдэг. Дараа нь бид хандалтын цэгийг идэвхжүүлэхийн тулд шинж чанаруудыг тохируулдаг. Эцэст нь бид WiFi -ийг Access Point горимд тохируулж, SSID болон PASSWORD -тэй AP үүсгэсэн.

// envia dados para o MCP23016 através do barramento i2c // reg: REGISTRADOR // data: dados (0-255) хүчингүй writeBlockData (uint8_t порт, uint8_t өгөгдөл) {Wire.beginTransmission (MCPAddress); Wire.write (порт); Wire.write (өгөгдөл); Wire.endTransmission (); саатал (10); }

// ACCESS POINTvoid setupWiFi () {WiFi.mode (WIFI_AP); WiFi.softAP ("ESP01_RELAY", "12345678"); }

Алхам 18: Апп

Апп
Апп
Апп
Апп
Апп
Апп
Апп
Апп

Аппликешн үүсгэхийн тулд бид MIT App Inventor 2 -ийг ашигладаг бөгөөд үүнийг дараах линкээр орж үзэх боломжтой.

ai2.appinventor.mit.edu/

Энэхүү програм нь тус бүрдээ найман хос товчлуур агуулсан хоёр дэлгэцээс бүрдэх бөгөөд реле бүрийн статусыг харуулна.

Дараахь програмчлалын блокуудыг ашиглаж болно.

ЧУХАЛ: Хандалтын цэг нь 192.168.4.1 тул ESP -ийн анхдагч IP хаяг юм

1. Дэлгэцийг эхлүүлэх үед бид IP хаягийг санах ойд хадгалж, товчлууруудын төлөвийг сэргээх процедурыг дууддаг (ON / OFF).

2. Нөгөө дэлгэц рүү залгаарай

1. Релений аль нэгний ON товчлуур дээр дарахад бид товчлуур дээр харааны өөрчлөлт хийх болно (ногоон блокууд). WebViewer1. GoToUrl нь URL дахь MR01 / 1 өгөгдлийг холбож манай ESP01 -д хүсэлт тавьдаг.

2. Релений аль нэгний унтраах товчлуурыг дарахад бид товчлуур дээр харааны өөрчлөлт хийх болно (ногоон блокууд). WebViewer1. GoToUrl нь URL дахь MR01 / 0 өгөгдлийг холбож манай ESP01 -д хүсэлт тавьдаг.

Энэ процедур нь товчлууруудын (реле) төлөвийг сэргээхэд ашиглагддаг, учир нь дэлгэцийг өөрчлөх үед энэ нь бүтээх загвар руу буцдаг.

Шар блок нь товчлуурын хос тус бүрт давтагдана.

Алхам 19: Татаж авах

Татаж авах төслийн файлууд энд байна:

MIT App Inventor 2 төслийн файл - татаж авах

Андройд дээр суулгах APK програм - татаж авах

Бусад файлыг татаж авах:

PDF

INO

Зөвлөмж болгож буй: