Связи микроконтроллеров с ПК(роутером) через NRF24l01 USB
- Войдите на сайт для отправки комментариев
Ср, 11/09/2013 - 15:40
Всем доброго времени суток!
Мучаю "умный дом" для своей квартиры
Задача: имеется несколько ардуинок с NRF24l01, передающих показания разных датчиков.
Требуется мониторить все это, например, через народный мониторинг
Хочу в качастве головного устрояйства использовать OpenWRT Router с USB (Тот же ASUS RT-N16)
Не понятен вопрос реализации работы с той же платой NRF24l01
Нашел сравнительно недорогую плату USB на aliexpress
Распознается ли такая плата роутером с LINUX?
Есть ли готовые библиотеки для работы на PHP/Pytonе совместимые с протоколом обмена библиотеки RF24 ?
Если вместо такой платы использовать Arduino Nano - есть ли где нибудь библиотеки для LINUX для работы по радиообмену через него?
Я иешаю такую же задачу - интеграция устройств по радио в домашнюю сеть и сеть интернет
в моем случае есть успех от использования ардуина мега2560
нано будет для этих целей слабовата по причине малой памяти программ
насчет питона и php посмотрите форумы raspberry pi - я видел там проекты с nrf24
Я иешаю такую же задачу - интеграция устройств по радио в домашнюю сеть и сеть интернет
в моем случае есть успех от использования ардуина мега2560
нано будет для этих целей слабовата по причине малой памяти программ
насчет питона и php посмотрите форумы raspberry pi - я видел там проекты с nrf24
Мега это хорошо. Только все равно там TCP/IP-шные костыли на Ethernet Shildе.
А Нано я хотел как коммуникационный контроллер.
По радио получила - в порт пвывдала. По порту получила - в радио плюнула.
За Raspberry спасибо за наводку. Посмотрю.
В моем случае есть куча устройств (назовем их так) - arduino pro mini в каждой комнате. Они с головной ардуиной (Uno) общаются посредством ntf24. На уне стоит ethernet shield, отправляющий POST (GET - не важно) запрос на сервак (опять-таки - в интернете, локально - не важно) - в php-скрипт, который с свою очередь разбирает запрос и пишет в БД показания. Ответом в сторону уны (на локалке конечно же) можно послать опять-таки команду (или уне или любой из мини - все зависит от самой команды). Апач, конечно же, шлет (формирует) страницу с хидерами, которые на уне "вырезаю" конструкцией:
То есть от первых двух разрывов строки. Может кому понадобится - лично я думал полдня как это реаллизовать. Оказалось проще чем казалось )))
Вот как-то так у меня. Лично я пока "уперся" в одну проблему. На каждой мини "прицеплен" DHT22, считывание показаний с которого занимает около 2-х сек. - это очень много. В это время может прийти и управляющая команда по ethernet (который, кстати, в этот момент и выключен) и сами мини становятся неработоспособными на это время. Пока ничего лучше чем переписать библиотеку DHT на таймерах не придумал, да и то - долго - нет времени - "допиливаю" сам сайт.
В моем случае есть куча устройств (назовем их так) - arduino pro mini в каждой комнате. Они с головной ардуиной (Uno) общаются посредством ntf24. На уне стоит ethernet shield, отправляющий POST (GET - не важно) запрос на сервак (опять-таки - в интернете, локально - не важно) - в php-скрипт, который с свою очередь разбирает запрос и пишет в БД показания. Ответом в сторону уны (на локалке конечно же) можно послать опять-таки команду (или уне или любой из мини - все зависит от самой команды). Апач, конечно же, шлет (формирует) страницу с хидерами, которые на уне "вырезаю" конструкцией:
То есть от первых двух разрывов строки. Может кому понадобится - лично я думал полдня как это реаллизовать. Оказалось проще чем казалось )))
Вот это и напрягает. То что реализуется в полноценном ПК за 5 минут на коленке почти без всякого программирования на ардуинке занимает кучу времени и упирается в производительность и нехватку памяти
Вот как-то так у меня. Лично я пока "уперся" в одну проблему. На каждой мини "прицеплен" DHT22, считывание показаний с которого занимает около 2-х сек. - это очень много. В это время может прийти и управляющая команда по ethernet (который, кстати, в этот момент и выключен) и сами мини становятся неработоспособными на это время. Пока ничего лучше чем переписать библиотеку DHT на таймерах не придумал, да и то - долго - нет времени - "допиливаю" сам сайт.
Я решил на куче устройств реализовать связь через NRF24l01. Дешево и без проводов. Только вот вроде как библиотека, с ними работающая прерывания не использует. Это значит, постоянный опрос модуля в режиме приемника :( Или SPI_STC_vect в обе стораны работает?
А вот у вас на Меге два устройства на SPI висят? Или вы NRF24l01 на эмулятор на другие ноги повесили?
Я решил на куче устройств реализовать связь через NRF24l01. Дешево и без проводов. Только вот вроде как библиотека, с ними работающая прерывания не использует. Это значит, постоянный опрос модуля в режиме приемника :( Или SPI_STC_vect в обе стораны работает?
А вот у вас на Меге два устройства на SPI висят? Или вы NRF24l01 на эмулятор на другие ноги повесили?
Дешево. Однако связь лично меня разочаровала. Из комнаты в туалет (газосиликатный блок и стена в полкирпича) как-то через раз "пробивает". С усилителями и антеннами покупать как-то не хочется (ИМХО дороговато). Не копал данную библиотеку, но вроде прерываний там нет. Да - только в режиме приемника.
На уне висит два устпройства на SPI. Данный линк уже где-то давали. Однако, очень не нравится мне такая организация. Планирую все-таки перед уной поставить еще одну про мини исключительно для приема от всех других РФ-ок. А с уной они по Serial будут общаться. ИМХО, так отпадает необходимость постоянно "дергать" то сеть то РФ-ки, боясь что-то где-то упустить.
Дешево. Однако связь лично меня разочаровала. Из комнаты в туалет (газосиликатный блок и стена в полкирпича) как-то через раз "пробивает". С усилителями и антеннами покупать как-то не хочется (ИМХО дороговато). Не копал данную библиотеку, но вроде прерываний там нет. Да - только в режиме приемника.
Да. зря я задумал на 2.4 переходить. Нужно было на 433 остаться. Онтанна из провода и стены прошибает по всей квартире. Только вот заметил, разные импульсные БП, включая светодиодные драйверы, помехи дают.
На уне висит два устпройства на SPI. Данный линк уже где-то давали. Однако, очень не нравится мне такая организация. Планирую все-таки перед уной поставить еще одну про мини исключительно для приема от всех других РФ-ок. А с уной они по Serial будут общаться. ИМХО, так отпадает необходимость постоянно "дергать" то сеть то РФ-ки, боясь что-то где-то упустить.
Получается я тоже самое хочу запилить, только вместо меги вход с приемной ардуинки по USB сразу же к роутеру. А там TCP/IP нормальный со всеми сервисами включая веб сервер!
Тоже подумываю над 433. Читал про "пробивную" способность данных устройств. Прикуплено две пары приемника/передатчика. Пока успешно пылятся за ненадобностью. А вот про БП-шники и помехи поподробней, пожалуйста, если есть опыт - думаю, не одному мне полезно будет.
Да. Все верно. Только в моих реалиях приемник может стоять далеко от сервака/роутера, поэтому, не очень хочу привязываться к usb. Намного проще по LAN-у - уж сеть-то есть везде ;) А веб-сервер можно и удаленно в интернете поднять - это тоже прельщает.
Тоже подумываю над 433. Читал про "пробивную" способность данных устройств. Прикуплено две пары приемника/передатчика. Пока успешно пылятся за ненадобностью. А вот про БП-шники и помехи поподробней, пожалуйста, если есть опыт - думаю, не одному мне полезно будет.
Настроил метеодатчик с передатчиком 433мгц
Настроил дисплей с приемником. Дисплей запитан от мощного импульсника 5В. Пока занимался прошивкой и ардуина питался по USB - все работало как часы. Питаю от БП дисплей - не приходят данные. Вкорячил туда в качестве БП зарядку от старого телефона. Заработало. Впаивать конденсаторы не помогало.
После этого настраивал ардуинку с Ethernet Sheld. Та же самая проблема. Перебрал несколько БП, пока не нашел 9В с которым все работает. Вылезла новая проблема - не работал рядом со светодиодной лампочкой. (Обычная кукуруза с цоколем E27). Лампочку выкручиваю - работает. Вот такая мистика.
Жалко нет радиочастотного анализатора, понаблюдать все это.
Вот те раз... Вчера купил новый DSL-модем (с маршрутизатором WiFi), поставил - пакеты между NRF24 пошли 1 через 4-5 :( Кроме модема ничего не менял (у модема, конечно вайфай хорошо бъет). Теперь лично я в раздумиях. Не протянуть ли витую пару по всей квартире. Заодно можно будет и питание 12В пустить по 4 жилам - как подойдет к ардуинам как раз просядет вольт до 9-7.
По теме - долго думал насчет 433 - понял врядли для таких целей подойдут. Во-первых, на каждом устройстве должен висеть приемник и передатчик, а во-вторых (что самое неприятное) радиоканал может использовать одновременно только один передатчик.
Вот те раз... Вчера купил новый DSL-модем (с маршрутизатором WiFi), поставил - пакеты между NRF24 пошли 1 через 4-5 :( Кроме модема ничего не менял (у модема, конечно вайфай хорошо бъет). Теперь лично я в раздумиях. Не протянуть ли витую пару по всей квартире. Заодно можно будет и питание 12В пустить по 4 жилам - как подойдет к ардуинам как раз просядет вольт до 9-7.
Попробуйте поиграться каналами WiFi. Рекомендуют максимально разнести RF-ку и WiFi по каналам
По теме - долго думал насчет 433 - понял врядли для таких целей подойдут. Во-первых, на каждом устройстве должен висеть приемник и передатчик, а во-вторых (что самое неприятное) радиоканал может использовать одновременно только один передатчик.
Ну приемник и передатчик - это нормально. Зато SPI свободна ;)
Хотя я планирую в контроллерах, обслуживающих датчик, только передатчик, а в управляющих наоборот.
Два передатчика и 2.4ггц одновременно должгы глючить. Или там повтор отправки, как при Ethernet коллизиях реализован?
Попробуйте поиграться каналами WiFi. Рекомендуют максимально разнести RF-ку и WiFi по каналам
Как-то я чего-то как ни игрался вчера с ними - результат почти нулевой. Обидно. :(
Хотя я планирую в контроллерах, обслуживающих датчик, только передатчик, а в управляющих наоборот.
Два передатчика и 2.4ггц одновременно должгы глючить. Или там повтор отправки, как при Ethernet коллизиях реализован?
Да. Там реализован повтор (attempts = 5; по дефолту) если не дошел пакет.
Ну вот появилось идеальное головное устройство для умного дома:
http://arduino.cc/en/Main/ArduinoBoardYun?from=Main.ArduinoYUN
В моем случае есть куча устройств (назовем их так) - arduino pro mini в каждой комнате. Они с головной ардуиной (Uno) общаются посредством ntf24.
Вот как-то так у меня. Лично я пока "уперся" в одну проблему. На каждой мини "прицеплен" DHT22, считывание показаний с которого занимает около 2-х сек. - это очень много.
Вопросик немного не в тему. Arduino Pro Mini 3.3V или 5V
У меня 3-х вольтовый не хочет считывать данные с DHT22. 5-вольтовый нормально работает :(
У меня пятивольтовые. С трехвольтовыми дело не имел - ничего сказать не могу.
А с какой библиотекой не заработал? (хотя, при чем тут библиотека?) Я использовал эту с 22 и 11 датчиками - все ок.
sav13, кстати, по мотивам соседней темы... Если используешь вышеуказанную мной библиотеку и частота меги 8МГц, то очень вероятно будут ошибки при считываниии. "Ковыряю" эту библиотеку и вижу, что там не совсем корректно. Там есть параметр уонструктора объекта класса _count, который дефолтом равен 6 (некое подобие подстройки под частоту). Попробуй открыть заголовочный файл библиотеки (в папке arduino->libraries->DHT-DHT.h) и изменить строчку №32 вместо 6 поставь 3
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 преобразователя. Все равно светодиод горит :(
Хм... Странно... пробовал сам DHT dht(dhtPIN, DHT22, 3); у меня не заработало. Поэтому, чтоб не вдаваться в подробности и предложил столь "извращенный" способ.
Ай, сорри - пробовал на модифицированной мной, а там другие параметры.
Вообще, ИМХО, при передаче 4-ки везде должно работать.
По поводу светодиода, я лично лучше бы снял R11
[OFF] sav13, если интересно, переписал библиотеку. Сделал на прерываниях. Есть пример. Вроде, код подписан - должен понять. Не претендую на идеальный и хороший код, однако, работает, код на килобайт меньше, и не вешает ардуину почти на секунду - это главное для меня. Там нет необходимости подстраиваться под частоту. https://bitbucket.org/CityCat/dhtinter/src
[OFF] sav13, если интересно, переписал библиотеку. Сделал на прерываниях. Есть пример. Вроде, код подписан - должен понять. Не претендую на идеальный и хороший код, однако, работает, код на килобайт меньше, и не вешает ардуину почти на секунду - это главное для меня. Там нет необходимости подстраиваться под частоту. https://bitbucket.org/CityCat/dhtinter/src
Спасибо. Буду датчик модернизировать на 2.4ГГц, обязательно использую код. (Люблю чтобы с прерываниями ;) )
Сейчас пока все работает на 433. Кстати, подцепил к Zyxel Keenetic плату Arduino Uno по USB
На коленках написал код на SH (лениво PHP прикручивать) - теперь все на народный мониоринг шлется
Ну, я на пхп сделал. Почти цмс-ку написал (за основу внешнего вида брал ab-log) ))
Мне в первую очередь нужно из браузера управлять ардуиной ;)