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

Как подключить esp8266 к arduino

  • автор:

Модуль 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 модуль умеет работать в трёх режимах:

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

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

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

Модуль WiFi ESP8266 ESP-01 Arduino позволяет подключить устройство к беспроводному интернету или локальной сети. Рассмотрим на этой странице, как подключить модуль ESP8266 ESP-01 к Ардуино, как запрограммировать модуль с помощью AT-команд и как подключить микроконтроллер Arduino к локальной сети WiFi. Мы покажем, как можно легко настроить ESP-01 и проверить связь между модулем и другими устройствами.

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

  • Arduino Uno / Arduino Nano / Arduino Mega
  • Wi-Fi модуль ESP 01 ESP 8266
  • тактовые кнопки
  • светодиод и резистор
  • макетная плата
  • коннекторы
  • библиотека SoftwareSerial.h
  1. Подключение Wi-Fi модуля ESP-12E к Ардуино
  2. Подключение Ethernet модуля HR911105A
  3. Подключение HC-06 блютуз модуля к Ардуино

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

WiFi модуль ESP 8266 распиновка, характеристики

Характеристики ESP8266 ESP-01 Arduino (datasheet)

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

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

WiFi модуль ESP8266 ESP-01 подключение к Ардуино

WiFi модуль ESP-01 подключение к Ардуино

Будьте внимательны! Модуль работает от 3,3 Вольт. В первом примере esp модуль автоматически подключится к wifi сети и создаст сервер. Вам необходимо только указать в программе имя локальной сети и пароль доступа. Далее надо будет ввести ip адрес сервера в любом браузере на устройстве, подключенного к wifi сети. Если подключение к wifi точке пройдет успешно — вы увидите в браузере надпись «ESP-01 is connected».

Скетч для подключения модуля ESP8266 ESP-01 к WiFi

#include "SoftwareSerial.h" SoftwareSerial mySerial(2, 3); // RX, TX #define B1 8 // кнопка включения светодиода #define B2 9 // кнопка выключения светодиода bool button1WasUp = true; bool button2WasUp = true; bool button1IsUp; bool button2IsUp; String IncomingString = ""; void setup() < Serial.begin(9600); mySerial.begin(9600); pinMode(B1, INPUT_PULLUP); pinMode(B2, INPUT_PULLUP); pinMode(13, OUTPUT); // подключение к wifi точке доступа и создание сервера SendCommand("AT+CWMODE=1", "OK"); // укажите в этой строчке имя wifi сети и пароль SendCommand("AT+CWJAP=\"WiFiSSID\",\"Password\"", "OK"); SendCommand("AT+CIPMUX=1", "OK"); SendCommand("AT+CIPSERVER=1,80", "OK"); SendCommand("AT+CIFSR", "OK"); digitalWrite(13, HIGH); // ожидание ввода ip адреса сервера в браузере while (true) < if (mySerial.available()) < char ch = mySerial.read(); Serial.write(ch); >button2IsUp = digitalRead(B2); if (button2WasUp && !button2IsUp) < delay(10); button2IsUp = digitalRead(B2); if (!button2IsUp) < break; >> > button2WasUp = button2IsUp; // отправка на сервер информации о подключении модуля SendCommand("AT+CIPSEND=0,85", "OK"); SendCommand("WiFi ESP-01 8266

ESP-01 is connected

", "OK"); delay(1000); digitalWrite(13, LOW); SendCommand("AT+CIPSEND=0,13", "OK"); SendCommand("

LED

