Comments 74
Мне показалось, или NodeMCU действительно занимает почти всю память контроллера? Уже на записи второго модуля в память я получил ошибку сообщающую о нехватке памяти, компилирование в бинарный код уже имеющегося в памяти модуля завершилось с той же ошибкой. Возможно я что-то сделал не так, но больше к этой прошивке возвращаться желания не возникло.
Не изучал вопрос потребления памяти. Пока игрался — загружал много скриптов проблем вроде не возникало.
При загрузке NodeMCU Вы получаете 21K heap. Есть Micropython который дает 24K (но не умеет пока WiFi и другие важные штуки)
Тем не менее, это немало если компилировать Lua в байткод и разумно пользоваться памятью, а также разделять модули для более гибкой компиляции. Конечно, это совсем не много если сравнивать Lua с C++ и другими статическими языками. С другой стороны, никто не мешает взять и написать необходимый функционал на C, открыть его для доступа через метод Lua, сделать пул реквест и наблюдать как этим пользуются другие люди.
В любом случае, давайте задумаемся, это ведь начало прихода микроконтроллеров в жизнь бОльшего круга людей. Естественно, это позволяет развивать все это еще сильнее и быстрее. MicroPython, NodeMCU — это первые шаг в этом направлении… Мы ведь хотим интернет вещей?
Тем не менее, это немало если компилировать Lua в байткод и разумно пользоваться памятью, а также разделять модули для более гибкой компиляции. Конечно, это совсем не много если сравнивать Lua с C++ и другими статическими языками. С другой стороны, никто не мешает взять и написать необходимый функционал на C, открыть его для доступа через метод Lua, сделать пул реквест и наблюдать как этим пользуются другие люди.
В любом случае, давайте задумаемся, это ведь начало прихода микроконтроллеров в жизнь бОльшего круга людей. Естественно, это позволяет развивать все это еще сильнее и быстрее. MicroPython, NodeMCU — это первые шаг в этом направлении… Мы ведь хотим интернет вещей?
Странно, нашёл тот модуль, который я загружал, он для поддержки bmp180, весит всего лишь 4кб, после этого загрузка дополнительных 800 байт завершилась с ошибкой. Кстати обратил внимание, что разные билды nodemcu весят по-разному (сами бинарные файлы для заливки). Заливал последний из доступных на тот момент, версия 0.9.5 билд от 20150212.
Но если думать о других людях, то я бы предложил не тратить время на nodemcu и micropython и писать на Си. Лично я знаю Си и Lua примерно на одинаковом уровне, но первый мне кажется более простым и понятным. Взяв за основу прошивку frankenstein, написал к ней модули для работы с i2c железками BH1750, BMP180, HD44780, HMC5883, PCF8591, SHT21, TCS3414, в результате потребление памяти увеличилось с 40 до 41% и соответственно осталась возможность обновлять прошивку по воздуху через tftp.
Если посмотреть на тот же ардуино, то они ведь крутую штуку сделали. Они не стали уходить от Си, а лишь добавили несколько библиотек, отдаляющих пользователя от работы с регистрами, заменив это дело макросами и функциями с красивыми именами. И пользователи, совершенно не знающие Си и микроконтроллеры изучают Си и пишут на нём. Причём насколько бы ущербной не была Arduino IDE, она позволяет отказаться от Wire и использовать AVR библиотеки, писать самому в регистры, в общем не ограничивает функционал, как например nodemcu.
Но если думать о других людях, то я бы предложил не тратить время на nodemcu и micropython и писать на Си. Лично я знаю Си и Lua примерно на одинаковом уровне, но первый мне кажется более простым и понятным. Взяв за основу прошивку frankenstein, написал к ней модули для работы с i2c железками BH1750, BMP180, HD44780, HMC5883, PCF8591, SHT21, TCS3414, в результате потребление памяти увеличилось с 40 до 41% и соответственно осталась возможность обновлять прошивку по воздуху через tftp.
Если посмотреть на тот же ардуино, то они ведь крутую штуку сделали. Они не стали уходить от Си, а лишь добавили несколько библиотек, отдаляющих пользователя от работы с регистрами, заменив это дело макросами и функциями с красивыми именами. И пользователи, совершенно не знающие Си и микроконтроллеры изучают Си и пишут на нём. Причём насколько бы ущербной не была Arduino IDE, она позволяет отказаться от Wire и использовать AVR библиотеки, писать самому в регистры, в общем не ограничивает функционал, как например nodemcu.
Есть в Вашей мысли здравое, в особенности аналогия с arduino.
Пойду смотреть frankenstein. Можно ли где-то взглянуть на Ваши дополнения?
Пойду смотреть frankenstein. Можно ли где-то взглянуть на Ваши дополнения?
Пока что нет, планирую выложить в открытый доступ сразу после того, как допишу ещё несколько модулей, для: HMC5883L, ADXL345, MPR121, DS3231, DS1337, L3G4200D, SSD1306.
Как обычно, неожиданно, напали более важные дела, поэтому решил не откладывать и выложить как есть. Github использую первый раз, надеюсь что всё сделал правильно: github.com/darkbyte-ru/esp8266-frankenstein
А зачем Lua? Не логичнее было бы на плюсах написать и скомпилировать под этот контроллер?
Однозначно, если что-то делать более-менее серьёзное надо делать НЕ на Lua, вот варианты:
Или готовое — homes-smart. Или самому покопаться можно — frankenstein
Первый проект из коробки поддерживает кучу всяких интересных сервисов, в т.ч. MQTT, Narodmon, MajorDoMo, ThingSpeak, FlyMon, Wunderground. Я вот то-же на него подсел и пытаюсь по мере возможности свой вклад внести.
А если поиграться и достаточно только температуры — да, Lua самое то.
За стиль изложения в статье автору респект. Спасибо.
Или готовое — homes-smart. Или самому покопаться можно — frankenstein
Первый проект из коробки поддерживает кучу всяких интересных сервисов, в т.ч. MQTT, Narodmon, MajorDoMo, ThingSpeak, FlyMon, Wunderground. Я вот то-же на него подсел и пытаюсь по мере возможности свой вклад внести.
А если поиграться и достаточно только температуры — да, Lua самое то.
За стиль изложения в статье автору респект. Спасибо.
homes-smart — смотрел, но некоторые функции, например DeepSleep, только в платной версии PRO.
А что за система FlyMon? Ни описания ни регистрации не нашел.
А что за система FlyMon? Ни описания ни регистрации не нашел.
Ну, я для нескольких спящих железок лицензии прикупил, оно того стоит, автор пилит прошивку ежедневно.
Остальные модули у меня в Free режиме стоят, и кушать не просят, самое то, что нужно.
FlyMon DMS (device management system) системка такая, на Ruby пишется, для управления устройствами разными, в основном роутерами, а сейчас уже и ESP поддержка будет.
Прошивка от homes-smart даже в Free версии умеет данные на FlyMon отправлять, ну а дальше графики строятся автоматом.
Я вот для себя еще потихоньку пишу мануалы по ESP, может пригодятся.
Остальные модули у меня в Free режиме стоят, и кушать не просят, самое то, что нужно.
FlyMon DMS (device management system) системка такая, на Ruby пишется, для управления устройствами разными, в основном роутерами, а сейчас уже и ESP поддержка будет.
Прошивка от homes-smart даже в Free версии умеет данные на FlyMon отправлять, ну а дальше графики строятся автоматом.
Я вот для себя еще потихоньку пишу мануалы по ESP, может пригодятся.
www.esp8266.ru вам в помощь, там много людей с esp8266 копаются, так же там есть и автор Unofficial DevKit для ESP.
Честно говоря, видел примеры работы с датчиком DS18B20 (да и вообще с 1-wire) только Lua, поэтому и остановил выбор на NodeMCU.
Ясно. В принципе, если ресурсов контроллера хватило, времени потрачено немного, вещь работает — почему бы и нет, верно?
В том-то все и дело. При выборе вариантов я руководствовался количеством мануалов и простотой реализации.
Именно! Как раз об этом я и говорю чуть выше. Сообщество + простота конфигурации играет огромную роль в появлени рабочих прототипов.
С и C++ с точки зрения производительности несомненно хороши, здесь вообще никаких споров быть не может. Но получается замкнутый круг: те кто пишут на C++ не хотят писать документацию, а сообщество, которое хочет писать документацию — не достаточно хорошо знает C++. Интерпретируемые языки для микроконтроллеров, (ИМХО конечно), позволяют выйти из этого круга и двигаться вперед.
С и C++ с точки зрения производительности несомненно хороши, здесь вообще никаких споров быть не может. Но получается замкнутый круг: те кто пишут на C++ не хотят писать документацию, а сообщество, которое хочет писать документацию — не достаточно хорошо знает C++. Интерпретируемые языки для микроконтроллеров, (ИМХО конечно), позволяют выйти из этого круга и двигаться вперед.
Есть уже готовый код для работы с DS18B20. Я использую в своём проекте (с некоторыми модификациями), который был взят из этого примера:
github.com/CHERTS/esp8266-devkit/tree/master/Espressif/examples/1wire_ds18b20
github.com/CHERTS/esp8266-devkit/tree/master/Espressif/examples/1wire_ds18b20
А как долго он живет на батарейках?
> 1. Найти альтернативу thingspeak. Графики хочется двигать и масштабировать. Может, кто-то знает аналоги?
Там можно масштабировать. Для этого надо нажать на иконку карандаша в верхнем правом углу графика.
Так же можно данные забирать (json/xml) себе для обработки.
Там можно масштабировать. Для этого надо нажать на иконку карандаша в верхнем правом углу графика.
Так же можно данные забирать (json/xml) себе для обработки.
Да, но хочется что-то вроде www.highcharts.com/stock/demo/basic-line
Обрабатывать у себя — тоже вариант. Но я все же надеюсь что есть аналог thingspeak с графиками типа highcharts.
Обрабатывать у себя — тоже вариант. Но я все же надеюсь что есть аналог thingspeak с графиками типа highcharts.
Дык поднимите у себя БД и рисуйте при помощи Highcharts. Делов там на пару часов с курением мануалов.
Ну а если есть желание — айда к нам в группу homes-smart, графиками укомплектуем ;)
Ну а если есть желание — айда к нам в группу homes-smart, графиками укомплектуем ;)
Поднять БД и рисовать самому — вообще не проблема. Но есть ощущение что в эпоху развития IoT это уже сделано и работает.
Все, кто представляет из себя уже что-то более-менее, начинают после раскрутки просить деньгу
Посмотрите тогда еще в сторону Librato, у них были бесплатные пакеты для разработчиков, выглядят солидно.
Ну надежность еще и приватность для некоторых имеет значение. Есть люди, которым важно не визуальная составляющая, а «секюрно ли это работает ?» (датчик температуры в сортире на приусадебном участке).
Посмотрите тогда еще в сторону Librato, у них были бесплатные пакеты для разработчиков, выглядят солидно.
Ну надежность еще и приватность для некоторых имеет значение. Есть люди, которым важно не визуальная составляющая, а «секюрно ли это работает ?» (датчик температуры в сортире на приусадебном участке).
До thingspeak, юзал xively(cosm)
Как я понял, у них сейчас закрыта регистрация. Оставил контакты месяца 2 назад — тишина.
Странно, не знал. Теперь ясно чё все на thingspeak перешли
Да и вообще неудивительно, с такой-то странной политикой. Сначала они были pachube.com. Потом стали cosm.com. Теперь стали xively.com. При этом они еще и переделали все API, сделав старые фиды legacy. Руки отрывать маркетологам, которые все это придумали, и технарям, которым чешется менять то, что и так работает.
Формально Xively и сейчас работает, так или иначе девайс для замера потребляемой энергии CurrentCost к ним по дефолту сливает, но саппорт и правда или не реагирует вообще или говорит мол мы тут непричем, хотя данные идут на их IP и триггеры их работают.
Народный мониторинг. Графики с масштабированием, геолокация на карте и т.п.
Угу. Достаточно гибко работает.
Я себе ThingSpeak даже в блог встроил — контроль солнечной панели.
Я себе ThingSpeak даже в блог встроил — контроль солнечной панели.
Есть ли такие готовые устройства по $5-10 с двухзначным экраном? Можно было бы повестить в каждой комнате и при этом централизированно собирать данные.
Чип греется и будет показывать температуру чипа, а не окружающей среды… Да и точность у его может быть никакая…
DS18B20 не так уж дорого стоит.
DS18B20 не так уж дорого стоит.
Самое странное, что у меня два модуля из 15 при подключении питания разогреваются градусов до 60, при этом не сказать, чтобы сильно больше потребляют тока, да и работают так же, как и нормальные.
Если речь про модули ESP8266, то там при сборке встречается баг один. Он заключается в том, что для светодиода (индикатор питания) стоит резистор на очень маленькое сопротивление и происходит большой нагрев.
Да, модуль ESP8266, если быть точнее, то ESP-05 как на фото из статьи, только выводов 5, выведен reset. Но у этого модуля нет светодиодов и греется сам контроллер. И такого бага нет у других экземпляров той же модификации, и прошивка залита одинаковая (мод на базе франкинштейна).
Вопрос. А как вы этот модуль в режим прошивки смогли перевести?
Я не смог. Если вкратце, то после того как я превратил в кирпичи все модули этой модификации с использованием AT+CIUPDATE, мне не оставалось ничего, кроме как выпаять флеш память и залить прошивку в неё с использованием внешнего программатора. При наличии прокачанных рук, микроскопа, скальпеля и хорошего паяльника вполне можно отсоединить GPIO0 от VCC и замкнуть его на GND на время программирования, но у меня ничего из этого списка не оказалось.
Хм… не знал что есть столько вариантов этих модулей. На ибее ищется только первый вариант, как самый популярный. Но странно что при сортировке по цене другие модули не попадают в поиск.
Кстати, насколько лучше керамическая антенна в ESP-03 по сравнению с печатной на ESP-01?
Кстати, насколько лучше керамическая антенна в ESP-03 по сравнению с печатной на ESP-01?
есть еще интересный вариант, так и называется — nodemcu wifi
h5.m.taobao.com/awp/core/detail.htm?spm=a230r.1.14.1.ofHF5e&id=43189493943&ns=1&abbucket=13#detail — вот ссылка, так же на чипе esp866, только пинов больше, питание от 5 вольт
Ссылка битая или ведет не туда.
Ссылка работает. Но если что, можно на ebay или ali ввести в поиске «nodemcu wifi», будет тоже самое.
Ценник негуманный. Чистый модуль стоит 4$ от силы, а эти впаривают по 15$.
Цена отличается, бесспорно. но не забывайте, еще на нем стоит TTL конвертер, две кнопочки, одна включает режим прошивки, другая пользовательская. Также на нем распаяны все выводы, в том числе аналоговый пин. Это как минимум удобнее, если прошиваете его несколько раз за день. Я покупал вот такой.
Тем не менее, существуют экземпляры без TTL но с полной разводкой контактов — тоже неплохой вариант, но это дело вкуса.
Тем не менее, существуют экземпляры без TTL но с полной разводкой контактов — тоже неплохой вариант, но это дело вкуса.
О, посмотрел интернет уже есть ESP-12 модуль, такой же как ESP-08 только с печатной антенной как у ESP-01
Есть вот такой русскоязычный проект: narodmon.ru/
Там и каталог решений для сбора/отправки данных есть.
Там и каталог решений для сбора/отправки данных есть.
Спасибо за статью. Пытаюсь повторить, Init.lua ругается на строку 14:
lua: init.lua:14: 'end' expected (to close 'function' at line 6) near ''
Я в lua полный 0, но вроде как не функция не закрыта? Добавил ниже end), вроде запустился, но стал падать на print («Temp»):
(httpsender.lua:7: attempt to concatenate global 't' (a nil value))
Я так понял, что ds18b20.read() возвращает nil, т.к. DS18b20 у меня неправильно была подключена, а print не умеет работать с nil. Добавил проверку на Nil:
if t~=nil then
print(«Temp:»..t.." C\n")
blablabla
end
И еще вопрос по подключению DS-ки: текстом в статье написано правильно: левая — земля, средняя — сигнал, правая-питание. Но на картинке то всё наоборот, левая-питание, правая-земля? Ошибка, или я как-то не так читаю такие схемы?
lua: init.lua:14: 'end' expected (to close 'function' at line 6) near ''
Я в lua полный 0, но вроде как не функция не закрыта? Добавил ниже end), вроде запустился, но стал падать на print («Temp»):
(httpsender.lua:7: attempt to concatenate global 't' (a nil value))
Я так понял, что ds18b20.read() возвращает nil, т.к. DS18b20 у меня неправильно была подключена, а print не умеет работать с nil. Добавил проверку на Nil:
if t~=nil then
print(«Temp:»..t.." C\n")
blablabla
end
И еще вопрос по подключению DS-ки: текстом в статье написано правильно: левая — земля, средняя — сигнал, правая-питание. Но на картинке то всё наоборот, левая-питание, правая-земля? Ошибка, или я как-то не так читаю такие схемы?
Повторил термометр и натолкнулся на то, что при выполнении init.lua не успевает получить IP на момент проверки условия. И отображается IP unavaiable, Waiting.... Как задержать скрипт перед проверкой условия?
Вручную запускаю httpsender.lua — всё работает.
Единственное изменение в коде, а то падает через пару часов.
if wifi.sta.getip()== nil then
print(«IP unavaiable, Waiting...»)
else
tmr.stop(1)
print(«Config done, IP is »..wifi.sta.getip())
dofile(«httpsender.lua»)
Вручную запускаю httpsender.lua — всё работает.
Единственное изменение в коде, а то падает через пару часов.
if(t == nil) then t=0
end
print(«Temperature:»..t.." C\n")
На рисунке перепутана полярность подключения DS18B20 (в тексте написано правильно: земля слева)
В остальном спасибо, с учетом небольших нюансов конструкцию удалось повторить.
В остальном спасибо, с учетом небольших нюансов конструкцию удалось повторить.
У меня не работал, не читал с DS18B20, пока не убрал резистор. Датчик запитал от 5 вольт — на 3.3 работал нестабильно.
Там еще от напряжения питания зависит результат измерения… питать его желательно от стабилизированных 5В, при отклонении до 4.5В уже может врать на градус…
Power Supply
Range is 3.0V to 5.5V
Почему вы считаете, что он правильную температуру показывает именно при 5В, а не при 4.5?
Range is 3.0V to 5.5V
Почему вы считаете, что он правильную температуру показывает именно при 5В, а не при 4.5?
Методом сравнения с ртутным термометром в емкости с водой. Показания зависят от напряжения питания, это установлено экспериментально.
Сейчас проверил, мои разницы между 3,2 и 5,3 вольт не показывают.
Sign up to leave a comment.
Wi-Fi термометр на ESP8266 + DS18B20 всего за 4$