Это сырая заготовка статьи и не менее сырой прототип схемы для добавления в очень хорошую кофеварку современных тенденций IoT.
Проект затормозился, когда мы купили самую обычную гейзерную кофеварку и… в ней кофе оказалось вкуснее.
Предполагалось, что у кофеварки наконец появится голос и она научится включаться через Apple HomeKit и передавать туда статусы – «температура кофе», «кофе готовится» и «таймер включен».
LC Technology ESP8266 Relay X2 (на MCU nuvoTon MS51FB9AE) http://www.lctech-inc.com/cpzx/1/94.html с Ai-Thinker ESP-01 (http://www.ai-thinker.com/pro_view-60.html) https://tasmota.github.io/docs/devices/LC-Technology-WiFi-Relay/ https://www.rapidtables.com/convert/number/ascii-to-hex.html !!режимы D7 (красный) - режим 1 (модуль напрямую к телефону), (D5) синий - режим 2 (модуль и телефон к роутеру) переключение режимов - нажать S1, включить у-во и отпустить S2 сброс (короткое нажатие) D6 - не горит - отключен от wifi, быстро моргает (~0.5s) - режим SmartConfig (настройка wi-fi), медленно моргает (~2s) - подключен к wi-fi, ждет подключения по TCP, горит - подключено по TCP к телефону !!биппер gpio0 (Buzzer_i) + active low level на 3V3 = профит! active high level и gpio2 не подходят ни в одной конфигурации! на 5v постоянно пищит, а на 3v3 норм. !!температуру датчик ds18b20 на gpio2 (DS18x20), с 3v3 на gnd резистор 4K7 (4.7kOm) и профит! !!мониторы энергии припаять шлейф к 16 (GPIO4 для сигнала SCL) и 24 (GPIO5 для SDA) выводу ESPшки на одной из закоротить A0 для выбора следующего адреса на шине !!собрать прошивку с условными правилами (https://tasmota.github.io/docs/Rules/#conditional-rules) и поддержкой I2C драйвера (https://tasmota.github.io/docs/I2CDevices/) xsns_13 (индекс 14) для INA219 <зачеркнуто>и (или) xsns_54 (индекс 35) для INA226</зачеркнуто>((С 226 вышел казус - он как бы поддерживается, но не поддерживается, т.к. распознается, как 219 и, в итоге врет)): #define USE_EXPRESSION #define SUPPORT_IF_STATEMENT #define USE_INA219 !!Прошивка tasmota 3v3 и EN на 3v3 gnd и IO0 на GND TX - RX крест накрест Дальше как обычно тасмотайзером но нашу сборку. 1 мб флешки. !!Настройка после прошивки в режиме 1 ничего не надо. AT ответы привязать к соответствующим эвентам правилами - подкл/выкл вифи и подкл/выкл mqtt в режиме 2 в ответ на 41542B5253540D0A отправить правилом WIFI GOT IP. так же привязать ответы к эвентам в общем и целом в режиме 1 инициализация проходит сильно быстрее! поэтому использую именно ее, хотя по логике должен быть режим2 !!ТЕМПЛЭЙТ (температура, бипер, rx-tx, virtual relay 1, i2c) Backlog Template {"NAME":"Coffee Maker","GPIO":[512,3200,1312,3232,608,640,0,0,224,0,0,0,0,0],"FLAG":0,"BASE":18}; Module 0; Webbutton1 Warm up coffee! !!базовые настройки как у прочих, но: TelePeriod 30 otaurl http://ota.tasmota.com/tasmota/release/tasmota-minimal.bin.gz !!светодиод D6 в 1 режиме, правила: Backlog Rule1 on Wifi#Connected do SerialSend5 5749464920474f54204950 endon on Wifi#Disconnected do SerialSend5 5749464920444953434f4e4e4543544544 endon on Mqtt#Connected do SerialSend5 302c434f4e4e454354 endon on Mqtt#Disconnected do SerialSend5 302c434c4f534544 endon; Rule3 4; Rule1 1 ----ЛОГИКА---- !!!!!!!! РАБОЧИЙ ФРАГМПЕНТ!!!!!!!!!!!!!!! --Бэклог не подходит для загрузки правил с ИФ-ЭЛС!!!!!!! Rule2 on INA219-1#Voltage>2 do Backlog Buzzer 1,2,2; Var1 1 endon on INA219-1#Voltage<2 do Backlog Buzzer 1,2,2; Var1 0 endon on INA219-2#Voltage>2 do Backlog RuleTimer3 0; RuleTimer2 3 endon on INA219-2#Voltage<2 do Backlog RuleTimer3 3; RuleTimer2 0 endon Backlog Rule2 5; Rule2 1 Rule1 +on Rules#Timer=2 do Backlog Var2 1; Buzzer 3,5,4 endon on Rules#Timer=3 do Backlog Var2 0; Buzzer 1,5,4 endon !!публикация таймера!!!! Rule2 +on INA219-3#Voltage>0 do Backlog Buzzer 4,2,2; Publish coffeemaker_1F51A9/stat/CoffeeTimer on endon on INA219-3#Voltage=0 do Publish coffeemaker_1F51A9/stat/CoffeeTimer off endon Rule3 on Var2#State do if (Var3==0 AND Var2==1) Var3 1; Power1 1 elseif (Var3==1 AND Var2==0) Var3 0; Power1 0 endif endon on Power1#State=1 do if (Var3==0 AND Var1==0) Var3 1; SerialSend5 A00101A2; delay 10; SerialSend5 A00100A1; delay 10; SerialSend5 A00201A3; delay 10; SerialSend5 A00200A2 elseif (Var3==0 AND Var1==1) Var3 1; SerialSend5 A00201A3; delay 10; SerialSend5 A00200A2 endif endon on Power1#State=0 do if (Var3==1) Var3 0; SerialSend5 A00101A2; delay 10; SerialSend5 A00100A1 endif endon Backlog Rule3 4; Rule3 1 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!11 эксперименты: 10 если есть напряжение на светодиоде СТАРТ - ВКлючаем вирт.реле3 (СВАРИТЬ) 15 если нет напряжение на светодиоде СТАРТ - ВЫключаем вирт.реле3 (СВАРИТЬ) 20 когда вирт.реле3 СВАРИТЬ переходит в ON - включаем вирт.реле1 (ПИТАНИЕ) на 0.15сек, включаем вирт.реле2 (СТАРТ) на 0.15сек 30 когда вирт.реле3 переходит в OFF - включаем вирт.реле1 на 0.15сек rule3 on INA219-1#Voltage>2 do power1 1 endon on INA219-1#Voltage<2 do power1 0 endon on Power1#State=1 do backlog SerialSend5 A00101A2; delay 10; SerialSend5 A00100A1; delay 10; SerialSend5 A00201A3; delay 10; SerialSend5 A00200A2 endon Var1#State=local Var1#State=remote on INA219-1#Voltage>2 do Backlog Power 1; Var1 local endon on INA219-1#Voltage<2 do Power 0 endon on (Power#State=1) AND (Var1#State!=local) do Backlog SerialSend5 A00101A2; delay 10; SerialSend5 A00100A1; delay 10; SerialSend5 A00201A3; delay 10; SerialSend5 A00200A2 endon Rule1 +on Power1#State=1 do SerialSend5 A00101A2 endon on Power1#State=0 do SerialSend5 A00100A1 endon on Power2#State=1 do SerialSend5 A00201A3 endon on Power2#State=0 do SerialSend5 A00200A2 endon ----ЛОГИКА-END--- !!виртуальные кнопки Rule1 +КОМАНДА ---------тесты-------- Rule1 +on Power1#State=1 do Backlog SerialSend5 A00101A2; Buzzer 1,2,3 endon on Power1#State=0 do Backlog SerialSend5 A00100A1; Buzzer 1,2,3 endon on Power2#State=1 do Backlog SerialSend5 A00201A3; Buzzer 1,2,3 endon on Power2#State=0 do Backlog SerialSend5 A00200A2; Buzzer 1,2,3 endon (ОТКЛЮЧИЛ!!!!!!) кол-во повторов (работает с с битовой маской - повторяет всю композицию N раз) длительность звукового сигнала с шагом 100 мс длительность тишины с шагом 100 мс битовая маска в hex (11110101111101010100 ->F5F54) к примеру Buzzer 1,2,3,0xF5F54 ---------тесты-энд------- !!AT команды реле1 Вкл - SerialSend5 A00101A2 Выкл - SerialSend5 A00100A1 реле2 Вкл - SerialSend5 A00201A3 Выкл - SerialSend5 A00200A2 !!AT ответы WIFI CONNECTED - SerialSend5 5749464920434f4e4e4543544544 (КАЖЕТСЯ не имеет ни какого значения!) WIFI GOT IP - SerialSend5 5749464920474f54204950 (начинает медленно моргать зеленый диод, можно отправлять команды реле) 0,CONNECT - SerialSend5 302c434f4e4e454354 (чтобы лампочка горела постоянно) 0,CLOSED - SerialSend5 302c434c4f534544 (чтобы медленно заморгала) WIFI DISCONNECTED - SerialSend5 5749464920444953434f4e4e4543544544 (гаснет зеленый диод, нельзя отправлять команды реле) !!Софт, работающий с заводской прошивкой (загрузить архив!!!!!): EasyTCP (https://play.google.com/store/apps/details?id=com.shenyaocn.android.EasyTCP или в архиве) только андроид - в первом режиме подключиться к SoftAP модуля (ESP_XXXXXX) и в приложении подключиться к 192,168,4,1:8080, дальше перейти на закладку SWITCH и добавить кнопки. Во втором режиме - поставить EspTouch (https://play.google.com/store/apps/details?id=com.khoazero123.iot_esptouch_demo или из архива; ios - https://apps.apple.com/us/app/espressif-esptouch/id1071176700), дождаться, когда реле начнет быстро моргать зеленым светодиодом (запустился SmartConfig), пункт только для ios - открыть EspTouch v1, ввести пароль от вифи и ткнуть CONFIRM, подождать и устройство подключится к вашей сети, в подтверждении будет написан IP его. Потом так же управлять EasyTCP. USR-TCP232-Test-V1.3 (https://www.pusr.com/support/downloads/usr-tcp232-test-V13 или из архива) для диагностики (usb gebug log) - ТОЛЬКО лог (как минимум для моего MCU) - подключить только TX, RX и GND к USB-TTL программатору, вставить в USB, открыть программу, выбрать порт и подключиться. Включить модуль. Смотреть.
Обсуждение