Погодная станция. Табло

Погодная станция. ТаблоДавно хотел дома в прихожей организовать себе большое табло с погодой и временем.

Табло, может быть не самая главная часть погодной станции, но точно самая заметная.

Понравился на TAOBAO трехцветный дисплей 16×32. Цена с доставкой вышла около $35. Доставить получилось с третьего раза, так как посредник Мистер ТАО ни за что не хотел везти товар, ссылая на то что он очень хрупкий.

Дисплей приобрел через малоизвестного BUY88.COM. Вышло немного дороже, чем у Мистера ТАО. Зато у данного посредника очень общительная и оперативная служба поддержки.

И вот дисплей у меня

Комплект состоял из платы дисплея, контроллера управления на STC MCU и пульта ИК управления

Дисплей погодной станции

Подключить всю эту радость к 5В не составило труда, но что делать дальше?

Дисплей показывал время с часов DS1302, температуру с датчика DHT11, графический анализатор спектра сигнала, подключаемого к аудиовходу и какой-то китайский текст в рекламных целях. Не то что нужно для полноценной погодной станции. Ковыряться в чужом контроллере без описания, схемы я не стал. Это для очень суровых хакеров.

Контроллер на STM MCU

Написал китайцу, дай схему подключения дисплея, тот полностью в непонятке, мол все, что мне нужно, я уже купил 🙂 Поиск в интернете и на форумах тоже ничего не дал. «Сам купил — сам разбирайся». Купил бы модуль P10, как все, не имел бы проблем.

Пришлось изучать дисплей самому:

Обратная сторона

 

Ну сам, так сам. Начинаем изучать состав этого чуда

Дисплей. Элементная база

Сама плата дисплей с отдельными SMD диодами синего, красного и зеленого цвета 16×32

С обратной стороны две платы с микросхемами, управляющими блоками светодиодов 8×32 и соединяемыми каскадно между собой и с другими панелями. На каждой плате управления:

  • ES83310 East Sun — 4 шт. Драйвер светодиодного дисплея, позволяющий управлять 16 выходами по серийной шине и каскадироваться друг с другом
  • Phillips 74HC245D — 2шт. Неинверирующий 8-канальный буфер
  • Phillips 74HC138D — 1шт. Декодер на 8 линий

Немного погоняв китайский контроллер с осциллографом, немого пораскинув мозгами и пользуясь великим методом НАУЧНОГО ТЫКА нашел следующий

Алгоритм работы дисплея

  1. Устанавливаем адрес строки (пины A0, A1, A2)
  2. Подаем сигнал на PIN En (ENABLE)
  3. Затем вместе с тактовым сигналом на пин CLK подаем 1-ку на R,G или B для зажигания светодиода 0-го столбца. Затем 1-го, 2-го столбца и так до 64. *было бы больше соединенных дисплеев, было бы больше.
  4. Далее переходим к следующей строке.
  5. Задавая паузу между отображениями строк в 0 -2 мс можно управлять яркостью текста на дисплее.
  6. Заводим буфер экрана 16×32 байт и организовываем алгоритм циклического отображения картинки из буфера.
  7. Осталось только записать в буфер экрана  символы, картинки и т.д.

Недостатком алгоритма оказалось то, что микроконтроллер не способен делать никакой серьезной работы кроме формирования изображения дисплея. То есть стать некой видеокартой. Так как интерфейс с данной видеокартой — радиоканал с использованием NRF24L01, работающей по прерыванию, то в момент приема пакета данных происходит небольшое мигание дисплея.

Весь код работы с дисплеем был оформлен в библиотеку, которую можно скачать вместе с кодом табло метеостанции.

Побаловавшись занакогенератором с шрифтом 8×5, бегущей строкой и прочим перешел к дизайну

Дизайн экрана

На дисплей 16×32 одновременно можно вывести две строи по пять символов 8×5 семи различных цветов. В первой версии табло погодной станции в первой строке показывалось время, во второй последовательно температура, давление, влажность (сперва бегущей строкой, затем последовательным отображением через равный промежуток времени)

Такой формат отображения был достаточно примитивный и не использовал возможности дисплея. Захотелось более красивой картинки, значит нужно ее сначала нарисовать. В простейшей программке рисования иконок накидываю эскизы экранов.

Первый экран — часы с цифрами размером 8×4, ниже температура и давление шрифтом 6×3 и стрелки, показывающие тенденцию к уменьшению или увеличению показателей

Табло. Эскиз экрана 1

Если погодных данных нет свыше заданного интервала времени, над цифрами показаний выдаются знаки вопроса

Табло. Эскиз экрана 2

 

Второй экран — информер прогноза погоды полученной из интернета

screen03

 

Прогноз отображается по пяти параметрам:

  • Температура
  • Облачность (иконкой)
  • Осадки (мигающей иконкой)
  • Направление ветра стрелкой
  • Сила ветра

Табло. Эскиз экрана 4

 

Табло. Эскиз экрана 5

Итак, желаемые картинки на табло нарисованы, приступаем к реализации в железе

Схема табло погодной станции

Схема дисплея погодной станции

Последний оказался нужен потому что NRF24 не захотел работать от 5В даже через адаптер. Видимо ему не понравились 5-вольтовые TTL уровни. Пришлось запитать Arduino от 3.3В, отключив фьюзом проверку напряжения питания.

Сборка табло погодной станции

Корпус сделан из фоторамки 30×20 см, с рассеивателем из бумаги для принтера под стеклом. Стенки из фанеры, обклеенной пленкой «под карбон».

Корпус планирую переделывать, когда такой придет с ТАОБАО .

Корпус из фоторамки

Дисплей крепим алюминиевыми уголками

Погодная станция. Табло. Сборка

 

Паяем стабилизатор на LM1117

Стабилизатор на LM1117 3.3

 

Все крепим к фанерному корпусу на шурупы или двухсторонний скотч

Сборка табло погодной станции

 

Программирование табло погодной станции

Общий алгоритм работы такой:

  1. Принимаем пакет отNRF24L01, распаковываем его, обрабатываем данные, рисуем картинку в экранный буфер.
  2. Все остальное время показываем экранный буфер на дисплей.
  3. Если получаем прогноз погоды, отображаем информер прогноза по очереди с основным экраном.
  4. Пакеты ловим трех типов — с метеоданными от сенсора, с точным временем и прогнозом погоды.
  5. Время считаем по внутренним часам функцией millis(), при получения пакета с точным временем вносим корректировку

Архив программы и моих библиотек можно скачать здесь

В архиве есть:

  • Библиотека работы с дисплеем MatrixRGB
  • Библиотека реализующая скользящее среднее для усреднения показателей ClassAVG
  • Описание структур пакетов, принимаемых по радиоканалу ClassCoder
  • И файл описания цифр, символов и иконок Font.h

Результат

Показ времени

Показ погодного информера

Погодный информер

Погодный информер

 

Другие статьи по погодной станции

Обсуждение на форуме arduino.ru

Архив программ
Архив программ
meteo_station_v1.zip
8.5 KiB
187 Downloads
Детали
Вы можете оставить отзыв или трекбек со своего сайта.

5 комментариев на «Погодная станция. Табло»

  1. Александр:

    алексей здравствуйте. хочу повторить вашу станцию, но испытываю трудности с покупкой с таобао. можно использовать в качестве дисплея вот этот ru.aliexpress.com/item/p6-RGB-video-led-module-16-32-RGB-smd-led-module-export-korea-aliexpress/32224377788.html? Если да, то киньте ссылочку на пример скетча. Спасибо заранее.

  2. Александр:

    ещё раз здравствуйте и это снова я. 🙂
    Тут проблема в следующем,до подключения nrf24l01+ табло при подаче питания стартует и начинает считать время, но если поднести палец к ногам с 10 по 13 такое впечатление что из за наводки с тела, срывается или частота или ещё что то табло гаснет и на ардуине загорается зелёный светодиод.
    Если подключить nrf24l01, матрица совсем не стартует и горит зелёный светодиод.
    Ардуины — менял,понижающие платы до 3,3 тоже, только что экранировать не пробовал и или длинну проводов укоротить.
    Спасибо.

  3. Дмитрий:

    Адаптер со стабилизатором для NRF24L01 — $1.9 (как выяснилось потом, совершенно бесполезный) — почему бесполезный?

Ваш отзыв