Ардуино - WiFi мост на ESP8266 : ESP-LINK
Ардуино - WiFi мост на ESP8266 : ESP-LINK
Выпустить Ардуино в Мир очень просто!
Нужен лишь модуль WiFi ESP8266, который прошивается прошивкой ESP-LINK
После чего мы можем:
-Организовать мост между микроконтроллером и ESP8266.
-Встроенный клиент MQTT позволяет публиковать и подписываться на топики.
-Технология REST - GET, POST, PUT, DELETE запросы.
-Поддержка отправки и приема пакетов сокетов UDP и широковещательных пакетов сокетов UDP
-Поддержка клиентов сокета TCP для отправки пакетов на TCP-сервер
-Поддержка сервера сокетов TCP для приема пакетов от клиентов сокета TCP и отправки ответов
-Возможность создания собственных WEB страниц для мониторинга и управления микроконтроллером
-Встроенная консоль Serial Port , логгирование, и некоторые другие функции.
+
-Возможность программирования микроконтроллера через WiFi (интернет)
Очень полезная штука!
Пользовательский блок для ардуино который переодически передает данные с датчика DS18B20 на сервис thingspeak.com Пробуем, и дополняем!
Нужен лишь модуль WiFi ESP8266, который прошивается прошивкой ESP-LINK
После чего мы можем:
-Организовать мост между микроконтроллером и ESP8266.
-Встроенный клиент MQTT позволяет публиковать и подписываться на топики.
-Технология REST - GET, POST, PUT, DELETE запросы.
-Поддержка отправки и приема пакетов сокетов UDP и широковещательных пакетов сокетов UDP
-Поддержка клиентов сокета TCP для отправки пакетов на TCP-сервер
-Поддержка сервера сокетов TCP для приема пакетов от клиентов сокета TCP и отправки ответов
-Возможность создания собственных WEB страниц для мониторинга и управления микроконтроллером
-Встроенная консоль Serial Port , логгирование, и некоторые другие функции.
+
-Возможность программирования микроконтроллера через WiFi (интернет)
Очень полезная штука!
Пользовательский блок для ардуино который переодически передает данные с датчика DS18B20 на сервис thingspeak.com Пробуем, и дополняем!
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Лейтенант
- Сообщения: 530
- Зарегистрирован: 05 апр 2016, 23:30
- Откуда: Санкт-Петербург
- Имя: Илья
Ардуино - WiFi мост на ESP8266 : ESP-LINK
Anydy, я никак не могу понять как ардуина получает информацию от брокера mqtt с помощью этой библиотеки?
В примере библиотеки есть конструкция коллбэка:
с помощью которой осуществляется получение данных с брокера. Однако как эти полученные данные использовать дальше в программе и откуда их взять для обработки я не могу понять - знаний не хватает. Переменные topic и data используются только в пределах этой функции.
Дальше в секции loop есть такой код:
то есть публикуют в топик содержимое буфера, затем получают данные из этого топика, плюсуют к нему единицу преобразуют число в строку (itoa) и публикуют снова в тот же топик.
Как я понимаю в buf сидит некое число в int, но как оно туда помещается?
И каким образом сравнить топик полученный с топиком который прописан в программе для приема информации и получить данные из этого топика для дальнейшего их использования.
Интересует именно управление через mqtt.
В примере библиотеки есть конструкция коллбэка:
Код: Выделить всё
// Callback when an MQTT message arrives for one of our subscriptions
void mqttData(void* response) {
ELClientResponse *res = (ELClientResponse *)response;
Serial.print("Received: topic=");
String topic = res->popString();
Serial.println(topic);
Serial.print("data=");
String data = res->popString();
Serial.println(data);
}
Дальше в секции loop есть такой код:
Код: Выделить всё
void loop() {
esp.Process();
if (connected && (millis()-last) > 4000) {
Serial.println("publishing");
char buf[12];
itoa(count++, buf, 10);
mqtt.publish("/esp-link/1", buf);
Как я понимаю в buf сидит некое число в int, но как оно туда помещается?
И каким образом сравнить топик полученный с топиком который прописан в программе для приема информации и получить данные из этого топика для дальнейшего их использования.
Интересует именно управление через mqtt.
Последний раз редактировалось starshoy81 15 окт 2017, 21:33, всего редактировалось 1 раз.
Ардуино - WiFi мост на ESP8266 : ESP-LINK
MQTT я проверял, работало))
По вашему вопросу завтра детально потестирую...
Добавлено (15.10.2017, 21:51)
---------------------------------------------
В Declare обьявить
String yes;
а в функции добавить:
yes = data;
может проканает?
Добавлено (15.10.2017, 21:59)
---------------------------------------------
Сцылка
По вашему вопросу завтра детально потестирую...
Добавлено (15.10.2017, 21:51)
---------------------------------------------
А если сделать так:starshoy81 писал(а):Переменные topic и data используются только в пределах этой функции.
В Declare обьявить
String yes;
а в функции добавить:
yes = data;
может проканает?
Добавлено (15.10.2017, 21:59)
---------------------------------------------
Для этого уже давно есть решение на модуле SIM800, но используемая библиотека так же поддерживает и ESP8266starshoy81 писал(а):Интересует именно управление через mqtt.
Сцылка
-
- Лейтенант
- Сообщения: 530
- Зарегистрирован: 05 апр 2016, 23:30
- Откуда: Санкт-Петербург
- Имя: Илья
Ардуино - WiFi мост на ESP8266 : ESP-LINK
я пробовал - не прокатывает.Anydy писал(а):А если сделать так:
В Declare обьявить
String yes;
а в функции добавить:
yes = data;
может проканает?
в этой библиотеке используется эмуляция есп как модема через АТ команды. То есть часть сетевой нагрузки висит на ардуине. Плюс еспшка через АТ команды работает неоптимально. Фишка ESP-link в том, что сетевая часть висит на есп, а ардуина даже не подозревает об этом, общается только через уарт с еспшкой.Anydy писал(а):Для этого уже давно есть решение на модуле SIM800, но используемая библиотека так же поддерживает и ESP8266
Сцылка
Добавлено (15.10.2017, 22:46)
---------------------------------------------
От правка на брокер без проблем идёт. Вопрос в обработке полученных данных.Anydy писал(а):MQTT я проверял, работало))
Ардуино - WiFi мост на ESP8266 : ESP-LINK
Да, именно этим и приглянулась данная прошивка!starshoy81 писал(а):Фишка ESP-link в том, что сетевая часть висит на есп, а ардуина даже не подозревает об этом, общается только через уарт с еспшкой.
MQTT я бегло пока проверил, скетч из примера, отправка работала а прием не проверял ....вечером займусь...
Добавлено (16.10.2017, 18:04)
---------------------------------------------
Проверил, переменная data из функции прекрасно переносится в void loop! (как я выше написал - работает)starshoy81 писал(а):Однако как эти полученные данные использовать дальше в программе и откуда их взять для обработки я не могу понять - знаний не хватает. Переменные topic и data используются только в пределах этой функции.
Дальше используйте как хотите!
Сейчас сооружу пример скетча и блок для FLprog...
-
- Лейтенант
- Сообщения: 530
- Зарегистрирован: 05 апр 2016, 23:30
- Откуда: Санкт-Петербург
- Имя: Илья
Ардуино - WiFi мост на ESP8266 : ESP-LINK
Отлично! У меня заработало, присвоил переменной topic1 значение topic, а переменной data1 значение data. И замигал светодиодом . Видимо раньше я что то не так делал, потому что состояние светодиода не менялось от разных команд.Anydy писал(а):Проверил, переменная data из функции прекрасно переносится в void loop! (как я выше написал - работает)
Дальше используйте как хотите!
кусок кода
Код: Выделить всё
void mqttData(void* response) {
ELClientResponse *res = (ELClientResponse *)response;
Serial.print("Received: topic=");
String topic = res->popString();
Serial.println(topic);
topic1=topic;
String data = res->popString();
Serial.println(data);
data1=data;
}
Код: Выделить всё
if (topic1 == "/esp-link/2" ) { //если пришло сообщение от топика
if (data1 == "on"){
digitalWrite(13, 1);
}
if (data1 == "off"){
digitalWrite(13, 0);
}
}
Ардуино - WiFi мост на ESP8266 : ESP-LINK
Молодец! Точно так же сделал!starshoy81 писал(а):Отлично! У меня заработало
Вот пример скетча
А вот Пользовательский блок
Это примеры, будем дальше допиливать!
А так же надо пробовать другие сервисы ...типа narodmon
-
- Лейтенант
- Сообщения: 530
- Зарегистрирован: 05 апр 2016, 23:30
- Откуда: Санкт-Петербург
- Имя: Илья
Ардуино - WiFi мост на ESP8266 : ESP-LINK
В общем отправка данных на брокер требует некоторой подготовки данных. Данные отправляемые должны быть стринг, но конструкция которую делает Флпрогstarshoy81 писал(а):От правка на брокер без проблем идёт.
Код: Выделить всё
data_134000959_1 = (String(_gtv2, DEC));
Код: Выделить всё
char buf[10];
itoa(_gtv2, buf, 10);
mqtt.publish("temp", buf);
массив можно декларировать сразу
Ардуино - WiFi мост на ESP8266 : ESP-LINK
Да, библиотеке нужно массив *char , так же как и в библиотеке PubSubClient
Делается просто!
Ну а число в строку можно и штатным блоком преобразовать.
Добавлено (24.10.2017, 21:11)
---------------------------------------------
Сделал пример пользовательского блока для отправки данных с датчика DS18B20 на сервис narodmon.ru через ESP8266
ESP-LINK с Ардуино оказывается очень просто и гибко настраивается!
Я теперь прошиваю ардуино которая в соседней комнате по WIFI не вставая с дивана! Удобно!
+ online MQTT управление и контроль!
Блок и описание
Делается просто!
Код: Выделить всё
String primer = "Preobrazovanie";
mqtt.publish("/topic/dom/wifi", (char*) primer.c_str());
Добавлено (24.10.2017, 21:11)
---------------------------------------------
Сделал пример пользовательского блока для отправки данных с датчика DS18B20 на сервис narodmon.ru через ESP8266
ESP-LINK с Ардуино оказывается очень просто и гибко настраивается!
Я теперь прошиваю ардуино которая в соседней комнате по WIFI не вставая с дивана! Удобно!
+ online MQTT управление и контроль!
Блок и описание
- jonik22sm
- Капитан
- Сообщения: 705
- Зарегистрирован: 20 ноя 2015, 11:28
- Откуда: Краснодар
- Имя: Евгений
- Контактная информация:
Ардуино - WiFi мост на ESP8266 : ESP-LINK
Ребята помогите пожалуйста как организовать RemoteXY по данной схеме
Добавлено (24.10.2017, 21:27)
---------------------------------------------
Через облочный сервис RemoteXY работает, а если нет интернета то как заканектица напрямую к ESP 8266
ESP 8266 настроил Soft+AP
Добавлено (24.10.2017, 21:27)
---------------------------------------------
Через облочный сервис RemoteXY работает, а если нет интернета то как заканектица напрямую к ESP 8266
ESP 8266 настроил Soft+AP
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Можно сделать ВСЁ. Было бы желание.
Ардуино - WiFi мост на ESP8266 : ESP-LINK
Здесь тема про ESP-LINK......У RemoteXY есть своя тема....
Попробуйте на ESP-LINK сделать через облако MQTTCloud ....бесплатно все полностью ....тогда подскажем!
Добавлено (24.10.2017, 21:35)
---------------------------------------------
Попробуйте на ESP-LINK сделать через облако MQTTCloud ....бесплатно все полностью ....тогда подскажем!
Добавлено (24.10.2017, 21:35)
---------------------------------------------
Ну наверное поросить у них искодники и установить у себя дома сервер!jonik22sm писал(а):Через облочный сервис RemoteXY работает, а если нет интернета то как заканектица напрямую к ESP 8266
- jonik22sm
- Капитан
- Сообщения: 705
- Зарегистрирован: 20 ноя 2015, 11:28
- Откуда: Краснодар
- Имя: Евгений
- Контактная информация:
Ардуино - WiFi мост на ESP8266 : ESP-LINK
Дайте ссылку гдеб я мог ознакомиться
Последний раз редактировалось jonik22sm 24 окт 2017, 21:37, всего редактировалось 1 раз.
Можно сделать ВСЁ. Было бы желание.
-
- Лейтенант
- Сообщения: 530
- Зарегистрирован: 05 апр 2016, 23:30
- Откуда: Санкт-Петербург
- Имя: Илья
Ардуино - WiFi мост на ESP8266 : ESP-LINK
Частный случай использования ESP-Link - работа с mqtt брокером. Я настроил брокер mosquitto на роутере с прошивкой openwrt. Брокер можно использовать любой.
Как прошить есп-линк можно поискать в интернете, я могу предложить статью в которой хорошо расписан процесс и описаны пара подводных камней. Последняя версия прошивки есп-линк лежит на гитхабе. После прошивки и начальной настройки надо настроить есп для работы в с брокером: включить SLIP на странице MQTT, включить там же mqtt клиента, настроить его параметры, отключить лог на странице Debug log.
Далее - для работы ардуино и есп-линк нужна библиотека EL-client. Её нужно установить в IDE. Ссылка вот, файлик я приложу.
Для ФЛПрога я сделал блоки для работы с mqtt. Описание что к чему есть в самих блоках, а вкратце - блок Set основная настройка, нужен один раз. Блок publish - публикация данных в топик, тип данных строка. Блок subscribe подписка на топик, с выходом данных в виде строки и двоичным выходом (если послать on в топик на выходе будет 1, если off то 0). Есть одна загвоздка, подписка на топик производится командой mqtt.subscribe("Topic"); внутри тела функции void mqttConnected(void* response), однако поместить эту команду в функцию через блок ФЛПрога мне не удалось, поэтому после компиляции ФЛПрогом нужно вручную перемещать (вырезать - вставить) команду mqtt.subscribe("Topic"); из раздела setup в тело функции void mqttConnected(void* response) в редакторе IDE. Может, более продвинутые товарищи подскажут - как решить эту проблему?
Для примера я приложу тестовый проект с датчиком DHT и выходом на светодиод с публикацией состояния этого выхода на брокер.
Плюс скетч который получился при компилировании проекта со сделанным переносом команды, по описанию выше.
Добавлено (26.11.2017, 15:07)
---------------------------------------------
Mqtt позволяет работать с системами "умного дома". Openhub, Majordomo, например, локально чем то управлять настроив брокер у себя на роутере.
Обновил блок подписки - исправлена ошибка. Блок подписки предыдущей версии можно удалить.
Как прошить есп-линк можно поискать в интернете, я могу предложить статью в которой хорошо расписан процесс и описаны пара подводных камней. Последняя версия прошивки есп-линк лежит на гитхабе. После прошивки и начальной настройки надо настроить есп для работы в с брокером: включить SLIP на странице MQTT, включить там же mqtt клиента, настроить его параметры, отключить лог на странице Debug log.
Далее - для работы ардуино и есп-линк нужна библиотека EL-client. Её нужно установить в IDE. Ссылка вот, файлик я приложу.
Для ФЛПрога я сделал блоки для работы с mqtt. Описание что к чему есть в самих блоках, а вкратце - блок Set основная настройка, нужен один раз. Блок publish - публикация данных в топик, тип данных строка. Блок subscribe подписка на топик, с выходом данных в виде строки и двоичным выходом (если послать on в топик на выходе будет 1, если off то 0). Есть одна загвоздка, подписка на топик производится командой mqtt.subscribe("Topic"); внутри тела функции void mqttConnected(void* response), однако поместить эту команду в функцию через блок ФЛПрога мне не удалось, поэтому после компиляции ФЛПрогом нужно вручную перемещать (вырезать - вставить) команду mqtt.subscribe("Topic"); из раздела setup в тело функции void mqttConnected(void* response) в редакторе IDE. Может, более продвинутые товарищи подскажут - как решить эту проблему?
Для примера я приложу тестовый проект с датчиком DHT и выходом на светодиод с публикацией состояния этого выхода на брокер.
Плюс скетч который получился при компилировании проекта со сделанным переносом команды, по описанию выше.
Добавлено (26.11.2017, 15:07)
---------------------------------------------
Mqtt позволяет работать с системами "умного дома". Openhub, Majordomo, например, локально чем то управлять настроив брокер у себя на роутере.
Обновил блок подписки - исправлена ошибка. Блок подписки предыдущей версии можно удалить.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось starshoy81 03 мар 2018, 11:20, всего редактировалось 1 раз.
Ардуино - WiFi мост на ESP8266 : ESP-LINK
starshoy81,
Может подскажите? У меня не работают почему-то Ваши блоки, даже Ваш пример тоже не работает в консоли в esp-Link вот что видно:
Enable SLIP on serial port и Enable MQTT client включил, пишет MQTT client state: connected Debug log отключил. Если загружаю из примеров в IDE- ELClient - mqtt то все отлично работает передается.
Может подскажите? У меня не работают почему-то Ваши блоки, даже Ваш пример тоже не работает в консоли в esp-Link вот что видно:
СпойлерSPOILER_SHOW
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Лейтенант
- Сообщения: 530
- Зарегистрирован: 05 апр 2016, 23:30
- Откуда: Санкт-Петербург
- Имя: Илья
Ардуино - WiFi мост на ESP8266 : ESP-LINK
demonkol, надо нажать ресет сначала на есп, а потом на ардуине (или сбросить ардуину из страницы есплинк, если ресет ардуины подключен к есп) . После запуска программы нужна синхронизация уартов ардуины и есп, иначе не будет передачи данных через уарт. К Вас на скриншоте это написано - "NEED SYNC".
Ардуино - WiFi мост на ESP8266 : ESP-LINK
starshoy81, Не помогает выдает:
СпойлерSPOILER_SHOW
ConnectedCB is 0x1AAELC: got 10 @277: 1 0 0 BF 81
NEED_SYNC!
ELC: got 10 @277: 1 0 0 BF 81
NEED_SYNC!
ELC: got 10 @277: 1 0 0 BF 81
NEED_SYNC!
ELC: got 10 @277: 1 0 0 BF 81
NEED_SYNC!
ELC: got 10 @277: 1 0 0 BF 81
Последний раз редактировалось demonkol 09 дек 2017, 22:48, всего редактировалось 1 раз.
-
- Лейтенант
- Сообщения: 530
- Зарегистрирован: 05 апр 2016, 23:30
- Откуда: Санкт-Петербург
- Имя: Илья
Ардуино - WiFi мост на ESP8266 : ESP-LINK
demonkol, выложите код который компилирует flprog.
Ардуино - WiFi мост на ESP8266 : ESP-LINK
starshoy81, Пример ваш пробую. А версия esp-link у вас какая? У меня esp-link v3.0.14.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Лейтенант
- Сообщения: 530
- Зарегистрирован: 05 апр 2016, 23:30
- Откуда: Санкт-Петербург
- Имя: Илья
Ардуино - WiFi мост на ESP8266 : ESP-LINK
demonkol, попробуйте версию есп-линк 2.2.3. Я работал с ней.
В коде всё вроде в порядке.
В коде всё вроде в порядке.
Последний раз редактировалось starshoy81 10 дек 2017, 13:48, всего редактировалось 1 раз.
Ардуино - WiFi мост на ESP8266 : ESP-LINK
starshoy81, Да поставил версию 2.2.3 все заработало.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей