#1 2015-12-22 00:37:32

Nefreemen
Учасник
З Киев
Зареєстрований: 2015-12-19
Повідомлень: 716

Arduino и ESP8266. Облачные технологии и системы IoT.

Начну с того что в продаже уже давненько появился ну очень интересный дешевый WiFi модуль ESP8266. Он покорил сердца очень многих ( в том числе и мое ) Arduin'щиков. Что же он имеет: WiFi (Sta, AP, Mesh) + микроконтроллер 80 мГц + 512 кб флеш или 4 мБ в зависимости от модели. На данный момент софтовая поддержка (из того что встречал): язык Lua (NodeMCU), MicroPython, ну и как же без Java (smart - js) и СИ. Почему же он должен быть интересен Ардуинщикам? Дело в том что в Arduino IDE появилась поддержка этого модуля как обычной Arduino платы. То есть пишем или адаптируем свои скетчи и при помощи USB-Serial переходника льем в ESP. Ссылки начну из основного ресурса (русскоязычного хотя есть и английский):

http://esp8266.ru  здесь есть почти все о модуле, в том числе как установить патч в Arduino IDE.

http://homes-smart.ru/index.php/oborudo … arodmon-ru   очень интересный проект "умного модуля" с поддержкой конструктора прошивок (базируется на Ноде, свого рода "лего")

И так, обсуждаем, делимся опытом.

Остання редакція Nefreemen (2015-12-22 00:49:48)

Неактивний

#2 2015-12-22 01:41:59

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

Re: Arduino и ESP8266. Облачные технологии и системы IoT.

как быстро с deep sleep  выходит, кто то проверял?

Неактивний

#3 2015-12-23 09:57:26

Nefreemen
Учасник
З Киев
Зареєстрований: 2015-12-19
Повідомлень: 716

Re: Arduino и ESP8266. Облачные технологии и системы IoT.

Я не проверял, не было необходимости. Но не понял суть вопроса, что значит "как быстро". Это что, Вам нужен ответ точный в долях секунды?

Неактивний

#4 2015-12-23 17:22:32

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

Re: Arduino и ESP8266. Облачные технологии и системы IoT.

Nefreemen,
//------------------------
[add] интересная статья
http://geektimes.ru/post/241842/
//------------------------
посмотрел на модуль, по характеристикам очень неплох, но не понравилось что перед ответом  дает \r\n  нафиг мне лишние 2 байта, ну это ладно
если давать запросы с окончанием \n\r работает ) но что то ему в не нравится )  тоже в целом не проблема.

При возврате в командный режим из  transparent mode ( мост ) на все AT дает ERROR и я не увидел какой командой вернутся в режим передачи  (
хардварный ресет  по pin RST "невнятный" -  это личное,  почему такие выводы не знаю. )))
соединение со стороны сервера закрывает  некорректно 
где то в процедуре
tcpclose.png

косяк ) если кто знает почему не получается  закрыть socet  маякните  плс ))
или есть желание с wireshark развлечься, посмотрите что не так)

что  то я много негатива написал )
на 2015.12.23  впечатления от модуля положительные

Остання редакція NoName (2015-12-23 17:54:39)

Неактивний

#5 2015-12-23 19:43:41

Nefreemen
Учасник
З Киев
Зареєстрований: 2015-12-19
Повідомлень: 716

Re: Arduino и ESP8266. Облачные технологии и системы IoT.

NoName.

Согласен. Есть косяки. Я обнаружил что при старте "дрыгает ногами". По поводу transparent mode, я так понял, что речь идет о AT+SAVETRANSLINK
=<режим>,,<порт> где  режим это соотв. 0 или 1? После возврата в 0 получаем ERROR на АТ? С АТ командами особо не разбирался. Надо попробовать. По поводу HW RST схема есть http://esp8266.ru/esp8266-podkluchenie- … ivki/#full. Но я бы параллельно кнопке установил конденсатор 0.1 мкф .

Неактивний

#6 2015-12-24 16:34:16

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

Re: Arduino и ESP8266. Облачные технологии и системы IoT.

толковый парень, этот Михаил Григорьев
http://programs74.ru
"респект и уважуха"

было
AT version:0.25.0.0(Jun 5 2015 16:27:16)
SDK version:1.1.1
Ai-Thinker Technology Co. Ltd.
Jun 23 2015 23:23:50

стало  )

AT+GMR

00200.9.4
compiled @ Dec 24 2015 14:37:24

Skrinshot-2015-12-24-15_12_05.png

