source-code

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

Мы подходим к фактическому завершению эпопеи под названием «Метеостанция на Arduino, версия 1.0». На закуску останется одна, две части не более.

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

Напомню, что «сервер» — это центральный, домашний блок, который может общаться с интернет через WiFi, а «клиент» — это удалённый, заоконный датчик, который передаёт данные на сервер по радиоканалу.

О программном обеспечении сервера говорилось здесь.

Исходный код как для сервера, так и для клиента находится здесь.

Исходные тексты снабжены подробными комментариями.

На клиенте почти ничего настраивать не надо.

Радиопередатчик nRF24L01+, точнее библиотека RadioHead, требует указания адресов сервера и клиента. Адреса предусмотрены на тот случай, если у вас будет серверов и клиентов больше чем один. Адрес — это просто любое целое число. Когда клиент посылает пакет с данными на сервер, то он указывает для какого сервера предназначен этот пакет. Сервер зная свой собственный адрес, в свою очередь, определяет для него ли этот пакет.

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

// Адрес сервера и клиента
#define SERVER_ADDRESS 10
#define CLIENT_ADDRESS 20 // ИЗМЕНИТЬ для другого экземпляра !!!

Номер радиоканала RF_CHANNEL должен быть одинаковым у всех. По умолчанию он равен 2. Представляете, все nRF24L01+ в округе работают на одной частоте? Поэтому я изменил номер, вы можете выбрать любой другой.

// Номер радиоканала. Должен быть КАК И У СЕРВЕРА
#define RF_CHANNEL 73

Настройки вольтметра для измерения питающего напряжения батареи необходимо изменить:

 

Подробнее о вольтметре здесь.

Для экономии энергии используется библиотека Lightweight low power library for Arduino.

Вот мои замеры фактического потребления для Arduino Pro Mini с этой либой :

  • обычно 25mA
  • при работе с DHT то же самое
  • при радио передаче 38 mA
  • при LowPower.idle 15 mA
  • при LowPower.powerDown 7.5 mA

Ну вот и всё.

Клиент делает замеры температуры, влажности и напряжения питания, упаковывает всё это в структуру данных, отсылает данные на сервер и «засыпает». Если при передаче произошли ошибки, то передача тут же повторяется.

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

 

 

От автора

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

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

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

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

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