Давно хотел дома в прихожей организовать себе большое табло с погодой и временем.
Табло, может быть не самая главная часть погодной станции, но точно самая заметная.
Понравился на TAOBAO трехцветный дисплей 16×32. Цена с доставкой вышла около $35. Доставить получилось с третьего раза, так как посредник Мистер ТАО ни за что не хотел везти товар, ссылая на то что он очень хрупкий.
Дисплей приобрел через малоизвестного BUY88.COM. Вышло немного дороже, чем у Мистера ТАО. Зато у данного посредника очень общительная и оперативная служба поддержки.
И вот дисплей у меня
Комплект состоял из платы дисплея, контроллера управления на STC MCU и пульта ИК управления
Подключить всю эту радость к 5В не составило труда, но что делать дальше?
Дисплей показывал время с часов DS1302, температуру с датчика DHT11, графический анализатор спектра сигнала, подключаемого к аудиовходу и какой-то китайский текст в рекламных целях. Не то что нужно для полноценной погодной станции. Ковыряться в чужом контроллере без описания, схемы я не стал. Это для очень суровых хакеров.
Написал китайцу, дай схему подключения дисплея, тот полностью в непонятке, мол все, что мне нужно, я уже купил 🙂 Поиск в интернете и на форумах тоже ничего не дал. «Сам купил — сам разбирайся». Купил бы модуль P10, как все, не имел бы проблем.
Пришлось изучать дисплей самому:
Ну сам, так сам. Начинаем изучать состав этого чуда
Сама плата дисплей с отдельными SMD диодами синего, красного и зеленого цвета 16×32
С обратной стороны две платы с микросхемами, управляющими блоками светодиодов 8×32 и соединяемыми каскадно между собой и с другими панелями. На каждой плате управления:
- ES83310 East Sun — 4 шт. Драйвер светодиодного дисплея, позволяющий управлять 16 выходами по серийной шине и каскадироваться друг с другом
- Phillips 74HC245D — 2шт. Неинверирующий 8-канальный буфер
- Phillips 74HC138D — 1шт. Декодер на 8 линий
Немного погоняв китайский контроллер с осциллографом, немого пораскинув мозгами и пользуясь великим методом НАУЧНОГО ТЫКА нашел следующий
Алгоритм работы дисплея
- Устанавливаем адрес строки (пины A0, A1, A2)
- Подаем сигнал на PIN En (ENABLE)
- Затем вместе с тактовым сигналом на пин CLK подаем 1-ку на R,G или B для зажигания светодиода 0-го столбца. Затем 1-го, 2-го столбца и так до 64. *было бы больше соединенных дисплеев, было бы больше.
- Далее переходим к следующей строке.
- Задавая паузу между отображениями строк в 0 -2 мс можно управлять яркостью текста на дисплее.
- Заводим буфер экрана 16×32 байт и организовываем алгоритм циклического отображения картинки из буфера.
- Осталось только записать в буфер экрана символы, картинки и т.д.
Недостатком алгоритма оказалось то, что микроконтроллер не способен делать никакой серьезной работы кроме формирования изображения дисплея. То есть стать некой видеокартой. Так как интерфейс с данной видеокартой — радиоканал с использованием NRF24L01, работающей по прерыванию, то в момент приема пакета данных происходит небольшое мигание дисплея.
Весь код работы с дисплеем был оформлен в библиотеку, которую можно скачать вместе с кодом табло метеостанции.
Побаловавшись занакогенератором с шрифтом 8×5, бегущей строкой и прочим перешел к дизайну
Дизайн экрана
На дисплей 16×32 одновременно можно вывести две строи по пять символов 8×5 семи различных цветов. В первой версии табло погодной станции в первой строке показывалось время, во второй последовательно температура, давление, влажность (сперва бегущей строкой, затем последовательным отображением через равный промежуток времени)
Такой формат отображения был достаточно примитивный и не использовал возможности дисплея. Захотелось более красивой картинки, значит нужно ее сначала нарисовать. В простейшей программке рисования иконок накидываю эскизы экранов.
Первый экран — часы с цифрами размером 8×4, ниже температура и давление шрифтом 6×3 и стрелки, показывающие тенденцию к уменьшению или увеличению показателей
Если погодных данных нет свыше заданного интервала времени, над цифрами показаний выдаются знаки вопроса
Второй экран — информер прогноза погоды полученной из интернета
Прогноз отображается по пяти параметрам:
- Температура
- Облачность (иконкой)
- Осадки (мигающей иконкой)
- Направление ветра стрелкой
- Сила ветра
Итак, желаемые картинки на табло нарисованы, приступаем к реализации в железе
Схема табло погодной станции
- Arduino Pro Mini — $1.75
- Дисплей матричный светодиодный трехцветный 16?32 ~ $35 с доставкой
- Радиомодуль NRF24L01 — $0.75 или (партиями 5, 10 и 100 шт у того же продавца будет дешевле)
- Адаптер со стабилизатором для NRF24L01 — $1.9 (как выяснилось потом, совершенно бесполезный)
- Блок питания 5В 5А ~ $8
- Линейный стабилизатор LM1117 3.3В ~ $0.3
Последний оказался нужен потому что NRF24 не захотел работать от 5В даже через адаптер. Видимо ему не понравились 5-вольтовые TTL уровни. Пришлось запитать Arduino от 3.3В, отключив фьюзом проверку напряжения питания.
Сборка табло погодной станции
Корпус сделан из фоторамки 30×20 см, с рассеивателем из бумаги для принтера под стеклом. Стенки из фанеры, обклеенной пленкой «под карбон».
Корпус планирую переделывать, когда такой придет с ТАОБАО .
Дисплей крепим алюминиевыми уголками
Паяем стабилизатор на LM1117
Все крепим к фанерному корпусу на шурупы или двухсторонний скотч
Программирование табло погодной станции
Общий алгоритм работы такой:
- Принимаем пакет отNRF24L01, распаковываем его, обрабатываем данные, рисуем картинку в экранный буфер.
- Все остальное время показываем экранный буфер на дисплей.
- Если получаем прогноз погоды, отображаем информер прогноза по очереди с основным экраном.
- Пакеты ловим трех типов — с метеоданными от сенсора, с точным временем и прогнозом погоды.
- Время считаем по внутренним часам функцией millis(), при получения пакета с точным временем вносим корректировку
Архив программы и моих библиотек можно скачать здесь
В архиве есть:
- Библиотека работы с дисплеем MatrixRGB
- Библиотека реализующая скользящее среднее для усреднения показателей ClassAVG
- Описание структур пакетов, принимаемых по радиоканалу ClassCoder
- И файл описания цифр, символов и иконок Font.h
Результат
Показ погодного информера
алексей здравствуйте. хочу повторить вашу станцию, но испытываю трудности с покупкой с таобао. можно использовать в качестве дисплея вот этот ru.aliexpress.com/item/p6-RGB-video-led-module-16-32-RGB-smd-led-module-export-korea-aliexpress/32224377788.html? Если да, то киньте ссылочку на пример скетча. Спасибо заранее.
Дисплей имеет только одну продажу.
Продавец проверенный
По совместимости с Ардуиной лучше уточнить у продавца или попросить даташит на дисплей.
С высокой вероятностью подключить к ардуино можно так
http://jaanus.tech-thing.org/small-projects/hub75-rgb-led-matrixes-with-arduino/
ещё раз здравствуйте и это снова я. 🙂
Тут проблема в следующем,до подключения nrf24l01+ табло при подаче питания стартует и начинает считать время, но если поднести палец к ногам с 10 по 13 такое впечатление что из за наводки с тела, срывается или частота или ещё что то табло гаснет и на ардуине загорается зелёный светодиод.
Если подключить nrf24l01, матрица совсем не стартует и горит зелёный светодиод.
Ардуины — менял,понижающие платы до 3,3 тоже, только что экранировать не пробовал и или длинну проводов укоротить.
Спасибо.
А в порт какие то отладочные сообщения выдаются?
Адаптер со стабилизатором для NRF24L01 — $1.9 (как выяснилось потом, совершенно бесполезный) — почему бесполезный?