Хабрахабр

Метеостанция на Arduino от А до Я. Часть 4

Предыдущая часть. Продолжение.

Как я уже писал, у меня под рукой был только модуль Arduino Pro Mini на 5 В. Надо сразу признать, что первая версия заоконного (удаленного) датчика получилась не совсем удачной в плане электропитания и энергопотребления. И я использовал Ni-MH аккумуляторы.

Очень отрицательно на ёмкость аккумуляторов повлияли низкие, часто отрицательные температуры на улице конца зимы. При том, что я подсоединил ещё и солнечную батарею вся конструкция у меня проработала автономно около 25 дней.

Чтобы у вас всё работало гораздо дольше, произведите следующие замены:

  • Купите Arduino Pro Mini на 3,3В
  • Используйте Li-ion аккумулятор типа Panasonic NCR18650A на 3,7 В, 2 шт. примерно за $14 на 3100mAh. Можете попробовать CR123, CR123A батареи. И помните о том, что 9В батарея (типа "Крона") плохой источник питания.

при отрицательных температурах, которые замедляют химические процессы происходящие внутри них и, тем самым, сильно снижают их ёмкость. Главное, что надо помнить, это то, что ваши аккумуляторы будут работать на улице, т.е.

Датчик DHT22 сможет работать и от 3,3 В, так что тут всё путём.

Вышеописанные перестановки не повлекут переделки или замены других компонент.

Ni-MH аккумулятора соединённых последовательно с отводом от 3-его, так что получилось два питающих напряжения: на 4,8 В для датчика DHT22 и 3,6 В для всего остального. Первоначально я использовал 4 шт. Я не применял понижающие (точнее уничтожающие энергию) или повышающие электронные схемы, только экологически чистые напряжение и ток.

Питание

Solar панель 1. Солнечная панель подключена как показано на рисунке. 5V 266mA покупалась за $6,64. 6W 5.

В схеме использован диод Шоттки типа 1N914 и электролитический конденсатор 50—100мкФ.

Приступим к сборке.

Датчик температуры и влажности DHT22

DHT22

Распиновка для подключения датчика температуры и влажности DHT22:

DHT22 лицевая сторона слева направо

Arduino Pro Mini

Примечание

VCC

3,3 — 5В

Рекомендуется 5В, лучше внешнее питание

SDA

D2

В скетче это DHTPIN

NC

Не подсоединен

GND

GND

Опционально можно подключить (подтянуть) SDA через 10K резистор к VCC.

Инициализация:

#define DHTPIN 2 // цифровой пин D2
DHT dht(DHTPIN, DHTTYPE);

Чтобы уберечь датчик от прямых солнечных лучей, я сделал для него кожух из консервной банки, сверху оклеил светоотражающим металлизированным скотчем.

nRF24L01+

nRF24L01+

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

(2) 3,3V

(4) CSN

(6) MOSI

(8) IRQ

(1) GND

(3) CE

(5) SCK

(7) MISO

Подключение nRF24L01+

Arduino Pro Mini

nRF24L01+

Примечание

3,3V

VCC (2)

Лучше внешнее питание

pin D8

CE (3)

chip enable in

SS pin D10

CSN (4)

chip select in

SCK pin D13

SCK (5)

SPI clock in

MOSI pin D11

SDI (6)

SPI Data in

MISO pin D12

SDO (7)

SPI data out

IRQ 8

Interrupt output, не подсоединен

GND

GND (1)

Инициализация:

NRF24 nrf24(8, 10);

Как советуют на форумах, к выводам питания nRF24L01+ сразу припаял электролитический конденсатор небольшой ёмкости (10мкФ).

Радио-модуль у меня с внешней дополнительной антенной, две стены «пробивает» надёжно.

Технология измерения описана Scott Daniels «Secret Arduino Voltmeter – Measure Battery Voltage», 2012. Заоконный датчик имеет вольтметр для измерения питающего напряжения батареи.

Данные считываются с аналогового пина A1.

У меня резисторы делителя напряжения на 100 КОм и 10 КОм (у вас могут быть немного отличающиеся номиналы, их необходимо точно измерить омметром).

const float r1 = 100400; // 100KOm
const float r2 = 9960; // 10KOm

Используя отдельную схемку и скетч. Следующую константу необходимо откалибровать индивидуально как описано у Scott Daniels.

Затем заменим константу (1. Измерим два значения Vcc: реальный Vcc с помощью вольтметра (на пине AREF или 5V) и Vcc с помощью нашей функции. 0 * 1000) на новую: 1 * 1023.

scale_constant = internal1.1Ref * 1023 * 1000

1Ref = 1. где internal1. 1 * Vcc1 (с вольтметром) / Vcc2 (с нашей функцией)

где

  • Vcc1 — значение Vcc измеренное вручную с вольтметром
  • Vcc2 — значение Vcc определенное с помощью нашей функции

Это эталонное значение будет индивидуальным для конкретного AVR чипа и будет зависеть от колебаний температуры.

В итоге у меня получилось такое значение:

const float typVbg = 1.082; // обычно в пределах 1.0 — 1.2 В

По мере того как наша аккумуляторная батарея будет разряжаться в тёмное время суток и заряжаться от солнечной батареи, график питающего напряжения будет выглядеть пилообразно, «проседая» в пасмурные дни:

График

График реальный, взят с веб-морды проекта.

Для сборки блока в целом я опять использовал макетную плату под пайку.
Паял, соединял по наитию без предварительной разводки, поэтому никакой схемы у меня нет.

Вот что получилось.

Сборка

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть