Мазмуну:

ESP01 менен арзан баада автоматташтыруу: 19 кадам
ESP01 менен арзан баада автоматташтыруу: 19 кадам

Video: ESP01 менен арзан баада автоматташтыруу: 19 кадам

Video: ESP01 менен арзан баада автоматташтыруу: 19 кадам
Video: Наши тесты - Citroen C3 2024, Июль
Anonim
Image
Image
MCP23016
MCP23016

Бүгүн биз ESP01ди 16 релеси менен автоматташтырууну талкуулайбыз. Бул супер арзан дизайн модели, анда сиз модулдарды көбөйтүп, 128 релеге чейин ала аласыз, анткени бул микроконтроллерге сегизге чейин порт кеңейтүүчүлөрдү коюуга болот.

Биздин схемада сизде ESP01 менен байланышкан смартфондо тиркеме болот. Анын 16 порту бар кеңейтүүчүгө ээ болот, алардын ар бири релеге туташкан. Бизде дагы 3v3 жөнгө салынуучу булак бар. Андыктан биз ESP01ди колдонуу менен 16 каналдуу реле модулун Android колдонмосу аркылуу башкарабыз, мен аны сиздерге жеткиликтүү кылам.

1 -кадам: Эске алуу үчүн кеңеш

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

2 -кадам: MCP23016

Бул жерде бизде 28 казыктары бар чип болгон MCP23016 сүрөтү бар. Айта кетчү нерсе, MCP23017 модели дагы кеңири таралган жана резисторго жана конденсаторго муктаж эмес, анткени анын ички сааты бар. Бул аны жеңилдетет, бирок анын бекитилиши бул видеодо көрсөткөнүбүздөн айырмаланат.

3 -кадам: Дарек

Дарек
Дарек

MCP23016 дарегин аныктоо үчүн биз A0, A1 жана A2 төөнөгүчтөрүн колдонобуз. Даректи өзгөртүү үчүн аларды ЖОГОРУ же ТӨМӨН калтырсаңыз болот.

Дарек төмөнкүчө түзүлөт:

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дорго ээ болуу үчүн MCP23016 менен ESP01 байланышынан турган программаны жасайбыз. Бизде боло турган бул 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 байланыш үчүн жооптуу китепканаларды, жана Access Point жана веб -серверди камтыйт. Биз чиптин жана порттордун дарегин аныктайбыз. Акыр -аягы, биз MCP казыктарынын баалуулуктарын сактоо үчүн өзгөрмөлөрдү аныктайбыз.

#include // responsável pela comunicação i2c. #include // answerável criar o accesspoint eo webserver WiFiServer server (80); // webserver para acessarmos através do aplicativo // endereço I2C do MCP23016 #dexine MCPAddress 0x20 // ENDEREÇ GP0 0x00 аныктоо // DATA PORT REGISTER 0 #define GP1 0x01 // DATA PORT REGISTER 1 #deodine IODIR0 0x06 // I/O DIRECTION REGISTER 0 #deine IODIR1 0x07 // I/O DIRECTION REGISTER 1 // gosda os valores dos pinos. кыл 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 cliente delay (1); } // аяктоочу цикл

14 -кадам: ParserData

ParserData
ParserData

Өтүнүчтөн биз релеге байланыштуу маалыматтарды издейбиз. Биз андан кийин маалыматтарды MCP23016га жөнөтөбүз.

// a partir Requestisão busca os atos 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 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] mCP ui de 0-7 os pinos writePinData (реле-1, мааниси, gp); }}

15 -кадам: ConfigurePort

Биз GPIO пин режимин орноттук (GP0 же GP1).

// конфигурация GPO GPO (GP0 же GP1) // комо параметрлери: // порт: GP0 же GP1 // INPUT para todos as port to do GP trabalharem como entrada // OUTPUT to toos as portas do GP trabalharem como saida // 0-255 баалуу көрсөткүчтөрү (1 = INPUT, 0 = OUTPUT) // мис: 0x01 же B00000001 же 1: көрсөтмөлөрдү берүү GPX.0 менен байланышкан, же жокко чыгарылган configurePort (uint8_t порт, uint8_t салт) {if (custom == INPUT) {writeBlockData (порт, 0xFF); } else if (custom == OUTPUT) {writeBlockData (порт, 0x00); } else {writeBlockData (порт, салт); }}

16 -кадам: WritePinData

Коддун бул бөлүгүндө биз каалаган пиндин абалын өзгөртүп, маалыматтарды MCPге жөнөтөбүз.

// мүдөөлөрдүн тизмеси, команданын параметрлери: // pin = pino desejado; маани = 0/1 (күйгүзүү/өчүрүү); gp = 0/1 (PORT do MCP) жараксыз WritePinData (int pin, int value, uint8_t gp) {uint8_t statusGP = 0; if (gp == GP0) statusGP = currentValueGP0; else statusGP = currentValueGP1; if (value == 0) {statusGP & = ~ (B00000001 << (pin)); // LOW} LOW} else if if (value == 1) {statusGP | = (B00000001 << (pin)); // muda o pino para HIGH} if (gp == GP0) currentValueGP0 = statusGP; else currentValueGP1 = statusGP; // MCP жазуу үчүн blockBataData (gp, statusGP); кечигүү (10); }

17 -кадам: WriteBlockData & SetupWiFi

Бул жерде биз MCP23016га i2c автобусу аркылуу маалыматтарды жөнөтөбүз. Андан кийин, биз кирүү чекитин иштетүү үчүн касиеттерди конфигурациялайбыз. Акыр -аягы, биз WiFiди Access Point режимине конфигурациялап, SSID жана PASSWORD менен AP түздүк.

// mCP23016 атравесы i2c // reg: REGISTRADOR // маалыматтар: 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/

Колдонмо ар бир реленин абалын көрсөтүүчү, ар биринде сегиз жуп баскычты камтыган эки экрандан турат.

Төмөндө колдонулган программалоо блокторунун айрымдары келтирилген:

МААНИЛҮҮ: ESPтин демейки IP дареги, анткени Кирүү чекити 192.168.4.1

1. Экран инициализацияланганда, биз IPди эстутумда сактайбыз жана баскычтардын абалын калыбына келтирүү процедурасын чакырабыз (ON / OFF).

2. Башка экранга чалыңыз

1. Релейлердин биринин КҮЙҮК баскычын басканда, биз баскычка визуалдык өзгөртүүлөрдү киргизебиз (жашыл блоктор). WebViewer1. GoToUrl URLдеги MR01 / 1 маалыматтарын байланыштыруу менен биздин ESP01ге суроо -талап кылат.

2. Реленин биринин ӨЧҮРҮҮ баскычын басканда, биз баскычка визуалдык өзгөртүүлөрдү киргизебиз (жашыл блоктор). WebViewer1. GoToUrl URLдеги MR01 / 0 маалыматтарын байланыштыруу менен биздин ESP01ге суроо берет.

Бул процедура баскычтардын абалын калыбына келтирүү үчүн колдонулат (реле), анткени экранды өзгөрткөндө ал жаратуу моделине кайтат.

Сары блок баскыч жуптарынын ар бири үчүн кайталанат.

19 -кадам: Жүктөө

Бул жерде жүктөө үчүн долбоордун файлдары:

MIT App Inventor 2 долбоорунун файлы - жүктөп алуу

Androidге орнотуу үчүн APK тиркемеси - жүктөп алуу

Башка файлдарды жүктөп алыңыз:

PDF

МЕН ЖОК

Сунушталууда: