LINUX.ORG.RU

На чём реализовать датчик температуры, постящий её через HTTP по Wi-Fi и жрущий поменьше батарейки?

 


0

1

Задача: лежать на полке, мерять температуру, раз в 10 минут сливать её по HTTP по самописному протоколу. Желательно в железке линукс какой-то (роутинг, dhcp) и возможность скомпилить в неё что-то писанное на C++. Поменьше жрать батарейку, скажем до месяца аптайма без зарядки. Ясно, что батарейки бывают разные, ага. Скажем комплект из нескольких 1.2 аккумов.

ESP8266 или ESP32 - там не линукс, я так понял, но всё реализуемо.

ESP8266

this -^

Делал на таком только по poll а не push схеме, т.е. вебсервак отдаёт температуру по запросу. Делов на пару часов первый раз увидав поделие, в инете мильён готовых решений. Стоит копейки. Правда питалось оно стационарно, поэтому про батарейку не скажу. Лучше будет, только вручную собрать нужную схему и использовать не wifi а какой нить 2.4ghz. Хотя, не исключено, что и готовое имеется.

Хотя, по идее, push в случае батарейки лучше.

onhydro ()

ESP8266+BMP280. Месяцев 6 проживет, в дипслипе.
А HTTP не нужен, он слишком медленный. Лучше голый TCP.
Ну или MQTT для легкой интеграции в любой умный дом.

KillTheCat ★★★★★ ()

Чтобы не париться с погромированием ESP, купи STM8S003 (или даже какой-нибудь L, тогда потребление будет ниже, но он намного дороже). Микроконтроллер считывает температуру и работает с любым wifi-модулем AT-командами. Все прекрасно и легко.

anonymous ()
Ответ на: комментарий от B00

Очевидно же, что Arduino Uno не имеет поддержки Wi-Fi. Значит, к нему придётся добавить деталь с поддержкой Wi-Fi, например упомянутое ESP. Это технически возможно, то при этом очевидности пользы от Arduino Uno пропадает.

Partisan ★★ ()
Ответ на: комментарий от Partisan

Почему пропадает очевидность? Ну может с arduino я может и загнул но скажем использовать модуль ESP8266 очень даже ниче затея. Не совсем понятно на кой ляд автору необходимость наличия полноценной ос на таком устройстве, хотя... у всех свои причуды.

B00 ()
Ответ на: комментарий от Harald

raspberry pi zero w

Дикий оверкил. ESP8266 в варианте ESP-01 и любой сенсор, хоть DHT 11 (хотя это самый неточный вариант). Есть даже готовые сборки, типа: http://s.click.aliexpress.com/e/EiLxRRS

Только лить не по http, а по mqtt, хоть на тот же iot.eclipse.org. А потом собирать через Munin и строить красивые графики — https://www.zerogate.tk/1ApsfuUfnyJm19qZguDzzqj7se41Ggxzrt/?Post:23:Munin and...

KRoN73 ★★★★★ ()
Ответ на: комментарий от B00

arduino mini

Он не умеет в сеть. Потребуется или Ethernet-модуль, или комп/малинка по serial, или ESP8266… Во всех вариантах, кроме первого, Arduino оказывается уже не нужен :) А, ещё есть вариант SIM-модуля и отсылки по GPRS или LoRa :) Но во втором случае Arduino опять тут не нужен.

KRoN73 ★★★★★ ()
Ответ на: комментарий от redgremlin

BMP280

Накой? DS1820

В виде модуля BMP280 дешевле. А до кучи ещё и давление можно мониторить :) А ещё лучше BME280 и ещё и влажность заодно. Погрешность одинаковая. DS1820 рулит, только если нужен герметичный погружной датчик.

KRoN73 ★★★★★ ()
Ответ на: комментарий от redgremlin

±2°C на минусовых у BMP280 и ±0.5°C у далласа.

Это если топикстартеру нужен точный минус :) Да и у DS1820 тоже не всё замечательно. Уже на -10°C те же ±2°C.

KRoN73 ★★★★★ ()
Последнее исправление: KRoN73 (всего исправлений: 1)
Ответ на: комментарий от anonymous

Wi-Fi
жрущий поменьше батарейки

На радиоизотопном источнике энергии.

Wi-Fi на ESP устанавливает соединение секунд за 5 максимум, скорее — 2-3, но возьмём худший вариант, 5 сек. Потребление в этот момент, конечно, огромное, 200-300мА. Пусть даже 400мА. Итого за сеанс — порядка 0.6 мАч. Одного 18650 на 3000мАч хватит на 5 тыс. сеансов. Или на 3.5 года работы. И это ещё с огромной форой, реально раз в 5 больше получится. Он саморазрядится раньше :)



Главное, не забыть с модуля ESP8266 светодиод питания отколупать, иначе он сожрёт аккумулятор за месяц, если не быстрее.

KRoN73 ★★★★★ ()
Ответ на: комментарий от Harald

ТС хотел линукс и HTTP

Это крайне плохо совместимо с батарейкой и месяцем работы :D Linux у него, скорее, просто как привычный инструмент. Однако, освоить ту же ESP линуксоиду раз плюнуть. Там в варианте NodeMCU даже файловая система и скрипты :)

а так можно и на аttiny каком-нибудь запилить, подключить к мобиле и телепать serial свободной ногой :)

