Ошибка TIMEOUT при подключении ESP8266 к Arduino Uno
Я пытаюсь настроить Arduino Uno для получения информации из Интернета, но мне очень трудно найти подходящие руководства в Интернете. Я использую Arduino Uno и ESP8266-01. Я пытаюсь использовать пример "WebClientRepeating" из этой библиотеки: https://github.com/bportaluri/WiFiEsp
Вот код, который я запускаю (обновил SSID и пароль):
/*
WiFiEsp example: WebClientRepeating
This sketch connects to a web server and makes an HTTP request
using an Arduino ESP8266 module.
It repeats the HTTP call each 10 seconds.
For more details see: http://yaab-arduino.blogspot.com/p/wifiedp.html.
*/
#include "WiFiEsp.h"
// Эмулируем Serial1 на контактах 6/7, если они отсутствуют
#ifndef HAVE_HWSERIAL1
#include "SoftwareSerial.h"
SoftwareSerial Serial1(6,7); // прием, передача
#endif
char ssid[] = "MY-SSID"; // SSID вашей сети (имя)
char pass[] = "MY-PASSWORD"; // ваш сетевой пароль
int status = WL_IDLE_STATUS; // статус радио Wi-Fi
char server[] = "arduino.cc";
unsigned long lastConnectionTime = 0; // последний раз, когда вы подключались к серверу, в миллисекундах
const unsigned long postingInterval = 10000L; // задержка между обновлениями в миллисекундах
// Инициализируем клиентский объект Ethernet
WiFiEspClient client;
void setup()
{
// инициализируем серийный номер для отладки
Serial.begin(115200);
// инициализируем серийный номер для модуля ESP
Serial1.begin(9600);
// инициализируем модуль ESP
WiFi.init(&Serial1);
// проверяем наличие щита
if (WiFi.status() == WL_NO_SHIELD) {
Serial.println("WiFi shield not present");
// не продолжать
while (true);
}
// попытка подключения к сети Wi-Fi
while ( status != WL_CONNECTED) {
Serial.print("Attempting to connect to WPA SSID: ");
Serial.println(ssid);
// Подключиться к сети WPA/WPA2
status = WiFi.begin(ssid, pass);
}
Serial.println("You're connected to the network");
printWifiStatus();
}
void loop()
{
// если есть входящие данные из сетевого соединения, отправьте их через последовательный порт
// это только для целей отладки
while (client.available()) {
char c = client.read();
Serial.write(c);
}
// если с момента вашего последнего подключения прошло 10 секунд,
// затем снова подключиться и отправить данные
if (millis() - lastConnectionTime > postingInterval) {
httpRequest();
}
}
// этот метод устанавливает HTTP-соединение с сервером
void httpRequest()
{
Serial.println();
// закрыть любое соединение перед отправкой нового запроса
// это освободит сокет на шилде WiFi
client.stop();
// если есть успешное соединение
if (client.connect(server, 80)) {
Serial.println("Connecting...");
// отправляем HTTP-запрос PUT
client.println(F("GET /asciilogo.txt HTTP/1.1"));
client.println(F("Host: arduino.cc"));
client.println("Connection: close");
client.println();
// отмечаем время установления соединения
lastConnectionTime = millis();
}
else {
// если не удалось установить соединение
Serial.println("Connection failed");
}
}
void printWifiStatus()
{
// вывести SSID сети, к которой вы подключены
Serial.print("SSID: ");
Serial.println(WiFi.SSID());
// напечатать IP-адрес вашего WiFi-экрана
IPAddress ip = WiFi.localIP();
Serial.print("IP Address: ");
Serial.println(ip);
// печатаем полученный уровень сигнала
long rssi = WiFi.RSSI();
Serial.print("Signal strength (RSSI):");
Serial.print(rssi);
Serial.println(" dBm");
}
Моя проводка выглядит следующим образом:
- ESP8266 RX — Uno, контакт 7
- ESP8266 TX — Uno, контакт 6
- ESP8266 VCC — источник питания 3,3 В (не от Uno)
- Заземление ESP8266 — заземление Uno
- ESP8266 CH_PD — источник питания 3,3 В (не от Uno)
Я также соединил GND источника питания 3,3 В с другими GND.
Когда я запускаю пример WebClientRepeating, мой последовательный вывод говорит:
11:05:04.764 -> [WiFiEsp] Initializing ESP module
11:05:05.760 -> [WiFiEsp] >>> TIMEOUT >>>
11:05:07.785 -> [WiFiEsp] >>> TIMEOUT >>>
11:05:09.758 -> [WiFiEsp] >>> TIMEOUT >>>
11:05:11.780 -> [WiFiEsp] >>> TIMEOUT >>>
11:05:13.803 -> [WiFiEsp] >>> TIMEOUT >>>
11:05:14.794 -> [WiFiEsp] Cannot initialize ESP module
11:05:20.794 -> [WiFiEsp] >>> TIMEOUT >>>
11:05:20.794 -> [WiFiEsp] No tag found
11:05:20.830 -> WiFi shield not present
В учебнике указано, что он использует «щит ESP WiFi», но я использую только карту ESP8266 — может ли это быть частью проблемы? Если это проблема, есть ли какие-нибудь простые руководства о том, как подключить Arduino Uno к Интернету для чтения информации? Меня расстраивает отсутствие хорошей документации, и я был бы очень признателен за помощь.
@garson, 👍2
Обсуждение1 ответ
Лучший ответ:
Это означает, что ваш ESP8266 не обнаружен
Поскольку вы подключаете RX и TX (6 и 7) к вторичному контакту. Используйте стандартный вывод RX TX для решения проблемы
- Как подключить Wi-Fi Shield ESP-12E-ESP8266-UART-WIFI-Wireless-Shield к Arduino
- Как подключить ESP8266 с помощью адаптера ESP-01 к Arduino Uno?
- Как установить связь между веб-камерой и Arduino UNO и получать прямую трансляцию на мобильном телефоне с помощью ESP8266?
- ESP8266 - Один сервер, отправляющий данные нескольким клиентам
- Могу ли я использовать выход 3,3 В Arduino напрямую к esp8266?
- Чтение данных из Google Таблиц с помощью Nodemcu
- Сервер Esp8266 недоступен. Порт не открывается
- Использование ESP8266-01 с Arduino uno R3
Это не учебник. Это библиотека. Какой код вы на самом деле используете? И как именно вы подключили свой ESP-01?, @Majenko
Спасибо, я обновил публикацию, чтобы включить эту информацию, @garson
Итак... вы подключили ESP-01 к контактам 0 и 1, а не к контактам 6 и 7, как указано в вашем скетче?, @Majenko
О, извините, нет, это было неправильно, я подключил к 6 и 7, @garson
Существует несколько различных версий прошивки AT для ESP-01. И все они используют разные скорости передачи данных. Вполне может быть, что у вас он со скоростью 115200 бод, а не 9600 бод. 115200 бод плохо работает с SoftwareSerial, поэтому вам придется изменить скорость передачи на ESP-01 на 9600 — однако то, как вы это сделаете, зависит от версии прошивки, а некоторые версии, как известно, совершают самоубийство при попытке изменение скорости передачи данных. Вы должны подтвердить скорость передачи данных, подключив ESP-01 напрямую к компьютеру с помощью адаптера USB-UART., @Majenko
Хорошо, да, я думаю, что мой ESP 115200. Я смог полностью пройти этот урок, и он использует 115200: http://www.teomaragakis.com/hardware/electronics/how-to-connect-an-esp8266-to -ан-ардуино-уно/. Это так расстраивает, лол., @garson