запустил по этому документу:  http://geektimes.ru/post/241842/
с этим SoС гораздо веселее "возюкаться" чем с ардуино )

Остання редакція NoName (2015-12-24 16:34:57)

Неактивний

#7 2015-12-25 16:08:09

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

Re: Arduino и ESP8266. Облачные технологии и системы IoT.

поворчу )

AT+CWJAP    JOIN    [add]
AT+CWLAP    List AP [add] 
AT+CWQAP  Quit AP [add]

[delete]
глаза вылазят  читать такие структуры

  {"+CWJAP", 6, NULL, at_queryCmdCwjap, at_setupCmdCwjap, NULL},
  {"+CWLAP", 6, NULL, NULL, at_setupCmdCwlap, at_exeCmdCwlap},
  {"+CWQAP", 6, at_testCmdCwqap, NULL, NULL, at_exeCmdCwqap},
  {"+CWSAP", 6, NULL, at_queryCmdCwsap, at_setupCmdCwsap, NULL},

кто то созрел сделать свою девайсину на этом модуле?

Остання редакція NoName (2015-12-25 16:26:46)

Неактивний

#8 2015-12-26 19:06:21

Nefreemen
Учасник
З Киев
Зареєстрований: 2015-12-19
Повідомлень: 716

Re: Arduino и ESP8266. Облачные технологии и системы IoT.

Так глубоко не копал. Наверное работать на уровне SDK это круто, но не "дорос", по старинке в Arduino IDE sad . Вот хожу вторые сутки по граблям в библиотеке  PubSubClient и все без толку. Может кто подскажет почему наотрез отказывается работать функция int snprintf(char *restrict buf, size_t num, const char *restrict format, ...) или подобная sprinf() ; они же из "базовых" Си. С форматом %d работает, а подсунуть  %f  float никак sad . Чувствует моя задница что в ESP8266 c float вообще траблы. Где то что то вроде мелькала инфа по этому поводу ( не могу вспомнить ).

Остання редакція Nefreemen (2015-12-26 19:45:15)

Неактивний

#9 2015-12-26 19:42:18

Nefreemen
Учасник
З Киев
Зареєстрований: 2015-12-19
Повідомлень: 716

Re: Arduino и ESP8266. Облачные технологии и системы IoT.

Капец, точно. http://bbs.espressif.com/viewtopic.php?f=7&t=44. Так что, NoName, если что, не наступай на эти грабли, как оказалось это не катит и на уровне SDK функций. У меня вообще тоска, как обойти это в mqtt... Попробую это http://bbs.espressif.com/viewtopic.php?t=246 может прокатит.

Неактивний

#10 2015-12-27 00:07:42

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

Re: Arduino и ESP8266. Облачные технологии и системы IoT.

