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

ESP+ESP как независимый раиоудлиннитель.

nicelight

Member
Всем доброго дня.
Прошу помощи в реализации задачи использования esp в стиле RF удлиннителя, типа модулей на 433 Мгц. Реализовывать планирую в среде Ардуино с применением уже готовых библиотек.
Необходимо реализовать наиболее скоростную передачу данных между двумя (по возможности, более) контроллерами. Передаваемые пакеты данных короткие, небольшая потеря пакетов допустима. Это у нас будут собираться данные с датчиков в реальном времени.
Прошу помощи в правильном построении топологии сети между esp и выборе протоколов связи.
Модуль esp заставил меня последний год углубляться в изучение сетевых технологий, но пока что слишком много пробелов в общем понимании картины)
Сеть между esp важно реализовать независимую, без применения роутера.
На сколько понимаю, мне необходимо на одной esp создать точку доступа, остальными подключиться к ней, как клиентами. Далее поднять UDP соединения и слать данные друг от друга напрямую по ip адресам?
Для тех, у кого нет опыта работы в arduino ide \ неприязнь к данной среде, отмечу пару замечаний:
Среда программирования крайне проста для новичков и не особо урезана по возможностям относительно других среда разработки для опытных кодеров.
Вам не приходится искать в интернете гайды, статьи типа "как сделать...", вылавливать куски кода, чтобы слепить готовое решение. Просто заходим в фаил - примеры и там куча примеров работы как с внутренней так и с внешней периферией. Все сложные функции среда делает сама, вам остается только обработка результатов\ отправка их во внешний мир. Для тех, кто считает среду arduino сплошным костылем - если немного разобраться, как работают библиотеки и железо, можно добиться достаточно стабильной работы конечного устройства, запрограммированного в arduino IDE.
Для хардкодеров, имеется возможность писать в среде на чистом си, ручками обрабатывать прерывания. ( хотя для esp ручная обработка прерываний видимо еще не описана). Чтобы понять, как легко самому программировать ESP, а не общаться с ней через AT команды, предлагаю ознакомиться со статьей http://esp8266.ru/arduino-ide-esp8266/
Обратить внимание на то, что использование функции задержки delay() внутри основного цикла программы благоприятно влияет на работу esp, ибо в это время она обрабатывает wifi функции. Не злоупотреблять длительными внешними прерываниями, они не позволяют отрабатывать wifi функциям.
 
Последнее редактирование:

Alex_82

New member
Ну вообще-то работать с ESP Вам не нужен год изучения технологии.
1) Инициализируете на хосте (центральное устройство) точку доступа, за тем на этом хосте запускаете сервер.
2) Девайсы клиенты коннектите к точке доступа и подымаете соединение с сервером. Предварительно каждому девайсу дайте ID.
3) Обрабатывайте на сервере входящие пакеты и отправляйте обратно CRC если используете UDP.

Еще совет, если Вы умеете кодить под комп (C++, Java и т.д.), то сначала набросайте прожку и обмен выводите на экран и лог. Сэкономите кучу времени.
 

nicelight

Member
Ну вообще-то работать с ESP Вам не нужен год изучения технологии.
было бы больше свободного времени, наверно хватило бы 2-4 недели)
1) Инициализируете на хосте (центральное устройство) точку доступа, за тем на этом хосте запускаете сервер.
2) Девайсы клиенты коннектите к точке доступа и подымаете соединение с сервером. Предварительно каждому девайсу дайте ID.
3) Обрабатывайте на сервере входящие пакеты и отправляйте обратно CRC если используете UDP.

Еще совет, если Вы умеете кодить под комп (C++, Java и т.д.), то сначала набросайте прожку и обмен выводите на экран и лог. Сэкономите кучу времени.
3) я как раз и не знаю что лучше использовать, UDP или еще какой другой протокол. Ежели UDP, хотелось бы понять принцип его работы, под arduino примеров не нашел.
Ардуиновский или любой другой терминал с задачей отладки разве не справится?
 

nikolz

Well-known member
Всем доброго дня.
Прошу помощи в реализации задачи использования esp в стиле RF удлиннителя, типа модулей на 433 Мгц. Реализовывать планирую в среде Ардуино с применением уже готовых библиотек.
Необходимо реализовать наиболее скоростную передачу данных между двумя (по возможности, более) контроллерами. Передаваемые пакеты данных короткие, небольшая потеря пакетов допустима. Это у нас будут собираться данные с датчиков в реальном времени.
Прошу помощи в правильном построении топологии сети между esp и выборе протоколов связи.
Модуль esp заставил меня последний год углубляться в изучение сетевых технологий, но пока что слишком много пробелов в общем понимании картины)
Сеть между esp важно реализовать независимую, без применения роутера.
На сколько понимаю, мне необходимо на одной esp создать точку доступа, остальными подключиться к ней, как клиентами. Далее поднять UDP соединения и слать данные друг от друга напрямую по ip адресам?
Для этой цели можно использовать :
Из документации:
ESP-NOW коммуникационная технология без установления соединения с участием короткого пакета. ESP-NOW идеально подходит для умных огней, устройств дистанционного управления, датчики и другие Приложения.
ESP-NOW -технология кадров IEEE802.11 и технологией шифрования CCMP, реализуя безопасный, коммуникационное решение без установления соединения.
ESP-NOW поддерживает следующие функции:
• Зашифрованные и в незашифрованном виде одноадресного связи.
• Смешанные зашифрованы и незашифрованные пэра устройств.
• До 250 байт полезной нагрузки может быть выполнено.
• функция обратного вызова , чтобы сообщить на прикладной уровень результат.
--------------------
Максимальное число устройств не более 20.
-----------------------------------------------------
Но так как у Вас есть микроконтроллер, то надо использовать не ESP, а NRF24L01
 

nicelight

Member
Для этой цели можно использовать :
Из документации:
ESP-NOW
Хорошая вещь. Для ардуины пока что библиотеку толковую не выпустили, либо не смог нагуглить. Выше ардуины, не уверен что потяну.
Одна из ESP (ведущая) в последтсвии будет ъобщаться с удаленным сервером, поэтому предпочел ее NRF24L01. Кроме того есть достаточное количество нубов типа меня которые бы хотели попробовать esp как радиоудлиннители для ардуин, а корректно связать две ESP не могут. Только не гнобите)
я хочу учиться и учусь, на сколько позволяет время\оператива в голове.
Каким образом можно реализовать ESP-NOW функцию, пускай даже не в ардуино?
 

Alex_82

New member
Вы можете работать с UART? Отправлять данные и по прерываю принимать?
Если нет, то начните с обучения работы с этим интерфейсом.

А если с этим все гуд, то обратите внимание на прошивку для ESP http://esp8266.ru/download/sdk/AT25-SDK112-512k.bin
И на описание команд http://esp8266.ru/esp8266-at-commands-v022/

Обратите внимание на команды:
AT+CWMODE_DEF - режим работы WIFI
AT+CWJAP_DEF - подключение к точке доступа
AT+CWSAP_DEF - создание точки доступа
AT+CIPSTA_DEF - установить IP адрес для точки доступа (нужен для подключения от клиентов, когда будуте подключаться серверу)
AT+CIPSTART - подключение к серверу
AT+CIPSEND - отправка данных
AT+CIPSERVER - создать сервер на ESP
и т.д.

P.S. Выбросили бы ардуину, а взяли платку на STM32F103C6T8, отладчик и логический анализатор. И конечно пару преобразователей USB-UART.
 

nikolz

