ESP8266:Примеры/Отправка данных на сервис dweet.io с помощью чипа ESP8266 и датчика DHT11/DHT22

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Проверка/Оформление/Редактирование: Мякишев Е.А.


Отправка данных на сервис dweet.io с помощью чипа ESP8266 и датчика DHT11/DHT22

В этом примере демонстрируется отправка данных на сервис dweet.io с помощью чипа ESP8266 и датчика DHT11/DHT22.

Для выполнения этого примера вам необходимо:

  • Установить аддон ESP8266 для IDE Arduino;
  • Установить библиотеку DHT;
  • Собрать схему и подключить конвертер USB FTDI к компьютеру, но не подключайте пока перемычку идущую на вывод VCC модуля ESP-01;
  • Вставить код программы в Arduino IDE;
  • Выбрать в меню Иструменты->Порт: соответствующий COM-порт;
  • Выбрать в меню "Инструменты->Плата" плату "Generic ESP8266 Module";
  • Нажать кнопку "Загрузка";
  • Подключить перемычку идущую на вывод VCC модуля ESP-01. Т.к. вывод GPIO0 подключен к земле, модуль при включении перейдет в режим загрузки;
  • Дождаться загрузки;
  • Открываем браузер и переходим по адресу https://dweet.io/follow/TESTID, где вместо TESTID укажите свой уникальный идентификатор, который вы задали в коде. Если данные еще не поступают, то страница будет пустой. Как только ваша плата успешно отправит данные, они будут отображаться на странице и обновляться каждые 10 секунд;
  • В мониторе последовательного порта будет отображаться ответ сервера dweet.io;
Примечание

Если вы перезагрузили модуль и обнаружили в мониторе порта иероглифы, проверьте отключили ли вы перемычку идущую от GPIO0 к земле(желательно подключить GPIO0 через 10кОм резистор к 3.3В). Отключите перемычку и снова перезагрузите модуль.

Необходимые компоненты

Схема


Код

#include <ESP8266WiFi.h>                                        // Подключаем библиотеку ESP8266WiFi
#include "DHT.h"                                                // Подключаем библиотеку DHT

#define DHTPIN 2                                                // Номер вывода GPIO, в данном случае используем GPIO2
#define DHTTYPE DHT11                                           // Тип используемого датчика

const char* ssid     = "имя вашей точки доступа";               // Укажите здесь в кавычках название вашей точки доступа
const char* password = "пароль вашей точки доступа";            // Укажите здесь в кавычках пароль вашей точки доступа

const char* host     = "dweet.io";                              // Адрес сервера на который будем отправлять данные

DHT dht(DHTPIN, DHTTYPE);                                       // Создаем объект датчика

void setup() {
  Serial.begin(115200);                                         // Инициализируем последовательный порт
  delay(10);

  dht.begin();                                                  // Инициализируем датчик

  // Подключаемся к точке доступа WiFi
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
}

void loop() {
  delay(10000);                                                 // Задержка между повторными измерениями 10 секунд

  Serial.print("Connecting to ");
  Serial.println(host);

  // Создаем TCP соединение при помощи класса WiFiClient
  WiFiClient client;
  const int httpPort = 80;
  if (!client.connect(host, httpPort)) {
    Serial.println("connection failed");
    return;
  }

  float h = dht.readHumidity();                                 // Считываем данные влажности
  float t = dht.readTemperature();                              // Считываем данные температуры

  // Отправляем запрос на сервер
  // Внимание!!!
  // Здесь, вместо TESTID, укажите любой идентификатор, желательно уникальный(например: bestcat11 или batman12018 ;))
  client.print(String("GET /dweet/for/TESTID?temperature=") + String(t) + "&humidity=" + String(h) + " HTTP/1.1\r\n" +
               "Host: " + host + "\r\n" +
               "Connection: close\r\n\r\n");
  delay(10);

  // Получаем все строки ответа сервера и отправляем их в последовательный порт
  while (client.available()) {
    String line = client.readStringUntil('\r');
    Serial.print(line);
  }

  Serial.println();
  Serial.println("closing connection");
}

См.также

Внешние ссылки