Arduino wifi esp8266 передача данных

Передача данных от Arduino Uno на веб-страницу с помощью WiFi

Беспроводная связь между современными электронными устройствами с каждым годом становится все более актуальной с учетом все большего доминирования концепции интернета вещей (Internet of Things). Протокол HTTP и язык HTML делают возможным передачу данных в любое место на Земле где есть сеть интернет. Ранее на нашем сайте мы уже рассматривали похожие проекты:

Передача данных от Arduino Uno на веб-страницу с помощью WiFi: внешний вид конструкции

В этой же статье мы рассмотрим передачу данных от платы Arduino Uno на веб-страницу (Webpage) с помощью технологии WiFi. Для демонстрации возможностей этого проекта нам будет необходим IP адрес и сервер (локальный или глобальный). В целях упрощения демонстрации мы будем использовать локальный сервер.

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

  1. Плата Arduino Uno (купить на AliExpress).
  2. Wi-Fi модуль ESP8266 (купить на AliExpress).
  3. USB кабель.
  4. Соединительные провода.
  5. Ноутбук (или персональный компьютер).
  6. Источник питания.

Внешний вид Wi-Fi модуля ESP8266 показан на следующем рисунке.

Внешний вид Wi-Fi модуля ESP8266

Работа схемы

Схема устройства представлена на следующем рисунке.

Схема устройства для передачи данных от Arduino Uno на веб-страницу с помощью WiFi

Основными элементами схемы являются плата Arduino и Wi-Fi модуль ESP8266. Контакты Vcc и GND Wi-Fi модуля ESP8266 непосредственно подключены к контактам 3.3V и GND платы Arduino, а контакт CH_PD Wi-Fi модуля также подключен к 3.3V. Контакты Tx и Rx модуля ESP8266 подключены к контактам 2 и 3 платы Arduino. Software Serial Library (библиотека последовательной связи) используется для осуществления последовательной связи на контактах 2 и 3 платы Arduino (вместо контактов 0 и 1, которые используются для последовательной связи в плате Arduino по умолчанию). В статье про передачу Email с использованием Arduino мы достаточно подробно останавливались на подключении WiFi модуля ESP8266 к плате Arduino, поэтому здесь эти вопросы рассматривать не будем.

Примечание: чтобы видеть ответы модуля ESP8266 на поступающие команды откройте монитор последовательного порта (Serial Monitor) в программной среде Arduino IDE.

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

1. Сначала нам необходимо произвести тест Wi-Fi модуля при помощи передачи ему AT команды, он должен ответить OK.

2. После этого мы должны выбрать необходимый режим работы с помощью команды AT+CWMODE=mode_id , мы будем использовать Mode Полный же список доступных режимов выглядит следующим образом:
1 = Station mode (client) (режим станции, клиента)
2 = AP mode (host) (режим базовой станции, хоста)
3 = AP + Station mode (Yes, ESP8266 has a dual mode!) (режим станции + хоста – модуль ESP8266 поддерживает этот двойной режим).

Читайте также:  Ubuntu linux usb wifi

3. Затем мы должны отсоединить наш Wi-Fi модуль от прежней Wi-Fi сети с помощью команды AT+CWQAP поскольку модуль ESP8266 по умолчанию автоматически соединяется с предыдущей использованной сетью Wi-Fi.

4. После этого можно сбросить модуль командой AT+RST – это необязательный шаг.

5. После этого мы должны соединить модуль ESP8266 с Wi-Fi роутером с помощью команды:
AT+CWJAP=”wifi_username”,”wifi_password” .

6. После этого мы должны получить IP адрес с помощью команды AT+CIFSR , которая вернет нам IP адрес.

7. После этого нам необходимо задействовать режим мультиплексирования с помощью команды AT+CIPMUX=1 (1 для соединения с мультиплексированием и 0 для одиночного соединения).

8. Теперь сконфигурируем ESP8266 как сервер с помощью команды AT+CIPSERVER=1,port_no (port может быть 80). Теперь наш Wi-Fi готов. В представленной команде ‘1’ используется для создания сервера и ‘0’ для удаления сервера.

9. Теперь с помощью соответствующих команд можно передавать данные на созданный локальный сервер:
AT+CIPSEND =id, length of data
Id = ID no. of transmit connection (номер соединения)
Length = Max length of data is 2 kb (максимальная длина данный 2 Кбайта).

10. После передачи ID (номера, идентификатора) и Length (длины данных) на сервер мы можем передавать данные, к примеру: Serial.println(“circuitdigest@gmail.com”);

