Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

77 проектов Arduino

.pdf
Скачиваний:
0
Добавлен:
13.05.2026
Размер:
49.45 Mб
Скачать

Эксперимент 71

321

String inputString = ""; String inputString1 = ""; // строка пришла

boolean stringComplete = false;

//сервер Народного мониторинга char server[] = "www.narodmon.ru";

//массив для получения данных от сервера char response[40];

void setup(void){ delay(5000);

Serial.begin(115200); WiFi.begin(ssid, password); Serial.print("*");

// Подсоединение к точке доступа

while (WiFi.status() != WL_CONNECTED) { delay(500);

Serial.print(".");

}

Serial.println(""); Serial.print("Connected to "); Serial.println(ssid); Serial.print("IP address: "); Serial.println(WiFi.localIP());

}

void loop(void){ serialEvent1();

if (stringComplete) {

//отправить данные на сайт sendDataNarodmon(inputString);

//очистить строку inputString = ""; stringComplete = false;

}

}

// получение строки по Serial void serialEvent1() {

boolean flag1=false;

while (Serial.available() && flag1==false) { // получить байт:

char inChar = (char)Serial.read(); Serial.write(inChar);

if (inChar == '$') { stringComplete = true; flag1=true;

322 Эксперимент 71

}

// добавление в строку

else

inputString += inChar;

}

}

// отправка данных на сайт Народного мониторинга void sendDataNarodmon(String str) {

if (client.connect(server, 80)) {

//// отправка данных на сервер narodmon.ru Serial.print(str);

client.println("GET "+str+" HTTP/1.1"); client.println("Host: www.narodmon.ru"); client.println("Connection: close"); client.println();

// получение ответа

unsigned long previos=millis(); for(int i=0;i<40;i++)

response[i]=0; int x=0;int f=0; do{

if(client.available() > 0) {

// получать данные из ESP8266 char s = client.read(); if(s=='#')

f=1; if(f==1) {

response[x]=s;

Serial.print(response[x]);

x++;

}

Serial.write(s);

}

}

while((millis() - previos) < 5000); Serial.println(response); client.stop();

}

else {

// нет соединения

Serial.println("connection failed"); client.stop();

}

}

Скачать данный скетч можно на сайте Arduino-kit по ссылке https://arduino-kit. ru/scetches/exp_71_01.zip.

Эксперимент 71

323

Переключатели на плате Arduino+WiFi необходимо установить следующим образом:

1

2

3

4

5

6

7

 

 

 

 

 

 

 

OFF

OFF

OFF

OFF

ON

ON

ON

 

 

 

 

 

 

 

И загрузить скетч на модуль ESP8266.

Открываем монитор последовательного порта и пробуем отправлять данные (см. рис. 71.2).

Рис.71.2.Получение данных по последовательному порту и отправка на сайт Народного мониторинга

При отправке строки /get?ID=440365430747&H1=45&T1=13&P1=713$/get?ID=440365430747&H1=45

&T1=13&P1=713

Приходит ответ OK. Значит, данные успешно отправлены. Переходим к следующему этапу – добавлению устройства в свой профиль для отображения на карте.

Переходим на сайт http://narodmon.ru, авторизуемся и открываем пункт меню Датчики Мои Датчики Добавить устройство, где необходимо ввести ID твоего (нашего?) устройства (рис. 71.3).

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

324 Эксперимент 71

Рис.71.3.Ввод ID устройства

Внимание !!! Установка публичного доступа возможна только для уличных датчиков.

Рис.71.4.Редактирование данных устройства

После этого устройство появится на карте (рис. 71.5).

Powered by TCPDF (www.tcpdf.org)

Эксперимент 71

325

Рис.71.5.Устройство на карте Народного мониторинга.

В следующем эксперименте организуем отправку реальных данных домашней метеостанции.

Эксперимент 72.

Отправка данных датчиков домашней метеостанции на сайт Народного мониторинга

В этом эксперименте соберем домашнюю метеостанцию, обработаем данные с датчиков и отправим их на модуль ESP8266

для сайта Народного мониторинга