", "OK"); SendCommand("AT+CIPSEND=0,68", "OK"); SendCommand("h2:after ", "OK"); > void loop() < button1IsUp = digitalRead(B1); button2IsUp = digitalRead(B2); // если нажата 1 кнопка - включаем светодиод и отправляем данные на сервер if (button1WasUp && !button1IsUp) < delay(10); button1IsUp = digitalRead(B1); if (!button1IsUp) < digitalWrite(13, HIGH); SendCommand("AT+CIPSEND=0,67", "OK"); SendCommand("h2:after ", "OK"); > > button1WasUp = button1IsUp; // если нажата 2 кнопка - выключаем светодиод и отправляем данные на сервер if (button2WasUp && !button2IsUp) < delay(10); button2IsUp = digitalRead(B2); if (!button2IsUp) < digitalWrite(13, LOW); SendCommand("AT+CIPSEND=0,68", "OK"); SendCommand("h2:after ", "OK"); > > button2WasUp = button2IsUp; > // функции отправки сообщений через softwareserial boolean SendCommand(String cmd, String ack) < mySerial.println(cmd); if (!echoFind(ack)) return true; >boolean echoFind(String keyword) < byte current_char = 0; byte keyword_length = keyword.length(); long deadline = millis() + 5000; while (millis() < deadline) < if (mySerial.available()) < char ch = mySerial.read(); Serial.write(ch); if (ch == keyword[current_char]) if (++current_char == keyword_length) < Serial.println(); return true; >> > return false; >
Модуль esp8266 esp-01 подключение к сети WiFi с роутером

1. После загрузки скетча, откройте монитор порта Arduino IDE. Вы увидите в нем сообщение о подключение сети и создание локального сервера с ip адресом, как на картинке ниже. Вам необходимо скопировать ip адрес модуля (на скриншоте выделено 192.168.43.84) и ввести его в браузере на устройстве, подключенного к этой же локальной сети.

Сообщение о подключение сети и создание сервера

2. Если схема собрана верно и подключение прошло успешно, вы получите ответ от браузера (как на скриншоте ниже) в виде сообщения на монитор порта о версии браузера, операционной системе и т.д. Если сообщение на мониторе порта не появилось, попробуйте перезагрузить микроконтроллер и снова выполнить действия из первого пункта.

Версия браузера и операционная система

3. Если подключение прошло успешно, нажмите на кнопку, подключенную к пину 9. После этого программа должна отправить в web браузер сообщение «ESP-01 is connected», а также информацию о состоянии светодиода. Нажимая кнопки, подключенные к Ардуино вы можете менять состояние светодиода с отражением информации в веб браузере.

Как подключить WiFi модуль ESP01 к Arduino через TX RX

Как подключить WiFi модуль ESP8266 ESP01 к Arduino

В этом примере подключение esp01 к Arduino по UART шине производится наоборот. Контакт RX подключается к пину RX, а контакт TX — к пину TX Arduino. Загружать программу в микроконтроллер не требуется, но лучше всего загрузить пустой скетч в Ардуино. На мониторе последовательного интерфейса необходимо переключиться на скорость 115200 и выбрать режим NL & CR (параметры настроек показаны на изображении ниже).

Чтобы проверить правильность и надежность подключения модуля wifi, введите команду AT в командной строке монитора порта Arduino IDE и нажмите клавишу Enter, если ESP01 ESP8266 подключен правильно и соединение надежное, чип вернет ответ OK.

Настройка WiFi модуля ESP 01 с помощью AT команд

Настройка WiFi модуля ESP 01 с помощью AT команд

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

AT+CIPSTATUS

Вы можете переключиться на 9600 бод в любое время с помощью команды:

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

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

AT+RESTORE

Перезагрузить модуль вай-фай ESP8266 можно с помощью команды:

AT+RST

Подключение модуля ESP 8266 ESP 01 к WiFi сети

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

Начните с изменения режима работы модуля на клиентский с помощью команды AT+CWMODE=1. Если вы хотите проверить, в каком режиме работает модуль WiFi, вы можете ввести команду AT+CWMODE? На мониторе порта отобразится номер (1, 2 или 3), связанный с соответствующим режимом работы микросхемы ECP 8266.

AT+CWMODE=1

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

AT+CWLAP

Теперь вы можете подключиться к действующей сети WiFi, введя следующую команду с именем доступа к сети и паролем (не убирайте кавычки из команды). Если соединение произойдет успешно, модуль ESP8266 ESP01 вернет ответ WIFI CONNECTED.

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

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

AT+CIPMUX=1

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

AT+CIPSERVER=1,80

Чтобы узнать IP адрес ESP8266 ESP01 модуля, введите команду:

AT+CIFSR

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

Arduino WIFI модуль ESP-01 8266 подключение

Чтобы отправить информацию в веб-браузер клиента с чипа ESP-01, первое, что нужно сделать, это указать канал (0), который будет использоваться для отправки данных клиенту с нашего сервера, и количество символов, которое будет содержать сообщение (5).