11. После передачи данных нам необходимо закрыть соединение с помощью команды:
AT+CIPCLOSE=0
После этого данные будет переданы на локальный сервер.

12. Теперь вы можете набрать IP адрес в строке адреса вашего браузера и нажать Enter. После этого вы увидите переданные данные на веб-странице.

Все описанные шаги можно более наглядно посмотреть в видео в конце статьи.

Исходный код программы

1. В программе нам сначала необходимо подключить SoftwareSerial Library чтобы задействовать последовательную связь на контактах PIN 2 и 3 и объявить некоторые переменные и строки.

#include
SoftwareSerial client(2,3); //RX, TX
String webpage=»»;
int i=0,k=0;
String readString;
int x=0;
boolean No_IP=false;
String IP=»»;
char temp1=’0′;

2. После этого мы должны определить ряд функций, необходимых для решения наших задач.
В функции Setup() мы инициализируем встроенный последовательный приемопередатчик для подключения модуля ESP8266 с помощью команды client.begin(9600) – для бодовой скорости 9600 бод/с.

void setup()
<
Serial.begin(9600);
client.begin(9600);
wifi_init();
Serial.println(«System Ready..»);
>

Читайте также:  Espeasy on wifi connected

3. В функции wifi_init() мы инициализируем wifi модуль при помощи передачи ему ряда команд, например, reset, set mode, connect to router, configure connection и т.д. Эти команды были объяснены в предыдущей части статьи.

void wifi_init()
<
connect_wifi(«AT»,100);
connect_wifi(«AT+CWMODE=3»,100);
connect_wifi(«AT+CWQAP»,100);
connect_wifi(«AT+RST»,5000);
. .
. .

  1. В функции connect_wifi() мы передаем команды и данные модулю ESP8266 и получаем (считываем) на них ответы.

void connect_wifi(String cmd, int t)
<
int temp=0,i=0;
while(1)
<
Serial.println(cmd);
. .
. .

5. Функция sendwebdata( ) используется для передачи данных на локальный сервер или веб-страницу.

void sendwebdata(String webPage)
<
int ii=0;
while(1)
<
unsigned int l=webPage.length();
Serial.print(«AT+CIPSEND=0,»);
client.print(«AT+CIPSEND=0,»);
. .
. .

6. Функция void send() используется для передачи строк в функцию sendwebdata(), которые затем передаются на веб-страницу.

void Send()
<
webpage = «

Welcome to Circuit Digest

«;
sendwebdata(webpage);
webpage=name;
webpage+=dat;
. .
. .

7. Функция get_ip() используется для получения IP адреса от созданного локального сервера.

8. В функции void loop() мы передаем инструкции пользователю обновить страницу и проверить соединен ли сервер или нет. Когда пользователь обновляет или запрашивает веб-страницу, данные автоматически передаются на тот же самый IP адрес.

void loop()
<
k=0;
Serial.println(«Please Refresh your Page»);
while(k <1000)
. .
. .

Аналогичным образом мы можем передавать на веб-страницу, получаемые платой Arduino от различных датчиков: влажность и температура в комнате, GPS время, GPS координаты, частоту сердечных сокращений и т.д.

Далее представлен полный текст программы.

Источник

Передача Email с использованием Arduino и WiFi модуля ESP8266

Сегодняшний мир активно движется к широкому внедрению технологии интернета вещей (IoT — Internet of Things). Эта технология уже сейчас играет значительную роль в электронике и встраиваемых системах (Embedded system). Передача Email от микроконтроллера или встраиваемой системы является одной из базовых функций, которая необходима в технологии интернета вещей, поэтому в данной статье мы рассмотрим подключение к плате Arduino WiFi модуля ESP8266 и передачу с его помощью Email. Также можете прочитать статью о передаче Email с использованием WiFi модуля ESP8266 и микроконтроллера AVR.

Внешний вид процесса передачи Email

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

  1. Плата Arduino Uno (купить на AliExpress).
  2. Wi-Fi модуль ESP8266 (купить на AliExpress).
  3. ЖК дисплей 16х2 (опционально) (купить на AliExpress).
  4. USB кабель.
  5. Источник питания.
  6. Лэптоп (персональный компьютер).
  7. Потенциометр 10 кОм (опционально).
  8. Соединительные провода.

Внешний вид Wi-Fi модуля ESP8266 показан на следующем рисунке.

Внешний вид Wi-Fi модуля ESP8266