Well-known member
Хорошая вещь. Для ардуины пока что библиотеку толковую не выпустили, либо не смог нагуглить. Выше ардуины, не уверен что потяну.
Одна из ESP (ведущая) в последтсвии будет ъобщаться с удаленным сервером, поэтому предпочел ее NRF24L01. Кроме того есть достаточное количество нубов типа меня которые бы хотели попробовать esp как радиоудлиннители для ардуин, а корректно связать две ESP не могут. Только не гнобите)
я хочу учиться и учусь, на сколько позволяет время\оператива в голове.
Каким образом можно реализовать ESP-NOW функцию, пускай даже не в ардуино?
Напрасно Вы недооцениваете свои способности.
Ардулино - это аля С++.
А С - это более проще чем С++.
Никто не мешает Вам использовать ардулины и любое другое железо.
Причем , если освоите СИ, то будете при надобности просто перебраcывать готовые библиотеки из ардулины в СИ и обратно.
И еще. Ардулина , как среда быстрой разработки - это хорошо. Но железо которое доступно в этой среде - уже устарело либо существенно дорого. ESP заменяет железо ардулины.
------------------------------------------------
Если хотите делать радиоудленнители для ардулины то смотрите на NRF - это именно и есть радиоудлиннитель.
 

Onkel

New member
Обратите внимание на команды:
AT+CWMODE_DEF - режим работы WIFI
AT+CWJAP_DEF - подключение к точке доступа
AT+CWSAP_DEF - создание точки доступа
AT+CIPSTA_DEF - установить IP адрес для точки доступа (нужен для подключения от клиентов, когда будуте подключаться серверу)
AT+CIPSTART - подключение к серверу
AT+CIPSEND - отправка данных
AT+CIPSERVER - создать сервер на ESP
T.
тоже ищу возможности сделать радио- uart, чтобы запрограммировать esp8266 (прошитых на ардуино ide) как прозрачный радиоудлинитель, не обязательно для ардуин , а любых мк или пк как источников /приемников . А где можно найти эквиваленты приведенных команд для arduion ide?
 

Alex_82

New member
Вы имеете ввиду написать прошивку для esp? Тоже в глове такая идея. Но покуда остается идеей. Купил платку разведенную с esp, но останавливает отсуствие или недуступность быстрого старта под это дело. Как установить студию, настроить, внятное обьяснение как кодить и про трипер с памятью. Это тут выбираешь то, тут это... В интернете инфы как помигать светодиодом не нашел от нуля до результата.
 

Onkel

New member
Вы имеете ввиду написать прошивку для esp? Тоже в глове такая идея. Но покуда остается идеей. Купил платку разведенную с esp, но останавливает отсуствие или недуступность быстрого старта под это дело. Как установить студию, настроить, внятное обьяснение как кодить и про трипер с памятью. Это тут выбираешь то, тут это... В интернете инфы как помигать светодиодом не нашел от нуля до результата.
да я поставил ардуину для esp, многое уже освоил (ибо ардуино, что там осваивать, ну разве что бесит мимикрия багов под фичи, вроде недоступности прерывания по получению байта uart), но вот http прием / передачу (что успешно получается с прошивкой по умолчанию, через at команды) пока не осуществил, не могу найти понятных примеров.
 

nicelight

Member
P.S. Выбросили бы ардуину, а взяли платку на STM32F103C6T8, отладчик и логический анализатор. И конечно пару преобразователей USB-UART.
я работал в CodeVisionAVR. Дело в том, что у меня в голове не хватает оперативки, чтобы упомнить все регистры, которые нужно настроить, соображалки, чтобы догнать до некоторых нюансов в работе таймеров ( даже easyelectronics помогает с трудом))). Пересаживаться на STM это по новой разбираться во всей логике работы потрохов, на что еще и не хватает времени. Ардуинка - удобная платформа для прототипирования. а готовые проекты я могу найти кому отдать в продакшн или пилю сам, по возможности, используя надежные библиотеки. С uart проблем особых нет ( плаваю только в преобразовании типов данных на входе-выходе). АT команды, на мой взгляд менее прозрачны чем ардуиновские либы, все же предпочту им ненавистную многим ардулину.:rolleyes:
offtop: что есть граф. анализатор и как применяется в данном случае?
 
Последнее редактирование:

nicelight

