СОЗДАНИЯ БЕСПРОВОДНОГО ШИЛДА-БАРОМЕТРА С ESP8266. ЧАСТЬ III. ПАЙКА И ОТПРАВКА ДАННЫХ В ОНЛАЙН

Здравствуй, дорогой читатель, представляем твоему вниманию третью заключительную часть перевода статьи http://digitaljunky.io/make-a-connected-barometer-shield-for-arduino-uno

А для забывчивых вот первая часть и вторая часть

ДЕЛАЕМ ШИЛД

Это протошилд (Arduino Proto Shiled). Как вы можете видеть, он представляет из себя подключаемую печатную плату с несколькими индикаторами, кнопками и разъёмами, так что все выходы Arduino остаются доступными. Ниже представлены схемы для соединения устройств.

Вам не требуется повторять то же расположение, что и у нас, так что если вы фанат тетриса, у вас будет возможность поиграть в сходную интеллектуальную игру. Попробуйте представить, как вы можете расположить компоненты, подумайте о том как они могут быть соединены. Дадим только один совет: если вы будете использовать внешнее питание, то плата Arduino будет нагреваться в том месте, где находится разъём, так что старайтесь разместить датчики как можно дальше от пространства над этим местом.

Схема, представленная выше, это конечная версия, где количество соединений было оптимизировано для нормальной работы шилда, при этом оно было сведено к минимуму пересекающихся проводов. DHT11 теперь присоединён к выходу D5, последовательный интерфейс Arduino теперь расположен на 8 (Rx) и 9 (Tx).  Кстати на конвертере логического уровня теперь используются разные выходы. Кнопки уже есть на этом шилде, и они теперь используются для перезагрузки ESP8266.

Готовы припаять примерно 50 выходов? Нагрейте ваш припой и сделайте это! Неизвестно существует ли идеальный путь для это задачи. Решено было начать с разъёмов, поскольку они являются хорошей отправной точкой для следующей части, когда потребуется соединить между собой проводами разные выходы. В конце концов начать с тех связей, в которых соединяются вместе несколько входов, а закончить оставшимися единичными линиями связи.

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

Et voilà! Добавьте все присоединяющиеся компоненты, и вы получите функциональный (надеемся на это) шилд-барометр с WIFI. Не так ли?

ОТПРАВКА ДАННЫХ В ОНЛАЙН

THINGSPEAK

Мы будем использовать этот сервис в качестве конечной точки сбора наших данных. Thingspeak называет себя “Открытой платформой для Интернета Вещей”. Вы можете создать канал для отправки своих собственных данных. Каждый поток называется полем. Каждое поле имеет свой собственный график на странице канала, которая может быть настроена. Вы можете передавать свои данные в другие сервисы, проводить их анализ и т.д., но это выходить за границы рассмотрения в данной статье.

Сервис очень прост в использовании:

  1. Создайте новую учётную запись. Вы будете перемещены на страницу каналов.
  2. Создайте новый канал, дайте ему имя и, если хотите, описание. Добавьте сколько полей, сколько вам требуется (в нашем случае 4). Если вы предоставите координаты на гугл-картах, это позволит привязать локацию к данному каналу. Отметьте, стоит ли сделать его публичным. Нажмите сохранить канал. Вы будете перемещены на страницу администрирования канала.
  3. Нажмите на кнопке API Keys и скопируйте себе полученный ключ, который потребуется вам для отправки данных на ваш канал.
  4. Отправьте следующий GET запрос: GET /update?key=YOUR_API_KEY&field1=5&field2=10rn на хост api.thingspeak.com на порту 80. Вы можете это протестировать через ваш браузер, зайдя по адресу: http://api.thingspeak.com/update?key=YOUR_API_KEY&field1=5&field2=1
  5. Посмотрите, как ваши данные появляются на странице канала

Примечание: Если вам не хочется создавать свой аккаунт, то можете использовать канал, который был сделан специально для таких как вы.

Адрес: https://thingspeak.com/channels/54807.

API key : 241Q79KE3WNUBT01.

Примерзапроса:  GET /update?key=241Q79KE3WNUBT01&field1=5&field2=10&field3=15rn илиhttp://api.thingspeak.com/update?key=241Q79KE3WNUBT01&field1=5&field2=10&field3=15.

ПРОТОКОЛ СВЯЗИ

Так как модуль ESP8266 может быть нестабильным, то постараемся сделать его таким, чтобы он обладал отказоустойчивостью. Это мы обеспечим при помощи запроса состояния модуля, прежде чем совершить какое-либо действие. Псевдокод протокола приведён ниже:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

setup()

    esp8266 запуск

 

    is esp8266 ok ?

        yes :

            is подключён к верной SSID ?

                no : подключить Wifi (SSID, PASS)

        no : перезагрузить esp8266

 

loop()

    temperature = getTemperature

    humidity = getHumidity

    pressure = getPressure

    luminosity = getLuminosity

 

    is esp8266 busy ?

        yes :

            ничего не делать

        no :

            is подключен к верной SSID ?

                yes :

                    отправить GET запрос с данными

                no :

                    подключить Wifi (SSID, PASS)

                    is Wifi подключен ?

                        no :

                            reset esp8266

 

    wait until next loop

КОД

Вы можете найти код тут.  Он состоит из двух файлов .ino, которые представляют из себя обычный скетч для Arduino и классом для работы  с ESP8266, который был написал для наших нужд. Он ещё недостаточно хорош, так что будем стараться улучшить его в будущем. Но он работает.

На строке 33 вы можете задать параметр DEBUG, это позволит получать отладочные сообщения о состоянии ESP8266 на встроенный последовательный интерфейс.

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

Теперь вы должны видеть, как данные отправляются в онлайн и рисуются на графиках! Поздравляю!

Что можно сделать дальше? Добавить ещё датчики? Использовать данные для создания умного дома? Оставляйте свои комментарии!

POST SCRIPTUM

Если будем делать это ещё раз, не уверены, что будем помещать DHT11 в данный разъём. Он имеет тенденцию терять контакт в этом варианте подключения. Так же можно сделать отдельную схему, где ESP8266 работает в соло-режиме.

Упоминалась проблема с нагревом. Одним из путей решения является подключение модуля через USB зарядку телефона (500 мА). Тогда регулятор напряжения не требуется.

ИСТОЧНИКИ

  • По ESP8266 :

○     The ESP8266 Community forum.

○     A very complete list of ressources (examples, libraries, forums etc.).

○     Internet of Home Things: блок с интересными статьями

○     “noob’s guide to ESP8266 with Arduino Mega 2560 or Uno”.

○     Program the ESP8266 using arduino IDE.

○     Esp8266 Wiki.

○     Kolban’s book on the ESP8266 (постоянно обновляется).

○     ESP8266: Reflash Dance!

  • По датчикам :

○     

163 05.04.2017