Продолжение. Начало здесь.

От автора

Что, ещё одна погодная станция на Arduino?! Да, ещё одна и, что-то мне подсказывает, не последняя в интернете вещей :)

Проект находится в постоянном развитии, так что здесь были и будут ошибки и неточности. Я надеюсь, что вы мне укажете на них в комментариях.

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

Лицензия Creative Commons
Произведение «Метеостанция на Arduino от А до Я» созданное автором по имени tim4dev.com, публикуется на условиях лицензии Creative Commons «Attribution-NonCommercial-ShareAlike» («Атрибуция — Некоммерческое использование — На тех же условиях») 4.0 Всемирная.

Центральный блок. Железо

Ну наконец-то, после всех заумствований приступаем к сборке!

Примечание. Если вы до этого ни разу не собирали метеостанцию (да ладно! :), то вы можете начать и не имея всех деталей под рукой. Например, можно начать не имея радиомодуля и/или ESP8266. Датчик барометрического давления BMP180 также может отсутствовать. Добавите потом. Правда в этом случае вам придется самостоятельно закоментировать в скетче те участки кода, которые отвечают за взаимодействие с отсутствующими блоками, но это не так уж и сложно. Я покажу как.

Главное, чтобы хоть что-то собралось и заработало, тогда веселее продолжать.

Как уже говорилось, центральный блок основан на Arduino MEGA. Ещё нам понадобятся:

  • датчик температуры и влажности DHT11
  • датчик барометрического давления типа BMP180
  • WiFi модуль ESP8266
  • радиомодуль типа nRF24 2,4 Ггц
  • дисплей типа LCD1604 (4 строки по 16 символов), купить можно здесь за примерно $5 lcd1604
  • блок питания с выходом 5-12 В постоянного напряжения (я использовал зарядку от мобильного с USB выходом что удобно) usb-12v
  • макетная плата под пайку, паяльник, канифоль, припой либо обычная беспаечная arduino-макетная плата. Лично я паял для надёжности, потому что проект явно был долгоиграющим и не хотелось страдать из-за случайно выдернутого из макетки проводка.

Макетную плату для распайки можно купить на ebay от $1. Берите размером побольше, чтобы хватило на все соединения.

breadboard-solder

Все ссылки на ebay (не реферальные, без смс и порно) я даю для того, чтобы вы смогли сами найти нужное по приемлемой для вас цене, что может быть нетривиальным занятием для новичка. И ещё раз: перед покупкой читайте описание, а не картинку.

Беспаечную плату можно купить от $2. Берите размером побольше, чтобы хватило на все соединения. breadboard-solderless

Соединительные провода бывают таких нужных нам типов:

  • Dupont кабель «папа-мама» (есть и «папа-папа», «мама-мама»). Это шлейф из нескольких проводов с разными цветами изоляции и коннекторами под штыревые контакты для Arduino. По копеечной цене.dupont-cable Такими проводами удобно соединять платы и датчики напрямую к Ардуино без использования макетной платы, вот так nrf24-debug
  • Обычные соединительные провода под беспаечную макетную плату для Ардуино. По цене от $1.cable-no-solder
  • Пучок проводков для пайки
Читать ещё :   5 open source инструментов для домашней автоматизации

Первым делом распаял табло LCD-1604. Сначала припаял штырьки к табло,

LCD-1604-solder

затем разъемы к макетной плате.

Покупал и использовал вот такие штырьки и вот такие разъемы.

main-board-maket-01

Вид снизу.

main-board-maket-02

Паял по наитию без предварительной разводки, поэтому здесь никакой схемы приведено не будет. Делайте как удобнее, хуже не будет :) Придерживайтесь только принципа, что чёрный провод — это всегда земля, красный — «плюс» питания, остальные цвета как получится. Получилось так.

LCD-maket-assembly-01

LCD-maket-assembly-02

Для того чтобы не забыть, где какие разъемы, «покрасил» белым корректором участки платы по соседству и сделал соответствующие надписи. Некрасиво? Зато практично и быстро, это же прототип!

main-board-maket-03

Распиновка  и соединение

Дисплей 16×4 LCD1604