AT+CIPSEND=0,5

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

AT+CIPCLOSE=0

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

Как подключить esp8266 к arduino

Как подключить? Каждый из модулей имеет USB порт и может запитываться от компьютера, но рано или поздно им потребуется автономное питание. Надо решить эту задачу сразу.

Два варианта: у каждого модуля свой источник питания, или один на всех.

Подключил внешние 5 вольт на Vin обоих модулей, затем подключил USB к Arduino UNO. Пока все идет нормально.

Первое, что хотелось проверить, это соответствие уровней сигналов двух модулей.

Для первой программы я использовал пример использования библиотеки Software Serial

Исходный скетч для Arduino NANO

/* * RX is digital pin 10 (connect to TX of other device)
* TX is digital pin 11 (connect to RX of other device)
*/
#include
SoftwareSerial mySerial(10, 11); // RX, TX

void setup() // Open serial communications and wait for port to open:
Serial.begin(57600);
while (!Serial) ; // wait for serial port to connect. Needed for native USB port only
>

Serial.println(«Goodnight moon!»);
// set the data rate for the SoftwareSerial port
// я изменил на 115200)
mySerial.begin(115200);
mySerial.println(«Hello, world?»);
>

void loop() < // run over and over
if (mySerial.available()) Serial.write(mySerial.read());
>
if (Serial.available()) mySerial.write(Serial.read());
>
>

Сначала я «залил» программу в ESP8266:
1 — подключив компьютер к модулю через USB.
2 — в Arduino IDE выбрал COM порт (скорость 11520) и модуль NodeMCU 1.0.
3 — отсоединил Rx и Tx от Arduino NANO.
4 — прошил свою программу R_ESP8266_Control.

Проверил работу модуля без связки с Arduino — все нормально.

Подключаю к компьютеру Arduino NANO:
1 — в Arduino IDE выбрал COM порт (скорость 57600) и модуль Arduino NANO.
2 — загрузил скетч, показанный выше.

Проверил работу модуля без связки с ESP8266 — все нормально.

Соединяю два модуля линиями Rx> Tx и Tx> Rx, как показано на рисунке выше. Подсоединяю компьютер только к USB порту Arduino NANO, и включаю питание.

Запускаю монитор последовательного порта на компьютере нажимаю кнопку RESET на DevKit ESP8266 модуле. Через пару секунд на мониторе получил отчет:

.
Connected to Runi_WF
IP address: 192.168.0.101
mDNS responder started
TCP server started

Теперь на любом устройстве, имеющим возможность работать в вашей сети, следует в браузере набрать IP адрес 192.168.0.101 и управлять модулями. На мониторе последовательного порта должны отображаться все передаваемые сообщения от DtvKit ESP8266 в Arduino NANO.

Объединить два модуля, имеющие свои «обвязки» из защитных и согласущих сопротивлений, оказалось делом очень простым. В других случаях надо быть внимательнее к общим цепям.

Для прошивки ESP8266 следует:
— преключатель sw1 перевести в положение «prog». При этом выводы Rx и Tx обоих модулей будут соединены напрямую;
— ключ Kn2 (RESET) замкнуть, чтобы вывод RST подключить к Gnd. Это позволит отключить микроконтроллер и использовать Arduino как прозрачный USB-TTL конвертер;
— ключ или перемычку Kn1 (GPIO0) замкнуть — подключить вывод GPIO0 ESP8266 к Gnd для записи программы;
— ключ или перемычку Kn2 (GPIO15) замкнуть на Gnd для записи программы;
— включить питание;
— подсоединить компьютер к USB;
— все готово для программирования ESP8266 через порт USB;

Для прошивки Arduino NANO следует:
— преключатель sw1 перевести в положение «connect»;
— ключ Kn2 (RESET) разомкнуть;
— ключ Kn1 (GPIO0) разомкнуть;
— подсоединить компьютер к USB;
— все готово для работы или программирования Arduino NANO;

По поводу согласования цепей модулей с питанием 3.3 вольта 5.0 вольт, много материала в Инете. Я испробовал способ, представленный на схеме. Работает стабильно!

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

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