Как подключить вай фай модуль ардуино
Перейти к содержимому

Как подключить вай фай модуль ардуино

  • автор:

Модуль Wi-Fi ESP8266 (ESP-01): подключение, прошивка и распиновка

Модуль ESP-01 с чипом ESP8266 предназначен для связи устройства с беспроводными сетями по WiFi.

Видеообзор

Общие сведения

ESP-01 — плата-модуль WiFi на базе популярного чипсета ESP8266EX . На борту платы находится микросхема Flash-памяти объёмом 2 МБ, чип ESP8266EX, кварцевый резонатор, два индикаторных светодиода и миниатюрная антенна из дорожки на верхнем слое печатной платы в виде змейки. Flash-память необходима для хранения программного обеспечения. При каждом включении питания, ПО автоматически загружается в чип ESP8266EX.

По умолчанию модуль настроен на работу через «AT-команды». Управляющая плата посылает команды — Wi-Fi модуль выполняет соответствующую операцию.

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

Работа с AT командами

Подключение и настройка

В стандартной прошивке Wi-Fi модуль общается с управляющей платой через «AT-команды» по протоколу UART.

На всех платах Iskra и Arduino присутствует хотя бы один аппаратный UART — HardwareSerial. Если же по каким то причинам он занят другим устройством, можно воспользоваться программным UART — SoftwareSerial.

HardwareSerial

На управляющей плате Iskra JS и платах Arduino с микроконтроллером ATmega32U4 / ATSAMD21G18 данные по USB и общение через пины 0 и 1 осуществляется через два раздельных UART . Это даёт возможность подключить Wi-Fi модуль к аппаратному UART на пинах 0 и 1 .

Список поддерживаемых плат:

Для примера подключим модуль Wi-Fi к платформе Iskra Neo.

Прошейте управляющую платформу кодом ниже.

Код прошивки
// serial-порт к которому подключён Wi-Fi модуль #define WIFI_SERIAL Serial1 void setup() { // открываем последовательный порт для мониторинга действий в программе // и передаём скорость 9600 бод Serial.begin(9600); while (!Serial) { // ждём, пока не откроется монитор последовательного порта // для того, чтобы отследить все события в программе } Serial.print("Serial init OK\r\n"); // открываем Serial-соединение с Wi-Fi модулем на скорости 115200 бод WIFI_SERIAL.begin(115200); } void loop() { // если приходят данные из Wi-Fi модуля - отправим их в порт компьютера if (WIFI_SERIAL.available()) { Serial.write(WIFI_SERIAL.read()); } // если приходят данные из компьютера - отправим их в Wi-Fi модуль if (Serial.available()) { WIFI_SERIAL.write(Serial.read()); } }
SoftwareSerial

Некоторые платы Arduino, например Uno, прошиваются через пины 0 и 1 . Это означает невозможность использовать одновременно прошивку/отладку по USB и общение с Wi-Fi модулем. Решение проблемы — программный UART . Подключите пины TX и RX ESP-модуля к другим контактам управляющей платы и используйте библиотеку SoftwareSerial.

Для примера подключим управляющие пины Wi-Fi модуля TX и RX — на 8 и 9 контакты управляющей платы. Прошейте управляющую платформу кодом ниже.

Код прошивки
// библиотека для работы программного Serial #include // создаём объект для работы с программным Serial // и передаём ему пины TX и RX SoftwareSerial mySerial(8, 9); // serial-порт к которому подключён Wi-Fi модуль #define WIFI_SERIAL mySerial void setup() { // открываем последовательный порт для мониторинга действий в программе // и передаём скорость 9600 бод Serial.begin(9600); while (!Serial) { // ждём, пока не откроется монитор последовательного порта // для того, чтобы отследить все события в программе } Serial.print("Serial init OK\r\n"); // открываем Serial-соединение с Wi-Fi модулем на скорости 115200 бод WIFI_SERIAL.begin(115200); } void loop() { // если приходят данные из Wi-Fi модуля - отправим их в порт компьютера if (WIFI_SERIAL.available()) { Serial.write(WIFI_SERIAL.read()); } // если приходят данные из компьютера - отправим их в Wi-Fi модуль if (Serial.available()) { WIFI_SERIAL.write(Serial.read()); } }
HardwareSerial Mega

На платах форм-фактора Arduino Mega 2560 аппаратный UART, который отвечает за передачу данных через пины 1 и 0 , отвечает также за передачу по USB. Это означает невозможность использовать одновременно UART для коммуникации с Wi-Fi модулем и отладки по USB.

Но на платах такого форм-фактора есть ещё дополнительно три аппаратных UART:

Serial1: пины 19(RX1) и 18(TX1) ;
Serial2: пины 17(RX2) и 16(TX2) ;
Serial3: пины 15(RX3) и 14(TX3) .

Список поддерживаемых плат:

Подключите Wi-Fi модуль к объекту Serial1 на пины 18 и 19 на примере платы Mega 2560 Прошейте управляющую платформу кодом ниже.

Код прошивки
// serial-порт к которому подключён Wi-Fi модуль #define WIFI_SERIAL Serial1 void setup() { // открываем последовательный порт для мониторинга действий в программе // и передаём скорость 9600 бод Serial.begin(9600); while (!Serial) { // ждём, пока не откроется монитор последовательного порта // для того, чтобы отследить все события в программе } Serial.print("Serial init OK\r\n"); // открываем Serial-соединение с Wi-Fi модулем на скорости 115200 бод WIFI_SERIAL.begin(115200); } void loop() { // если приходят данные из Wi-Fi модуля - отправим их в порт компьютера if (WIFI_SERIAL.available()) { Serial.write(WIFI_SERIAL.read()); } // если приходят данные из компьютера - отправим их в Wi-Fi модуль if (Serial.available()) { WIFI_SERIAL.write(Serial.read()); } }

Примеры работы

Рассмотрим несколько примеров по работе с «AT-командами»

Тестовая команда «AT»

Откройте монитор порта. Настройте скорость соединения — 9600 бод. Конец строки — NL & CR . Введите команду AT и нажмите «Отправить». Это — базовая команда для проверки работы Wi-Fi модуля. В ответ получим «OK»: Если ответа нет или появляются непонятные символы — проверьте правильность подключения и настройки скорости обмена данными.

Настройка режима работы

Wi-Fi модуль умеет работать в трёх режимах:

Arduino Uno WiFi: распиновка, схема подключения и программирование

Arduino Uno WiFi — оригинальная итальянская плата семейства Uno с модулем Wi-Fi.

[NEW] На сегодняшний день на смену ей пришла более новая версия платы: Uno WiFi Rev2 c модулем Wi-Fi и Bluetooth.

На Uno WiFi предусмотрено всё для удобной работы с микроконтроллером: 14 цифровых входов/выходов (6 из них могут использоваться в качестве ШИМ-выходов), 6 аналоговых входов, разъём USB, разъём питания, разъём для внутрисхемного программирования (ICSP) и кнопка сброса микроконтроллера.

Изюминка платы — модуль WiFi ESP8266, который позволяет ей обмениваться информацией с другими модулями по беспроводным сетям стандартов 802.11 b/g/n.

ESP8266 позволяет прошивать плату без использования USB-кабеля в режиме OTA (Firmware Over The Air — «микропрограммы по воздуху»).

Видеообзор платы

Подключение и настройка

Для начала работы с платой Uno WiFi в операционной системе Windows скачайте и установите на компьютер интегрированную среду разработки Arduino IDE.

Что-то пошло не так?

Настройка модуля WiFi

Для первичной настройки Arduino с модулем WiFi выполните следующие действия.

Подключите питание к плате. Через несколько секунд в списке доступных сетей появится новая — с именем Arduino-Uno-WiFi-xxxxxx , где xxxxxx — уникальный номер платы.

Подключитесь к найденной сети и зайдите в браузере по адресу:

192.168.240.1

Откроется web-интерфейс настройки платы.

Зайдите в сетевые настройки платы, нажатием на кнопку CHANGE в пункте Network SSID .

Выберите вашу сеть Wi-Fi из списка доступных сетей, введите пароль и подключитесь к ней.