Мобилу с месяцем онлайна сложно найти :) Вариант, конечно, если откопать какой-нибудь древних Xenium и/или батарейный блок жирный поставить. Но зачем, когда ESP будет дешевле, экономнее, компактнее и без колхоза? :D

KRoN73 ★★★★★ ()
Ответ на: комментарий от Harald

мобилу тоже можно через GPIO включать-выключать

Каждые 10 минут включать, ждать, пока загрузится, установит соединение? Ну, там, конечно, не 50% времени она в работе будет, но процентов 15-20 — запросто :D Не говоря про то, что в момент установления соединения мобила будет выжирать столько батареи, сколько не выжрет в режиме ожидания :)

KRoN73 ★★★★★ ()
Ответ на: комментарий от menangen

В данном примере не важно, что использовать, так как объём данных малый. Но вообще говоря вместо UDP можно рассмотреть MQTT - он вроде популярен в IoT,для ESP есть библиотеки его поддержки.Для компьютера тоже есть нужные программные средства, только надо уметь их использовать.

Partisan ★★ ()

У нас в одном проекте самопальные смарт-сенсоры на MSP430 с круглой батарейкой жили по 5-6 лет. Вафли не было, данные собирались по радиоканалу через ретрансляторы.

mv ★★★★★ ()
Ответ на: комментарий от mv

Вообще-то, в ESP32 (Но не в ESP8266) есть Bluetooth с режимом сбережения энергии BLE (Bluetooth Low Energy), при котором адаптер Bluetooth находится в состоянии спячки за исключением времени передачи или приёма данных. Не знаю, что будет экономчнее - Wi-Fi или BLE.

Partisan ★★ ()
Ответ на: комментарий от Partisan

Не знаю, что будет экономчнее - Wi-Fi или BLE.

Своё. В таком применении оба варианта (wifi и bt) - это как прокладка туннеля через гору во время хайкинга.

mv ★★★★★ ()
Ответ на: комментарий от KillTheCat

IRL у меня датчики живут +-пол-года. Хотя там и 3 Ah нет, но все равно.

C ESP и 10-минутными разовыми сеансами? Ну, наверное, саморазряд. Бывают такие аккумуляторы, что и за месяц сами сливаются. Или преобразователь 5В -> 3.3В жрёт немного на холостом ходу.

KRoN73 ★★★★★ ()
Ответ на: комментарий от mv

Не понял ответ.Но я собираюсь испытать оба способа. Мне вообще-то IoT интересует только из любопытства, причём больше всего - программирование связи в сети. Значит, надо испытать разные способы. А поскольку тут не упоминалась связь по BLE, то я и отметил, что такой вариант существует - может, пригодится.

Partisan ★★ ()
Ответ на: комментарий от tz4678

веб-сокеты используй

Да, есть такой вариант. После краткого поиска выяснил, что для IoT наиболее популярен для обмена сообщениями протокол MQTT и совсем не подходит UDP (и, следовательно, основанный на нём DTLS). А что если хочется информацию получать в компьютере не в виде сообщения (файла), а видеть в browser-е? Для этого существует MQTT Over Websockets.

Вообще-то, я начал знакомиться с темой IoT несколько дней назад и купил в частности книжку «Learn ESP32 with Arduino IDE». Там есть глава об использовании MQTT (впрочем, оно доступно и для других видов контроллеров. Так, сегодня мне в google попалась статья о связи ESP32 с Onion Omega2 по MQTT).

Partisan ★★ ()
Ответ на: комментарий от Partisan

Не понял ответ.Но я собираюсь испытать оба способа. Мне вообще-то IoT интересует только из любопытства, причём больше всего - программирование связи в сети. Значит, надо испытать разные способы. А поскольку тут не упоминалась связь по BLE, то я и отметил, что такой вариант существует - может, пригодится.

Для IoT, очевидно, полезней изучить вайфай.

mv ★★★★★ ()
Последнее исправление: mv (всего исправлений: 1)
Ответ на: комментарий от redwagon

Нет. Wifi не жрет 2 А в пике, и там не надо ждать, пока БС или не даст GPRS.

Кроме того, там не только температура мерялась.

Был еще 1 девайс с радио на 2.4 ГГц, который просыпался в режиме ожидания раз в пять минут на 100 мс. Такой девайс работает с одной литиевой батарейки размера AA 2 года.

shkolnick-kun ★★★ ()
Последнее исправление: shkolnick-kun (всего исправлений: 1)
Ответ на: комментарий от KRoN73

Или преобразователь 5В -> 3.3В жрёт немного на холостом ходу.

Еще как жрет. Поэтому один из датчиков я запитал напрямую от 18650, за 2 месяца заряд упал до 4.07, посмотрю сколько проработает. Правда тупой mosquitto уже успел провисеть сутки, а это сеансы по 10 секунд :(

Wi-Fi на ESP устанавливает соединение секунд за 5 максимум, скорее — 2-3

Кстати, это дофига. После дипслипа со статичным ip esp сама подключается к wifi, на всю работу уходит ~380 мс (+ финальная отправка millis() и уход в дипслип). Иногда вайфай отваливается, тогда уже ~3200 из-за коннекта.

KillTheCat ★★★★★ ()
Ответ на: комментарий от KillTheCat

Иногда вайфай отваливается, тогда уже ~3200 из-за коннекта

А, ну я так примерно и оценивал, холодное соединение. С дипслипом пока не экспериментировал, если с ним за 380 мс соединяется, то вообще лафа :)

KRoN73 ★★★★★ ()