Skip to content

pastukhov/oled-wemos

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Еще одни часы или показываем информацию на экране

У меня на кухне есть дисплеи на плите, на микроволновке и на холодильнике, но все они требуют отдельной ручной настройки и не умеют показывать ничего, кроме времени. Да и то через пару месяцев оказывается что все показывают разное. С помощью этого проекта мы добавим к ним еще один дисплей и покажем как отображать на нем время с точностью до секунды, текущую погоду и прогноз на сегодня.

Аппаратные компоненты

Собираем устройство

Из магазина нам приходят компонетны в таком виде: Так выглядят наши железочки Воспользовавшись паяльником, собираем наш убердевайс В сборе Проследите, чтобы платы не соприкасались Вид сбоку

Прошиваем наше устройство

Идем на сайт NodeMCU custom builds выбираем там ветку dev (мы же хотим использовать последние фичи). Выбираем там необходимые модули. Нам понадобятся: file,i2c,mqtt,net,node,sjson,tmr,u8g,uart,wifi,tls. Выбираем драйвер дисплея, в нашем случае это ssd1306_64x48_i2c и шрифты по вкусу, кириллические символы находятся в font_unifont_0_8. Через некоторое время на почту приходит письмо с ссылкой на скомпилированную прошивку. Если вам лень этим заниматься можете взять уже собранную. Заливаем ее с помощью esptool: esptool.py --port /dev/ttyUSB0 write_flash -fm dio -fs 32m 0x00000 nodemcu-dev-13-modules-2017-04-24-09-58-48-integer.bin. Наш девайс готов к программированию на lua.

Заливаем код

С помощью приложенного Makefile или любым другим способом загружаем код из репозитория в устройство. В файле config.json определяем настройки для нашей беспроводной сети и MQTT брокера. Так же загружаем его.

Показываем что-нибудь

Наше устройство подключается к брокеру и подписывается на топик oled/events/+. Модуль ожидает получить в качестве тела сообщения JSON представляющий собой массив объектов примерно такого вида:

[  
   {  
      "text":"13:12:34",
      "x":0,
      "y":11,
      "type":"text",
      "font":"font_6x10"
   },
   {  
      "text":15 C,
      "x":2,
      "y":29,
      "font":"font_unifont_0_8",
      "type":"text"
   },
   {  
      "text":"15 16 C",
      "x":2,
      "y":47,
      "type":"text",
      "font":"font_unifont_0_8"
   },
   {  
      "type":"image",
      "image":{  
         "type":"Buffer",
         "data":[0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,6,0,8,2,1,56,192,1,48,206,0,128,31,0,192,49,0,96,96,0,102,96,10,103,96,15,96,96,0,192,48,0,192,63,0,128,15,0,56,192,1,24,128,1,0,6,0,0,6,0,0,6,0,0,0,0]
      },
      "x":40,
      "y":12,
      "w":24,
      "h":24
   }
]

Поле type может принимать значения text, image, gird. В последнем случае будет нарисована сетка, облегчающая размещение элементов на экране.

Отправляем информацию

Информацию можно отправить любым удобным для нас способом. Я использовал Node-RED Код для него доступен в этом репозитории. Не забудьте подкорректировать пути, по которым у вас лежат иконки.

Демонстрационное видео

Загрузка

TODO

  • Собрать в корпусе

About

Oled station, wemos adapted

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published