Arduino uno esp8266 wifi shield

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-командам, но в реальности вам понадобится только часть из них. Давайте попробуем некоторые команды.

Читайте также:  Звонки через wifi хонор

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

Источник

Читайте также:  Телевизор забывает пароль wifi

Как у меня заработал 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 загрузчик уже не надо было использовать и решил не испытывать плату на прочность.

Читайте также:  Mag 250 вай фай

И отправил при таком подключении команду «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

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

Источник

Arduino Wi-Fi Shield – плата расширения на базе ESP8266 (ESP-12E)

ESP8266 Arduino ESP-12E UART Wi-Fi Shield на базе ESP-12E

С помощью этой платы расширения вы сможете использовать ESP8266 совместно с Arduino UNO/Mega. В ней применяется модуль ESP-12E.

Москва и МО: Самовывоз
Курьерская доставка
Россия и СНГ: СДЭК
Почта РФ / Достависта

Купить Arduino Wi-Fi Shield — плата расширения на базе ESP8266 (ESP-12E) в Москве или с доставкой по России и СНГ очень просто — до покупки осталось всего 3 клика!

  • Добавьте товар в корзину
  • Оформите заказ, выбрав наиболее удобный способ доставки и оплаты
  • Дождитесь подтверждения от менеджеров или позвоните самостоятельно
  • Оплатите заказ удобным способом и получите его в ближайшее время

Arduino Wi-Fi Shield — плата расширения на базе ESP8266 (ESP-12E) для Arduino UNO / MEGA

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

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

Так как микроконтроллеры ESP8266 работают при напряжении 3,3, а большинство Arduino при 5В, на плату установлен преобразователь логических уровней и стабилизатор напряжения на 3,3В. Питание подаётся с основной платы Arduino.

Плата расширения Arduino Wi-Fi Shield оснащена четырьмя светодиодами: индикаторы питания (PWR), обновления прошивки (DFU), работы Wi-Fi в режимах точки доступа (AP) и клиента (STA). Также на ней присутствует кнопка рестарта ESP8266.

Основные достоинства

  • Использование всех выводов ESP8266
  • Разные режимы работы UART
  • Простота работы с ESP8266

Источник

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