Pull to refresh

Comments 26

Кроме CH340G можно поставить CP2102 — посвежее. Есть только один минус — новичку паять не удобно.
Согласен, но паять микросхему в QFN корпусе довольно сложно
Отнюдь. Ее можно красиво запаять обычным паяльником с жалом типа усеченный под 45* цилиндр.
Спасибо за материал, интересно было посмотреть схему.

Не рассматривали вариант автономного питания от батарей и использования энергосберегающих режимов?
Сам пользуюсь ESP8266 с AT прошивкой версии 0.22 через контроллер MSP430. Есть вот занятная команда, которая переводит контроллер в спящий режим.

AT+GSLP | Переход в режим пониженного энергопотребления | базовая | AT+GSLP=<время в мс> | Пример: AT+GSLP=5000 (5сек)
Для того, чтобы модуль вышел из режима сна, необходимо соединить выводы XPD_DCDC и EXT_RSTB


К сожалению, конструктив ESP8266-01 не предусматривает вывод этих самых контактов, поэтому предпочёл ESP8266-12, в котором заметно больше доступных линий!

Отличия налицо
ESP-01:
image

ESP-12:
image
В моем случае автономное питание не актуально, но в будущем я собираюсь поиграться и с автономными вариантами датчиков тоже.
Мне было бы интересно, как реагирует сеть, если таких устройств в ней 30-40? Есть у кого-то уще практический опыт по этой части?
Я думаю это зависит от вашего WiFi роутера. Если роутер поддерживает такое кол-во клиентов, то почему бы нет
30 модулей с дешманским TL-MR3420 под OpenWRT работают без каких либо проблем.
Устройство может работать автономно, от батареек? Если да, то как долго?
Не особенно долго. esp8266 жрет (могу немного соврать, замеры вычитаны в интернетах, мне было лень мерять) ~70mA@3.3v просто нифига не делая, подцепившись к wifi сети. При авторизации в вайфай сети и передаче данных — больше. Даже если датчик будет выходить из режима сна периодически и снова засыпать — все равно пары лет работы на CR2032 как на nrf24l01 не получится.
Я тоже уже об этом думал. По моему, WiFi просто не было разработано для автономного питания. Я размышляю в сторону моста на ESP8266 <-> nRF24L01+ На мой взгляд отвечает все требованиям. Автономные датчики просты и экономичны, «Мост» втыкается где-нибудь в USB-Hub
(или любой другой небольшой источник низкого напряжения)
image
У меня роль «моста» выполняют nrf24l01-донглы воткнутые в роутер с OpenWRT. Роутер и так и так свое дело делает, а с полноценной linux-системы проще рулить всем этим делом. Если надо — github.com/nekromant/rf24boot там же на гитхабе и схематика усб донглов (atmega8 с бутлоадером + vusb).
Спасибо, посмотрю, что это там такое. Роутер с OpenWRT у меня тоже вторым стоит (для второго этажа). Данные из «эфира» мне нужны на Cubietruck, который стоит на первом. Сейчас у меня для этой цели Ethernet GateWay на ардуино. Всегда неплохо упростить конструкцию.
В свящем режиме она довольно мало жрёт. Что-то типа 78мкА (на батарейках 2200мА это 3 года, примерно). Если просыпаться раз в 15 минут, передавать на сервер инфу (5 секунд), и снова засыпать, то на год должно хватить. Правда, ESP8266-01 контакт, который нужен для пробуждения, не выведен на плату, надо на ножку чипа паяться. Плюс, нужен такой-же маложрущий стабилизатор. Китайский готовый регулятор на LM2577 у меня жрал порядка 10мА, что на порядки больше, чем собственно ESP.
Выдержка из спецификации:
image
Из таблицы видно, что модуль потребляет максимум 215 mA и то в режиме передачи, а в standby(в этом режиме модуль подключен к WIFi сети) режиме — 0.9 mA.
Если говорить о безпроводных датчиках, то мы понимаем, что передача данных будет происходить раз в какой то промежуток времени и длиться милисекунды. Это вам не стриминг видео. Все остальное время модуль находится в режиме standby. Теперь мы можем прикинуть сколько может прожить модуль в режиме standby на небольшой батарее в 500 mA/h. Выходит чуть больше 500 часов ~ 20 дней. Судите сами, мало это или много. Плюс еще есть спящие режимы.
А зачем датчику, который просыпается раз в 1/5/10 минут постоянно быть подключенным к точке? Если роутер ещё помнит dhcp аренду адреса, то модуль подключается мгновенно (на выходных планирую уточнить это время опытным путём), так же быстро отправляет данные и уходит спать, потребляя свои 60мкА (плюс потребление флешки, датчиков, стабилизатора).
Если он не предусматривает прием команд, то да — незачем.
А если предусматривается приём команд, то наверняка модуль будет управлять нагрузкой, у которой будет внешнее питание. Хотя наверняка есть и исключения, просто мне пока не довелось с такими кейсами встретиться.
Не обязательно. Это могут быть внутренние команды, например изменение периода опроса.
Мне кажется, оптимальным было бы накапливать значения и передавать их пачкой раз в час или вообще в 4 часа. Ночью например, когда на показания никто не смотрит. А днем переходить на режим раз в 15 минут и т.д.
Новые настройки можно получать в ответ на передачу показаний. esp8266 пока что не славится особой стабильностью, до недавнего времени он мог крашиться от того, что ему кто-нибудь послал несколько icmp-ping пакетов, а иногда он крашится вообще без видимых причин. Соответственно данные необходимо писать во флеш, который тоже имеет ограниченный ресурс, и может так случиться, что какая-нибудь из его ячеек кончится быстрее, чем заряд батареек.
У него разве полностью очищается RAM при сбросе? А внешнюю прицепиь? FRAM-чип… а если его привязать параллельно памяти с прошивкой?
Лучше перепроверить, даташитам я после нескольких неприятных случаев не всегда верю. Особенно кгда работаешь с китаезами. Вот тут, например, замеры как-то не очень коррелируют с даташитом.
Сухой вывод по ссылке: So with a total wakeup time of about 2.6s that would be an average of 66mA current draw while being awake.
Не совсем понял про 2.6 секунды. Судя по коду, у него 2 секунды тратится просто на ожидание подключения к точке, вне зависимости от того, сколько на самом деле занимает подключение. Плюс ещё порядка 300мс потратится на чтение DHT22, хотя эту процедуру вполне можно было вынести в те самые холостые 2 секунды.
Не могли бы Вы подробнее рассказать о процессе написания скриптов? Как проходил debug, например. Насколько удобно было их загружать. Можно ли выполнять скрипты без загрузки на устройство? Т.к. это lua, то может удастся запустить без устройства. Например, при разработке или тестировании. И написать unit test.
Скрипты я пишу в ESPlorer — очень удобная IDE. Там конечно нет и 90% фитч, которые есть в большинстве IDE, но если учитывать, что мы пишем именно скритпы, а не какие то огромные проекты, то этого достаточно.
В ESPlorer есть две основные вещи: редактор, с панелью загрузки скрипта в модуль и COM порт терминал, через который мы можем, как посылать команды, так и видеть вывод модуля. Там есть еще много всего, но это основные функции, которыми я пользуюсь.
Как вообще работает NodeMCU(это ОС которую мы заливаем в модуль и которая в последствии выполняет наши скрипты).
При запуске модуля, ОС пытается запустить init.lua скрипт, если не найдет — все, будет висеть ничего не делать, но модуль будет работать и отвечать на команды NodeMCU. если стартовый скрипт найден, ОС выполняет его. Вы можете писать собственно всю логику как в этом скрипте, так и в любом другом, главное чтоб он был загружен во флэш модуля. Выполнить любой скрипт мы можем командой dofile(«скрипт.lua»). Более подробно о командах NodeMCU вы можете прочитать у них на вики.
Собственно весь дебаг — это вывод служебной информации в порт. Можете выводить данные, запросить отставшееся кол-во свободной памяти…
Выполнять lua скрипты локально, у себя на машине вряд ли получится, т.к. для этих целей надо иметь эмулятор девайса, ставить на него NodeMCU и т.д. Я о такой возможности не слышал, так что приходится все тестировать на реальном железе
На счёт дебага — насколько я понял, breakpoint поставить не удастся? На счёт выполнения lua на компьютере — я имел ввиду, что lua — это же скриптовый язык, разве его нельзя выполнить просто в интерпретаторе? Понятно, что если использовать системные библиотеки, которые есть только в NodeMCU, то ничего не получится. Но если абстрагироваться от системных вызовов, то неужели это нельзя сделать?!
P.S. Вообще, спасибо за ответ!
Sign up to leave a comment.

Articles