При успешном подключении к Wi-Fi сети появится информация о присвоенном IP-адресе. Запомните или запишите его. В нашем примере мы получили адрес 192.168.43.17 .Теперь на Arduino Uno WiFi можно зайти с любого устройства, подключенного к этой сети.

Для дальнейшей работы с платой переключите ваш ПК с Wi-Fi-сети Arduino-Uno-WiFi-xxxxxx на вашу домашнюю беспроводную сеть — Amperka Mobile .

Зайдите в браузере по выданному ранее IP-адресу. Откроется тот же web-интерфейс настройки платы.

Обратите внимание: в данный момент плата работает в режиме «клиент + точка доступа» AP+STA . Если вы хотите прошить плату по Wi-Fi, необходимо переключить режим работы платы из AP+STA в STA

Зайдите в сетевые настройки платы, нажав на кнопку CHANGE в пункте Network SSID .

Переключите режим сети из AP+STA в STA кнопкой SWITCH TO STA MODE .

В колонке WiFi Mode отобразится режим STA .

Это значит, вы всё сделали верно, и можно переходить к прошивке платы по Wi-Fi.

Прошивка по WiFi

Arduino Uno WiFi имеет в своём запасе ещё один приятный бонус — возможность загружать скетчи без использования USB-кабеля в режиме OTA (Firmware Over The Air). Рассмотрим подробнее, как это сделать.

Отключите плату от ПК и подключите к другому источнику питания — например, к блоку питания или Power Shield.

Запустите Arduino IDE.

Сообщите среде IDE, с какой платой будете работать. Для этого перейдите в меню: Инструменты Плата и выберите плату «Arduino Uno WiFi».

Теперь необходимо сообщить среде программирования номер COM-порта, который соответствует подключённой плате.

Для этого необходимо войти в меню: Инструменты Порт и выбирать нужный порт.

Так как мы прошиваем Arduino по WiFi, плата определится как удалённое устройство с IP-адресом

Загрузка скетча

Среда настроена, плата подключена. Можно переходить к загрузке скетча. Arduino IDE содержит большой список готовых примеров, в которых можно подсмотреть решение какой-либо задачи. Выберем среди примеров мигание светодиодом — скетч «Blink». Прошейте плату, нажав на иконку загрузки программы. После загрузки светодиод начнёт мигать раз в секунду. Это значит, что всё получилось.

Теперь можно переходить к примерам использования.

Примеры использования

Web-сервер

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

Элементы платы

Микроконтроллер ATmega328P

Сердцем платформы Arduino Uno WiFi является 8-битный микроконтроллер семейства AVR — ATmega328P.

Микроконтроллер ATmega16U2

Микроконтроллер ATmega16U2 обеспечивает связь микроконтроллера ATmega328P с USB-портом компьютера. При подключении к ПК плата Uno WiFi определяется как виртуальный COM-порт. Прошивка микросхемы 16U2 использует стандартные драйвера USB-COM, поэтому установка внешних драйверов не требуется.

Пины питания

VIN: Напряжение от внешнего источника питания (не связано с 5 В от USB или другим стабилизированным напряжением). Через этот вывод можно как подавать внешнее питание, так и потреблять ток, если к устройству подключён внешний адаптер.

5V: На вывод поступает напряжение 5 В от стабилизатора платы. Данный стабилизатор обеспечивает питание микроконтроллера ATmega328. Запитывать устройство через вывод 5V не рекомендуется — в этом случае не используется стабилизатор напряжения, что может привести к выходу платы из строя.

3.3V: 3,3 В от стабилизатора платы. Максимальный ток вывода — 1 А.
GND: Выводы земли.

IOREF: Вывод предоставляет платам расширения информацию о рабочем напряжении микроконтроллера. В зависимости от напряжения, плата расширения может переключиться на соответствующий источник питания либо задействовать преобразователи уровней, что позволит ей работать как с 5 В, так и с 3,3 В устройствами.

Порты ввода/вывода

Цифровые входы/выходы: пины 0 – 13
Логический уровень единицы — 5 В, нуля — 0 В. Максимальный ток выхода — 40 мА. К контактам подключены подтягивающие резисторы, которые по умолчанию выключены, но могут быть включены программно.

