Продолжаю получать удовольствие от дивайсов, делюсь впечатлениями:
1. Отлично работают с пятивольтовыми логическими уровнями, гонял сутками, проблем нет.
2. Весьма чувствительны на прием, уровень передаваемого сигнала достаточно высок. Две Ардуины с подключенными ESP принесены на выходные домой и включены в самых дальних углах квартиры. С подключением к роутеру проблем нет, 100% пакетов передаются и принимаются (обмен делаю через UDP на 192.168.0.255, на работе даже 192.168.255.255, бродкастит без проблем).
3. Нетребовательны к качеству питания, пробовал с несколькими китайскими нонейм зарядными устройствами (естественно, через преобразователь 5В-3,3В), проблем нет.
Стоит уточнить с каким видом esp проводили тесты. esp-01 ?? Все же есть отличие, например варианты с керамической антенной более дальнобойнее,чем с антенной из дорожки.
Решил перевести свои устройства с NRF24 на ESP8266 версии ESP-07.
Пришли сегодня из Китая. Попробывал подключить их как ESP-01( питание и ch_pd на 3.3 v, gnd на gnd, rx на tx, tx на rx). В качестве arduino используется pro micro.
Перепробывал многие скетчи и готовые библиотеки, но реакции ноль. не из серил порта ни из терминала реакции на AT комманды нет.
Может кто уже пробывал с ними работать? Может есть какие-то отличия в подключении от версии ESP-01? На сайте esp8266.ru находил упоминания о том, что нужно еще и GPIO некотрые подключать, но пока не пробывал. Перспективы модуля впечетляют, хотелось бы ими воспользоваться.
Можно попробывать и без arduino, но очень не охото переписывать скетчи на порядка 20 различных устройчтв. Это только в перспективе))
Кстати, может кому-то и хватит перепрошитого ESP8266 без ардуино, например такой вариант. В ближайшее время будет опубликована прошивка с кучей возможностей. Подключение лсд экрана. 2 датчиков дхт22,ds18b20, bmp180 - все настраивается в веб морде.
кстати еще вопрос на тему подключения. попадалась информация что питание на пин ch_pd нужно подавать после подачи питания на модуль. Даже в одной билиотеке этому пину был присвоен отдельный пин на arduino(ну и собственно к нему и был подключен) и на него, как раз, и подавался HIGH при подключении. В вашем варианте подключения ch_pd замыкается на 3.3 v?
Кстати, может кому-то и хватит перепрошитого ESP8266 без ардуино, например такой вариант. В ближайшее время будет опубликована прошивка с кучей возможностей. Подключение лсд экрана. 2 датчиков дхт22,ds18b20, bmp180 - все настраивается в веб морде.
Это очень заманчивая прошивка, только мне не хотелось бы завязываться на внешний сайт. Кроме того, там, по слухам, с датчиком DS18B20 пока не все гладко в районе нуля и минусовых температур.
Кстати, в статье хорошо бы сразу указать номиналы резисторов подтяжки для CH_PD и GPIO15.
Кстати, может кому-то и хватит перепрошитого ESP8266 без ардуино, например такой вариант. В ближайшее время будет опубликована прошивка с кучей возможностей. Подключение лсд экрана. 2 датчиков дхт22,ds18b20, bmp180 - все настраивается в веб морде.
Это очень заманчивая прошивка, только мне не хотелось бы завязываться на внешний сайт. Кроме того, там, по слухам, с датчиком DS18B20 пока не все гладко в районе нуля и минусовых температур.
Кстати, в статье хорошо бы сразу указать номиналы резисторов подтяжки для CH_PD и GPIO15.
На внешний сайт можно и не завязыватся, в последней прошивке опция отправки данных на narodmon отключаема.
Всмысле, какие могут быть проблемы с DS18B20 и отрицательными температурами ? Этот датчик работает с ними и соотвественно с любым м/к в том числе и ESP8266..
CH_PD и GPIO15 можно напрямую садить на плюс и минус соотвественно..
NE_XT пишет:
MaksMs, можете ли к своей прошивке прикрутить такой дисплей SSD1306 (0.96" I2C IIC SPI Serial 128X64),
также просьба делать прошивку одним файлом.
Я с удовольствием потестирую, хотя остановился на NodeMCU, скоро это фантастика будет.
Прикрутить можно, при наличии примера реализации на другом м/к и желательно наличии такого экрана.
Ну если сеть появилась, значит модуль работает, и тут проблема уже в подключении UART-USB переходника, может RX TX перепутаны ? Или ещё какие проблемы с переходником..
С ТХ и RX все нормально-перепроверил. Я подключаю модуль к arduino pro micro, а все примеры в сети с arduino uno. Может здесь есть какие-то тонкости. У этих плат 2 сериал порта Serial(для USB) и Serial1(ТХ и RX).
да для начала просто потыркать его AT командами. потом уже заливать скетчи.
Я на youtube видел ролик(русский) с подключением модуля к arduine(правда uno и модуль был версии esp-01). В нем команды отправлялись прямо в serial и ответы собственно выводились туда.
видимо с leonardo(pro micro) так не получится.
в таком случае, так понимаю, подключится к существующей сети можно только через скетч.
Нарыл в нете библиотеку ESP8266_TCP.
пробую ее тестовый пример с подключением к сети:
/*
*
* Once connect to target Access Point
*
*/
#include <ESP8266_TCP.h>
// ESP8266 Class
ESP8266_TCP wifi;
// Target Access Point
#define ssid "Smart"
#define pass "12345678"
// Connect this pin to CH_PD pin on ESP8266
#define PIN_RESET 6
void setup()
{
delay(3000);
// We use Serial1 to interface with ESP8266
// and use Serial to debugging
Serial.begin(9600);
Serial1.begin(115200);
wifi.begin(&Serial1, &Serial, PIN_RESET);
/* If your board has only 1 serial port
* or you didn't need to debugging, try this.
*
* Serial.begin(115200);
* wifi.begin(&Serial, PIN_RESET);
*
*/
// Check that ESP8266 is available
if(wifi.test())
{
// Connect to Access Point
wifi.connectAccessPoint(ssid, pass);
}
else
{
// ESP8266 isn't available
Serial.println("Check module connection and restart to try again...");
}
}
void loop()
{
}
но устройства не видно в списках устройств роутера.
Если не сложно можите скинуть какой-нибудь скетч с конектом к сети.
Да там что угодно может быть. у меня один на 115200 выдавал китайские краказябры на остальных вообще мусор. что там была за прошивка фиг его знает. После перепрошивки все заработало.
Залейте этот код и пробуйте вводить команды в терминале.
void setup() {
// initialize both serial ports:
Serial.begin(9600);
Serial1.begin(9600);
}
void loop() {
// read from port 1, send to port 0:
if (Serial1.available()) {
int inByte = Serial1.read();
Serial.write(inByte);
}
// read from port 0, send to port 1:
if (Serial.available()) {
int inByte = Serial.read();
Serial1.write(inByte);
}
}
Чёт не пойму. Со стоковой прошивкой можно в качестве модуля WiFi с ардуино использовать? Как сделать, чтоб отправив GET запрос с параметром на адрес модуля в Serial ардуино прошла команда?
Или со стоковой не прокатит, нужно что-то ставить?
Сервер поднимается на Ардуине в данном случае. Можно поднять и на железяке, но это сложнее будет. Данная выше ссылка на готовый скетч с сервером ничего не прояснила ? Можно нагуглить еще немало подобных решений..
Имеется web-сервер apache+mysql+php. Имеется несколько arduino с этими wifi модулями и другими датчиками/ устройствами. Wifi сеть построена на базе роутера. Часть с отправкой данных на web-сервер с arduin по wifi отработана. Кому интересно вот код:
#include <dht.h>
#define SSID "SmartHome" //имя сети
#define PASS "12345678" //пароль
#define DST_IP "192.168.0.10" //ip web сервера
const String id="t02"; // id устройства
#define DHTPIN 2 // номер пина, к которому подключен датчик температуры
#define DHTTYPE DHT22 // тип датчика температуры DHT 22 (AM2302)
DHT dht(DHTPIN, DHTTYPE);//инициализация датчика
static unsigned long time_fade;
String ip = ""; //переменная для хранения ip устройства
char character;
int hardReset = 6; // пин arduino? на котором весит ch_pd
boolean connected=false;
void setup()
{
dht.begin();
pinMode(hardReset, OUTPUT);
Serial.begin(9600);
Serial.setTimeout(5000);
Serial1.begin(9600);
Serial1.setTimeout(5000);
digitalWrite(hardReset, LOW);
delay(100);
digitalWrite(hardReset, HIGH);
delay(5000);
for(int i=0;i<5;i++)
{
if(connectWiFi())
{
connected = true;
break;
}
}
if (!connected){
while(1);
}
delay(5000);
Serial1.println("AT+CIPMUX=0");
}
void loop()
{
/*имитация сбора показаний*/
if(millis()>time_fade)
{
String h = floatToString(dht.readHumidity(),2);
String t = floatToString(dht.readTemperature(),2);
String val = t+"_"+h;
if(sendMSG(id,val,false))
{
Serial.println("SEND: YES");
}
else
{
Serial.println("SEND: NO");
}
time_fade=millis()+10000;
}
}
/*функция отправки сообщения web-серверу*/
boolean sendMSG(String modul_id,String value,boolean startMSG)
{
String msg= "GET /ajax/arduino_read.php?act=";
if(startMSG)
{
msg+="new_w&id=";
}
else
{
msg+="s_t_h&id=";
}
msg+= modul_id;
msg+= "&val=";
msg+= value;
msg+= " HTTP/1.1\r\nHost: ";
msg+= DST_IP;
msg+= ":80\r\n\r\n";
Serial1.print("AT+CIPSEND=");
Serial1.println(msg.length());
Serial.println("Senting MSG");
if (Serial1.find(">"))
{
Serial.print("MSG text: ");
Serial.println(msg);
Serial1.print(msg);
Serial1.flush();
}
if(Serial1.find("SEND OK"))
{
return true;
}
else
{
return false;
}
}
/*функция конекта к wifi сети*/
boolean connectWiFi()
{
Serial1.println("AT+CWMODE=1");
String cmd="AT+CWJAP=\"";
cmd+=SSID;
cmd+="\",\"";
cmd+=PASS;
cmd+="\"";
Serial.print("Connecting to ");
Serial.println(SSID);
Serial1.println(cmd);
delay(2000);
if(Serial1.find("OK"))
{
Serial.println("OK, Connected to WiFi.");
Serial1.println("AT+CIFSR");
Serial1.flush();
delay(1000);
while(Serial1.available())
{
character = Serial1.read();
if(character=='.' || character>='0' && character<='9')
ip.concat(character);
}
if(ip != "")
{
Serial.print("IP Address of ESP8266: ");
Serial.println(ip);
}
///включаем режим приема/передачи
Serial1.println("AT+CIPMODE=0");
String cmd = "AT+CIPSTART=\"TCP\",\"";
cmd += DST_IP;
cmd += "\",80";
Serial1.println(cmd);
Serial.print("Connecting to WebServer ");
Serial.println(DST_IP);
Serial1.flush();
delay(1000);
if(Serial1.find("OK"))
{
Serial.print("OK, Connected to WebServer ");
Serial.println(DST_IP);
String msg= "temp_";
msg+= ip;
//отправляем информацию об устройстве при его старте
if(sendMSG(id,msg,true))
{
Serial.println("Startup info was send");
return true;
}
else
{
Serial.println("Startup info was not send");
return false;
}
delay(1000);
}
else
{
Serial.print("Can not connect to WebServer ");
Serial.println(DST_IP);
return false;
}
}
else
{
Serial.println("Can not connect to the WiFi.");
return false;
}
}
String floatToString(float value, byte precision)
{
int intVal = int(value);
unsigned int frac;
if(intVal >= 0)
{
frac = (value - intVal) * precision;
}
else
{
frac = (intVal - value) * precision;
}
return String(intVal) + "." + String(frac);
}
Вопрос в том как можно отработать обратную связь: делать запрос из php устройсту, чтобы то запустило какой-то набор действий на arduino? Или это только путем поднятия web-сервера на arduino?
Вот уже испробовано http://geektimes.ru/post/242366/
https://github.com/Karang/Ardunet порт arduino.
Прикольно, но имеются куча недоделок и ошибки судя по коду.. Вообще я бы для переопределения функций использовал бы #define
Продолжаю получать удовольствие от дивайсов, делюсь впечатлениями:
1. Отлично работают с пятивольтовыми логическими уровнями, гонял сутками, проблем нет.
2. Весьма чувствительны на прием, уровень передаваемого сигнала достаточно высок. Две Ардуины с подключенными ESP принесены на выходные домой и включены в самых дальних углах квартиры. С подключением к роутеру проблем нет, 100% пакетов передаются и принимаются (обмен делаю через UDP на 192.168.0.255, на работе даже 192.168.255.255, бродкастит без проблем).
3. Нетребовательны к качеству питания, пробовал с несколькими китайскими нонейм зарядными устройствами (естественно, через преобразователь 5В-3,3В), проблем нет.
Стоит уточнить с каким видом esp проводили тесты. esp-01 ?? Все же есть отличие, например варианты с керамической антенной более дальнобойнее,чем с антенной из дорожки.
Уточняю, ESP-01, как раз сомнения насчет антенны были.
Заказал себе пару ESP8266 Esp-08 - там, судя по картинке, GPIO побольше.
Заказал себе пару ESP8266 Esp-08 - там, судя по картинке, GPIO побольше.
так у неё антенны нет, лучше уж ESP-07
так у неё антенны нет, лучше уж ESP-07
Возможно, приедет - посмотрим. В любом случае, на какое-то расстояние работать - должна, а 100 метров мне точно пока не требуется. :)
Добрый всем вечер.
Решил перевести свои устройства с NRF24 на ESP8266 версии ESP-07.
Пришли сегодня из Китая. Попробывал подключить их как ESP-01( питание и ch_pd на 3.3 v, gnd на gnd, rx на tx, tx на rx). В качестве arduino используется pro micro.
Перепробывал многие скетчи и готовые библиотеки, но реакции ноль. не из серил порта ни из терминала реакции на AT комманды нет.
Может кто уже пробывал с ними работать? Может есть какие-то отличия в подключении от версии ESP-01? На сайте esp8266.ru находил упоминания о том, что нужно еще и GPIO некотрые подключать, но пока не пробывал. Перспективы модуля впечетляют, хотелось бы ими воспользоваться.
Можно попробывать и без arduino, но очень не охото переписывать скетчи на порядка 20 различных устройчтв. Это только в перспективе))
GPIO15 ещё на минус надо
GPIO15 ещё на минус надо
Спасибо. Попробую.
Кстати, может кому-то и хватит перепрошитого ESP8266 без ардуино, например такой вариант. В ближайшее время будет опубликована прошивка с кучей возможностей. Подключение лсд экрана. 2 датчиков дхт22,ds18b20, bmp180 - все настраивается в веб морде.
GPIO15 ещё на минус надо
кстати еще вопрос на тему подключения. попадалась информация что питание на пин ch_pd нужно подавать после подачи питания на модуль. Даже в одной билиотеке этому пину был присвоен отдельный пин на arduino(ну и собственно к нему и был подключен) и на него, как раз, и подавался HIGH при подключении. В вашем варианте подключения ch_pd замыкается на 3.3 v?
Может подскажите где об этом можно почитать?
CH_PD - это отключения питания пин, я его использую как ресет для перевода модуля в режим прошивки.
Кстати, может кому-то и хватит перепрошитого ESP8266 без ардуино, например такой вариант. В ближайшее время будет опубликована прошивка с кучей возможностей. Подключение лсд экрана. 2 датчиков дхт22,ds18b20, bmp180 - все настраивается в веб морде.
Это очень заманчивая прошивка, только мне не хотелось бы завязываться на внешний сайт. Кроме того, там, по слухам, с датчиком DS18B20 пока не все гладко в районе нуля и минусовых температур.
Кстати, в статье хорошо бы сразу указать номиналы резисторов подтяжки для CH_PD и GPIO15.
Кстати, может кому-то и хватит перепрошитого ESP8266 без ардуино, например такой вариант. В ближайшее время будет опубликована прошивка с кучей возможностей. Подключение лсд экрана. 2 датчиков дхт22,ds18b20, bmp180 - все настраивается в веб морде.
интересно!
Это очень заманчивая прошивка, только мне не хотелось бы завязываться на внешний сайт. Кроме того, там, по слухам, с датчиком DS18B20 пока не все гладко в районе нуля и минусовых температур.
Кстати, в статье хорошо бы сразу указать номиналы резисторов подтяжки для CH_PD и GPIO15.
На внешний сайт можно и не завязыватся, в последней прошивке опция отправки данных на narodmon отключаема.
Всмысле, какие могут быть проблемы с DS18B20 и отрицательными температурами ? Этот датчик работает с ними и соотвественно с любым м/к в том числе и ESP8266..
CH_PD и GPIO15 можно напрямую садить на плюс и минус соотвественно..
Прикрутить можно, при наличии примера реализации на другом м/к и желательно наличии такого экрана.
Сегодня планирую опубликовать новую прошивку.
GPIO15 ещё на минус надо
Спасибо. Попробую.
Попробывал. Реакции на AT команды как не было так и нет. Правда в списке wifi сетей появилась новая сеть.
Т.е. модуль работает в режиме сервера. Есть еще какие-нибудь сооброжения по этому поводу?
Ну если сеть появилась, значит модуль работает, и тут проблема уже в подключении UART-USB переходника, может RX TX перепутаны ? Или ещё какие проблемы с переходником..
С ТХ и RX все нормально-перепроверил. Я подключаю модуль к arduino pro micro, а все примеры в сети с arduino uno. Может здесь есть какие-то тонкости. У этих плат 2 сериал порта Serial(для USB) и Serial1(ТХ и RX).
А что требуется-то ? Если поотправлять АТ команды с компа, то надо напрямую к UART-USB переходнику подключатся.
да для начала просто потыркать его AT командами. потом уже заливать скетчи.
Я на youtube видел ролик(русский) с подключением модуля к arduine(правда uno и модуль был версии esp-01). В нем команды отправлялись прямо в serial и ответы собственно выводились туда.
видимо с leonardo(pro micro) так не получится.
в таком случае, так понимаю, подключится к существующей сети можно только через скетч.
Нарыл в нете библиотеку ESP8266_TCP.
пробую ее тестовый пример с подключением к сети:
но устройства не видно в списках устройств роутера.
Если не сложно можите скинуть какой-нибудь скетч с конектом к сети.
Не держал в руках leonardo, по там да, похоже так не получится.. Я вообще мало мучал модуль с ардуинкой..
Поставте прямую передачю из порта в порт и посмотрите в терменале что выдается.
Поставте прямую передачю из порта в порт и посмотрите в терменале что выдается.
Можно поподробнее что вы имеете в виду - не допонял. из Serial в Serial1?
Да, и обратно. Сперва проверте работу замкнув RX и TX.
Да, и обратно. Сперва проверте работу замкнув RX и TX.
Попробовал вот такой скетч(как раз оба порта задействованы), повесив пин CH_PD модуля на 6 пин платы:
В итоге 5 неудачных попыток соединиться. Т.е. плата вообще ничего не находит в Serial1.
Получается дело не в модуле а в особенностях leonardo.
Кто-нибудь пробывал подключать этот wifi модуль (любой версии) к arduino leonardo???
Я, возможно, невнимательно читал посты, но все же спрошу, а Serial1.begin(57600) и Serial1.begin(9600) пробовали ?
Я, возможно, невнимательно читал посты, но все же спрошу, а Serial1.begin(57600) и Serial1.begin(9600) пробовали ?
Да,кстати, модули с новой прошивкой идут уже на установленной по умолчанию скорости 9600 !
В примерах есть MultiSerialMega. загрузите его и посмотрите что выдает в терминале после перезагрузки модуля. Пробуйте разные скорости.
Да там что угодно может быть. у меня один на 115200 выдавал китайские краказябры на остальных вообще мусор. что там была за прошивка фиг его знает. После перепрошивки все заработало.
Я, возможно, невнимательно читал посты, но все же спрошу, а Serial1.begin(57600) и Serial1.begin(9600) пробовали ?
на скорости 9600 возвращает тоже AT
на скорости 57600 возврящает à
на скорости 115200 ничего не возвращает
Видимо действительно модули с новой прошивкой идут уже на установленной по умолчанию скорости 9600 !
т.е. uart мост между модулем и платой работает. Но почему плата не реагирует никак на AT команды.
Есть у кого еще какие-нибудь мысли на этот счет???
А если консоли поставить тычку символы окончания строки ?
А если консоли поставить тычку символы окончания строки ?
это как - что-то я не понял?)
Ну например у терминала ардуино иде есть внизу выбор символов окончания строки..
Залейте этот код и пробуйте вводить команды в терминале.
еще раз попробывал скетч
только теперь скорость выставил для serial1 9600.
Модуль пусть не спервой попытки подключился к сети.
В DHCP таблице устройств он отразился с именем *.
Теперь интересно понять почему модуль не отвечает на команду AT в предыдущем скетче.
предылущий мой скетч тоже заработал.
после того как я в начале добавил условие на пин платы ch_pd. а именно:
т.е. получается чтобы модуль корректно работал, необходимо на этот пин в начале подать LOW а затем HIGH(сделать hardreset).
Все заработало. Всем спасибо кто помог решении проблемы. Отдельное спасибо MaksMS за: "GPIO15 ещё на минус надо"
Теперь буду пробовать отсылать и принимать данные.
У меня в работающих скетчах не ESPSerial.print("AT");, а ESPSerial.println("AT");
А вот еще вариант скетча для "игр" с терминалом:
Это если прошивка на 9600 работает. Softserial на 115200 не тянет вроде.
Нет, не тянет. В большинстве случаев максимум 19200.
Пришли несколько разных. Стоковая прошивка 0018000902, скорость по дефолту 9600.
Чёт не пойму. Со стоковой прошивкой можно в качестве модуля WiFi с ардуино использовать? Как сделать, чтоб отправив GET запрос с параметром на адрес модуля в Serial ардуино прошла команда?
Или со стоковой не прокатит, нужно что-то ставить?
Как сделать, чтоб отправив GET запрос с параметром на адрес модуля в Serial ардуино прошла команда?
Прошивка вполне подойдет. Поднимите веб-сервер, принимайте запросы, выполняйте команды. Например, так: https://gist.github.com/prasertsakd/5c5deb80e37344250cc1
Поднимите веб-сервер, принимайте запросы, выполняйте команды.
А веб сервер со стандартной прошивкой как поднять на этой железке?
Сервер поднимается на Ардуине в данном случае. Можно поднять и на железяке, но это сложнее будет. Данная выше ссылка на готовый скетч с сервером ничего не прояснила ? Можно нагуглить еще немало подобных решений..
Как сделать, чтоб отправив GET запрос с параметром на адрес модуля в Serial ардуино прошла команда?
Прошивка вполне подойдет. Поднимите веб-сервер, принимайте запросы, выполняйте команды. Например, так: https://gist.github.com/prasertsakd/5c5deb80e37344250cc1
Вопрос наверно очень похожий но все же.
Имеется web-сервер apache+mysql+php. Имеется несколько arduino с этими wifi модулями и другими датчиками/ устройствами. Wifi сеть построена на базе роутера. Часть с отправкой данных на web-сервер с arduin по wifi отработана. Кому интересно вот код:
Вопрос в том как можно отработать обратную связь: делать запрос из php устройсту, чтобы то запустило какой-то набор действий на arduino? Или это только путем поднятия web-сервера на arduino?