В который раз сталкиваюсь с необходимостью передавать (или получать) данные с Arduino по воздуху. Традиционные рецепты, типа nRF24L01 или 433МГц передатчиков требуют дополнительного программирования и дополнительной ноды-гейта, а я так до сих пор её и не собрал

А так — то на табло надо данные выводить, то с сенсоров снимать, то управлять пресловутой рожей робота

Пару дней назад (в Телеграм-чате писал, сюда поленился) в доме от соседей из параллельного подъезда сильно пахло не то чесноком, не то газом. В панику удариться не дал мой газовый сенсор MQ-2, который не показал ничего аномального

Но для пущей уверенности данных надо бы побольше. И у меня есть аналогичные MQ-4, MQ-9 и MQ-135. Но как их подключать? Все они требуют аналогового входа. Данные нужны по воздуху. У ESP8266 только один аналоговый вход. Когда-то я брал I²C-АЦП на 4 канала. Собрался подключать. Вижу, что протокол работы с ним какой-то замороченный. И в NodeMCU надо его поддержку отдельно включать/перекомпилировать/перепрошивать. А ломает же!

Воткнул временно эти сенсоры в Arduino, скармливаю в комп, всё равно надо сутки прогреть после первого включения.
Ну, а если в комп скармливаются данные, то можно же и к ESP8266 подключить? Идея давно в воздухе витает, но есть две потенциальных проблемы:
1. Нужно как-то согласовывать формат данных, писать на ESP парсер.
2. Использование последовательного порта ставит крест на отладке ESP с компа.
Однако, второй пункт проблемой больше не является, т.к.
- Есть ide.lua, редактор скриптов через браузер
- Есть допиленная система fail-proof, которая отменяет инициацию скриптов при трёх быстрых перезапусках ESP — это защищает от ошибок при скриптописании, приводящих к bootloop'у.
Ок, тогда остаётся передача данных. Я итак скармливаю из Arduino на комп данные в CSV-формате для удобства чтения. Пишу на lua простейший парсер в несколько строчек. Подсовываю ему данные с последовательного порта. И пуляю результат на MQTT. Voilà!
/bal/esp-uni/values {"D2":"0","D3":"0","D0":"1","D1":"0","A3":"287","A2":"319","A1":"295","A0":"182"}
В общем-то, оно уже работает. Но мысль идёт дальше. И под ESP/NodeMCU, и под Arduino есть JSON. Надо передавать данные в нём, это позволит совсем избежать проблем парсинга. Более того, это позволит достаточно эффективно передавать параметры, наоборот, с ESP (точнее, из внешнего мира через ESP) на Arduino, например, для управления LED-матрицей или той самой головой робота

Можно гнать сложные данные с командами, параметрами или целые сценарии. Я всё хотел для этого написать Forth-подобный парсер, но, если подумать, тут достаточно простого командного сценария.
Допишу до конкретики, причешу, поделюсь результатом