ШИМ: пины 3 , 5 , 6 , 9 , 10 и 11
Позволяют выводить 8-битные аналоговые значения в виде ШИМ-сигнала.

АЦП: пины A0 – A5
6 аналоговых входов, каждый из которых может представить аналоговое напряжение в виде 10-битного числа (1024 значений). Разрядность АЦП — 10 бит.

TWI/I²C: пины SDA и SCL
Для общения с периферией по синхронному протоколу, через 2 провода. Для работы — используйте библиотеку Wire .

SPI: пины 10(SS) , 11(MOSI) , 12(MISO) , 13(SCK) .
Через эти пины осуществляется связь по интерфейсу SPI. Для работы — используйте библиотеку SPI .

UART: пины 0(RX) и 1(TX)
Эти выводы соединены с соответствующими выводами микроконтроллера ATmega16U2, выполняющей роль преобразователя USB-UART. Используется для коммуникации контроллера с компьютером или другими устройствами через класс Serial .

Светодиодная индикация

Имя светодиода Назначение
ON Индикатор питания на плате.
L Светодиод вывода 13 . При отправке значения HIGH светодиод включается, при отправке LOW – выключается.
WIFI Мигает при поиске и обмена данными с WiFi сетями
RX и TX Мигают при обмене данными между контроллером и ПК.

Разъём USB Type-B

Разъём USB Type-B предназначен для прошивки платформы Uno WiFi с помощью компьютера.

Разъём для внешнего питания

Разъём для подключения внешнего питания от 7 В до 12 В.

Регулятор напряжения 5 В

Когда плата подключена к внешнему источнику питания, напряжение проходит через стабилизатор MPM3610 . Выход стабилизатора соединён с пином 5V . Максимальный выходной ток составляет 1 А.

Регулятор напряжения 3,3 В

Стабилизатор MPM3810GQB-33 с выходом 3,3 вольта. Обеспечивает питание модуля WiFi ESP8266 и выведен на пин 3,3V . Максимальный выходной ток составляет 1 А.

ICSP-разъём для ATmega328P

ICSP-разъём предназначен для внутрисхемного программирования микроконтроллера ATmega328P. С использованием библиотеки SPI данные выводы могут осуществлять связь с платами расширения по интерфейсу SPI. Линии SPI выведены на 6-контактный разъём, а также продублированы на цифровых пинах 10(SS) , 11(MOSI) , 12(MISO) и 13(SCK) .

ICSP-разъём для ATmega16U2

ICSP-разъём предназначен для внутрисхемного программирования микроконтроллера ATmega16U2.

Как подключить Wi-Fi модуль ESP-01 к Ардуино

Как подключить WI-FI модуль ESP-01 к Ардуино

Wi-Fi модуль ESP-01 (ESP8266) Arduino позволяет подключить устройство к безпроводному Интернету или локальной сети. Рассмотрим подключение модуля ESP-01 (ESP8266) к плате Ардуино, программирование модуля с помощью AT команд и подключение Arduino к локальной Wi-Fi сети. Покажем, как можно легко настроить Wi-Fi модуль ESP-01 и проверить наличие связи между модулем и другим устройством.

Wi-Fi модуль ESP-01 распиновка, характеристики

Wi-Fi модуль ESP-01 распиновка, характеристики

Характеристики Wi-Fi модуля ESP 01

  • Напряжение питание: 1,8 — 3,6 В
  • Ток потребления: 220 мА
  • Wi-Fi 802.11 b/g/n
  • Режимы WiFi: клиент, точка доступа
  • Портов GPIO: 4
  • Тактовая частота процессора: 80 МГц
  • Оперативная память: 96 КБ
  • Размеры: 13 × 21 мм

ESP8266 ESP-01 обеспечивает доступ к сети Wi-Fi. Представляет собой автономный SOC (System On a Chip), которому не нужен микроконтроллер для управления входами и выходами, поскольку ESP-01 действует как маленький компьютер. В зависимости от версии ESP8266, возможно наличие до 9 портов GPIO что позволяет пользователю запрограммировать ESP8266 в качестве микроконтроллера с доступом к Wi-Fi.

