Управление Arduino по TCP/IP в рилтайм
- Войдите на сайт для отправки комментариев
Пнд, 01/07/2019 - 16:14
Доброго времени суток, Друзья!
Делаю свой проект.
Возникла необходимость в управлении и отслеживании состояния через интернет в рилтайме.
Управление СМС командами отпадает.
Нужно что-то вроде сервера, куда будет подключаться Ардуинка и приложение в смартфоне для контроля и управления.
Как это можно реализовать с помощью GSM/GPRS модуля?
Была идея сначала отправлять СМС, модуль подключается к серваку и в этот момент клиент на андройде можно подключить, но опять же... напрягают СМС, они здесь не в тему.
Собираю на Arduino Nano V3.
Очень буду благодарен за подсказки/ссылки/примеры.
Всем умных идей!
Вы в курсе, что TCP/IP - это не реалтайм, по-любому?
Вы в курсе, что TCP/IP - это не реалтайм, по-любому?
пять секунд это практически реалтайм )))
Рилтайм - только на спинах и фотонах.
Делал на esp8266 управлялку с мобилы через внешний (бесплатный) mqtt сервер - время реакции в районе секунды, делается достаточно просто. Делал так чтобы не заморачиваться с "пультом" - на смарте есть готовый софт, впомнить бы название... IoTmanager возможно
С обычной ардиуной возни будет больше. (Хотя смотря откуда управлять надо и есть ли белый IP)
Это всяко больше рилтайм чем СМС командами...
Делал на esp8266 управлялку с мобилы через внешний (бесплатный) mqtt сервер - время реакции в районе секунды, делается достаточно просто. Делал так чтобы не заморачиваться с "пультом" - на смарте есть готовый софт, впомнить бы название... IoTmanager возможно
С обычной ардиуной возни будет больше. (Хотя смотря откуда управлять надо и есть ли белый IP)
Вот если возможно с этого момента по подробней.))
Есть белый IP, Есть возможность сделать сервак, только как его сконфигурировать? Может есть какие маны?
Если будет возможность управлять через веб мордочку, то сделать приложение для андрюшки будет не проблема, даже сказал бы это будет наипростейший способ.
Суть вопроса такова.
Есть устройство с кучей датчиков, уже написанным скетчем, управляется в данный момент только по радиоканалу, а это только вкл и выкл. Соответственно уведомления о срабатывании датчиков не приходят никуда.
Подцепил SIM800, настроил управление по СМС, но это ооочень неудобно, особенно для стариков, хоть там и шесть команд всего, но было б проще через приложение на смарте.
Задача:
Замутить связь так, что б зайдя в приложение на смарте человек увидел состояние датчиков, мог включить/выключить датчики, перезапустить систему и прочее...
Вот как это реализовать не прибегая к СМС?
Благодарю.
Замутить связь так, что б зайдя в приложение на смарте человек увидел состояние датчиков, мог включить/выключить датчики, перезапустить систему и прочее...
Вот как это реализовать не прибегая к СМС?
Имхо - связка: MQTT + клиент на андроиде, тот же MQTTDash, и всё.
Есть белый IP
С белым проще, я бы попробовал сначала вариант просто http сервера. https://www.arduino.cc/en/Tutorial/WebServer или в поисковике "arduino http server" и прям формировать http страницу для броузера. Ethernet модуль какой к ардуине ?
Если через mqtt, то я с esp8266 использовал облачный бесплатный (для малого числа клиентов) https://www.cloudmqtt.com/
Вот код под esp8266 если интересно. Можно ли его в нано запихать без понятия. Что там где сходу тоже уже смутно помню, но вроде примерно понятно должно быть из текста, если найти исходный вариант - там возможно комментариев больше. Тот mqtt настраивал вроде по этой статье https://habr.com/ru/post/339970/ но интерфейс уже заметно отличается.
Нано треснет от такого количества стрингов.
возможно :)
С белым ip я бы не парился и делал http сервер, отправляющий готовую страничку с формой управления. У меня просто были уже esp и серверы в wifi сетке без доступа снаружи.
В том то и прелесть этой задумки что связь с сервером должна осуществляться посредством GPRS, но никак не Ethernet...
Если через mqtt, то я с esp8266 использовал облачный бесплатный (для малого числа клиентов) https://www.cloudmqtt.com/
За код отдельная благодарность, может чего оттуда и вытяну полезного))
toshik-t, а сколько данных вы хотите видеть на html страничке устройства, если (образно) несколько checkbox это одно, а если полноценный многостраничный сайт это другой.
Я бы скрестил sim800 и esp32s.
если нет белого IP можно было бы воспользоваться DDNS, но приходит разочарование, так как халява с DDNS в этом году заканчивается
ТС, пишет что ip есть, а ddns здесь вообще ни при чем.
А на мобиле можно получить постоянный ip или этот белый ip - это ip сервера-посредника будет ?
связь с сервером должна осуществляться посредством GPRS, но никак не Ethernet...
Погуглил - вроде проблем не должно быть если есть возможность http сервер поднять с белым ip и туда стучаться с этой штуки (надеюсь ip вместо имени модем поймет в AT команде), с mqtt можно обойтись готовым сервером, но кода писать и разбираться с ним дольше как мне кажется (разве что готовый попадется прям под модем).
Я бы скрестил sim800 и esp32s.
Данных не много. Только состояние датчиков.
А управление состоит из шести команд.
За подсказку благодарочка. Поизучаю этот вид скрещивания))
А на мобиле можно получить постоянный ip или этот белый ip - это ip сервера-посредника будет ?
связь с сервером должна осуществляться посредством GPRS, но никак не Ethernet...
Погуглил - вроде проблем не должно быть если есть возможность http сервер поднять с белым ip и туда стучаться с этой штуки (надеюсь ip вместо имени модем поймет в AT команде), с mqtt можно обойтись готовым сервером, но кода писать и разбираться с ним дольше как мне кажется (разве что готовый попадется прям под модем).
Нет, на мобиле как раз таки динамический адрес. Здесь и затык произошёл...
Тоже гуглил, даже нашёл мануал по командам для поднятия TCP сервера, но на SIM900, и без примеров скетча...
Ну не наю... ссылок дофига. Вот например http://www.2150692.ru/faq/62-gprs-svyaz-cherez-sim800
Поподробней напишите, выше был разговор о белом IP....
На какой мобиле? которая стучиться к устройству с датчиками? или на самом устройстве с датчиками?
Итак: если к вашему устройству можно подключиться с внешнего интернета, т.е. если имеется IP адрес, с которого порты (например 80 HTTP) проброшен к устройству, то все получиться разместив на Arduino или ESP какой либо сервер, хоть HTTP хоть MQTT, можно даже свое что то написать..... В противном случае без промежуточного сервера, принимающего данные/запросы от железки и/или от мобильника наблюдения, не получиться.
Если всего несколько датчиков мониторить то мощности Arduino Nano для формирования примитивной HTML странички вполне достаточно.
Поподробней напишите, выше был разговор о белом IP....
На какой мобиле? которая стучиться к устройству с датчиками? или на самом устройстве с датчиками?
К сожалению не на мобиле, а на удалённом сервере.
Итак: если к вашему устройству можно подключиться с внешнего интернета, т.е. если имеется IP адрес, с которого порты (например 80 HTTP) проброшен к устройству, то все получиться разместив на Arduino или ESP какой либо сервер, хоть HTTP хоть MQTT, можно даже свое что то написать..... В противном случае без промежуточного сервера, принимающего данные/запросы от железки и/или от мобильника наблюдения, не получиться.
Если всего несколько датчиков мониторить то мощности Arduino Nano для формирования примитивной HTML странички вполне достаточно.
Это понятно, но если например не заморачиваться с белым айпи, а построить сеть типа "удалённый клиент с датчиками" <=> "сервер в интернет" <=> "клиент на андройд"?
Такое можно реализовать?
Ну не наю... ссылок дофига. Вот например http://www.2150692.ru/faq/62-gprs-svyaz-cherez-sim800
Да! Это похоже что надо. Теперь буду разбираться со скетчем и процедурами обмена динамическими данными между ардуинкой и сервером.
По сути мне надо читать и писать в базу данных, расположенную на серваке в инете.
Это понятно, но если например не заморачиваться с белым айпи, а построить сеть типа "удалённый клиент с датчиками" <=> "сервер в интернет" <=> "клиент на андройд"?
Такое можно реализовать?
Повторюсь: MQTT. Есть готовые клиенты под андроид, например, MQTT Dash.
http://arduino.ru/forum/programmirovanie/snova-mqtt-1#comment-411540
У меня есть поднятый на белом IP на меге сервер , в него стучатся модули на еспишках ( пока до 54 штук), а сам сервер хранит на sd все полученное, отдает объединенную вэб страницу и посуточные логи.
единственная узкость - большие массивы структур - нватка оперативы. Преодолимо переходом на дуэ.
Это понятно, но если например не заморачиваться с белым айпи, а построить сеть типа "удалённый клиент с датчиками" <=> "сервер в интернет" <=> "клиент на андройд"?
Такое можно реализовать?
Ардуина стучиться по http в сервер с белым IP, оставляет данные, забирает команды. Клиент или броузер на андроид стучиться в сервер с белым IP, забирает данные, оставляет команды. Реалтаймовость упирается в частоту опроса. Конечно можно... Даже клиент на андроиде как таковой не нужен, но сервак должен быть с белым IP. (ну или mqtt если не лень разбираться)
У меня есть поднятый на белом IP на меге сервер , в него стучатся модули на еспишках ( пока до 54 штук), а сам сервер хранит на sd все полученное, отдает объединенную вэб страницу и посуточные логи.
единственная узкость - большие массивы структур - нватка оперативы. Преодолимо переходом на дуэ.
А если отложить гамак и лыжи, и раскатать сервак под линухом на любом P4 с помойки? Или не спортивно?
У меня есть поднятый на белом IP на меге сервер , в него стучатся модули на еспишках ( пока до 54 штук), а сам сервер хранит на sd все полученное, отдает объединенную вэб страницу и посуточные логи.
единственная узкость - большие массивы структур - нватка оперативы. Преодолимо переходом на дуэ.
А если отложить гамак и лыжи, и раскатать сервак под линухом на любом P4 с помойки? Или не спортивно?
Тоже интересный вариант. Даже есть простенький компик на котором я могу сконфигурить сервак на FreeBSD в минималке без иксов, ибо 4Гб всего памяти на CF.
Надо помозговать...
Это понятно, но если например не заморачиваться с белым айпи, а построить сеть типа "удалённый клиент с датчиками" <=> "сервер в интернет" <=> "клиент на андройд"?
Такое можно реализовать?
Ардуина стучиться по http в сервер с белым IP, оставляет данные, забирает команды. Клиент или броузер на андроид стучиться в сервер с белым IP, забирает данные, оставляет команды. Реалтаймовость упирается в частоту опроса. Конечно можно... Даже клиент на андроиде как таковой не нужен, но сервак должен быть с белым IP. (ну или mqtt если не лень разбираться)
Да, это похоже на правду.
А частоту постукиваний на сервак уже в скетче задать можно, но тут встанет вопрос об энергосбережении... Ведь не просто так на Нано собираю. Потребление нужно минимальное...
только все эти варианты все дальше и дальше от "риалтайма" :)
Благодарю.
Это понятно, но если например не заморачиваться с белым айпи, а построить сеть типа "удалённый клиент с датчиками" <=> "сервер в интернет" <=> "клиент на андройд"?
Такое можно реализовать?
Повторюсь: MQTT. Есть готовые клиенты под андроид, например, MQTT Dash.
Изучаю уже этот вариант. Благодарю...
Всего 4Гб? Или фря уже не та или я. У меня на 4Гб пк убунту 18.04 вполне шустро работает.
тут встанет вопрос об энергосбережении... Ведь не просто так на Нано собираю. Потребление нужно минимальное...
вы такие фразы не пишите, а то смешно очень. Откуда это поверие среди новичков. что у Нано "потребление минимальное"? - точно такое же, как у Уно у нее потребление...
Если вам нужно энергосбережение - про готовые ардуины (в том числе нано) - забудьте. Надо делать плату самостояельно на основе голого МК - потребление будет в сотни раз меньше, чем у Нано
У меня есть поднятый на белом IP на меге сервер , в него стучатся модули на еспишках ( пока до 54 штук), а сам сервер хранит на sd все полученное, отдает объединенную вэб страницу и посуточные логи.
единственная узкость - большие массивы структур - нватка оперативы. Преодолимо переходом на дуэ.
В моём варианте данных очень даже не много. Всего 3 датчика, но управление 6 команд. Вот надо теперь придумать как организовать PUSH если датчик превышает порог, а так же PUSH на ардуинку что б управлять.
А на чём сервак собран(ПО)? Как организовано? PHP?
Всего 4Гб? Или фря уже не та или я. У меня на 4Гб пк убунту 18.04 вполне шустро работает.
Убунту тяжеловато для этого процика на котором у меня компик, да и 256Мб ОЗУ маловато будет для Убунты... По сему фря. По крайней мере так мне пока видится...
А если отложить гамак и лыжи, и раскатать сервак под линухом на любом P4 с помойки? Или не спортивно?
Нее мне прошшше на кошерном С . Я в линухе не настолько шарю, чтобы пэхэпэшить и мисклить. Я его только админю почучуть. Есть у меня тут один сервак с мониторингом, поправить могу , починить тоже, а с нуля надо долго вкуривать, на что времени нет. Кстати надо кое что допилить по-готовому. Нужен чел со скиллами в пхп, мискле, хтмл , со знанием технологии аякс для разовых работ по договору.
Пысы. Не гамак и лыжы, а ласты и маску с трубкой :)
Всего 4Гб? Или фря уже не та или я. У меня на 4Гб пк убунту 18.04 вполне шустро работает.
Убунту тяжеловато для этого процика на котором у меня компик, да и 256Мб ОЗУ маловато будет для Убунты... По сему фря. По крайней мере так мне пока видится...
я это к тому, что на 4Гб Вполне, а не всего лишь)))
тут встанет вопрос об энергосбережении... Ведь не просто так на Нано собираю. Потребление нужно минимальное...
вы такие фразы не пишите, а то смешно очень. Откуда это поверие среди новичков. что у Нано "потребление минимальное"? - точно такое же, как у Уно у нее потребление...
Если вам нужно энергосбережение - про готовые ардуины (в том числе нано) - забудьте. Надо делать плату самостояельно на основе голого МК - потребление будет в сотни раз меньше, чем у Нано
Ладно. Когда я писАл про потребу, то опирался на свои знания в радиосвязи, а там, как известно, только при регистрации/перерегистрации в сети оператора сжирается нормально тока.
Нано выбрана из-за размеров в первую очередь, а уже потребление, по сравнению с мегой, было бонусом...
Сейчас сборка пилотного варианта на ардуино, позже будет вариант с голым микроконтроллером... Это уже в планах...
Всего 4Гб? Или фря уже не та или я. У меня на 4Гб пк убунту 18.04 вполне шустро работает.
Убунту тяжеловато для этого процика на котором у меня компик, да и 256Мб ОЗУ маловато будет для Убунты... По сему фря. По крайней мере так мне пока видится...
я это к тому, что на 4Гб Вполне, а не всего лишь)))
Согласен, но есть же ещё факторы помимо объёма памяти диска...
У меня старая бунта вполне себе живет на 4пне с 2гб. Только в LAMP, без оболочки.
Пысы. Не гамак и лыжы, а ласты и маску с трубкой :)
Всего 4Гб? Или фря уже не та или я. У меня на 4Гб пк убунту 18.04 вполне шустро работает.
Убунту тяжеловато для этого процика на котором у меня компик, да и 256Мб ОЗУ маловато будет для Убунты... По сему фря. По крайней мере так мне пока видится...
я это к тому, что на 4Гб Вполне, а не всего лишь)))
Согласен, но есть же ещё факторы помимо объёма памяти диска...
я говорил об объёме озу, а не диска....
Всего 4Гб? Или фря уже не та или я. У меня на 4Гб пк убунту 18.04 вполне шустро работает.
Убунту тяжеловато для этого процика на котором у меня компик, да и 256Мб ОЗУ маловато будет для Убунты... По сему фря. По крайней мере так мне пока видится...
я это к тому, что на 4Гб Вполне, а не всего лишь)))
Согласен, но есть же ещё факторы помимо объёма памяти диска...
я говорил об объёме озу, а не диска....
А я про объём диска. Он на Compact Flash 4Gb. А оперы всего 256Мб на DDR1...
Вот таких приложух для телефона https://play.google.com/store/apps/details?id=cc.kostic.GsmContrAll_free&hl=en_US как дерьма за баней.... Неужто никогда не пробовали ?
Там вроде по СМС, а автор не хочет.