Comments 74
Мне показалось, или NodeMCU действительно занимает почти всю память контроллера? Уже на записи второго модуля в память я получил ошибку сообщающую о нехватке памяти, компилирование в бинарный код уже имеющегося в памяти модуля завершилось с той же ошибкой. Возможно я что-то сделал не так, но больше к этой прошивке возвращаться желания не возникло.
+1
Не изучал вопрос потребления памяти. Пока игрался — загружал много скриптов проблем вроде не возникало.
0
При загрузке NodeMCU Вы получаете 21K heap. Есть Micropython который дает 24K (но не умеет пока WiFi и другие важные штуки)
Тем не менее, это немало если компилировать Lua в байткод и разумно пользоваться памятью, а также разделять модули для более гибкой компиляции. Конечно, это совсем не много если сравнивать Lua с C++ и другими статическими языками. С другой стороны, никто не мешает взять и написать необходимый функционал на C, открыть его для доступа через метод Lua, сделать пул реквест и наблюдать как этим пользуются другие люди.
В любом случае, давайте задумаемся, это ведь начало прихода микроконтроллеров в жизнь бОльшего круга людей. Естественно, это позволяет развивать все это еще сильнее и быстрее. MicroPython, NodeMCU — это первые шаг в этом направлении… Мы ведь хотим интернет вещей?
Тем не менее, это немало если компилировать Lua в байткод и разумно пользоваться памятью, а также разделять модули для более гибкой компиляции. Конечно, это совсем не много если сравнивать Lua с C++ и другими статическими языками. С другой стороны, никто не мешает взять и написать необходимый функционал на C, открыть его для доступа через метод Lua, сделать пул реквест и наблюдать как этим пользуются другие люди.
В любом случае, давайте задумаемся, это ведь начало прихода микроконтроллеров в жизнь бОльшего круга людей. Естественно, это позволяет развивать все это еще сильнее и быстрее. MicroPython, NodeMCU — это первые шаг в этом направлении… Мы ведь хотим интернет вещей?
0
UFO just landed and posted this here
Странно, нашёл тот модуль, который я загружал, он для поддержки 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.
+2
Есть в Вашей мысли здравое, в особенности аналогия с arduino.
Пойду смотреть frankenstein. Можно ли где-то взглянуть на Ваши дополнения?
Пойду смотреть frankenstein. Можно ли где-то взглянуть на Ваши дополнения?
0
Пока что нет, планирую выложить в открытый доступ сразу после того, как допишу ещё несколько модулей, для: HMC5883L, ADXL345, MPR121, DS3231, DS1337, L3G4200D, SSD1306.
0
Как обычно, неожиданно, напали более важные дела, поэтому решил не откладывать и выложить как есть. Github использую первый раз, надеюсь что всё сделал правильно: github.com/darkbyte-ru/esp8266-frankenstein
0
А зачем Lua? Не логичнее было бы на плюсах написать и скомпилировать под этот контроллер?
+3
Однозначно, если что-то делать более-менее серьёзное надо делать НЕ на Lua, вот варианты:
Или готовое — homes-smart. Или самому покопаться можно — frankenstein
Первый проект из коробки поддерживает кучу всяких интересных сервисов, в т.ч. MQTT, Narodmon, MajorDoMo, ThingSpeak, FlyMon, Wunderground. Я вот то-же на него подсел и пытаюсь по мере возможности свой вклад внести.
А если поиграться и достаточно только температуры — да, Lua самое то.
За стиль изложения в статье автору респект. Спасибо.
Или готовое — homes-smart. Или самому покопаться можно — frankenstein
Первый проект из коробки поддерживает кучу всяких интересных сервисов, в т.ч. MQTT, Narodmon, MajorDoMo, ThingSpeak, FlyMon, Wunderground. Я вот то-же на него подсел и пытаюсь по мере возможности свой вклад внести.
А если поиграться и достаточно только температуры — да, Lua самое то.
За стиль изложения в статье автору респект. Спасибо.
+2
homes-smart — смотрел, но некоторые функции, например DeepSleep, только в платной версии PRO.
А что за система FlyMon? Ни описания ни регистрации не нашел.
А что за система FlyMon? Ни описания ни регистрации не нашел.
0
Ну, я для нескольких спящих железок лицензии прикупил, оно того стоит, автор пилит прошивку ежедневно.
Остальные модули у меня в 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, может пригодятся.
0
www.esp8266.ru вам в помощь, там много людей с esp8266 копаются, так же там есть и автор Unofficial DevKit для ESP.
0
Честно говоря, видел примеры работы с датчиком DS18B20 (да и вообще с 1-wire) только Lua, поэтому и остановил выбор на NodeMCU.
0
Ясно. В принципе, если ресурсов контроллера хватило, времени потрачено немного, вещь работает — почему бы и нет, верно?
0
В том-то все и дело. При выборе вариантов я руководствовался количеством мануалов и простотой реализации.
0
Именно! Как раз об этом я и говорю чуть выше. Сообщество + простота конфигурации играет огромную роль в появлени рабочих прототипов.
С и C++ с точки зрения производительности несомненно хороши, здесь вообще никаких споров быть не может. Но получается замкнутый круг: те кто пишут на C++ не хотят писать документацию, а сообщество, которое хочет писать документацию — не достаточно хорошо знает C++. Интерпретируемые языки для микроконтроллеров, (ИМХО конечно), позволяют выйти из этого круга и двигаться вперед.
С и C++ с точки зрения производительности несомненно хороши, здесь вообще никаких споров быть не может. Но получается замкнутый круг: те кто пишут на C++ не хотят писать документацию, а сообщество, которое хочет писать документацию — не достаточно хорошо знает C++. Интерпретируемые языки для микроконтроллеров, (ИМХО конечно), позволяют выйти из этого круга и двигаться вперед.
0
Есть уже готовый код для работы с DS18B20. Я использую в своём проекте (с некоторыми модификациями), который был взят из этого примера:
github.com/CHERTS/esp8266-devkit/tree/master/Espressif/examples/1wire_ds18b20
github.com/CHERTS/esp8266-devkit/tree/master/Espressif/examples/1wire_ds18b20
0
А как долго он живет на батарейках?
+1
> 1. Найти альтернативу thingspeak. Графики хочется двигать и масштабировать. Может, кто-то знает аналоги?
Там можно масштабировать. Для этого надо нажать на иконку карандаша в верхнем правом углу графика.
Так же можно данные забирать (json/xml) себе для обработки.
Там можно масштабировать. Для этого надо нажать на иконку карандаша в верхнем правом углу графика.
Так же можно данные забирать (json/xml) себе для обработки.
0
Да, но хочется что-то вроде www.highcharts.com/stock/demo/basic-line
Обрабатывать у себя — тоже вариант. Но я все же надеюсь что есть аналог thingspeak с графиками типа highcharts.
Обрабатывать у себя — тоже вариант. Но я все же надеюсь что есть аналог thingspeak с графиками типа highcharts.
0
Дык поднимите у себя БД и рисуйте при помощи Highcharts. Делов там на пару часов с курением мануалов.
Ну а если есть желание — айда к нам в группу homes-smart, графиками укомплектуем ;)
Ну а если есть желание — айда к нам в группу homes-smart, графиками укомплектуем ;)
+1
Поднять БД и рисовать самому — вообще не проблема. Но есть ощущение что в эпоху развития IoT это уже сделано и работает.
0
Все, кто представляет из себя уже что-то более-менее, начинают после раскрутки просить деньгу
Посмотрите тогда еще в сторону Librato, у них были бесплатные пакеты для разработчиков, выглядят солидно.
Ну надежность еще и приватность для некоторых имеет значение. Есть люди, которым важно не визуальная составляющая, а «секюрно ли это работает ?» (датчик температуры в сортире на приусадебном участке).
Посмотрите тогда еще в сторону Librato, у них были бесплатные пакеты для разработчиков, выглядят солидно.
Ну надежность еще и приватность для некоторых имеет значение. Есть люди, которым важно не визуальная составляющая, а «секюрно ли это работает ?» (датчик температуры в сортире на приусадебном участке).
+1
UFO just landed and posted this here
До thingspeak, юзал xively(cosm)
0
Как я понял, у них сейчас закрыта регистрация. Оставил контакты месяца 2 назад — тишина.
0
Странно, не знал. Теперь ясно чё все на thingspeak перешли
0
Да и вообще неудивительно, с такой-то странной политикой. Сначала они были pachube.com. Потом стали cosm.com. Теперь стали xively.com. При этом они еще и переделали все API, сделав старые фиды legacy. Руки отрывать маркетологам, которые все это придумали, и технарям, которым чешется менять то, что и так работает.
0
Формально Xively и сейчас работает, так или иначе девайс для замера потребляемой энергии CurrentCost к ним по дефолту сливает, но саппорт и правда или не реагирует вообще или говорит мол мы тут непричем, хотя данные идут на их IP и триггеры их работают.
0
Народный мониторинг. Графики с масштабированием, геолокация на карте и т.п.
0
Угу. Достаточно гибко работает.
Я себе ThingSpeak даже в блог встроил — контроль солнечной панели.
Я себе ThingSpeak даже в блог встроил — контроль солнечной панели.
+1
Есть ли такие готовые устройства по $5-10 с двухзначным экраном? Можно было бы повестить в каждой комнате и при этом централизированно собирать данные.
0
Чип греется и будет показывать температуру чипа, а не окружающей среды… Да и точность у его может быть никакая…
DS18B20 не так уж дорого стоит.
DS18B20 не так уж дорого стоит.
+3
Самое странное, что у меня два модуля из 15 при подключении питания разогреваются градусов до 60, при этом не сказать, чтобы сильно больше потребляют тока, да и работают так же, как и нормальные.
+1
Если речь про модули ESP8266, то там при сборке встречается баг один. Он заключается в том, что для светодиода (индикатор питания) стоит резистор на очень маленькое сопротивление и происходит большой нагрев.
+1
Да, модуль ESP8266, если быть точнее, то ESP-05 как на фото из статьи, только выводов 5, выведен reset. Но у этого модуля нет светодиодов и греется сам контроллер. И такого бага нет у других экземпляров той же модификации, и прошивка залита одинаковая (мод на базе франкинштейна).
0
Вопрос. А как вы этот модуль в режим прошивки смогли перевести?
0
Я не смог. Если вкратце, то после того как я превратил в кирпичи все модули этой модификации с использованием AT+CIUPDATE, мне не оставалось ничего, кроме как выпаять флеш память и залить прошивку в неё с использованием внешнего программатора. При наличии прокачанных рук, микроскопа, скальпеля и хорошего паяльника вполне можно отсоединить GPIO0 от VCC и замкнуть его на GND на время программирования, но у меня ничего из этого списка не оказалось.
+3
Хм… не знал что есть столько вариантов этих модулей. На ибее ищется только первый вариант, как самый популярный. Но странно что при сортировке по цене другие модули не попадают в поиск.
Кстати, насколько лучше керамическая антенна в ESP-03 по сравнению с печатной на ESP-01?
Кстати, насколько лучше керамическая антенна в ESP-03 по сравнению с печатной на ESP-01?
0
есть еще интересный вариант, так и называется — nodemcu wifi
0
h5.m.taobao.com/awp/core/detail.htm?spm=a230r.1.14.1.ofHF5e&id=43189493943&ns=1&abbucket=13#detail — вот ссылка, так же на чипе esp866, только пинов больше, питание от 5 вольт
0
Ссылка битая или ведет не туда.
0
Ссылка работает. Но если что, можно на ebay или ali ввести в поиске «nodemcu wifi», будет тоже самое.
0
Ценник негуманный. Чистый модуль стоит 4$ от силы, а эти впаривают по 15$.
0
Цена отличается, бесспорно. но не забывайте, еще на нем стоит TTL конвертер, две кнопочки, одна включает режим прошивки, другая пользовательская. Также на нем распаяны все выводы, в том числе аналоговый пин. Это как минимум удобнее, если прошиваете его несколько раз за день. Я покупал вот такой.
Тем не менее, существуют экземпляры без TTL но с полной разводкой контактов — тоже неплохой вариант, но это дело вкуса.
Тем не менее, существуют экземпляры без TTL но с полной разводкой контактов — тоже неплохой вариант, но это дело вкуса.
0
О, посмотрел интернет уже есть ESP-12 модуль, такой же как ESP-08 только с печатной антенной как у ESP-01
0
Есть вот такой русскоязычный проект: narodmon.ru/
Там и каталог решений для сбора/отправки данных есть.
Там и каталог решений для сбора/отправки данных есть.
0
Спасибо за статью. Пытаюсь повторить, 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-ки: текстом в статье написано правильно: левая — земля, средняя — сигнал, правая-питание. Но на картинке то всё наоборот, левая-питание, правая-земля? Ошибка, или я как-то не так читаю такие схемы?
0
Повторил термометр и натолкнулся на то, что при выполнении 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")
0
На рисунке перепутана полярность подключения DS18B20 (в тексте написано правильно: земля слева)
В остальном спасибо, с учетом небольших нюансов конструкцию удалось повторить.
В остальном спасибо, с учетом небольших нюансов конструкцию удалось повторить.
0
У меня не работал, не читал с DS18B20, пока не убрал резистор. Датчик запитал от 5 вольт — на 3.3 работал нестабильно.
0
Там еще от напряжения питания зависит результат измерения… питать его желательно от стабилизированных 5В, при отклонении до 4.5В уже может врать на градус…
0
Power Supply
Range is 3.0V to 5.5V
Почему вы считаете, что он правильную температуру показывает именно при 5В, а не при 4.5?
Range is 3.0V to 5.5V
Почему вы считаете, что он правильную температуру показывает именно при 5В, а не при 4.5?
0
Методом сравнения с ртутным термометром в емкости с водой. Показания зависят от напряжения питания, это установлено экспериментально.
+2
Сейчас проверил, мои разницы между 3,2 и 5,3 вольт не показывают.
0
Sign up to leave a comment.
Wi-Fi термометр на ESP8266 + DS18B20 всего за 4$