Подключение к Ардуино Wi-Fi модуля ESP8266 ESP-01

Для этого занятия потребуется:

  • Arduino Uno / Arduino Nano / Arduino Mega;
  • Wi-Fi модуль ESP8266 ESP-01;
  • макетная плата;
  • провода «папа-мама».

Подключение к Ардуино Wi-Fi модуля ESP8266 ESP-01

Модули ESP8266 ESP-01 поставляется с предустановленной прошивкой AT. Можно запрограммировать чип с помощью другой прошивки, но стандартная прошивка AT ESP8266 ESP-01 совместима с Arduino IDE, поэтому мы будем использовать ее в этом обзоре. Для начала с помощью коннекторов подключите модуль Wi-Fi к Arduino, как показано на изображении. И откройте монитор последовательного порта в Arduino IDE.

Внимание! Модуль работает от 3.3 Вольт. Контакт RX подключается к пину 0, а контакт TX к 1 пину Ардуино. Скетч в микроконтроллер Ардуино загружать не нужно. А на мониторе последовательного интерфейса требуется переключиться на скорость 115200 и выбрать режим NL & CR (настройки показаны на картинке ниже). После этого можно отправить на модуль ESP-01 ESP8266 команды АТ для настройки.

Прошивка Wi-Fi модуля ESP-01 ESP8266 от Ардуино

Прошивка Wi-Fi модуля ESP-01 ESP8266 от Ардуино

Для проверки подключения модуля введите в командной строке AT и нажмите ввод, если ESP подключен правильно и соединение надежное, то чип вернет ответ OK

Переключить скорость на 9600 бод можно в любой момент следующей командой

AT+UART=9600,8,1,0,0

Далее переключим режим работы модуля на клиент командой AT+CWMODE=1. Если требуется проверить, в каком режиме работает Wi-Fi модуль, вы можете ввести команду AT+CWMODE? Это приведет к отображению номера (1, 2 или 3) на мониторе порта, связанного с соответствующим режимом работы чипа ESP-01.

AT+CWMODE=1

Узнаем какие беспроводные сети есть в зоне действия модуля. После отправки команды AT+CWLAP на мониторе последовательного порта Arduino IDE отобразятся все доступные WiFi сети (обведены оранжевым квадратом на картинке выше).

AT+CWLAP

Подключение модуля ESP8266 ESP-01 к Wi-Fi сети

Подключение модуля ESP8266 ESP-01 к Wi-Fi сети

Теперь можно подключиться к WiFi сети введя в следующей команде имя и пароль доступа к сети (кавычки удалять не надо). Модуль вернет ответ WIFI CONNECTED.

AT+CWJAP="Wi-FiNetwork","Password"

Прежде чем, настроить модуль ESP8266 ESP-01 в качестве сервера, необходимо включить несколько подключений. Введите команду AT+CIPMUX=1, где число связано с типом соединения (0 — одиночное, 1 — множественное подключение).

AT+CIPMUX=1

Следующий этап — запуск локального сервера на порту 80. Первое число в команде AT+CIPSERVER=1,80 используется закрытия режима сервера (0) или открытия сервера (1). Второе число указывает порт, который клиент использует для подключения к нашему серверу (порт 80 используется по умолчанию для протокола HTTP).

AT+CIPSERVER=1,80

Чтобы узнать IP адрес ESP8266 ESP-01 wifi модуля, введите команду

AT+CIFSR

После этого открывайте веб-браузер на устройстве, подключенного к беспроводной сети, и вводите IP-адрес модуля ESP. В этот момент вы получите ответ на мониторе порта Aruino IDE, как показано на изображении выше. Это HTTP-запрос, который компьютер или телефон отправляет на наш сервер. Запрос содержит название и версию браузера, тип операционной системы и другую интересную информацию.

ESP8266 ESP-01 AT-команды: отправка и отображение данных

ESP8266 ESP-01 AT-команды: отправка и отображение данных

Чтобы отправить информацию на браузер клиента с чипа ESP необходимо первым делом сообщить по какому каналу (0) будут отправлены данные клиенту с сервера и какое количество символов будет в сообщении (5).

