Продолжение. Начало здесь «Метеостанция на Arduino от А до Я. Часть 2. Выбор компонентов. Железо».

От автора

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

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

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

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

Софт. Выбор компонентов

В прошлый раз выбирали железо.

weather-source

Однако выбор железа и софта тесно взаимосвязан как «курица и яйцо». С чего начать, с железа, с софта ? Если у вас хорошее железо, но к нему нет драйверов, библиотек и софта (IDE, утилиты для прошивки и т.п.), то оно бесполезно, и наоборот.

Поэтому рассказываю еще раз про выбор между nRF24L01+ и ESP8266 для связи удаленных датчиков с центральным блоком.

Дело в том, что ESP8266 это не просто тупой WiFi адаптер, он имеет на борту микроконтроллер по мощности и объему памяти превосходящий Ардуино. По умолчанию ESP8266 имеет прошивку в виде набора AT команд, в этом случае ESP используется как простой модем. Но есть и более продвинутые прошивки, здесь ESP8266 даже может выступать в роли веб-сервера, ну и конечно же управлять датчиками как и Arduino.

Читать по теме :

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

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

В итоге готовой подходящей продвинутой прошивки я не нашёл, и пока не готов создать свою. ESP8266 чип — обширная и интересная тема и с ним я еще буду разбираться, так что «ещё не вечер».

В свою очередь стандартные AT-прошивки так же имеют минусы:

  • они всё ещё сыроваты (но получше чем продвинутые)
  • мне не удалось найти нормальную библиотеку для Arduino для управления модулем ESP8266 с помощью AT команд, пришлось «колхозить» самому.

С другой стороны радиомодуль nRF24L01+ прост и понятен, для работы с ним есть супер либа RadioHead и никаких проблем с программированием. Библиотека хорошо документирована, что немаловажно.

RadioHead позволяет передавать структуры данных (а не только отдельные числа), что и реализовано в данном проекте. Забегая вперед скажу, RadioHead может надёжно передавать данные, с повторами если не дошло с первого раза. Все эти вещи библиотека берет на себя.

Для энергосбережения использую библиотеку Low Power Library, она проста и содержит только то, что нужно.

Вот кусок кода:

Всё!

В случае же применения ESP8266 в заоконном датчике, я был бы вынужден создавать WiFi точку доступа и каким-то образом передавать данные (где прошивки, где софт?). Либо позволить датчику напрямую слать данные на веб-сервер, а центральный блок (который в этом случае перестаёт играть роль «центрального») учить читать данные оттуда, чтобы их отобразить на табло.

Другими словами я пошёл путем большей автономии от WiFi интернета и PHP + MySQL сервера. Вы можете начать «клепать» метеостанцию уже сейчас не имея доступа в интернет и/или хостинга для сервера, в этом случае ESP8266 вам не нужен, просто добавите его потом.

Для считывания данных с датчиков типа DHT есть библиотека Adafruit DHT Sensor Library. Работа с ней проста и понятна.

Для датчика давления подходит библиотека Adafruit BMP085 Unified , которая требует наличия библиотеки абстрактного уровня Adafruit Sensor.

В составе всех библиотек есть примеры скетчей.

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

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

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