SDK простой, рекомендую "копнуть",
и вообще для контроллеров лучше использовать  целое с фиксированной точкой   ибо  IEEE 754  "не фонтан", 
самолет когда то  упал из за накопленной ошибки (((

Неактивний

#11 2015-12-27 02:06:20

Nefreemen
Учасник
З Киев
Зареєстрований: 2015-12-19
Повідомлень: 716

Re: Arduino и ESP8266. Облачные технологии и системы IoT.

Да, просмотрел бегло  SDK давненько, хотя и впечатляет, но меня "не вдохновило",  в отличие от Вас  sad . Ситуация как Линуксом  и окнами (каждому свое). Не спорю ничего сложного, но увы, не любитель много стучать по клаве и держать в голове уйму форматов. По поводу целого с фиксированной точкой, еще вчера пробовал %е, аналогично с %f, вообще вещественные не проходят. По ссылке выше "решения" - разбить на целое а дробную часть преобразовать в целое и записать соответственно в буфер - в Arduino IDE не проходит  его пример дает ошибку -  char** to char* big_smile , компиляторы то разные big_smile .Блин, придется копаться в каком формате  это вещественное пишется в буфер, и лепить этот буфер самому sad   roll  .

Неактивний

#12 2015-12-29 12:23:50

Nefreemen
Учасник
З Киев
Зареєстрований: 2015-12-19
Повідомлень: 716

Re: Arduino и ESP8266. Облачные технологии и системы IoT.

Путем анализа первоначального кода ( тип char* buf[] в Arduino IDE совсем не то что имел в виду автор), проблему с функцией записи в буфер float решил. Модифицированный пример решения с http://bbs.espressif.com/viewtopic.php?t=246 работает, но не понятна еще одна вещь в коде автора:

static char* ftoa(float num, uint8_t decimals) {
  // float to string; no float support in esp8266 sdk printf
  // warning: limited to 15 chars & non-reentrant
  // e.g., dont use more than once per os_printf call
  static char* buf[16];                                                                        заменил на  char buf []
  int whole = num;
  int decimal = (num - whole) * power(10, decimals);
  if (decimal < 0) {
    // get rid of sign on decimal portion
    decimal -= 2 * decimal;
  }
  char* pattern[10]; // setup printf pattern for decimal portion              аналогично...
  os_sprintf(pattern, "%%d.%%0%dd", decimals);                              а вот это %dd... никогда не встречал модификатор d к спецификатору d или я не врубаюсь вообще?
  os_sprintf(buf, pattern, whole, decimal);
  return (char *)buf;
}
Кто может ткнуть носом? Хотелось бы разобраться...

Теперь Arduina через Serial шлет данные (и получает) в ESP где работает MQTT клиент, почти удовлетворен  smile .
Кстати, обнаружил DS18B20 врет на 0.5 градуса big_smile .

Неактивний

#13 2015-12-29 14:59:12

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

Re: Arduino и ESP8266. Облачные технологии и системы IoT.

%d.%05d  думаю так, он сначала создал строку pattern,  по которой и выведет  whole и decimal

Неактивний

#14 2015-12-29 15:54:52

Nefreemen
Учасник
З Киев
Зареєстрований: 2015-12-19
Повідомлень: 716

Re: Arduino и ESP8266. Облачные технологии и системы IoT.

NoName пише:

%d.%05d  думаю так, он сначала создал строку pattern,  по которой и выведет  whole и decimal

Алгоритм простой. И его рассматривать не будем. И так, мои мысля такая имеем к примеру float t=37.456.
посылаем (37.456, 2) имеем:
whole = 37
decimals =2
decimal = 45
А вот дальше интересно, что в :
pattern = " %2.%0 и какая то хрень %dd", и как быть с несоответствием количества спецификаций и аргументов? .
дальше по идее (Вашей) whole и decimal в следующем вызове функции залезет в %dd ( а что это такое? ).

Может это и ламерский вопрос, но раньше не было необходимости в изучении функций форматного вывода, вот и ступор.

Но оно зараза таки работает, выводит правильно.

Остання редакція Nefreemen (2015-12-29 15:55:44)

Неактивний

#15 2015-12-29 17:46:35

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

Re: Arduino и ESP8266. Облачные технологии и системы IoT.

decimals =2   будет подготовлена в
pattern  такая строка =  %d.%02d, это просто строка
при
whole = 37
decimal = 45
os_sprintf(buf, pattern, whole, decimal);
os_sprintf(buf, "%d.%02d", whole, decimal);
buf = 37.45

я тоже не использую printf, но логика именно такая pattern - динамическая строка  в зависимости от данных после запятой

Неактивний

#16 2015-12-29 18:21:18

Nefreemen
Учасник
З Киев
Зареєстрований: 2015-12-19
Повідомлень: 716

Re: Arduino и ESP8266. Облачные технологии и системы IoT.

NoName пише:

decimals =2   будет подготовлена в
pattern  такая строка =  %d.%02d, это просто строка
при
whole = 37
decimal = 45
os_sprintf(buf, pattern, whole, decimal);
os_sprintf(buf, "%d.%02d", whole, decimal);
buf = 37.45

я тоже не использую printf, но логика именно такая pattern - динамическая строка  в зависимости от данных после запятой

Спасибо. Вроде теперь понятно, оказывается что объяснение:

"Строка форматирования состоит из элементов двух типов. К элементам первого типа относятся символы, которые выводятся на экран. Элементы второго типа содержат спецификации формата, определяющие способ отображения аргументов. Спецификация формата начинается символом процента, за которым следует код формата. Количество аргументов должно в точности совпадать с количеством спецификаций формата, причем соответствие устанавливается в порядке их следования. Например, при вызове следующей функции printf() на экране будет отображено

"Нi c 10 there!"
printf("Hi %c %d %s", 'c', 10, "there!");
"
Фраза : "... причем соответствие устанавливается в порядке их следования."
Ввела меня в заблуждение, отсюда мое "%2.%0 , то есть в действительности получается порядок заполнения "арабский" big_smile . И отсюда непонимание %dd.  А я искал в инете что за модификатор такой d к спецификатору d, капец lol . Еще раз спасибо.

Остання редакція Nefreemen (2015-12-29 18:25:09)

Неактивний

#17 2015-12-29 18:58:56

Nefreemen
Учасник
З Киев
Зареєстрований: 2015-12-19
Повідомлень: 716

Re: Arduino и ESP8266. Облачные технологии и системы IoT.

Все въехал...По "арабски" я понял  lol . В первой функции только только один спецификатор  big_smile!, тот который с одним %. Полвека живи а все равно учись...

Неактивний

#18 2016-01-12 21:20:08

Solaris
Учасник
З Львов
Зареєстрований: 2015-08-08
Повідомлень: 13
Сайт

Re: Arduino и ESP8266. Облачные технологии и системы IoT.

Хочу оживить ветку, имхо только забрал ESP8266 с почты. Прежде чем курить хабр и иже с ним хочу задать вводный вопрос экспертам: я смогу с этим чудом организовать общение между смартфоном (приложение на андрюхе) и ардуиной как здесь http://esp8266.ru/ без роутера, только как клиент-сервер? Предварительно начитался про какие-то mqtt сервера и ничего не понял, так как пока на любительском уровне.

И хочу узнать ваше мнение по поводу этой библиотеки https://github.com/esp8266/Arduino

Остання редакція Solaris (2016-01-12 21:20:59)

Неактивний

#19 2016-01-12 23:35:13

Йожэг
Учасник
Зареєстрований: 2015-12-30
Повідомлень: 97

Re: Arduino и ESP8266. Облачные технологии и системы IoT.

Можно ли обойтись без роутера? Можно, если железяка сама притворится роутером точкой доступа: http://www.esp8266.com/viewtopic.php?f=6&t=299&start=0

Неактивний

#20 2016-01-13 21:02:33

Solaris
Учасник
З Львов
Зареєстрований: 2015-08-08
Повідомлень: 13
Сайт

Re: Arduino и ESP8266. Облачные технологии и системы IoT.

Йожэг пише:

Можно ли обойтись без роутера? Можно, если железяка сама притворится роутером точкой доступа: http://www.esp8266.com/viewtopic.php?f=6&t=299&start=0

Спасибо, я так и думал. Вопрос в "языке общения", но это уже другая история.

Неактивний

#21 2016-01-15 00:37:16

Solaris
Учасник
З Львов
Зареєстрований: 2015-08-08
Повідомлень: 13
Сайт

Re: Arduino и ESP8266. Облачные технологии и системы IoT.

Прошу помощи в решении экзистенциального вопроса по незнанию.

Подключил модуль как шилд на rx1,tx1. Питание ESP --> VCC 3.3 V платы, GND ESP - GND, CH_PD pull-up к VCC 3.3 V платы, тоже самое касается свободных GPO0 и GPO2. В общем, все как доктор прописал. Залил скетч для общения по хардвару и успешно поговорил с ESP через терминал, все ок.

Далее, скачал библиотеку Blynk от наших земляков и залил ее, чтобы мигать светодиодом. Все успешно подключилось: Приложение и ESP входят в контакт через домашний wi-fi. Это видно по мигающему синему светодиоду, когда тапаю по кнопке в блинке.
Светодиод повесил сначала через резистор на землю и он сразу загорелся. Проверил уровни мультиметром и обнаружил, что ESP сходу подает 3.3 В и на GPO0 и на GPO2.

Команды отправляются, но независимо от прошивки и приложения там всегда 3.3 В, и никакого переключения.

Затем погуглив, осознал неканоничность подключения к GPO0 и на GPO2 в качестве выходов и сделал все по фен-шую http://www.forward.com.au/pfod/ESP8266/ … index.html - на VCC

Но воз и ныне там. Уровень на GPO0 и на GPO2 вообще не изменяется. Всегда 3.3 В. В чем причина, прошивка старая (не обновлял после покупки), библиотека лажа или кривые руки?

Неактивний

#22 2016-01-16 00:22:10

Nefreemen
Учасник
З Киев
Зареєстрований: 2015-12-19
Повідомлень: 716

Re: Arduino и ESP8266. Облачные технологии и системы IoT.

Solaris. Почему то интуиция подсказывает что проблема не в железе. Возникает вопрос, а Вы уверены что ESP подключается к роутеру?  Вы используете облачный сервер Blynk? С блинком не баловался, попробую ради интереса когда будет время roll. Как раз у меня есть еще одна свободная esp8266- 01 ( остальные уже пристроил  wink ).

Остання редакція Nefreemen (2016-01-16 00:25:00)

Неактивний

#23 2016-01-16 01:13:18

Solaris
Учасник
З Львов
Зареєстрований: 2015-08-08
Повідомлень: 13
Сайт

Re: Arduino и ESP8266. Облачные технологии и системы IoT.

Nefreemen пише:

Solaris. Почему то интуиция подсказывает что проблема не в железе. Возникает вопрос, а Вы уверены что ESP подключается к роутеру?  Вы используете облачный сервер Blynk? С блинком не баловался, попробую ради интереса когда будет время roll. Как раз у меня есть еще одна свободная esp8266- 01 ( остальные уже пристроил  wink ).

Перебрововав все вариации подключения и с ардуиной и напрямую к конвертеру, убедился, что проблема не в железе. Скетч Blynka для шилда - общаются в домашней сети. Есть отдельный скетч Direct Connect, но и с тем вариантом все так же. Так что, роутер здесь не при чем.

/**************************************************************
 * Blynk is a platform with iOS and Android apps to control
 * Arduino, Raspberry Pi and the likes over the Internet.
 * You can easily build graphic interfaces for all your
 * projects by simply dragging and dropping widgets.
 *
 *   Downloads, docs, tutorials: http://www.blynk.cc
 *   Blynk community:            http://community.blynk.cc
 *   Social networks:            http://www.fb.com/blynkapp
 *                               http://twitter.com/blynk_app
 *
 * Blynk library is licensed under MIT license
 * This example code is in public domain.
 *
 **************************************************************
 *
 * This example shows how to use ESP8266 Shield via Hardware Serial
 * (on Mega, Leonardo, Micro...) to connect your project to Blynk.
 *
 * Note: Ensure a stable serial connection to ESP8266!
 *       Firmware version 1.0.0 (AT v0.22) or later is needed.
 *       You can change ESP baud rate. Connect to AT console and call:
 *           AT+UART_DEF=115200,8,1,0,0
 *
 * Change WiFi ssid, pass, and Blynk auth token to run :)
 * Feel free to apply it to any other example. It's simple!
 *
 **************************************************************/
//#define BLYNK_DEBUG
#define BLYNK_PRINT Serial    // Comment this out to disable prints and save space
#include <ESP8266_HardSer.h>
#include <BlynkSimpleShieldEsp8266_HardSer.h>

// Set ESP8266 Serial object
#define EspSerial Serial1

ESP8266 wifi(EspSerial);

// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "a231565937554c59994ba2879195ad4b";

void setup()
{
  // Set console baud rateM
  Serial.begin(115200);
  delay(10);
  // Set ESP8266 baud rate
  EspSerial.begin(115200);
  delay(10);

  Blynk.begin(auth, wifi, "Proxima", "90as9Bmqhdg4");
}

void loop()
{
  Blynk.run();
}

Мои подозрения пали на библиотеку. Пока не нашел ответа.

*По поводу облачного сервера - в блинке он нужен только, если вы хотите получить доступ с внешней сети интернет, так сказать shared access

Остання редакція Solaris (2016-01-16 01:15:29)

Неактивний

#24 2016-01-16 12:01:16

Nefreemen
Учасник
З Киев
Зареєстрований: 2015-12-19
Повідомлень: 716

Re: Arduino и ESP8266. Облачные технологии и системы IoT.

Я еще не игрался с Blynk. Опять же, "интуиция мне подсказывает" что то в Вашей фразе: "*По поводу облачного сервера - в блинке он нужен только, если вы хотите получить доступ с внешней сети интернет, так сказать shared access" что то не так. Посмотрев скетчи примеров я не нахожу ответов на простые вопросы: каким образом приложение на телефоне знает ip адрес ESP? (если сервер здесь не при делах), зачем авторизацию отправлять по почте и зачем она нужна?(опять же если сервер здесь не при делах), а если устройств ESP больше одного? . Когда впервые мне попалась эта статья у меня лично сложилось мнение что это как раз пример IoT (только со своим каким то протоколом), то есть задействован сервер. Пока я досконально не изучал Blynk, и если я не прав, объясните как Вы видите взаимодействие "приложение в телефоне"<--> ESP.

Неактивний

#25 2016-01-16 12:18:06

Nefreemen
Учасник
З Киев
Зареєстрований: 2015-12-19
Повідомлень: 716

Re: Arduino и ESP8266. Облачные технологии и системы IoT.

Вот нашел http://docs.blynk.cc/ . И так имеем три главных компонента 1. Blynk App, 2. Blynk server, 3. Blynk Libraries . То есть то о чем я подозревал, что без сервера никак...

Неактивний

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму