• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Проблема с поддержкой AT IP команд

Доброго всем дня суток! Есть такой проект: http://www.instructables.com/id/Sen...t-to-Thingspeak-using-an-ESP8266-WiFi-Module/
Если вкратце, данные с датчиков температуры и давления пересылаются на сервер ThingsSpeak. Проблема в том, что автор не указал на какой прошивке он строил свою систему. Перепробовал всяких разных прошивок, и так и не получилось переслать данные. В проекте нужны команды для работы с IP протоколом, и получается так, что в каждой прошивке есть свои нюансы и на 100% совместимости нет.
UPD: закачал прошивку с сайта, кажется 2.2. Прогнал вручную все АТ команды, всё работает. Потом притащил осциллограф и решил заглянуть на уровни ТХ RX. В esp8266 идёт приличный уровень, а вот наоборот 1/4 примерно, т.е. ТХ от модуля слаб, и он не отвечает на команды. Довольно странно, ведь при прошивке всё ок, модуль опрашивается нормально.
 
Последнее редактирование:
Дальнейшая пляска с бубнами показала, ардуино глухой после загрузки скетча проекта. Может ли это быть как-то связанно с работой библиотеки SoftwareSerial? Гружу ардуино с зажатой землёй, сажуть на UART ноги esp8266 и всё летает в терминале. Грузанул скетч-и болт. Как не менял адреса пинов, так и не заработало ничего.
 

tretyakov_sa

Moderator
Команда форума
Дальнейшая пляска с бубнами показала, ардуино глухой после загрузки скетча проекта. Может ли это быть как-то связанно с работой библиотеки SoftwareSerial? Гружу ардуино с зажатой землёй, сажуть на UART ноги esp8266 и всё летает в терминале. Грузанул скетч-и болт. Как не менял адреса пинов, так и не заработало ничего.
Задача какая изначально?
 
Задача очень простая: ардуино, esp8266 и три датчика, по wifi данные уходят в облако.
Описание проекта тут http://www.instructables.com/id/Sen...t-to-Thingspeak-using-an-ESP8266-WiFi-Module/.
Кусочек кода:
[HASHTAG]#include[/HASHTAG] <SoftwareSerial.h>
int sensor_temp = A0;
int value_temp;
int sensor_light = A1;
int value_light;
int sensor_humid = A2;
int value_humid;


[HASHTAG]#define[/HASHTAG] DEBUG FALSE //comment out to remove debug msgs

//*-- Hardware Serial
[HASHTAG]#define[/HASHTAG] _baudrate 9600

//*-- Software Serial
//
[HASHTAG]#define[/HASHTAG] _rxpin 2
[HASHTAG]#define[/HASHTAG] _txpin 3
SoftwareSerial debug( _rxpin, _txpin ); // RX, TX

//*-- IoT Information
[HASHTAG]#define[/HASHTAG] SSID "[YOURSSID]"
[HASHTAG]#define[/HASHTAG] PASS "[YOURPASSWORD]"
[HASHTAG]#define[/HASHTAG] IP "184.106.153.149" // ThingSpeak IP Address: 184.106.153.149

// GET /update?key=[THINGSPEAK_KEY]&field1=[data 1]&field2=[data 2]...;
String GET = "GET /update?key=[ThingSpeak_(Write)API_KEY]";

