Прочитайте, раздел программирования для ознакомления, так как представлен в текстовом программировании.




(практику проведём на занятие)

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

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

• контроллер Arduino UNO R3;

• плата для прототипирования;

• модуль ESP8266 ESP-01;

• датчик температуры LM335;

• резистор 2,2 кОм;

• провода папа-папа.

• блок питания +5 в 1 А;

• преобразователь напряжения 3–30 В.

После своего появления платы на базе Wifi чипа ESP8266 стали по-настоящему народными. Огромные возможности и минимальная цена сделали свое дело. Платы на ESP8266 – это не просто модули для связи по Wi-Fi. Чип, по сути, является микроконтроллером со своими интерфейсами SPI, UART, а также портами GPIO, а это значит, что модуль можно использовать автономно без Arduino и других плат с микроконтроллерами. Существует около 11 официальных модификаций платы. В нашем распоряжении самая простая плата – ESP01. Распиновка платы показана на рис. 30.1. Покажем, как использовать ее в качестве Wi-Fi модуля для Arduino.


Рис. 30.1. Распиновка модуля ESP-01

Модуль ESP8266 рассчитан только на 3,3 В. Поэтому нам необходим источник питания 3,3 В. Схема подключения модуля ESP-01 к плате Arduino показана на рис. 30.2. Общение с модулем с помощью AT-команд. Список основных AT-команд показан в табл. 30.1. Загрузим на плату Arduino скетч, показанный в листинге 30.1, и будем отправлять в модуль ESP-01 AT-команды. Результат выполнения команд показан на рис. 30.3.

Рис. 30.2. Схема подключения модуля ESP-01 к Arduino


Листинг 30.1

#include <SoftwareSerial.h>

SoftwareSerial mySerial(2, 3); // указываем пины rx и tx

void setup()

{

pinMode(2,INPUT);

pinMode(3,OUTPUT);

Serial.begin(9600);

mySerial.begin(9600);

}

void loop()

{

if (mySerial.available())

{

int c = mySerial.read(); // читаем из software-порта

Serial.write(c); // пишем в hardware-порт

if (Serial.available())

{

int c = Serial.read(); // читаем из hardware-порта

mySerial.write(c); // пишем в software-порт

}

}

Порядок подключения:

Рис. 30.3. Отправка AT-команд из Arduino IDE


Создадим скрипт отправки данных на сайт Народный мониторинг (https://narodmon.ru). Подключим к плате Arduino датчик температуры LM335 и каждые 10 минут будем отправлять данные. Схема соединений показана на рис. 30.4. Для отправки данных необходимо выполнить следующую последовательность действий:

1. Сброс ESP-01 и проверка готовности модуля (AT+RST).
2. Подключение к сети по Wi-Fi (AT+CWJAP="","").
3. Выбор режима одиночного соединения (AT+CIPMUX=0).
4. Создание TCP-соединения (AT_CIPSTART="TCP","92.39.235.156", 8283).
5. Отправка данных (AT+CIPSEND= и сами данные #\ n#\n#\n##).
6. Закрыть TCP-соединение (AT+CIPCLOSE).
7. Пауза 10 минут и переход к шагу 4.


 


 


 


 



Рис. 30.4. Схема подключения модуля ESP-01 к Arduino

Таблица 30.1
Содержимое скетча показано в листинге 30.2.

#include <SoftwareSerial.h>

SoftwareSerial mySerial(2, 3); // RX, TX

const int LM335=A0; // контакт подключения датчика LM335

#define SSID "MacBook Pro - Petin" // введите ваш SSID

#define PASS "19101966" // введите ваш пароль

#define DST_IP "92.39.235.156" // naronmon.ru

void setup()

{

Serial.begin(9600); // для отладки

mySerial.begin(9600);

delay(2000);

Serial.println("Init");

mySerial.println("AT+RST"); // сброс и проверка, если модуль готов

delay(1000);

if(mySerial.find("ready"))

{Serial.println("WiFi - Module is ready");}

else

{Serial.println("Module dosn't respond.");

while(1);

}

delay(1000);

// соединение по wifi

boolean connected=false;

for(int i=0;i<5;i++)

{

if(connectWiFi())

{connected = true;

mySerial.println("Connected to Wi-Fi...");

break;

}

}

if (!connected)

{

mySerial.println("Coudn't connect to Wi-Fi.");

while(1);

}

delay(5000);

mySerial.println("AT+CIPMUX=0"); // режим одиночного соединения

}

void loop()

{

String cmd = "AT+CIPSTART=\"TCP\",\"";

cmd += DST_IP;

cmd += "\",8283";

Serial.println(cmd);

mySerial.println(cmd);

if(mySerial.find("Error"))

return;

double val = analogRead(LM335); // чтение показаний LM335

double voltage = val*5.0/1024; // перевод в вольты

double temp = voltage*100 - 273.15; // в градусы Цельсия

cmd = "#A0:F3:C1:70:AA:94\n#2881C4BA0200003B1#"+String(temp)+"\n##";

delay(3000);

mySerial.print("AT+CIPSEND=");

mySerial.println(cmd.length());

delay(1000);

Serial.println(">");

mySerial.print(cmd);

Serial.println(cmd);

delay(3000);

mySerial.println("AT+CIPCLOSE");

delay(600000);

}

// процедура установки Wi-Fi-соединения

boolean connectWiFi()

{

String cmd="AT+CWJAP=\"";

cmd+=SSID;

cmd+="\",\"";

cmd+=PASS;

cmd+="\"";

mySerial.println(cmd);

Serial.println(cmd);

delay(2000);

if(mySerial.find("OK"))

{

Serial.println("OK, Connected to Wi-Fi.");

return true;

}

else

{

Serial.println("Can not connect to the Wi-Fi.");

return false;

}

}

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2020-05-08 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: