Месяц выдался угарным, но у меня все же нашлась минутка допилить rf24boot.. Да, та самая хрень, которая может обновлять прошивку в мк поверх nRF24L01 беспроводного интерфейса. Вместе со стандартным набором фиксов для библиотеки rf24 в antares, в сам загрузчик я тоже внес тонну изменений. Самое главное — наконец-то сделал USB-стик для программирования.. Так как дешевого stm32 с USB под рукой не было, а использовать stm32f103ret6 на такое жаба задушила донгл вышел на atmega8 с vusb внутри и 16M кварцем. (Вожно и 20Mhz, и даже 24.5 воткнуть, в принципе). Под катом ченджлог.
Первое что изменилось — скорость. Пршивка 26 кб и верификация теперь занимают ~23 секунды, что является лютейшим вином (Было — 2 минуты). Второе, стабильность работы на плохих линках с кучей помех намного увеличена. Оно будет тормозить, подвисать, но все же сделает дело! Даже если сидит на том же канале, что и вайфай по которому сейчас выкачивают кучу порно данных. Кстати… Еще я добавил в rf24tool опцию —sweep, которая сканирует диапазон и выводит через gnuplot красивый график использования 2.4Ghz диапазона разными устройствами. Не только nrf24l01, но и вайфаем, блютузом и прочими игрушками. Ниже идет скриншот:
А вот и полный ченджлог:
- Добавлена куча READMEшек для тех, кто любит читать
- Новый референсный дизайн донгла.
- Сверхдешевый и простой вариант платы: один слой, можно сделать ЛУТом, можно заказать в китаях за ~$10
- Реализована буфферизация и асинхронная отправка данных усб-стиком (По-русски — теперь мы работаем сильно быстрее)
- Отрефакторен код rf24tool, убраны все предупреждения при сборке.
- Вычистка кода (Выглядит местами все еще стремно, но зато уже почти читаемо)
- Теперь можно просто добавить свой адаптер!
- Улучшения производительности
- Улучшена стабильность при работе с узлами, находящимися далеко.
- Набор тестов
- Сканирование спектра опцией —sweep
- Исправлена обработка случаев, когда в RX фифо пришло больше одного пакета.
- Улучшена производительность
- Уменьшен размер кода
Плохие же новости в том, что кое какие проблемы остались.
- Новый USB-донгл, как оказалось плохо себя ведет с USB 3.0 портом в моем ноутбуке, в то время как с USB 2.0 портами все хорошо. Пожалуй тут придется покопаться, написать пару тестов, чтобы понять что происходит. Возможно особенность vusb..
- Библиотека для nrf24l01+ пока все еще имеет несколько проблем (Все они обходятся в текущем варианте загрузчика, но чинить это дело надо).
Собственно, библиотечка для rf24 доставляет больше всего неприятностей на текущий день. Сейчас это порт на чистый C библиотеки для arduino от maniacbug. И как обычно бывает с кодом для дурины, это странная дурнопахнущая масса с 200+ форками, половина из которых заброшена. В общем, все как обычно. (Когда меня спрашивают почему я ненавижу arduino — это, одна из главных причин!). Да и на саму rf24 библиотеку автор по ходу крепко забил. Так что мне это надоело и в моем TODO списке теперь значится:
- Отрефакторить nrf24l01 библиотеку. А именно — буферизация пакетов в аппаратном fifo, уменьшение размера кода, multiceiver, etc.
- Понять какого лешего пара пакетов застревает в аппаратном FIFO.
- Добавить в rf24tool поддержку spidev адаптера и gpiobb адаптера.
- Вынести часть кода из rf24tool которая работает с адаптером в шареную библиотечку, которую можно было бы использовать в своих программах. .
Да, и если хочется все это увидеть в этом мире БЫСТРЕЕ, то приглашаю помочь — все это добро лежит на github‘е.