Часы на NodeMCU Lua + MAX7219 минус все лишнее.

Тема в разделе "Глядите, что я сделал", создана пользователем ИгорьК, 4 сен 2018.

Метки:
  1. ИгорьК

    ИгорьК Давно здесь Команда форума

    Поддавшись часовому умопомешательству создал часы - антипод проекту от Ивана.



    Часы имеют узкую специализацию -
    а) утром отправить жильца на работу (1.) во-время и (2.) правильно одетым.
    б) вечером (не)расстроиться по поводу завтрашней погоды.
    в) сохранять дзен, наделяя лишь полезной информацией.

    Часы не имеют цели показать крутость их хозяина и, следовательно:
    • не имеют кучи железа (а вместе с ним и лишних, нигде не применимых данных );
    • не имеют веб-интерфейса - руками в текстовом редакторе забьете пару настроек;
    • не имеют бегущей строки, потому что мы не в метро (но иногда анимационно сдвигают информацию);
    • не имеют будильников (смартфон всегда удобнее);
    • не имеют памятных дат (смартфон всегда гораздо удобнее);
    • не имеют... еще, наверное, чего-то.
    Часы заходят в Интернет и:
    • показывают время секунд через 5-7, обновляют все данные в течение чуть больше минуты после включения;
    • поддерживают точное время;
    • узнают у apixu текущую погоду и ее прогноз на сегодня и завтра;
    • допрашивают Народный мониторинг о состоянии до пяти датчиков, усредняют температуру выбирают наименьшую и выдают ее за текущую уличную, если она не отличается от значения сервера apixu более чем на три градуса. Иначе берутся данные apixu;
    • если присоединить датчик DS18b20 - считывают значение температуры в комнате.
    Часы
    • с 0 до 16 часов выдают время, температуру на улице и прогноз на сегодня;
    • с 16 до 19 выдают время, текущую температуру на улице и ожидаемую минимальную температуру сегодня;
    • с 19 часов выдают время, текущую температуру на улице и прогноз НА ЗАВТРА.
    Данные DS18b20 выдаются постоянно, если он присоединен.

    И все :) Стабильно и надежно.

    Соединять:

    upload_2018-11-6_12-43-23.png

    Кидать матрицу на 3.3 вольта для уменьшения ее свечения, особенно от NodeMCU, категорически не рекомендую! Стабилизатор модуля не рассчитан на ток матрицы. Даташит MAX7219 требует для питания именно 5 вольт!

    Отсутствие веб-интерфейса позволяет вам почувствовать себя не только крутыми диайвайщиками, но и ушлыми программистами.


    Пошагово. Медленно. Четыре простых шага. С картинками.
    (Никакой прошивкой ESP-8266 загубить нельзя! Только подачей 5 вольт куда не надо. )

    Чайники Медные загляните сюда.

    Скачайте прилагаемый архив.

    1. Уточните данные своей сети и ключа apixu.

    В текстовом редакторе вам надо открыть и уточнить два файла:
    _wifi.lua - указываете название и пароль к своей сетке.

    upload_2018-10-1_13-34-41.png

    askapixu.lua
    - указываете свой ключ с сайта https://www.apixu.com и название местности, где торчат ваши часы.

    upload_2018-10-1_13-38-47.png


    2. Залейте прошивку в модуль.

    При помощи https://github.com/marcelstoer/nodemcu-pyflasher заливаете один (любой) из трех бинарных файлов (папка bin), не забыв там же сначала потереть для надежности память. Все отображено на картинке ниже:

    [​IMG]



    3. Залейте скрипты в модуль.

    При помощи ESPlorer https://esp8266.ru/esplorer/ закатываете все файлы из комплекта в модуль. Бинарники, что в отдельной папке, тащить в модуль не надо!

    Вот как работать с ESPlorer. Это пояснение назначений кнопок:
    [​IMG]

    Для заливки файлов пользуйтесь кнопкой Upload...

    upload_2018-9-4_16-23-52.png


    4. Проверяем и Запускаем устройство.

    4.1. Обновляем перечень файлов кнопкой "Reload"
    , что справа
    upload_2018-9-4_16-24-38.png

    и запускаем на исполнение файл _wifi.lua
    upload_2018-9-4_16-26-7.png

    Через 20 секунд должны увидеть:
    upload_2018-9-4_11-57-5.png

    Не увидели - убейте модуль апстену или исправьте ошибки в названии точки доступа и/или пароля (_wifi.lua).

    4.2. Запускаем на исполнение файл _init.lua
    Видим:
    upload_2018-9-4_12-3-22.png


    4.3. Все получилось? Жмем кнопку c _renemeinit.lua. Через 15 секунд и в правом окне ESPlorer видим перезагрузку модуля.

    После этого ваши часы с присоединением любого питания начинают тикать сами.
    Если переедете в другой город - включите ESPlorer, нажмете _renemeinit.lua еще раз, и часы не будут запускаться - можно вносить изменения.

    Все. Кто не понял - Иван ждет!

    P.S. (Для тех кто живет в России, а не в Москве):

    upload_2018-9-5_9-58-52.png
    В третьей версии часовой пояс править в файле setglobals.lua.

    Все версии внешне выглядят одинаково и имеют одинаковый функционал.

    Вторая и третья дополнительно берут текущую температуру с народного мониторинга. Но, как показала практика, apixu показывает ее не хуже. Поэтому и первой версии вполне достаточно.


    UPD 11/09/2018. Версия два Здесь. (Третья - лучше.)

    UPD 27/10/2018. Версия три и Настройка Народного Мониторинга здесь.

    UPD 19/03/2019 - Изменения askapixu.lua для версий 1 и 3 в связи с изменениями на сайте apixu.

    Внимательно: не смешивайте файлы из разных версий даже если у них одинаковые названия.

    Про apixu.

    Фонты и надписи править здесь. (Поиграйтесь в жирные цифры. Все равно потом вернетесь к изящным 5х7)

    Корпус здесь. И здесь от abf. И здесь от Securbond

    О точности и стабильности.


    Фонт цифр от abf.
     

    Вложения:

    Последнее редактирование: 19 мар 2019 в 10:48
    KindMan, Securbond, sys и 4 другим нравится это.
  2. DetSimen

    DetSimen Гуру

    Напомнило

    All_I.jpg
     
    sys, issaom, Mitrandir и ещё 1-му нравится это.
  3. SergeiL

    SergeiL Гуру

    Как по мне, то 5 секунд время, 5 секунд температура на улице, и то порой напрягает.
    Порой ждешь 5 секунд - посмотреть погоду или время. :)
    А бегущие строки раз в минуту - вообще за пределом моего понимания.
    Это же какой темперамент должен быть ;)
     
  4. ИгорьК

    ИгорьК Давно здесь Команда форума

    ~15 секунд время, все остальное по 2,5 секунды.

    upload_2018-9-4_13-16-16.png

    В файле setglobals.lua регулируется общее время цикла. Но от него отнимаются 2,5 секундные показы других данных.
     
  5. SergeiL

    SergeiL Гуру

    У меня часы в "большой" комнате - гостиной, и в коридоре показывают и время и температуру за бортом.
    5 секунд время, 5 сек актуальная температура на улице, в тени.
    И то и то - востребовано на 100%, особенно при сборе утром.
    В детской и спальне - только время.
    Главное их не нужно настраивать - поставил и забыл.
    На всех прописан один и тот же ntp сервер, и все работает как "часы" :).
     
    ИгорьК нравится это.
  6. ИгорьК

    ИгорьК Давно здесь Команда форума

    Прогноз погоды утром тоже нужен. Мне. Температура внутри... Не всегда.
    На заметку. Глазу нужно 2 - 2,5 секунды, чтобы фиксировать информацию. Но надо за что-то цепляться не менее 7 секунд.

    Поэтому, режим 7/2,5 может оказаться удачнее чем 5/5
     
    SergeiL нравится это.
  7. SergeiL

    SergeiL Гуру

    Температура и влажность, внутри, идет только в OH, для анализа.
    На индикатор не вижу смысла выводить.
    А сообщить Пушем из OH, что температура в детской ниже 20 С - это к.м.к - полезно!
     
  8. SergeiL

    SergeiL Гуру

    Нужно проверить!
     
  9. Пушной звер

    Пушной звер Оракул

    не имеют нормальных шрифтов...

    видно тоже нужно свой вариант делать )
     
  10. ИгорьК

    ИгорьК Давно здесь Команда форума

    Ну, тебе то не угодить :)
    Покажешь нормальный - за 20 минут сделаю. Персонально для тебя.
    Из 20 минут - 10, чтобы понять что есть "нормальный".
     
  11. Пушной звер

    Пушной звер Оракул

    прям персонально для меня?
    [​IMG]

    вообще надо бы на трех сегментах часы.

    а так да, часы должны оставаться часами.
     
  12. SergeiL

    SergeiL Гуру

    Как по мне - самый читаемый - 7-сегментов:)
    IMG_3690.JPG
    IMG_3691.JPG
     
    sys и ИгорьК нравится это.
  13. ИгорьК

    ИгорьК Давно здесь Команда форума

    Для тебя. Вот щаз повторю эти у \$&^&щные цифры.
     
    SergeiL нравится это.
  14. ИгорьК

    ИгорьК Давно здесь Команда форума

    Код (Lua):
    dat = {}
    dat.anm = true -- animation
    dat.int = 20 -- interval
    dat.askn = false -- narodmon
    dat.akmq = false -- mqtt
    dat.narod = '85.0'
    dat.apixu = '85.0'
    dat.mqtemp = '85.0'
    dat.ds18b20 = false
    dat.mnow = '0000'
    dat.askw = 51
    dat.intens = false
    dat.dot1 = 0
    dat.dot2 = 0
    dat.dotp = false
    dat.lasttime = ''
    dat.codef = 0
    dat.codenow = 0
    dat.maxtemp = '85.0'
    dat.mintemp = '85.0'

    dig = {}
    dig['1'] = {0x18,0x38,0x18,0x18,0x18,0x18,0x18,0x3c}
    dig['2'] = {0x38,0x6c,0x6c,0x0c,0x18,0x30,0x64,0x7c}
    dig['3'] = {0x38,0x0c,0x1c,0x38,0x08,0x0c,0x4c,0x38}
    dig['4'] = {0,8,24,40,72,124,8,8}
    dig['5'] = {0x3f,0x30,0x30,0x3e,0x03,0x03,0x03,0x3e}
    dig['6'] = {0,28,32,64,120,68,68,56}
    dig['7'] = {0,124,4,4,8,16,32,64}
    dig['8'] = {0x3c,0x66,0x66,0x18,0x66,0x66,0x66,0x3c}
    dig['9'] = {0x3c,0x66,0x66,0x66,0x3e,0x02,0x06,0x1c}
    dig['0'] = {0,56,68,76,84,100,68,56}
    dig['+'] = {0,0,4,4,31,4,4,0}
    dig['-'] = {0,0,0,0,124,0,0,0}
    dig['z'] = {0,0,0,0,0,0,0,0}
    dig['R'] = {0,0,4,2,127,2,4,0} -- arrow
    --dig['H'] = {24,36,126,195,90,90,66,126} -- Home
    dig['H'] = {0x18,0x24,0x42,0xc3,0x5a,0x5a,0x42,0x7e} -- Home

    max7219 = require("_max7219")
    max7219.setup({numberOfModules = 4, SSPin = 8, intensity = 6 })
    max7219.clear()
    -- max7219.setIntensity(1)
    -- dofile('main.lua')
    dofile('_startmax.lua')
    dofile('askds18b20.lua')
    --if dat.akmq then dofile('setmqtt.lua') end
    Файл setglobals.lua. В нем эти 4 замечательные цифры. Время засекал?
     
    Пушной звер нравится это.
  15. ИгорьК

    ИгорьК Давно здесь Команда форума

    Да, 7 сегментов читается отлично. Я, вот, думаю прикупить какие-нибудь китайские большие сегментники.

    Но все таки на доступной матрице они в целом пока побольше.
     
  16. SergeiL

    SergeiL Гуру

    Матрица прикольна, чтобы вывести что-то строчное, типа "на улице усиление ветра", или "Не забудьте зонтик!"
     
  17. Пушной звер

    Пушной звер Оракул

  18. ИгорьК

    ИгорьК Давно здесь Команда форума

    sys нравится это.
  19. ИгорьК

    ИгорьК Давно здесь Команда форума

  20. ИгорьК

    ИгорьК Давно здесь Команда форума

    Да. Но проблема в том, что нет ясности в алгоритме такого вывода. Выводить постоянно - это тоска.