Плюсы

вторник, 25 ноября 2014 г.

Прогноз погоды на Arduino

Озадачился я выводом прогноза погоды на LCD 128X64 с помощью Arduino и Ethernet shield.
Так как я начинающий Ардуинист, то пришлось читать много форумов и статей. Местами что-то понял, а кое-что так и осталось для меня непостижимым.
Конечно же прогноз погоды решил брать с сайта, который предоставляет данные о погоде бесплатно. Очень хотелось использовать для снятия данных о погоде сайт rp5.ru, так как довольно часто там приходится смотреть прогноз в браузере. Но данные в формате xml этот сайт предоставляет платно.
Итак, я получаю данные с http://openweathermap.org
Скетч для Arduino был собран из кусков кода в интернете, кое-то придумал свое.
Данные выводимые на экран LCD:
1.  Дата, для которой выводится прогноз;
2. В виде иконки вывожу данные об осадках, облаках и солнце;
3. Вывожу температуру на дневное время и ночное;
4. Давление, скорость ветра, влажность.
Количество дней прогноза от 1 до 7 в скетче можно менять (включается текущая дата).
Иконки сам рисовал, затем использовал программу Image2Code для получения кода картинки.
Дополнительно подключил к Arduino часы RTC DS1307. Когда нет возможности получить данные о погоде с интернета, то на весь экран выводится время.

Код скетча можно скачать с облака.
Проблемы в скетче присутствуют. Перестают выводится данные с интернета. Вывод прогноза должен быть цикличным на пять дней, но бывает так, что прогноз застревает на последнем дне. Причем данные выводятся разное время, а потом перестают. Однако, на вывод текущего времени скетч тоже не переключается, значит соединение с сервером есть.
Самая главная проблема - это корпус для устройства. Его пока нет, хотя уже было несколько претендентов. И Arduino UNO вместе с Ethernet shield довольно громоздкая конструкция.

воскресенье, 16 ноября 2014 г.

Подключение дисплея 12864ZW на ST7920

Замыслил я создать устройство на основе Arduino, которое будет брать прогноз погоды с какого-либо сайта и выводить данные на дисплей. В наличии была Arduino Uno, Ethernet shield и дисплей на чипе ST7920 (видимо, это чип такой, я плохо понимаю).
Ethernet shield просто насаживается на Arduino Uno и проблем с подключением нет никаких.
А вот дисплей можно подключать разными способами. Я выбрал подключение по SPI, потому что требуется меньшее число проводов: два питания и три для обмена данными.



Вот хороший ресурс по дисплею и библиотеке.
VSS - минус питания;
VDD - плюс питания дисплея;
PSB - соединяем с минусом;
BLK - тоже с минусом соединяем (катод подсветки);
BLA - анод подсветки через резистор соединяем с плюсом (подбираем экспериментально (у меня от 94 Ом; Можете подключить переменный резистор как написано по ссылке выше.
RS, R/W, E - выводы передачи данных, можно менять номера пинов Arduino в скетче.
По ссылке выше все подробно расписано, но хотелось бы только сказать про контрастность дисплея. Уменьшив яркость дисплея резистором, удалось получить контрастность на удовлетворительном уровне. Но все равно на дисплей было смотреть противно. Потенциометра сзади дисплея для регулировки контрастности нет и вообще это не предусмотрено изготовителем.
Я поступил так, как изображено на фото
Подпаял резистор параллельно существующему  Это уменьшило сопротивление и дало нужную контрастность. SMD резистор 330 Ом, подпаял 57 Ом.