FLProg
Вход на сайт
Логин:
Пароль:
Поиск
...
Статистика
Суббота, 18.11.2017, 11:08
Приветствую Вас Гость | RSS
Главная | Регистрация | Вход

Поиск по сайту


Форум
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: support, Сергей, Anydy, Олег 
Форум » Основной » Железо (контроллеры, шилды, датчики и др.) » Ардуино - WiFi мост на ESP8266 : ESP-LINK (Прошивка МК через сеть, прозрачный мост, MQTT клиент и др...)
Ардуино - WiFi мост на ESP8266 : ESP-LINK
Anydy Дата: Воскресенье, 15.10.2017, 17:31 | Сообщение # 1
Генерал-майор
Группа: Модераторы
Сообщений: 523
Награды: 13
Репутация: 7
Статус: Offline
Выпустить Ардуино в Мир очень просто!
Нужен лишь модуль WiFi ESP8266, который прошивается прошивкой ESP-LINK
После чего мы можем:

-Организовать мост между микроконтроллером и ESP8266.
-Встроенный клиент MQTT позволяет публиковать и подписываться на топики.
-Технология REST - GET, POST, PUT, DELETE запросы.
-Поддержка отправки и приема пакетов сокетов UDP и широковещательных пакетов сокетов UDP
-Поддержка клиентов сокета TCP для отправки пакетов на TCP-сервер
-Поддержка сервера сокетов TCP для приема пакетов от клиентов сокета TCP и отправки ответов
-Возможность создания собственных WEB страниц для мониторинга и управления микроконтроллером
-Встроенная консоль Serial Port , логгирование, и некоторые другие функции.
+
-Возможность программирования микроконтроллера через WiFi (интернет)
Очень полезная штука!

Сделал пример скетча для ардуино который переодически передает данные с датчика DS18B20 на сервис thingspeak.com

Так же сделал пользовательский блок на основе этого скетча.

Пробуем, и дополняем!


blynk.su
 
starshoy81 Дата: Воскресенье, 15.10.2017, 21:31 | Сообщение # 2
Подполковник
Группа: Проверенные
Сообщений: 213
Награды: 1
Репутация: 0
Статус: Offline
Anydy, я никак не могу понять как ардуина получает информацию от брокера 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);
}


с помощью которой осуществляется получение данных с брокера. Однако как эти полученные данные использовать дальше в программе и откуда их взять для обработки я не могу понять - знаний не хватает. Переменные topic и 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);

то есть публикуют в топик содержимое буфера, затем получают данные из этого топика, плюсуют к нему единицу преобразуют число в строку (itoa) и публикуют снова в тот же топик.
Как я понимаю в buf сидит некое число в int, но как оно туда помещается?
И каким образом сравнить топик полученный с топиком который прописан в программе для приема информации и получить данные из этого топика для дальнейшего их использования.
Интересует именно управление через mqtt.


Сообщение отредактировал starshoy81 - Воскресенье, 15.10.2017, 21:33
 
Anydy Дата: Воскресенье, 15.10.2017, 21:59 | Сообщение # 3
Генерал-майор
Группа: Модераторы
Сообщений: 523
Награды: 13
Репутация: 7
Статус: Offline
MQTT я проверял, работало))

По вашему вопросу завтра детально потестирую...

Добавлено (15.10.2017, 21:51)
---------------------------------------------

Цитата starshoy81 ()
Переменные topic и data используются только в пределах этой функции.
А если сделать так:
В Declare обьявить
String yes;
а в функции добавить:
yes = data;
может проканает?

Добавлено (15.10.2017, 21:59)
---------------------------------------------

Цитата starshoy81 ()
Интересует именно управление через mqtt.
Для этого уже давно есть решение на модуле SIM800, но используемая библиотека так же поддерживает и ESP8266
Сцылка


blynk.su
 
starshoy81 Дата: Воскресенье, 15.10.2017, 22:46 | Сообщение # 4
Подполковник
Группа: Проверенные
Сообщений: 213
Награды: 1
Репутация: 0
Статус: Offline
Цитата Anydy ()
А если сделать так:
В Declare обьявить
String yes;
а в функции добавить:
yes = data;
может проканает?

я пробовал - не прокатывает.

Цитата Anydy ()
Для этого уже давно есть решение на модуле SIM800, но используемая библиотека так же поддерживает и ESP8266
Сцылка

в этой библиотеке используется эмуляция есп как модема через АТ команды. То есть часть сетевой нагрузки висит на ардуине. Плюс еспшка через АТ команды работает неоптимально. Фишка ESP-link в том, что сетевая часть висит на есп, а ардуина даже не подозревает об этом, общается только через уарт с еспшкой.

Добавлено (15.10.2017, 22:46)
---------------------------------------------

Цитата Anydy ()
MQTT я проверял, работало))

От правка на брокер без проблем идёт. Вопрос в обработке полученных данных.
 
Anydy Дата: Понедельник, 16.10.2017, 18:04 | Сообщение # 5
Генерал-майор
Группа: Модераторы
Сообщений: 523
Награды: 13
Репутация: 7
Статус: Offline
Цитата starshoy81 ()
Фишка ESP-link в том, что сетевая часть висит на есп, а ардуина даже не подозревает об этом, общается только через уарт с еспшкой.

Да, именно этим и приглянулась данная прошивка!

MQTT я бегло пока проверил, скетч из примера, отправка работала а прием не проверял ....вечером займусь...

Добавлено (16.10.2017, 18:04)
---------------------------------------------

Цитата starshoy81 ()
Однако как эти полученные данные использовать дальше в программе и откуда их взять для обработки я не могу понять - знаний не хватает. Переменные topic и data используются только в пределах этой функции.

Проверил, переменная data из функции прекрасно переносится в void loop! (как я выше написал - работает)
Дальше используйте как хотите!

Сейчас сооружу пример скетча и блок для FLprog...


blynk.su
 
starshoy81 Дата: Понедельник, 16.10.2017, 22:39 | Сообщение # 6
Подполковник
Группа: Проверенные
Сообщений: 213
Награды: 1
Репутация: 0
Статус: Offline
Цитата Anydy ()
Проверил, переменная data из функции прекрасно переносится в void loop! (как я выше написал - работает)
Дальше используйте как хотите!


Отлично! У меня заработало, присвоил переменной topic1 значение topic, а переменной data1 значение data. И замигал smile светодиодом smile . Видимо раньше я что то не так делал, потому что состояние светодиода не менялось от разных команд.

кусок кода
Код
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);
}
}
 
Anydy Дата: Понедельник, 16.10.2017, 22:50 | Сообщение # 7
Генерал-майор
Группа: Модераторы
Сообщений: 523
Награды: 13
Репутация: 7
Статус: Offline
Цитата starshoy81 ()
Отлично! У меня заработало

Молодец! Точно так же сделал!
Вот пример скетча
А вот Пользовательский блок
Это примеры, будем дальше допиливать!
А так же надо пробовать другие сервисы ...типа narodmon


blynk.su
 
starshoy81 Дата: Среда, 18.10.2017, 00:44 | Сообщение # 8
Подполковник
Группа: Проверенные
Сообщений: 213
Награды: 1
Репутация: 0
Статус: Offline
Цитата starshoy81 ()
От правка на брокер без проблем идёт.

В общем отправка данных на брокер требует некоторой подготовки данных. Данные отправляемые должны быть стринг, но конструкция которую делает Флпрог
Код
data_134000959_1 = (String(_gtv2, DEC));
эта библиотека не принимает. Нужно создавать символьный массив, преобразовывать переменную int в строку с занесением её в этот массив (буфер), а затем уже публиковать буфер вот так:
Код
char buf[10];
itoa(_gtv2, buf, 10);
mqtt.publish("temp",  buf);
, здесь _gtv2 это температура с dht.
массив можно декларировать сразу
 
Anydy Дата: Вторник, 24.10.2017, 21:11 | Сообщение # 9
Генерал-майор
Группа: Модераторы
Сообщений: 523
Награды: 13
Репутация: 7
Статус: Offline
Да, библиотеке нужно массив *char , так же как и в библиотеке PubSubClient

Делается просто!
Код
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 управление и контроль!

Блок и описание


blynk.su
 
jonik22sm Дата: Вторник, 24.10.2017, 21:27 | Сообщение # 10
Подполковник
Группа: Проверенные
Сообщений: 245
Награды: 0
Репутация: 1
Статус: Offline
Ребята помогите пожалуйста как организовать RemoteXY по данной схеме

Добавлено (24.10.2017, 21:27)
---------------------------------------------
Через облочный сервис RemoteXY работает, а если нет интернета то как заканектица напрямую к ESP 8266
ESP 8266 настроил Soft+AP

Прикрепления: 7489310.png(206Kb)


Спектр Бытовых Услуг в Краснодаре
http://sbu23.ru
 
Anydy Дата: Вторник, 24.10.2017, 21:35 | Сообщение # 11
Генерал-майор
Группа: Модераторы
Сообщений: 523
Награды: 13
Репутация: 7
Статус: Offline
Здесь тема про ESP-LINK......У RemoteXY есть своя тема....

Попробуйте на ESP-LINK сделать через облако MQTTCloud ....бесплатно все полностью ....тогда подскажем!

Добавлено (24.10.2017, 21:35)
---------------------------------------------

Цитата jonik22sm ()
Через облочный сервис RemoteXY работает, а если нет интернета то как заканектица напрямую к ESP 8266

Ну наверное поросить у них искодники и установить у себя дома сервер!


blynk.su
 
jonik22sm Дата: Вторник, 24.10.2017, 21:36 | Сообщение # 12
Подполковник
Группа: Проверенные
Сообщений: 245
Награды: 0
Репутация: 1
Статус: Offline
Дайте ссылку гдеб я мог ознакомиться

Спектр Бытовых Услуг в Краснодаре
http://sbu23.ru


Сообщение отредактировал jonik22sm - Вторник, 24.10.2017, 21:37
 
Форум » Основной » Железо (контроллеры, шилды, датчики и др.) » Ардуино - WiFi мост на ESP8266 : ESP-LINK (Прошивка МК через сеть, прозрачный мост, MQTT клиент и др...)
Страница 1 из 11
Поиск:

FLProg © 2017
Яндекс.Метрика