Является ли команда AT единственным способом подключения Arduino к esp2866?

Если я программирую Arduino и хочу общаться с Интернетом через esp2866, то могу ли я сделать только AT-команду?

Я часто вижу это в Интернете

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,">");
 esp8266.println(getData);delay(1500);countTrueCommand++;
 sendCommand("AT+CIPCLOSE=0",5,"OK");
}

Если я установлю свою плату -> Arduino Uno, я подумал, что могу использовать следующую библиотеку https://arduino-esp8266. readthedocs.io/en/2.7.4_a/esp8266wifi/readme.html

#include <ESP8266WiFi.h>
 
const char* ssid     = "my-ssid";
const char* password = "my-password";
 

void setup() {
  Serial.begin(115200);
  // Начнем с подключения к сети WiFi
 
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);
  
  WiFi.begin(ssid, password);
  
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

Но я получаю

exit status 1
ESP8266WiFi.h: No such file or directory

Похоже, следующая библиотека доступна только при установке параметра Board-> Общий модуль ESP8266 и используется только тогда, когда вы хотите запрограммировать ESP8266 в Arduino IDE? Это правильно?

Итак, в моем вопросе означает ли это, что для связи с Arduino в Интернете я буду отправлять AT-команду и общаться через SoftwareSerial.h?

, 👍-1

Обсуждение

вы можете использовать библиотеку, которая имеет хороший стандартный сетевой интерфейс Arduino поверх AT-команд. Библиотека WiFiEsp для старой прошивки AT или мой WiFiEspAT для AT 1.7+ https://github.com/jandrassy/WiFiEspAT, @Juraj


1 ответ


Лучший ответ:

2

Я могу сделать только AT-команду?

Нет. AT-команды предоставляются прошивкой AT-команд. Вы можете заменить эту прошивку чем угодно.

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

Во многих случаях вам даже не нужна Arduino, так как ESP8266 может все (у него проблемы с аналоговыми сигналами, так как есть только один слабый вывод АЦП).

Похоже, следующая библиотека доступна только при установке параметра Board-> Общий модуль ESP8266 и используется только тогда, когда вы хотите запрограммировать ESP8266 в Arduino IDE? Это правильно?

Верно. Это на тот случай, если вы пишете собственную прошивку ESP8266 для замены прошивки AT.

Итак, в моем вопросе означает ли это, что для связи с Arduino в Интернете я буду отправлять AT-команду и общаться через SoftwareSerial.h?

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

,

Большое спасибо. Да вот тут я сильно запутался. Я вижу много результатов поиска Google, подобных этому https://www.instructables.com/id/Using-ESP-01-and-Arduino-UNO/. и похоже, что он передает только AT-команды в ESP2866. Я изучаю это сейчас, поэтому я не могу удалить Arduino из уравнения. Но чтобы удовлетворить мое любопытство, если я не заменю прошивку AT, я смогу использовать только AT-команды, верно?, @Mark Estrada

Также еще один вопрос, пожалуйста, я перешел по следующей ссылке https://learn.adafruit.com/adafruit-huzzah-esp8266-breakout/using-arduino-ide и смог заставить ее работать, но мой ESP8266 не от Adafruit. Я заметил, что после этого AT-команды перестают работать. Значит ли это, что у меня сейчас прошивка https://arduino-esp8266.readthedocs.io/en/2.7.4_a/esp8266wifi/readme.html? Я немного запутался в этой части. Я установил плату ESP в режим начальной загрузки, а затем загрузил flash. После этого мои AT-команды перестают работать, когда я использовал последовательный монитор., @Mark Estrada

AT-прошивка отвечает только на AT-команды. Вот что это такое и что он делает. Если вы хотите использовать что-либо кроме AT-команд, вам придется заменить прошивку AT на прошивку, которая отвечает на команды, которые вы хотите отправить., @Majenko

Да, вы заменили прошивку АТ на свою (адафрутовскую) кастомную прошивку. Вы успешно запрограммировали ESP8266 напрямую., @Majenko

О, хорошо, вот почему он больше не отвечает на мои AT-команды. Только одну последнюю вещь, пожалуйста. Если я сохраню текущую настройку с Arduino и пользовательскую прошивку из https://arduino-esp8266.readthedocs.io/en/2.7.4_a/esp8266wifi/readme.html в своем ESP 8266. Тогда как я могу подключиться через Интернет из моего кода Arduino, так как команда AT больше недоступна. Я не мог найти никаких ссылок Google, чтобы сделать это. Я всегда вижу AT-команды. Я провел 2 дня, читая эту тему для своего проекта. Спасибо вам большое за ваше время., @Mark Estrada

Вы пишете свое собственное программное обеспечение для ESP8266, которое принимает команды через последовательный порт (который вы определяете) и выполняет действия в соответствии с этими командами., @Majenko

Оооооооооооооооооооооооооооооооооооо как логика такая. Я программирую ряд функций в моем ESP-8266, таких как connectToWifi() и в моей функции loop(), которую я наблюдал за сообщениями от Serial. Все сообщения, которые я когда-либо получал от серийного номера, соответствуют функции, которую я буду вызывать. Затем я записываю эти программы в свой ESP. Я возвращаюсь к Arduino, устанавливаю плату на Arduino Uno, и в моем цикле я буду последовательно отправлять сообщение, например connectToWifi(), и мой ESP получит его, вызовет соответствующую функцию и также последовательно вернет его обратно в Arduino Uno. Это шаблон?, @Mark Estrada

Я потратил на это уже два дня и мне очень не нравятся примеры в использовании AT-команды. Однако нет документации, которую я видел, или я мог набирать неправильные ключи поиска, которые обсуждали бы логику определения ваших пользовательских команд., @Mark Estrada

Да, это идея. У меня есть скетч ESP8266 специально для MQTT, который делает такие вещи: https://github.com/MajenkoProjects/MQTTGateway, @Majenko

Смысл определения собственных пользовательских команд в том, что они *ваши* команды. Вы определяете их так, как хотите, и обрабатываете их так, как хотите. Это просто байты, поступающие по серийному номеру., @Majenko

Это действительно мило, приятель. Я так многому научился у вас всего за несколько минут по сравнению с бесчисленными часами, которые я потратил за последние два дня, пробуя все те AT-команды, которые мне на самом деле не нравятся. Большое спасибо, приятель, @Mark Estrada

https://imgflip.com/i/4cihtl ;), @Majenko

Просто из любопытства, почему я не нашел ни одного гугла из того, что вы выложили. Это действительно может помочь многим начинающим программистам. С моей точки зрения, как у новичка, у меня сложилось впечатление, что ESP8266 похож на любые обычные компоненты с библиотекой, которую вы можете вызвать и добавить в свою Arduino с помощью определенного API, а не этих причудливых AT-команд. Во всяком случае, чем вы очень снова., @Mark Estrada

Существует базовое предположение, что вы знаете, что ESP8266 — это просто микроконтроллер, на котором установлена прошивка, предоставляющая AT-команды. Если вы уже не знаете, что поиск информации в Google не так просто., @Majenko