AT+CIPSEND=0,5

После ввода команды, в окне монитора порта Arduino IDE появится символ «>» — это означает, что можно вводить символы в командной строке (в нашем примере мы отправили сообщение HELLO). Через пару секунд мы получим ответ SEND OK, это говорит о том, что данные успешно переданы клиенту. Однако в веб-браузере ничего не появится, пока мы не закроем канал на сервере (0) следующей командой:

AT+CIPCLOSE=0

AT-команды для настройки ESP8266 ESP-01

Все настройки сохраняются в памяти чипа, сбросить настройки можно командой:

AT+RESTORE

Перезагрузка модуля производится командой:

AT+RST

Узнать список активных подключений к модулю:

AT+CIPSTATUS

Заключение. Мы рассмотрели подключение вай фай модуля есп-01 к Arduino IDE, прошивку модуля ESP8266 ESP 01 с помощью AT-команд. С помощью этого устройства мы создали локальный web-сервер на Arduino с подключением к серверу клиента и отправили на web-браузер клиентского устройства сообщение. В следующих обзорах мы продолжим рассматривать модуль ESP-01 есп8266 в различных проектах

Uno + ESP8266 WiFi

Несколько лет назад я купил отдельный модуль ESP8266 WiFi, но так и не воспользовался им. За прошедшее время ситуация изменилась. Появились новые платы с встроенным WiFi и Bluetooth как из семейства Arduino, так и платформе ESP32. Но я решил спустя столько времени всё-таки завести этот модуль и посмотреть, как он работает.

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

Для начала его надо правильно соединить с Uno. Главная особенность — модуль работает на 3.3В, поэтому будьте аккуратны.

Начнём с платы Arduino Uno.

1. Соединяем вывод 3.3V с красной дорожкой на макетной плате (питание). Если вы будете подключать другие датчики, которые потребляют 5 Вольт, то соединяйте их с красной дорожкой питания на другой стороне макетной платы.

2. Соединяем GND с синей дорожкой макетной платы (заземление).

3. Соединяем вывод RESET с синей дорожкой макетной платы. В этом случае Arduino работает последовательно как USB и мы можем общаться с ESP8266.

4. Соединяем вывод RX с аналогичным выводом RX на ESP8266 (жёлтый провод на рисунке).

5. Соединяем вывод TX с аналогичным выводом TX на ESP8266 (зелёный провод на рисунке).

Обычно для общения двух устройств мы должны соединять вывод TX первого устройства с выводом RX второго устройства. Но в нашем случае общается компьютер.

Осталось соединить провода у ESP8266 WiFi.

6. Соединяем вывод GND с синей дорожкой и VCC с красной дорожкой.

7. Соединяем CH_PD с красной дорожкой.

Uno ESP8266

При соединении на ESP8266 загорится светодиод. Скетч загружать не нужно. Достаточно открыть Serial Monitor, выбрать скорость 115200 и выбрать режим Both NL & CR. Далее вводим AT-команду.

Должен появиться ответ OK. При отправке команд загорается маленький синий светодиод. Если всё получилось, то самое сложное позади.

В примере мы использовали вывод CH_PD. Если нам нужно перепрошить ESP8266, то соедините вывод GPIO0 с синей дорожкой (заземление), тем самым мы включим режим FLASH.

Схема модуля ниже.

Uno ESP8266

В текстовом формате.

 Esp8266 | Arduino ----------------- RX | RX TX | TX GND | GND VCC | 5v CH_PD | 5v GPIO 0 | None GPIO 2 | None Reset | None Arduino | Arduino ----------------- Reset | GND 

AT-команды

В интернете можно найти документацию по AT-командам, но в реальности вам понадобится только часть из них. Давайте попробуем некоторые команды.

Uno ESP8266

AT+GMR — версия команд

AT+RST — рестарт модуля

AT+CWJAP=»WiFi»,»pass» — указываем доступ к своей WiFi-точке (укажите свой логин и пароль к точке). В успешном случае появится ответ: WIFI CONNECTED, WIFI GOT IP.

AT+CWLAP — список доступных WiFi-сетей.

