Arduino uno wifi esp

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+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; > 

Источник

Подключение ESP8266 к Arduino UNO

Подключение ESP8266 к Arduino UNO

ESP8266 – популярный Wi-Fi модуль, без проблем работающий со всеми микроконтроллерами.

Большую популярность набирают перепрошитые модули, работающие самостоятельно, то есть без внешнего контроллера, однако в некоторых случаях бывает удобно подключиться к модулю по стандартному UART и обрабатывать пакеты, полученные ESP8266 из Интернета обычной Arduino Uno.

О таком подключение и работе с модулем мы сегодня и поговорим!

Для реализации проекта из этой статьи нам потребуются следующие компоненты:

Читайте также:  Gaming wifi or ethernet

Краткий обзор модуля

Мы будем использовать модуль ESP-01, так как он имеет минимальное количество GPIO – для работы с AT-командами нам нужно только 2 пина (интерфейс UART), остальными же пинами управлять командами невозможно, поэтому они не особо важны. Подключение ESP8266 будет производиться к Arduino Uno.

Модуль работает на ядре Tensilica с частотой до 160 МГц, что даёт значительный прирост производительности в сравнении с Arduino. Наплатная антенна способна передавать данные и получать пакеты на расстоянии до 100 м.

ESP8266 - подключение к Arduino

В модуль установлена память объёмом 512 Кб, в которую зашита стандартная AT-прошивка. Её можно заменить на стороннюю, но сегодня мы будем разбираться именно с самым простым вариантом.

Схема подключения к Arduino

Для подключения необходимо VCC и CH_PD подключить к питанию 3.3В, GND – к GND, TX и RX – к RX и TX соответственно (крест-накрест).

Можно использовать любую Arduino, причём лучше использовать свободный UART – любой, кроме нулевого – либо, если у платы их несколько (как у Arduino Mega), то второй хардварный, либо организовывать софтверный при помощи Software Serail.

Распиновка ESP-01

И пример схемы подключения:

ESP8266 - подключение к Arduino

Работа с ESP8266 в Arduino IDE

Так как модуль подключается по UART, то и взаимодействовать с ним нужно по этому протоколу. В Arduino для этих целей применяется класс Serial.

Работу с ним мы уже рассматривали, вся задача – правильно сконфигурировать его. Крайне важно выбрать верную скорость: по умолчанию она равна 9600 бод, но если модуль не отзывается, имеет смысл попробовать на скоростях 115200, 57600.

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

На неё он должен ответить “OK”, и пока вы этого не добьётесь, дальнейшие эксперименты бесполезны. Проверяйте подключение, пробуйте менять скорость, но обычно всё получается с первого раза.

У разных прошивок разный набор поддерживаемых команд. Узнать версию прошивки можно при помощи команды:

Набор команд для определённой прошивки можно скачать в разделе документации сайта esp8266.ru.

выполняет сканирование Wi-Fi сетей и выводит их список в удобном для разбора формате. А после того, как контроллер нашёл «свою» сеть, он может подключиться к ней при помощи команды:

Не забывайте отправлять окончания строки rn, без них модуль не будет воспринимать команды.

Для начала работы с беспроводными сетями надо установить режим работы модуля командой:

1 – режим клиента. Модуль может подключиться к любой точке доступа

2 – режим точки доступа. Модуль может создать свою Wi-Fi сеть

3 – смешанный режим. Модуль может подключиться к точке доступа и создать свою сеть.

Мы рассмотрели команды, назначение которых одинаково в большинстве прошивок. К сожалению, более сложные команды меняются с каждым обновлением, поэтому их необходимо уточнять в официальных спецификациях.

Удачи в освоении беспроводного мира!

Источник

Как у меня заработал WIFI для Arduino ESP8266 ESP-12E

Плата ESP8266 ESP-12 ESP-12E UART Wi-Fi устанавливается сверху на плату Arduino UNO R3 и позволяет получать доступ к управлению и состоянием Arduino из интернет. И я заставил этот слоеный пирог заработать.