void setup() {
Serial.begin( _baudrate );
debug.begin( _baudrate );

sendDebug("AT");
delay(5000);
if(Serial.find("OK"))
{
debug.println("RECEIVED: OK\nData ready to sent!");
connectWiFi();
}

Спотыкается на отправке АТ в esp8266, т.е. не получает ответа, и на этом всё циклится.
 

tretyakov_sa

Moderator
Команда форума
Задача очень простая: ардуино, esp8266 и три датчика, по wifi данные уходят в облако.
Описание проекта тут http://www.instructables.com/id/Sen...t-to-Thingspeak-using-an-ESP8266-WiFi-Module/.
Кусочек кода:
[HASHTAG]#include[/HASHTAG] <SoftwareSerial.h>
int sensor_temp = A0;
int value_temp;
int sensor_light = A1;
int value_light;
int sensor_humid = A2;
int value_humid;


[HASHTAG]#define[/HASHTAG] DEBUG FALSE //comment out to remove debug msgs

//*-- Hardware Serial
[HASHTAG]#define[/HASHTAG] _baudrate 9600

//*-- Software Serial
//
[HASHTAG]#define[/HASHTAG] _rxpin 2
[HASHTAG]#define[/HASHTAG] _txpin 3
SoftwareSerial debug( _rxpin, _txpin ); // RX, TX

//*-- IoT Information
[HASHTAG]#define[/HASHTAG] SSID "[YOURSSID]"
[HASHTAG]#define[/HASHTAG] PASS "[YOURPASSWORD]"
[HASHTAG]#define[/HASHTAG] IP "184.106.153.149" // ThingSpeak IP Address: 184.106.153.149

// GET /update?key=[THINGSPEAK_KEY]&field1=[data 1]&field2=[data 2]...;
String GET = "GET /update?key=[ThingSpeak_(Write)API_KEY]";

void setup() {
Serial.begin( _baudrate );
debug.begin( _baudrate );

sendDebug("AT");
delay(5000);
if(Serial.find("OK"))
{
debug.println("RECEIVED: OK\nData ready to sent!");
connectWiFi();
}

Спотыкается на отправке АТ в esp8266, т.е. не получает ответа, и на этом всё циклится.
А без ARDUINO Это сделать нельзя? Три датчика сразу на ноги ESP. Если используешь Software Serial на ногах 2 и 3, поставь резисторы Нога Arduino -> резистор 1 кОм -> нога ESP8266.
Да и еще посмотрел на схему непонятно зачем там на 5 ноге 1 Ком на землю? У тебя модуль ESP какой?
 
Последнее редактирование:
А без ARDUINO Это сделать нельзя? Три датчика сразу на ноги ESP. Если используешь Software Serial на ногах 2 и 3, поставь резисторы Нога Arduino -> резистор 1 кОм -> нога ESP8266.
Да и еще посмотрел на схему непонятно зачем там на 5 ноге 1 Ком на землю? У тебя модуль ESP какой?
Делитель на резисторах по входу на esp8266 ставил, с Ардуины выход 5 Вольт TTL, в esp8266 3,3 вольта. Но если смотреть даташиты, это не настолько важно. Устойчивая единица и ноль перекрывает уровни в обоих случаях в пределах допуска. У меня версия ESP1, самая простая. В загажнике лежит ESP12, на ней наверное можно будет сделать так, как вы предлагаете.
З.Ы. имхо что-то с библиотекой в коде. Под командами АТ из терминала всё прекрасно работает. Вечером попробую сесть осциллом на ноги Ардуины и померять, есть ли разница в размахе сигнала.
 

tretyakov_sa

Moderator
Команда форума
З.Ы. имхо что-то с библиотекой в коде. Под командами АТ из терминала всё прекрасно работает. Вечером попробую сесть осциллом на ноги Ардуины и померять, есть ли разница в размахе сигнала.
Когда подаешь AT команды с терминала, я так понимаю через ARDUINO с зажатой землей все работает. На какой скорости? Потому как в скетче у тебя #define _baudrate 9600, а обычно для AT команд порт ESP настроен 115200.
 
Когда подаешь AT команды с терминала, я так понимаю через ARDUINO с зажатой землей все работает. На какой скорости? Потому как в скетче у тебя #define _baudrate 9600, а обычно для AT команд порт ESP настроен 115200.
Именно, это больше всего удивительно, что на 115200 Ардуино работает. А на более низкой скорости не хочет. Была где-то прошива, которая эмулирует UART на других ногах, попробую грузануть и из под неё попробовать АТ команды
 
Грузанул код в Ардуину:
[HASHTAG]#include[/HASHTAG] <CyberLib.h>

void setup()
{
D0_In; //Ard RX
D10_Out; //BT RX
D1_Out; //Ard TX
D9_In; //BT TX
}

void loop()
{ Start
if(D0_Read==1)D10_High; else D10_Low;
if(D9_Read==1)D1_High; else D1_Low;
End;
}

Сел на ноги согласно коду. Ардуино выдало такие сообщения:

ets`Jan 8 2013,rst cause:2( boot mode:(3,6)

load 0x40100000, len 1396, room 16
tail 4
chksum 0x89C!л+‘Ѓ0x3ffe8000, len 776, room 4
tail 4
chksum 0xe8
load 0x3ffe8308, len 540, room 4
tail 8
chksum 0xc0
csum 0xc0

2nd boot version : 1.4(b1)
SPI Speed : 40MHz
RPI Mode : QIO
SPI Flash Size & Map: 8Mbit(512KB+512KB)
jump to run user1 @ 1000

„ГХЃMEM CHECK FAIL!!!
d{d‡ѓsр
Ai-Thinker Technology Co. Ltd.

UPD1 Дал команду на снижение скорости, Esp уже нормально отвечает.
 
Последнее редактирование:
Сверху Снизу