Member
И еще. Ардулина , как среда быстрой разработки - это хорошо. Но железо которое доступно в этой среде - уже устарело либо существенно дорого. ESP заменяет железо ардулины.
да, зато ардуина надежно проверена годами в стабильности, если с умом подходить к использованию библиотек и понимать, как работают основные функции.
ARM изучать мне ( и многим не кодерам от Бога) будет накладно по соотношению затраченное время\результат на выходе. Даже уважаемый DI_HALT со своими мегакачественными уроками не помог мне сделать старт с STM легким и быстрым.
Esp крут но для начинающих пока крайне сырой с его WDT, внешними прерываниями и прочими проблемами.
Если хотите делать радиоудленнители для ардулины то смотрите на NRF - это именно и есть радиоудлиннитель.
Мое желание сделать радиоудлиннитель из хорошей дешевой платформы ESP, чтобы подарить возможность начинающим быдлокодерам использовать эти модули в своих проектах и иметь стимул развивать проект дальше, изучая web программирование, тем самым снизить порог вхождения в IoT.
Ну и самому конечно научиться хочется!!
 

nicelight

Member
Купил платку разведенную с esp, но останавливает отсуствие или недуступность быстрого старта под это дело.
Если хотите быстро начать, пробуйте кодить esp в арудино среде, это самый легкий способ с минимумом начальных телодвижений. Смотрите тут http://esp8266.ru/arduino-ide-esp8266/ В среде ардуино есть готовые примеры и мигания свтеодиодом и всех остальных радостей ESP. (Смотрим в ардуино - файл - примеры)
 
Последнее редактирование:

nicelight

Member
Товарищи, хоть кто нибудь сможет подкинуть образец отправки приема UDP сообщений (в arduino IDE) с описанием принципа работы этого протокола конкретно для ESP?
 

Alex_82

New member
Не знаю почему, но от слова скетч меня начинает трести от злости! Дурацкое слово.

И так, по ардуино ide есть пару вопросов:
1) Можно ли менять скорость UART?
2) Модно ли и как обрабатывать прерыванания UART?
 

nicelight

Member
Не знаю почему, но от слова скетч меня начинает трести от злости! Дурацкое слово.

И так, по ардуино ide есть пару вопросов:
1) Можно ли менять скорость UART?
2) Модно ли и как обрабатывать прерыванания UART?
чтобы не захламлять ветку,приглашаю уйти в личку. сейчас напишу вам.
 

nicelight

Member
не надо в личку, вопросы интересные. Менять скорость кончено просто, как в любой ардуине, а вот с прерыванием по получению байта - интересно.
среда сама за вас все обработает. вы работаете уже с принятыми данными. В арудино все сделано для некодеров. Предлагаю установить среду и зайти в файл - примеры - serial. До безумия все просто. Если серийный порт доступен - вот тебе принятые данные. Если хочешь, вот тебе одна команда для отправки пакета данных, массива, стринговой переменной, anything.
 

nikolz

Well-known member
А если Вы изучите Си (не сложнее чем ардулино) то просто возьмете готовые библиотеки ардулино ,найдете кому отдать в продакшн или попилите сами, удалите из них обертки, то получите готовые библиотеки на СИ.
А чего нет в ардулино просто напишите сами.
Относительно изучения армов - это Вы ошибаетесь.
Их изучать надо для написания на ассемблере.
Для написания на СИ надо знать столько же сколько для написания на ардулине.
 

nicelight

Member
А если Вы изучите Си (не сложнее чем ардулино) то просто возьмете готовые библиотеки ардулино ,найдете кому отдать в продакшн или попилите сами, удалите из них обертки, то получите готовые библиотеки на СИ.
А чего нет в ардулино просто напишите сами.
Относительно изучения армов - это Вы ошибаетесь.
Их изучать надо для написания на ассемблере.
Для написания на СИ надо знать столько же сколько для написания на ардулине.
может быть ошибаюсь. Если бы у меня получалось кодить на чистом си, я бы давно слез с ардуины) Неоднократно пробовал. Не хватает мне куда данные в голове размещать. Я то и в ардуине сыплюсь после пол тысячи строк кода, дык тут команд раз два и обчелся, и то алгоритм в голове не помещается. А на Сях, беда у меня вобщем. Курил много в студенческие годы =)
А вы в какой среде еспшки обуздываете?
 
Сверху Снизу