Вэксперименте мы будем использовать следующие компоненты: Плата Arduino UNO – 1;

Кабель USB – 1;

Плата прототипирования – 1; Датчик BMP280 – 1;

Датчик DHT11 – 1; Провода MM – 8.

Вэксперименте71мынастроилиотправкуданных,получаемыхспоследовательного порта, на сайт Народного мониторинга. Строку с данными, которые будем получать

сдатчиков, будем формировать на Arduio, а затем отправлять по последовательному порту на модуль ESP8266.

Схема соединений показана на рис. 72.1.

Нам необходимо каждые 5 минут получать показания с датчиков BMP280 и DHT11 и формировать строку вида

/get?ID=440365430747&H1=valueh&T1=valuet&P1=valuep*

Затем отправлять эту строку по последовательному порту в модуль ESP8266.

Сдатчиками BMP280 и DHT11 мы работали в экспериментах 39, 41. Содержимое скетча показано в листинге 72.1.

Листинг 72.1.

// подключение библиотек

#include "DHT.h" #include <Wire.h> #include <SPI.h>

#include <Adafruit_Sensor.h> #include <Adafruit_BMP280.h>

Эксперимент 72

327

Рис.72.1.Схема соединений для метеостанции на датчиках BMP180 и DHT11

//пин для подключения датчика DHT #define DHTPIN 10

//тип датчика DHT

#define DHTTYPE DHT11

// DHT 11

//создание экземпляров

Adafruit_BMP280 bmp;

DHT dht(DHTPIN, DHTTYPE);

//для опроса

unsigned long millissend=0; unsigned long pauseseconds=10;

// ID - устройства в Народном мониторинге

String IDstr="441369430175";

void setup()

{

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

Serial.begin(115200);

//запуск датчиков DHT,BMP20 dht.begin();

bmp.begin();

}

void loop() {

// ждем время паузы

if(millis()-millissend>=1000) { pauseseconds--;

328 Эксперимент 72

//Serial.print("time to send - ");Serial.println(pauseseconds); if(pauseseconds==0) {

// получение данных

int h = dht.readHumidity(); int t = bmp.readTemperature();

float p = bmp.readPressure()/133.32;

//формирование строки

String str="/get?ID="+IDstr; str=str+"&H1="+String(h); str=str+="&T1="+String(t); str=str+="&P1="+String(p); str=str+="*";

//отправка в последовательный порт

Serial.print(str);

pauseseconds=300;

}

millissend=millis();

}

}

Скачать данный скетч можно на сайте Arduino-kit по ссылке https://arduino-kit.ru/scetches/ exp_72_01.zip.

Переключатели на плате Arduino+WiFi необходимо установить следующим образом и загрузить скетч на Arduino

1

 

2

 

3

4

 

5

 

6

7

 

 

 

 

 

 

 

 

 

 

 

 

 

OFF

 

OFF

 

ON

ON

 

OFF

 

OFF

OFF

 

 

 

 

 

 

 

 

 

 

 

 

 

Открываем

монитор

последовательного

порта и

видим

отправку

в последовательный порт данных каждые 5 минут (первая отправка через 10 секунд) (см. рис. 72.2).

Рис.72.2.Отправка данных по последовательному порту.

Эксперимент 72

329

Далее необходимо перевести плату в режим ATmega328 ESP8266. Переключатели необходимо установить следующим образом:

1

2

3

4

5

6

7

 

 

 

 

 

 

 

ON

ON

OFF

OFF

OFF

OFF

OFF

 

 

 

 

 

 

 

Теперь Arduino и ESP8266 соединены по последовательному порту.

Через некоторое время проверяем отправку данных на сайт Народного мониторинга.

Заходим на сайт Народного мониторинга в меню Профиль Мои Датчики и в открывшемся окне переходим по ссылке данные полученные от устройства (см. рис. 72.3).

Рис.72.3.Данные полученные от устройства

Данные отображаются на карте (рис. 72.4), можно посмотреть и графики по каждому датчику (72.5).

Рис.72.4.Данные полученные от устройства

330 Эксперимент 72

Рис.72.5.График данных датчика