Подробнее о дисплее и работе с ним читать здесь «Работа с символьными ЖКИ на базе HD44780». Отметим, что нужно внимательно отнестись к полярности подключения питания к ЖК-индикатору и  чтобы напряжение питания было в диапазоне +4,5…5,5 В. Невнимательное отношение к этому может привести к выходу индикатора из строя!

Пин LCD 1604 Arduino MEGA Arduino UNO Описание
 VSS GND GND  GND
 VDD  5 V  5 V  4,7 — 5,3V
 RS  22  4 Высокий уровень означает, что сигнал на выходах DB0—DB7 является данными, низкий — командой
 RW GND GND Определяет направление данных (чтение/запись). Так как операция чтения данных из индикатора обычно бывает невостребованной, то можно установить постоянно на этом входе низкий уровень
E 23 5 Импульс длительностью не менее 500 мс на этом выводе определяет сигнал для чтения/записи данных с выводов DB0-DB7, RS и WR
DB4 24 8 Входящие/исходящие данные
DB5 25 9
DB6 26 10
DB7 27 11
LED A+ +5V
или
резистор 220 Ом → +5VLED-A
LED B- GND
V0 GND
или
подстроечник на 10кОмV0

Программная инициализация будет выглядеть так:

 

Температура, влажность DHT11

Я уже писал про этот датчик, и ещё.

Подключение датчика температуры и влажности DHT11 (SainSmart). Датчик расположите лицевой стороной вверх, выводы будут описаны слева направо.

DHT11 Arduino Mega
DATA D2     (см. ниже DHTPIN)
VCC 3,3—5 В (рекомендуется 5 В, лучше внешнее питание)
GND GND
Читать ещё :   5 open source инструментов для домашней автоматизации

Программная инициализация

 

 

Барометр BMP180

Подключение датчика атмосферного давления BMP180 (барометр) + температура по интерфейсу I2C/TWI

BMP180 Arduino Mega
VCC не подключен
GND GND
SCL 21 (SCL)
SDA 20 (SDA)
3,3 3,3 В

Для UNO : A4 (SDA), A5 (SCL).

 

nRF24L01+

Про эту плату я уже писал.

Распиновка nRF24L01+ (смотреть сверху платы там где чип, пины должны быть внизу)

пин 2 3,3V пин 4 CSN пин 6 MOSI пин 8 IRQ
пин 1 GND пин 3 CE пин 5 SCK пин 7 MISO

Подключение для метеостанции

Arduino Mega nRF24L01+ 
3,3 В VCC пин 2 (лучше внешнее питание)
пин D8 CE пин 3 (chip enable in)
SS пин D53 CSN пин 4 (chip select in)
SCK пин D52 SCK пин 5 (SPI clock in)
MOSI пин D51 SDI пин 6 (SPI Data in)
MISO пин D50 SDO пин 7 (SPI data out)
IRQ пин 8 (Interrupt output) не подсоединен
GND GND пин 1 (ground in)

Программирование радиомодуля будет подробно описано в программной части.

ESP8266

Про чип ESP8266 я уже писал.

Распиновка ESP8266 (смотреть сверху платы там где чипы, пины должны быть внизу)

GND GPIO2 GPIO0 RX
TX CH_PD RESET VCC

Подключение ESP8266 для метеостанции

ESP8266 Arduino Mega
TX 10 пин (SoftwareSerial RX)
RX 11 пин (SoftwareSerial TX)
VCC 3,3 В
GND GND
CH_PD Через резистор 10К к 3,3 В Arduino
 

Опционально

GPI0 Через резистор 10К к 3,3 В Arduino
GPI2 Через резистор 10К к 3,3 В Arduino

 

Фото

«Материнскую плату» вырезал из картонной коробки из-под обуви и к ней винтиками на 3 прикрутил всё остальное.

main-board-assembly-01

main-board-assembly-02

main-board-assembly-03

Как видим в этом месте всё питание осуществляется от пинов Ардуино, т.е. к блоку питания напрямую ничего не идёт, и пока мощи хватает.

Вроде всё. Ничего не забыл.

Если что непонятно, напишите в комментариях.

Покупайте, паяйте, соединяйте. В следующей части будет приведен рабочий скетч для центрального блока и наша метеостанция уже что-то покажет.

Чтобы не пропустить следующую публикацию подписывайтесь на канал.

Продолжение следует