Связи микроконтроллеров с ПК(роутером) через NRF24l01 USB

sav13
sav13 аватар
Offline
Зарегистрирован: 17.06.2013

Всем доброго времени суток!

Мучаю "умный дом" для своей квартиры

Задача: имеется несколько ардуинок с NRF24l01, передающих показания разных датчиков.

Требуется мониторить все это, например, через народный мониторинг

Хочу в качастве головного устрояйства использовать OpenWRT Router с USB (Тот же ASUS RT-N16)

Не понятен вопрос реализации работы с той же платой NRF24l01

Нашел сравнительно недорогую плату USB на aliexpress

Распознается ли такая плата роутером с LINUX?

Есть ли готовые библиотеки для работы на PHP/Pytonе совместимые с протоколом обмена библиотеки RF24 ?

Если вместо такой платы использовать Arduino Nano - есть ли где нибудь библиотеки для LINUX для работы по радиообмену через него?

axill
Offline
Зарегистрирован: 05.09.2011

Я иешаю такую же задачу - интеграция устройств по радио в домашнюю сеть и сеть интернет

в моем случае есть успех от использования ардуина мега2560

нано будет для этих целей слабовата по причине малой памяти программ

насчет питона и php посмотрите форумы raspberry pi - я видел там проекты с nrf24

sav13
sav13 аватар
Offline
Зарегистрирован: 17.06.2013

axill пишет:

Я иешаю такую же задачу - интеграция устройств по радио в домашнюю сеть и сеть интернет

в моем случае есть успех от использования ардуина мега2560

нано будет для этих целей слабовата по причине малой памяти программ

насчет питона и php посмотрите форумы raspberry pi - я видел там проекты с nrf24

Мега это хорошо. Только все равно там TCP/IP-шные костыли на Ethernet Shildе.

А Нано я хотел как коммуникационный контроллер.
По радио получила - в порт пвывдала. По порту получила - в радио плюнула.

За Raspberry спасибо за наводку. Посмотрю.

CityCat
CityCat аватар
Offline
Зарегистрирован: 13.06.2013

В моем случае есть куча устройств (назовем их так) - arduino pro mini в каждой комнате. Они с головной ардуиной (Uno) общаются посредством ntf24. На уне стоит ethernet shield, отправляющий POST (GET - не важно) запрос на сервак (опять-таки - в интернете, локально - не важно) - в php-скрипт, который с свою очередь разбирает запрос и пишет в БД показания. Ответом в сторону уны (на локалке конечно же) можно послать опять-таки команду (или уне или любой из мини - все зависит от самой команды). Апач, конечно же, шлет (формирует) страницу с хидерами, которые на уне "вырезаю" конструкцией:

in = in.substring(in.indexOf("\r\n\r\n") + 4);

То есть от первых двух разрывов строки. Может кому понадобится - лично я думал полдня как это реаллизовать. Оказалось проще чем казалось )))

Вот как-то так у меня. Лично я пока "уперся" в одну проблему. На каждой мини "прицеплен" DHT22, считывание показаний с которого занимает около 2-х сек. - это очень много. В это время может прийти и управляющая команда по ethernet (который, кстати, в этот момент и выключен) и сами мини становятся неработоспособными на это время. Пока ничего лучше чем переписать библиотеку DHT на таймерах не придумал, да и то - долго - нет времени - "допиливаю" сам сайт.

sav13
sav13 аватар
Offline
Зарегистрирован: 17.06.2013

CityCat пишет:

В моем случае есть куча устройств (назовем их так) - arduino pro mini в каждой комнате. Они с головной ардуиной (Uno) общаются посредством ntf24. На уне стоит ethernet shield, отправляющий POST (GET - не важно) запрос на сервак (опять-таки - в интернете, локально - не важно) - в php-скрипт, который с свою очередь разбирает запрос и пишет в БД показания. Ответом в сторону уны (на локалке конечно же) можно послать опять-таки команду (или уне или любой из мини - все зависит от самой команды). Апач, конечно же, шлет (формирует) страницу с хидерами, которые на уне "вырезаю" конструкцией:

in = in.substring(in.indexOf("\r\n\r\n") + 4);

То есть от первых двух разрывов строки. Может кому понадобится - лично я думал полдня как это реаллизовать. Оказалось проще чем казалось )))

Вот это и напрягает. То что реализуется в полноценном ПК за 5 минут на коленке почти без всякого программирования на ардуинке занимает кучу времени и упирается в производительность и нехватку памяти

CityCat пишет:

Вот как-то так у меня. Лично я пока "уперся" в одну проблему. На каждой мини "прицеплен" DHT22, считывание показаний с которого занимает около 2-х сек. - это очень много. В это время может прийти и управляющая команда по ethernet (который, кстати, в этот момент и выключен) и сами мини становятся неработоспособными на это время. Пока ничего лучше чем переписать библиотеку DHT на таймерах не придумал, да и то - долго - нет времени - "допиливаю" сам сайт.

Я решил на куче устройств реализовать связь через NRF24l01. Дешево и без проводов. Только вот вроде как библиотека, с ними работающая прерывания не использует. Это значит, постоянный опрос модуля в режиме приемника :( Или SPI_STC_vect в обе стораны работает?

А вот у вас на Меге два устройства на SPI висят? Или вы NRF24l01 на эмулятор на другие ноги повесили?

CityCat
CityCat аватар
Offline
Зарегистрирован: 13.06.2013

sav13 пишет:

Я решил на куче устройств реализовать связь через NRF24l01. Дешево и без проводов. Только вот вроде как библиотека, с ними работающая прерывания не использует. Это значит, постоянный опрос модуля в режиме приемника :( Или SPI_STC_vect в обе стораны работает?

А вот у вас на Меге два устройства на SPI висят? Или вы NRF24l01 на эмулятор на другие ноги повесили?

Дешево. Однако связь лично меня разочаровала. Из комнаты в туалет (газосиликатный блок и стена в полкирпича) как-то через раз "пробивает". С усилителями и антеннами покупать как-то не хочется (ИМХО дороговато). Не копал данную библиотеку, но вроде прерываний там нет. Да - только в режиме приемника.

На уне висит два устпройства на SPI. Данный линк уже где-то давали. Однако, очень не нравится мне такая организация. Планирую все-таки перед уной поставить еще одну про мини исключительно для приема от всех других РФ-ок. А с уной они по Serial будут общаться. ИМХО, так отпадает необходимость постоянно "дергать" то сеть то РФ-ки, боясь что-то где-то упустить.

sav13
sav13 аватар
Offline
Зарегистрирован: 17.06.2013

CityCat пишет:

Дешево. Однако связь лично меня разочаровала. Из комнаты в туалет (газосиликатный блок и стена в полкирпича) как-то через раз "пробивает". С усилителями и антеннами покупать как-то не хочется (ИМХО дороговато). Не копал данную библиотеку, но вроде прерываний там нет. Да - только в режиме приемника.

Да. зря я задумал на 2.4 переходить. Нужно было на 433 остаться. Онтанна из провода и стены прошибает по всей квартире. Только вот заметил, разные импульсные БП, включая светодиодные драйверы, помехи дают.

CityCat пишет:

На уне висит два устпройства на SPI. Данный линк уже где-то давали. Однако, очень не нравится мне такая организация. Планирую все-таки перед уной поставить еще одну про мини исключительно для приема от всех других РФ-ок. А с уной они по Serial будут общаться. ИМХО, так отпадает необходимость постоянно "дергать" то сеть то РФ-ки, боясь что-то где-то упустить.

Получается я тоже самое хочу запилить, только вместо меги вход с приемной ардуинки по USB сразу же к роутеру. А там TCP/IP нормальный со всеми сервисами включая веб сервер!

CityCat
CityCat аватар
Offline
Зарегистрирован: 13.06.2013

sav13 пишет:
Да. зря я задумал на 2.4 переходить. Нужно было на 433 остаться. Онтанна из провода и стены прошибает по всей квартире. Только вот заметил, разные импульсные БП, включая светодиодные драйверы, помехи дают.

Тоже подумываю над 433. Читал про "пробивную" способность данных устройств. Прикуплено две пары приемника/передатчика. Пока успешно пылятся за ненадобностью. А вот про БП-шники и помехи поподробней, пожалуйста, если есть опыт - думаю, не одному мне полезно будет.

sav13 пишет:
Получается я тоже самое хочу запилить, только вместо меги вход с приемной ардуинки по USB сразу же к роутеру. А там TCP/IP нормальный со всеми сервисами включая веб сервер!

Да. Все верно. Только в моих реалиях приемник может стоять далеко от сервака/роутера, поэтому, не очень хочу привязываться к usb. Намного проще по LAN-у - уж сеть-то есть везде ;) А веб-сервер можно и удаленно в интернете поднять - это тоже прельщает.

sav13
sav13 аватар
Offline
Зарегистрирован: 17.06.2013

CityCat пишет:

sav13 пишет:
Да. зря я задумал на 2.4 переходить. Нужно было на 433 остаться. Онтанна из провода и стены прошибает по всей квартире. Только вот заметил, разные импульсные БП, включая светодиодные драйверы, помехи дают.

Тоже подумываю над 433. Читал про "пробивную" способность данных устройств. Прикуплено две пары приемника/передатчика. Пока успешно пылятся за ненадобностью. А вот про БП-шники и помехи поподробней, пожалуйста, если есть опыт - думаю, не одному мне полезно будет.

Настроил метеодатчик с передатчиком 433мгц

Настроил дисплей с приемником. Дисплей запитан от мощного импульсника 5В. Пока занимался прошивкой и ардуина питался по USB - все работало как часы. Питаю от БП дисплей - не приходят данные. Вкорячил туда в качестве БП зарядку от старого телефона. Заработало. Впаивать конденсаторы не помогало.

После этого настраивал ардуинку с Ethernet Sheld. Та же самая проблема. Перебрал несколько БП, пока не нашел 9В с которым все работает. Вылезла новая проблема - не работал рядом со светодиодной лампочкой. (Обычная кукуруза с цоколем E27). Лампочку выкручиваю - работает. Вот такая мистика.

Жалко нет радиочастотного анализатора, понаблюдать все это.

CityCat
CityCat аватар
Offline
Зарегистрирован: 13.06.2013

Вот те раз... Вчера купил новый DSL-модем (с маршрутизатором WiFi), поставил - пакеты между NRF24 пошли 1 через 4-5 :( Кроме модема ничего не менял (у модема, конечно вайфай хорошо бъет).  Теперь лично я в раздумиях. Не протянуть ли витую пару по всей квартире. Заодно можно будет и питание 12В пустить по 4 жилам - как подойдет к ардуинам как раз просядет вольт до 9-7.

По теме - долго думал насчет 433 - понял врядли для таких целей подойдут. Во-первых, на каждом устройстве должен висеть приемник и передатчик, а во-вторых (что самое неприятное) радиоканал может использовать одновременно только один передатчик.

sav13
sav13 аватар
Offline
Зарегистрирован: 17.06.2013

CityCat пишет:

Вот те раз... Вчера купил новый DSL-модем (с маршрутизатором WiFi), поставил - пакеты между NRF24 пошли 1 через 4-5 :( Кроме модема ничего не менял (у модема, конечно вайфай хорошо бъет).  Теперь лично я в раздумиях. Не протянуть ли витую пару по всей квартире. Заодно можно будет и питание 12В пустить по 4 жилам - как подойдет к ардуинам как раз просядет вольт до 9-7.

Попробуйте поиграться каналами WiFi. Рекомендуют максимально разнести RF-ку и WiFi по каналам

CityCat пишет:

По теме - долго думал насчет 433 - понял врядли для таких целей подойдут. Во-первых, на каждом устройстве должен висеть приемник и передатчик, а во-вторых (что самое неприятное) радиоканал может использовать одновременно только один передатчик.

Ну приемник и передатчик - это нормально. Зато SPI свободна ;)

Хотя я планирую в контроллерах, обслуживающих датчик, только передатчик, а в управляющих наоборот.

Два передатчика и 2.4ггц одновременно должгы глючить. Или там повтор отправки, как при Ethernet коллизиях реализован?

CityCat
CityCat аватар
Offline
Зарегистрирован: 13.06.2013

sav13 пишет:

Попробуйте поиграться каналами WiFi. Рекомендуют максимально разнести RF-ку и WiFi по каналам

Как-то я чего-то как ни игрался вчера с ними - результат почти нулевой. Обидно. :( 

sav13 пишет:
Ну приемник и передатчик - это нормально. Зато SPI свободна ;)

Хотя я планирую в контроллерах, обслуживающих датчик, только передатчик, а в управляющих наоборот.

Два передатчика и 2.4ггц одновременно должгы глючить. Или там повтор отправки, как при Ethernet коллизиях реализован?

Да. Там реализован повтор (attempts = 5; по дефолту) если не дошел пакет.

sav13
sav13 аватар
Offline
Зарегистрирован: 17.06.2013

Ну вот появилось идеальное головное устройство для умного дома:

http://arduino.cc/en/Main/ArduinoBoardYun?from=Main.ArduinoYUN

sav13
sav13 аватар
Offline
Зарегистрирован: 17.06.2013

CityCat пишет:

В моем случае есть куча устройств (назовем их так) - arduino pro mini в каждой комнате. Они с головной ардуиной (Uno) общаются посредством ntf24.

Вот как-то так у меня. Лично я пока "уперся" в одну проблему. На каждой мини "прицеплен" DHT22, считывание показаний с которого занимает около 2-х сек. - это очень много.

Вопросик немного не в тему. Arduino Pro Mini 3.3V или 5V

У меня 3-х вольтовый не хочет считывать данные с DHT22. 5-вольтовый нормально работает :(

CityCat
CityCat аватар
Offline
Зарегистрирован: 13.06.2013

У меня пятивольтовые. С трехвольтовыми дело не имел - ничего сказать не могу.

А с какой библиотекой не заработал? (хотя, при чем тут библиотека?) Я использовал эту с 22 и 11 датчиками - все ок.

CityCat
CityCat аватар
Offline
Зарегистрирован: 13.06.2013

sav13, кстати, по мотивам соседней темы... Если используешь вышеуказанную мной библиотеку и частота меги 8МГц, то очень вероятно будут ошибки при считываниии. "Ковыряю" эту библиотеку и вижу, что там не совсем корректно. Там есть параметр уонструктора объекта класса _count, который дефолтом равен 6 (некое подобие подстройки под частоту). Попробуй открыть заголовочный файл библиотеки (в папке arduino->libraries->DHT-DHT.h) и изменить строчку №32 вместо 6 поставь 3

sav13
sav13 аватар
Offline
Зарегистрирован: 17.06.2013

CityCat пишет:

sav13, кстати, по мотивам соседней темы... Если используешь вышеуказанную мной библиотеку и частота меги 8МГц, то очень вероятно будут ошибки при считываниии. "Ковыряю" эту библиотеку и вижу, что там не совсем корректно. Там есть параметр уонструктора объекта класса _count, который дефолтом равен 6 (некое подобие подстройки под частоту). Попробуй открыть заголовочный файл библиотеки (в папке arduino->libraries->DHT-DHT.h) и изменить строчку №32 вместо 6 поставь 3

Спасибо, все заработало. Чтобы библиотеку не курочить написал в конструкторе:

DHT dht(dhtPIN, DHT22, 3);

Правда плата Pro Mini разочаровала. Думал запитать ее от батарейки. Прикрутил режим сна. Если запитывать через RAW ногу, то в режиме сна потребление 1,7мА. Да и как ему не быть таким, если горит светодиод питания. :( Может его выпаять?

Запитал на VCC 3.3 от USB преобразователя. Все равно светодиод горит :(

 

CityCat
CityCat аватар
Offline
Зарегистрирован: 13.06.2013

Хм... Странно... пробовал сам DHT dht(dhtPIN, DHT22, 3); у меня не заработало. Поэтому, чтоб не вдаваться в подробности и предложил столь "извращенный" способ.

Ай, сорри - пробовал на модифицированной мной, а там другие параметры.

Вообще, ИМХО, при передаче 4-ки везде должно работать.

По поводу светодиода, я лично лучше бы снял R11

CityCat
CityCat аватар
Offline
Зарегистрирован: 13.06.2013

[OFF] sav13, если интересно, переписал библиотеку. Сделал на прерываниях. Есть пример. Вроде, код подписан - должен понять. Не претендую на идеальный и хороший код, однако, работает, код на килобайт меньше, и не вешает ардуину почти на секунду - это главное для меня. Там нет необходимости подстраиваться под частоту. https://bitbucket.org/CityCat/dhtinter/src

sav13
sav13 аватар
Offline
Зарегистрирован: 17.06.2013

CityCat пишет:

[OFF] sav13, если интересно, переписал библиотеку. Сделал на прерываниях. Есть пример. Вроде, код подписан - должен понять. Не претендую на идеальный и хороший код, однако, работает, код на килобайт меньше, и не вешает ардуину почти на секунду - это главное для меня. Там нет необходимости подстраиваться под частоту. https://bitbucket.org/CityCat/dhtinter/src

Спасибо. Буду датчик модернизировать на 2.4ГГц, обязательно использую код. (Люблю чтобы с прерываниями ;) )

Сейчас пока все работает на 433. Кстати, подцепил к Zyxel Keenetic плату Arduino Uno по USB

На коленках написал код на SH (лениво PHP прикручивать) - теперь все на народный мониоринг шлется

CityCat
CityCat аватар
Offline
Зарегистрирован: 13.06.2013

Ну, я на пхп сделал. Почти цмс-ку написал (за основу внешнего вида брал ab-log) ))

Мне в первую очередь нужно из браузера управлять ардуиной ;)