Перейти к публикации
iT4iT.CLUB

Таблица лидеров


Популярные публикации

Отображаются публикации с наибольшей репутацией на 26.10.2015 во всех областях

  1. 1 балл
    Продолжаем развивать нашу метеостанцию. Перед тем, как перейти к обновлению, хочу внести немного ясности. Мне написал один из наших коллег с вопросом, по какой причине введен сторожевой таймер? Переходим к обновлению Самое главное, мы уходим от чипа ENC28J60 и переходим на W5100. Я пытался реализовать все на старом чипе, но не хватает памяти микроконтроллера из-за очень больших библиотек для ENC28J60. При использовании нового чипа, стандартной библиотеки от разработчика и всех внесенных изменений, остается еще более 20% свободной памяти микроконтроллера ATMega328. А это, новые плюшки! В этой версии (назовем её второй) добавлена возможность передачи показаний с датчиков по беспроводной связи используя частоту 433 мГц. Сами модули я брал у Китайцев, маркировка XY-MK-5V. Хочу отметить, что качество передачи далеко от совершенства. Возможны потери сигнала, шумы, не возможность одновременной передачи и т.д и т.п. Но их цена (менее $1 за комплект) компенсируют эти недостатки. Скажу Вам по секрету, что именно эти (самые дешевые) модули стоят во многих фирменных метеостанциях для домашнего использования. Ого, неожиданно? Начнем с базовой станции Мы переходим на Arduino UNO и Ethernet Shield (первой версии) на базе чипа W5100. Это бутерброд и описывать его нету смысла. Я опишу только дополнительно задействованные контакты для модулей XY-MK-5V. Модуль передатчика использует питание 5V, GND (куда без матушки то) и D2 пин на контроллере. Изменить контакт D2 (DATA) можно, используя функцию vw_set_tx_pin из библиотеки vw. В отличии от предыдущего скетча, в этом задействованы две дополнительные библиотеки: #include <VirtualWire.h> #include <EasyTransferVirtualWire.h> VirtualWire.zip EasyTransferVirtualWire.zip Сам скетч К самим модулям необходимо добавить антенну. Для 433 мГц достаточно обычного медного провода длинной 17 см. Без антенны можете забыть о нормальной работе. Переходим к самой важной части этого обновления - локальная беспроводная станция Для её реализации (на коленке) я использовал аналог Arduino NANO (на базе ATMega328) и TFT дисплей на чипе ST7735S с разрешением 128 x 160 Распиновка дисплей -> контроллер ============================= LED | 3.3V SCK | SCK (13) SDA | MOSI (11) A0 | DC (9) RESET | RST (8) CS | CS (10) GND | GND VCC | 5V ============================ Модуль приемник подключается также как передатчик, только DATA к пину D7. Пару снимков, как это выглядит: Скетч приемника Показания отображаются довольно компактно, но как показывает практика (и советы моих товарищей) - "на вкус и цвет, даже жена не товарищ". Я выслушал кучу советов и предложений, но они противоречат друг другу. Поэтому делайте под свой вкус. Как мне показалось, дизайн это та часть проекта, которая отнимает большую часть времени! Часть данных сфабрикованы для отображения некоторых элементов дизайна. Артефакты на дисплее, это пыль и прочая грязь скопившаяся за долго время нахождения дисплея в... где то там, ... ну там, не помню откуда его достал! Отстаньте! В скетче имеются функции позиционирования. Они довольно примитивны, но позволяют добиться определенных эффектов. x_center x_alignment_right Первая производит центровку текста, а вторая выравнивание по правой части указанной зоны. Все вычисления производятся относительно размеров заданного текста, исходя из выражения 1 size = 1PX х 1PX сегмента шрифта. На дисплее также отображаются элементы соответствующие повышению или понижению той или оной величины показаний. Отображаются они в виде треугольников. Но в коде функции changes есть альтернативное отображение в виде треугольников повернутых на 45 градусов. Если показания повышаются то элемент красный, в противном случае, синий. Кстати, цвет и оттенок основной температуры изменяется в зависимости от самой температуры. Довольно спорное решение, но на мой взгляд, визуально комфортное. Я некоторое время бился над ней, и понял, что значения в функции stroke, объекта TFT дисплея, указаны в неверном порядке. BGR место RGB. Это ошибка разработчика, ну или я что-то не понимаю. PS: Все довольно интересно, но на мой взгляд заслуживает дальнейшего развития. Чем и займемся через какое то время. EasyTransferVirtualWire.zip VirtualWire.zip
×
×
  • Создать...