AT+CIFSR — получает локальный IP-адрес.

AT+CWMODE=3 — включает режим, когда виден в сети. У меня появился под именем AI-THINKER-XXX, но могут быть и другие варианты.

При настройке параметры запоминаются. Например, не нужно заново вводить свой пароль к WiFi-сети. Естественно, вы можете сбросить свои настройки.

После того, как мне удалось поработать с AT-командами, я даже сумел отправить данные в интернет на сервер ThingSpeak. Вкратце это выглядит следующим образом: бесплатная регистрация, заводим новый канал (channel) с одним полем (field), получаем ключ API, запоминаем адрес Update a Channel Feed, посылаем команду на сервер таким образом.

 AT+CIPMUX=0 AT+CIPSTART="TCP","api.thingspeak.com",80 AT+CIPSEND=47 GET /update?api_key=KL8PZR4EHMQWL5YL&field1=5 

Последняя команда содержит 45 символов, нужно послать на два символа больше, т.е. 47.

Заходим в свой канал и видим на графике, что был получен код со значением 5. Таким образом мы можем посылать значения со своих датчиков на сервер и анализировать их.

Скетчи для связки Uno+ESP8266

До этого мы использовали плату Uno как посредника для передачи данных по последовательному порту между компьютером и ESP8266. Чтобы использовать плату и модуль как одно целое и общаться уже между ними без участия компьютера, нужно изменить соединение. Небольшая сложность заключается в том, что при работе с Arduino IDE мы не можем использовать на плате выводы RX и TX, так как через них загружается скетч. Но мы можем использовать виртуальные выводы через библиотеку SoftwareSerial. Переключаем два провода на плате с RX и TX на выводы 11 и 10. А также убираем провод с вывода RESET.

 Esp8266 | Arduino — — — — — — — — - RX | 11 TX | 10 GND | GND (без изменений) VCC | 5v (без изменений) CH_PD | 5v (без изменений) GPIO 0 | None (без изменений) GPIO 2 | None (без изменений) Arduino | Arduino ----------------- Удалить провод между Reset и GND 

Скетч для загрузки данных на сайт ThingSpeak. Установите свои ключи, пароли.

 #include #define RX 10 #define TX 11 String AP = "WIFI_NAME"; // CHANGE ME String PASS = "WIFI_PASSWORD"; // CHANGE ME String API = "YOUR_API_KEY"; // CHANGE ME String HOST = "api.thingspeak.com"; String PORT = "80"; String field = "field1"; int countTrueCommand; int countTimeCommand; boolean found = false; int valSensor = 1; SoftwareSerial esp8266(RX, TX); void setup() < Serial.begin(9600); esp8266.begin(115200); sendCommand("AT", 5, "OK"); sendCommand("AT+CWMODE=1", 5, "OK"); sendCommand("AT+CWJAP=\"" + AP + "\",\"" + PASS + "\"", 20, "OK"); >void loop() < valSensor = getSensorData(); String getData = "GET /update?api_key=" + API + "&" + field + "=" + String(valSensor); sendCommand("AT+CIPMUX=1", 5, "OK"); sendCommand("AT+CIPSTART=0,\"TCP\",\"" + HOST + "\"," + PORT, 15, "OK"); sendCommand("AT+CIPSEND=0," + String(getData.length() + 4), 4, ">"); sendCommand(getData, 5, "OK"); //esp8266.println(getData); delay(1500); countTrueCommand++; sendCommand("AT+CIPCLOSE=0", 5, "OK"); > int getSensorData() < return random(1000); // Replace with >void sendCommand(String command, int maxTime, char readReplay[]) < Serial.print(countTrueCommand); Serial.print(". at command =>"); Serial.print(command); Serial.print(" "); while (countTimeCommand < (maxTime * 1)) < esp8266.println(command);//at+cipsend if (esp8266.find(readReplay)) //ok < found = true; break; >countTimeCommand++; > if (found == true) < Serial.println("OYI"); countTrueCommand++; countTimeCommand = 0; >if (found == false) < Serial.println("Fail"); countTrueCommand = 0; countTimeCommand = 0; >found = false; > 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *