Перепрошивка блоков через RF-модуль nRF24L01+
- Войдите на сайт для отправки комментариев
Втр, 04/06/2013 - 11:25
Добрый день!
Создаю автономный модуль: связка из ардуино (atmega328), RF-модуля nRF24L01+ и одного датчика.
Работает так как нужно, все в порядке.
Но сейчас подумал о том, что в дальнейшем мне может понадобиться ардуино перепрошить, а учитывая, что блок будет находиться в труднодоступном месте, сделать это будет непросто. Есть какая-нибудь возможность сделать это по воздуху?
Может быть еще один микроконтроллер попроще добавить, который будет на себя брать задачу перепрошивки?
как один из вариантов - поставить второй МК (или использовать nrf24le1 со встроенным МК) и организовать RS232 шлюз через сеть NRF24, на втором конце сделать такой же адаптер на МК который подключать к компьютеру
далее прошивать как обычную ардуину. Только RX-TX коммуникация будет идти по пути:
ПК -> USB -> урдуинка с модулем NRF24 -> воздух -> специальный МК для организации шлюза с модулем NRF24 -> прошиваемая ардуинка через RX-TX
если не ошибаюсь, примерно в такой логике работает Xbee - можно даже тупо сделать свои модули XBee на чипе NRF24 и делать коммуникацию и прошивку через них так же как через такие же модули но с другим протоколом
Спасибо, буду подбирать самую недорогую микросхему с RX-TX.
Кстати, раз уж речь прошла про Xbee, в инете сложно найти инфу по ним, везде только продают)
Xbee - это протокол? Интерфейс? Вид разъема?
Спасибо, буду подбирать самую недорогую микросхему с RX-TX.
Кстати, раз уж речь прошла про Xbee, в инете сложно найти инфу по ним, везде только продают)
Xbee - это протокол? Интерфейс? Вид разъема?
как я понимаю - это формфактор, т.е. стандартный разьем с рядом пинов стандартного назначения (по больше части это пины с питанием и как раз RX TX)
фишка в том, что ты пишешь для ардуины код, который не зависит от того через какой протокол или чип идет реальная передача - есть Xbee для блютуфа, есть для Zigbee, wifi и т.д., даже странно, что нет nrf24l01, наверно все таки xbee это надстройка которая убивает прелесть от цены nrf24l01+
насчет чипа бери atmega8 - их десяток на алиэкспресс стоит 9 баксов всего. сейчас коньюктура рынка такая, что что-то совсем дешовое брать дорого - сэкономишь 10-20-50 центов, а потом потратишь кучу времени, чтобы на ограниченных ресурсах что-то сделать
кстати тоже сейчас делаю умные устрояства для дома на базе nrf24. тоже думал про прошивку
можно было бы объединить усилия.
да, забыл - для прошивки еще кроме RX TX надо цеплять Reset, чтобы удаленно можно было сбрасывать ту ардуинку, которую надо програмировать
Сам остановился на Atmega8 и по тем же причинам. Что-либо попроще привезти стоит чуть ли не дороже ее.
объединить усилия было бы неплохо. Опыта у меня только маловато, если это не проблема - можно и совместить. Главное, чтобы концепции умных устройств совпали. Мне помимо функционала еще важен размер+цена.
Моя концепция умных устройств: это дешевые, компактные устройства везде, вплоть до того, что оно будет в каждой розетке.
Сначала я смотрел на плату http://jt5.ru/arduino/colibri/, но для такого подхода цена кусается.
Поэтому решил брать отдельно контроллер Atmega328, отдельно RF-чип, минимум обвязки, датчик или два и выход на управление. Так как перепрошивать без еще одного контроллера не получится, добавляем еще atmega8. Под это разрабатываю двустороннюю компактную плату и загружаю Arduino-бутлоадер.
Цена на мой взгляд должна укладываться рублей в 300.
Это мне позволяет выполнить следующие сценарии:
1. Автономный датчик протечек, температуры, качества воздуха и прочего. Стандартно
2. Автономный модуль в каждую розетку с датчиком тока, температурным датчиком и управлением включения розетки от твердотельного реле (пока ничего безопаснее не придумал).
Такой подход к устройствам устроит?
Сейчас жду nrf24, буду пробовать. Пока с радиопередачей не связывался.
Есть подобная задумка
http://arduino.ru/forum/apparatnye-voprosy/zalivka-sketcha-cherez-bluetooth
но сейчас думаю, что более правильно делать по радио не ком порт, а сразу SPI чтоб можно было просто прошить скетч без бутлоадера.
В любом случае сейчас жду из Китая модули nrf24l01+.
P/S/ Последние две поставки оказались очень разными по дальности и устойчивости работы. Первая пара свободно прошибает 2 стены, вторая только по комнате. Жду третью.
объединить усилия было бы неплохо. Опыта у меня только маловато, если это не проблема - можно и совместить. Главное, чтобы концепции умных устройств совпали. Мне помимо функционала еще важен размер+цена.
у меня опыта тоже не много
Моя концепция умных устройств: это дешевые, компактные устройства везде, вплоть до того, что оно будет в каждой розетке.
Сначала я смотрел на плату http://jt5.ru/arduino/colibri/, но для такого подхода цена кусается.
Поэтому решил брать отдельно контроллер Atmega328, отдельно RF-чип, минимум обвязки, датчик или два и выход на управление. Так как перепрошивать без еще одного контроллера не получится, добавляем еще atmega8. Под это разрабатываю двустороннюю компактную плату и загружаю Arduino-бутлоадер.
Цена на мой взгляд должна укладываться рублей в 300.
RF чип или модуль? я тоже думал про чип, но сейчас на али чип десятком стоит по 80 центов, а модуль можно взять за 90 - теряется смысл брать чип - нужно еще как минимум около десятка деталей, тот же кварц стоит десятком от 10 центов
а в целом у меня такие же задумки - можно на мой взгялд сделать "шасси" - типа ардуинки только заточенное именно под умный дом, где есть основной мк, радиомодуль, контроллер питания от батарейки или акб
Это мне позволяет выполнить следующие сценарии:
1. Автономный датчик протечек, температуры, качества воздуха и прочего. Стандартно
2. Автономный модуль в каждую розетку с датчиком тока, температурным датчиком и управлением включения розетки от твердотельного реле (пока ничего безопаснее не придумал).
Такой подход к устройствам устроит?
да именно так и думаю. правда с бутлоадером есть еще одна проблема - не работоспособность watchdog, а это сильно снижает надежность. я предлагаю в качестве среды разработки выбрать atmelstudio с надстройкой для ардуино, чтобы использовать теже библиотеки, но бутлоадер не использовать, обязательнос использовать watchdog
Есть подобная задумка
http://arduino.ru/forum/apparatnye-voprosy/zalivka-sketcha-cherez-bluetooth
но сейчас думаю, что более правильно делать по радио не ком порт, а сразу SPI чтоб можно было просто прошить скетч без бутлоадера.
В любом случае сейчас жду из Китая модули nrf24l01+.
P/S/ Последние две поставки оказались очень разными по дальности и устойчивости работы. Первая пара свободно прошибает 2 стены, вторая только по комнате. Жду третью.
соглашусь по причине ряда проблем, которые вызывает бутлоадер. Но такой подход может существенно усложнить разработку.
предлагаю обсуждение перенести в http://arduino.ru/forum/proekty/platforma-dlya-upravleniya-umnym-domom-n...
То, что бутлоадер и watchdog не дружат я не знал, это плохо. Переходить на AtmelStudio планирую, но сначала хотел закончить устройство на arduino, чтобы оно было рабочим. Планирую делать так, потому что чистый С на микроконтроллерах еще не изучал, боюсь, что потрачу время и перегорю.
Выбор именно чипа связан не с ценой, а с габаритами и возможностью создать плату с выносной антенной. Да, модуль компактен, но это еще один этаж над платой, а в розетке места немного. Второй момент: меня гложут сомнения, что антенка в виде дорожки на плате пробъет из дырки в бетонной стене под розетки. Рассматриваю вариант выносной, которую спрячу под декоративную панель розетки.
Согласен, следующие посты пишу там.
"с бутлоадером есть еще одна проблема - не работоспособность watchdog" - Это где написано. У меня есть несколько решений где все это вместе работает.
"с бутлоадером есть еще одна проблема - не работоспособность watchdog" - Это где написано. У меня есть несколько решений где все это вместе работает.
поделитесь решением, я сам пробовал, искал в форумах - решения не нашел. возникает цикл перезапуска
вроде как существуют исправленные версии бутлоадера, но как я понял официальная версия с watchdog не работает
Например http://arduino.ru/forum/proekty/bolshie-chasy-pogodnaya-stantsiya#comment-31370
Например http://arduino.ru/forum/proekty/bolshie-chasy-pogodnaya-stantsiya#comment-31370
зачем там про фьюзы написано? это стандартный arduino UNO или своя плата на atmega328?
бутлоадер использован?
Фьюзы для снижения потребления и внутреннего кварца. В них же можно уменьшить время старта бутлоадера.
Это своя плата - фотки наверху темы. Бутлоадер использован.
>> с бутлоадером есть еще одна проблема - не работоспособность watchdog
имею две ардуино нано. Одна 168 и одна 328.
С помощью ArduinoISP успешно прошил им optiboot из комплекта файлов Ардуино IDE 1,0,1. Только в boards.txt поправил. Теперь нет проблемы. И скетчи заливаются быстрее значительно.
Фьюзы для снижения потребления и внутреннего кварца. В них же можно уменьшить время старта бутлоадера.
Это своя плата - фотки наверху темы. Бутлоадер использован.
бутлоадер просто прошит или avr стартует с него после каждого ресета? это ключевое, если он не используется в старте, то проблемы с watchdog и не будет
фьюзами нельзя ускорить старт ардуиновского бутлоадера
фьюзами можно лишь сократить задержку самого avr перед передачей управления коду бутлоадера или программы, смотря что прописано
>> с бутлоадером есть еще одна проблема - не работоспособность watchdog
имею две ардуино нано. Одна 168 и одна 328.
С помощью ArduinoISP успешно прошил им optiboot из комплекта файлов Ардуино IDE 1,0,1. Только в boards.txt поправил. Теперь нет проблемы. И скетчи заливаются быстрее значительно.
поясните что хотели сказать. мне не понятно. optiboot решает проблему с watchdog?
да!
бутлоадер просто прошит и avr стартует с него после каждого ресета
фьюзами конечно можно лишь сократить задержку самого avr
у меня работает именно optiboot,
со штатным расстался давно, так как память обычно на вес золота
мне не понятно. optiboot решает проблему с watchdog?
Там ларчик просто открывается - в бутлодырь введены инструкции отключения сторожевого таймера в случае индикации состояния "Программирование".
Ведь, в сущности, проблемы уотчдога, как таковой, нет, поскольку и причины и методы решения такого поведения микроконтроллера известны с незапамятных времен. Есть лишь необъяснимое нежелание отцов-основателей Arduino встроить выключатель (или "подавитель") в официальный загрузчик.
ясно, значит я был прав, когда написал про проблему с официальным загрузчиком. про решение проблемы в ряде не официальных я читал, только сам не проверял. буду знать, спасибо.
optiboot идет в составе штатной поставки ПО. Так что совсем уж неофициальным я его бы не называл.
Так посмотрите исходники бутлоадера, поправьте, да прошейте
смотрел уже - ничего не понял, так как там почти один асемблер ) но это пока не важно, важно что есть решение для стородевого таймера, а код бутлоадера надо будет менять только если МК будет не из списка тех которые прописаны в коде бутлоадера
Нет там ассемблера. Но есть прямое обращение к портам. Есть выключение watchdog, которое включается условной компиляции. В общем, было бы желание
смотрите внимательнее - третья треть optiboot.c где собственно функции которые вызываются во второй трети файла из кода на Си (первая треть - определения)
но это не суть
Это всего лишь работа с USB, и к watchdog не имеет отношения. Ок, не вопрос.
Собрал схему для удаленной прошивки Ардуино по сом порту и столкнулся с проблеммой:
avrdude: stk500_paged_write(): (a) protocol error, expect=0x14, resp=0x64
avrdude: stk500_cmd(): programmer is out of sync
Прошиваемая ардуинка ресетится, начинается заливка и сразу прекращается. Промучился день, решил упростить собрал тестовую схему без радиомодулей:
USB2COM -> (софт COM) Ардуино для заливки(скетч ниже) (аппаратн COM) -> Прошиваемая Ардуино.
Все ардуины 328. Ресет в тесте завел напрямую с USB2COM прямо в прошиваемую Ардуину. Ошибка та же. Пробовал с буферами 32 байта и без. Все равно не работает - где собака зарылась не понятно. Заранее спасибо за помощь.
P/S/ Напрямую тестовая конечно прошивается - первое что проверил!
Посмотрел анализатором
Нашел сегодня страничку http://www.faludi.com/itp_coursework/meshnetworking/XBee/XBee_program_Arduino_wireless.html
Попробую использовать.
Есть вот такие вот штуки: NRF24L01 Wireless Shield SPI to IIC I2C TWI Interface
С помощю их можно прошивать по воздуху?
dmw, с помощью этой штуки можно подключить радиомодуль с SPI интерфейсом к микроконтроллеру или ардуине по I2C интерфейсу. Работать (!) радиомодуль будет если вы напишите/найдёте совместимую с I2C библиотеку. Файлик в описании этого товара не содержит такой библиотеки. Насколько я знаю, прошивать микроконтронтроллеры AVR и платы ардуино через I2C невозможно.
dmw ты их использовал? Если да - то поделись впечатлениями.
Я предполагаю с моими схемами проблема в следующем:
57600 это 1 байт каждые 138 микросекунд и задержка на ожидание ответа от прошиваемой 328р тоже находится гдето в этом порядке, а постановка в промежуток моей машинерии вносит доп задержку и мешает обмену.