Компоненты Arduino для работы покупал в магазине All Electronics Trading Company.

Все быстро пришло. Почти все из того что заказал в этом магазине было отличного качества.

Исключение составляла комбинированная плата с разными датчиками, светодиодами и кнопками s.click.aliexpress.com/e/ct9JuGza. Эта плата была какой-то ручной пайки, но полностью работала.

Читайте также:  Реагирует кнопка вай фай

Платы, которые использовались при написании статьи:

Закачал пустой скетч в Arduino U3.

void setup () <
// поместите здесь свой установочный код, чтобы запустить его один раз:
>
void loop () // поместите ваш основной код здесь для повторного запуска:
>

Действуя по инструкции 1 я ничего не достиг. Все комбинации перепробовал.

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

На момент прошивки нужен отдельный источник питания. Заподозрил что у меня именно эта ситуация.

Esp8266 питается от 3.3V, а Uno использует 5V. В инструкции 1 написано, что 5V не трогаем. Автор инструкции 2 подключает на свой страх и риск (о чем говорит) плату Esp8266 к 5V выходу UNO R3. Я тоже так решил сделать, подключив все вот так.

Тут дело сдвинулось с мертвой точки, почти сразу же опять застопорившись.

Плата синхронизировалась, но как-то не до конца.

Содержимое окна FLASH_DOWNLOAD_TOOLS_v2.4_150924 было почти такое же, как в инструкции 1:

но у меня поле MAC adress заполнилось, а вот DETECTED IINFO оставалось пустым.

В логе содержалась фраза «error read crystal«. Подумал было что все-таки сжег плату, подав напряжение 5V на свой страх и риск.

Но нашел подобную проблему в ветке форума ERROR FLASHING FIRMWARE. Проблему решили, записав в Arduino U3 пустой скетч.

Да я же делал это в самом начале!

Снова записал пустой скетч и на этом этапе все заработало. А именно — содержимое окна FLASH_DOWNLOAD_TOOLS_v2.4_150924 стало таким же, как в инструкции 1.

И прошивка залилась в плату ESP8266 ESP-12 ESP-12E UART Wi-Fi.

Может, когда на первом этапе ничего не получалось, что-то залил в Arduino R3?

Начал дальше следовать инструкции 1, поместив плату ESP8266 на Arduino UNO R3 — и опять ничего не ладилось. Что бы не делал с переключателями Р1, Р2 — не проходили команды.

Снова обратился к инструкции 2.

Вернул подключение ESP8266 к UNO через Debug Port, но уже с использованием 3.3V — flash загрузчик уже не надо было использовать и решил не испытывать плату на прочность.

И отправил при таком подключении команду «AT+UART_DEF=9600,8,1,0,0». Вернуло ERROR.

Тут оказалось, что внимательно надо следить за регистрами и за отсутствием пробелов. Команды копировал с сайтов, а там были пробелы и поэтому возвращало ERROR.

Также нужно следить за регистрами. Команда «AT» принимается как в верхнем, так и в нижнем регистре. Остальные команды только в верхнем.

Дальше действовал по инструкции 1.

Небольшой трудностью на этом этапе было привязать статичный IP адрес — пришлось выяснять пароль от модема ZyXel Keenetic 4G II.

Теперь можно было с Web-страницы при помощи кнопки управлять светодиодом, подключенным к Arduino UNO R3, и видеть его состояние.

Материалы со страницы «Инструкция 1».

На данный момент на странице инструкции 1 www.instructables.com/id/ESP8266-ESP-12E-UART-Wireless-WIFI-Shield-TTL-Conv/ такие версии используемых файлов:

Почему бы не использовать совмещенную плату UNO+ESP8266?

Есть в природе плата, аналогичная вроде-бы двум описываемым выше.

UNO + WiFi R3 ATmega328P + ESP8266 (32 Мб памяти), USB-TTL CH340G. Совместимость Uno, NodeMCU, WeMos ESP8266.

Получается дешевле на 100р, чем описываемые выше в паре.

UPD

С ней оказалось все немного по другому.

Источник

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