Подготовка к работе

Для того, чтобы иметь возможность передавать Email с помощью платы Arduino и Wi-Fi модуля, нам необходимо получить Email. Это можно сделать на сайте на сайте smtp2go.com – после регистрации не забудьте запомнить (записать) свой email адрес и пароль. Внешний вид окна регистрации на сайте smtp2go.com представлен на следующем рисунке.

Читайте также:  Tuya wifi выключатели home assistant

Внешний вид окна регистрации на сайте smtp2go.com

Далее нам будут необходимы для нашего аккаунта Email имя пользователя и пароль в закодированном формате base64. Для преобразования данных из формата utf-8 в формат base64 можно использовать сервис https://www.base64encode.org/. Внешний вид окна данного сервиса показан на следующем рисунке.

Внешний вид сервиса www.base64encode.org

Подавать питание на Wi-Fi модуль ESP8266 мы будем с контакта 3.3v платы Arduino.

Подача питания на Wi-Fi модуль ESP8266 с платы Arduino

Работа схемы

Схема устройства представлена на следующем рисунке.

Схема устройства для передачи Email с использованием Arduino и WiFi модуля ESP8266

Как видите, схема достаточно проста – фактически для нее нам нужны только плата Arduino и Wi-Fi модуль ESP8266. Но мы добавили в схему еще ЖК дисплей 16×2 для отображения статусных сообщений (но можно обойтись и без нее). Контакты Vcc и GND модуля ESP8266 подключены к контактам 3.3V и GND платы Arduino, контакт CH_PD также подсоединен к 3.3V.

Контакты Tx и Rx модуля ESP8266 непосредственно подсоединены к контактам 2 и 3 платы Arduino. Контакт 2 платы Arduino также замкнут с контактом 1 платы Arduino. Это сделано с той целью чтобы отображать ответ с модуля ESP8266 на последовательном порту Arduino. Библиотека последовательного порта (Software Serial Library) используется чтобы осуществлять последовательную связь на контактах 2 и 3 Arduino

Примечание: чтобы видеть ответ с ESP8266 на последовательном порту не используйте функцию Serial.begin(9600).

Исходный код программы

В программе мы первым делом должны подключить библиотеку последовательной связи и библиотеку для работы с ЖК дсиплеем. По умолчанию, для последовательной связи используются контакты 0 и 1 платы Arduino, но с использованием библиотеки последовательной связи мы можем задействовать последовательную связь на любых других цифровых контактах платы Arduino.

После этого мы должны запрограммировать функцию void connect_wifi(String cmd, int t) чтобы соединить Wi-Fi модуль с сетью Internet.

void connect_wifi(String cmd, int t)
<
int temp=0,i=0;
while(1)
<
Serial1.println(cmd);
while(Serial1.available())
<
if(Serial1.find(«OK»))
. . .
. .

После этого необходимо соединить Wi-Fi модуль с SMTP сервером при помощи соответствующих команд.

lcd.print(«Configuring Email..»);
Serial1.println(«AT+CIPSTART=4,\»TCP\»,\»mail.smtp2go.com\»,2525″);
delay(2000);
Serial1.println(«AT+CIPSEND=4,20»);
delay(2000);
Serial1.println(«EHLO 192.168.1.123»);
delay(2000);
Serial1.println(«AT+CIPSEND=4,12»);

Примечание: некоторые email серверы не принимают email с некоммерческих, выпущенных с помощью dhcp ip адресов.

После этого мы будем пытаться залогиниться на smtp2go.co, используя имя пользователя и пароль в закодированном base64 формате, которые мы получили с помощью сервиса https://www.base64encode.org/.

lcd.print(«Try To Login. «);
Serial1.println(«AUTH LOGIN»);
delay(2000);
Serial1.println(«AT+CIPSEND=4,30»);
delay(2000);
Serial1.println(«c2FkZGFtNDIwMUBnbWFpbC5jb20 color: #800080;»> delay(2000);
Serial1.println(«AT+CIPSEND=4,18»);
delay(2000);
Serial1.println(«Y2lyY3VpdDQyMDE color: #800080;»>Serial1.println(«Testing Success»);
delay(2000);
Serial1.println(«AT+CIPSEND=4,3»);
delay(2000);
Serial1.println(‘.’);
delay(10000);
Serial1.println(«AT+CIPSEND=4,6»);
delay(2000);
Serial1.println(«QUIT»);
. .
.

Далее представлен полный текст программы.

Источник

Оцените статью
Adblock
detector