Метеостанция с видеовыходом.
Описание.
Эта разработка выводит на любое устройство с композитным видеовходом CVBS в формате PAL или NTSC
часы и календарь из DS1307 и информацию с датчиков BMP085 (давление и температуру) и DHT22 (влажность и температуру).
Схема( без привязки к модулям).

Сборка
Собрана на макетной плате из модулей, купленных на Aliexpress.com. Состав:
1. Arduino Pro Mini (ATMEGA328P 16MHz) - контроллер
2. Tiny RTC (ds1307) - часы
3. GY-65 (BMP085) – датчик давления и температуры в квартире
4. AM2302 (DHT22) – датчик влажности и температуры на улице
5. MAX7456 + переходник SSOP28-DIP28 - видеоконтроллер
6. Безымянный преобразователь уровней шины I2C
7. Безымянный стабилизатор 5В

При сборке из указанных модулей есть нюансы.
На TinyRTC надо заменить резисторы подтяжки шины I2c на 10К (на моём модуле – R2 и R3) или вообще их удалить, иначе BMP085 не будет работать на шлейфе длиннее 50 см.
При монтаже MAX7456 на переходник ОБЯЗАТЕЛЬНО!!! приклеить кусочек тонкого скотча (лучше термо) на противоположную маркировке сторону микросхемы.
Обязательно зашунтировать питание всех модулей конденсаторами 0,1мкФ, а MAX7456 ещё и электролитом 470мкФ.
Работа.
Видео


По прерыванию INT0 от DS1307 раз в секунду считываются и обновляются в видеопамяти секунды, раз в минуту – минуты и т.д. Показания с датчиков BMP085 и DHT22 считываются и обновляются на экране 2 раза в минуту. Тогда же вычисляются значения минимальной и максимальной температур. Лунный календарь изменяется в полночь. Это неправильно, но вычислять реальное время наступление лунного дня лень, да и памяти уже, наверное, не хватит. Минимальная температура сбрасывается (приравнивается к текущей) в 15-00 каждого дня, а максимальная – в 3-00 каждой ночи.
График давления обновляется каждые 6 часов со сдвигом влево. Его диапазон отображения – 735-775 мм.рт.ст.
Раз в час мин. и .макс. температуры сохраняются в EEPROM контроллера на случай пропадания питания. График давления сохраняется в момент обновления.
Установка времени
Кнопка Set переводит метеостанцию в режим установки времени и календаря. Прерывание запрещается. Датчики не опрашиваются. Изменяемое поле мигает. Кнопки + и – изменяют его значение. Повторное нажатие Set – переход в следующему полю. После перебора всех полей – переход в режим записи. Мигают все поля. Кнопка + - запись изменённых значений в регистры DS1307. Секунды сбрасываются в 00. Кнопка Set - отмена изменений и переход в режим опроса датчиков.
Программирование Arduino
Исходный код проекта
В последних версиях разработчики Bascom добавили поддержку загрузчика Arduino. Необходимо только сделать несколько настроек.
Options — Programmer — ARDUINO. После чего указать com-порт, и скорость.
Скорость конкретной платы можно посмотреть в файле C:\Program Files\Arduino\hardware\arduino\avr\boards.txt в разделе “модель ардуины».upload.speed=
Для Arduino Pro Mini это 57600.

MAX7456
Для работы MАХ7456 в этом проекте необходимо перешить шрифт в его EEPROM.
Исходный код прошивальщика
Видеоинструкция
Константин Лазарев, 2014.
|