Arduino Due + радиомодуль RFM69HCW

Jaguar
Offline
Зарегистрирован: 18.02.2016

Добрый день! Пожалуйста, помогите стартануть связку Arduino Due + RFM69HCW.

Сразу скажу - подружить надо именно эти два устройства. Они подобраны по необходимым характеристикам.

Для радиомодуля есть разные готовые библиотеки, но только RadioHead поддерживает Due.
http://www.airspayce.com/mikem/arduino/RadioHead/
http://www.airspayce.com/mikem/arduino/RadioHead/classRH__RF69.html

Самая популярная библиотека от LowerPowerLab компилируется только на 8-ми битных Arduino с чипом ATMega.

Сейчас история "любви"  Arduino Due + RFM69HCW сложная:

все соединения по инструкции:

Arduino RFM69W
* GND----------GND (ground in)
* 3V3----------3.3V (3.3V in)
* interrupt 0 pin D2-----------DIO0 (interrupt request out)
* SS pin D10----------NSS (chip select in)
* SPI Due ----------SCK (SPI clock in)
* SPI Due ----------MOSI (SPI Data in)
* SPI Due ----------MISO (SPI Data out)
 
Под SPI Due я имею ввиду выведенный отдельно 6-канальный разъем.
 
В итоге:
 
Запускаю пример rf69_client из библиотеки RadioHead
 
 
SPI шикарно конфигурирует радиомодуль.
Радиомодуль посулыет первый пакет информации и уходит в вечное оджидание внутри функции waitPacketSent(). И не уходит на очередной loop().
 
После разбора полетов на программном и аппаратном уровне я обнаружил, что по каналу D2 (DIO0) Arduino не получает запросы от радиомодуля на прерывание, чтобы выполнить функцию isr0(). Если я повыдергиваю и повтыкаю обратно проводок, то иногда все таки функция isr0() вызывается. То есть на программном уровне attachInterrupt(interruptNumber, isr0, RISING) все таки выполнился в setup() правильно. По datasheet вроде как получается, что не заканчиается никогда процедура отправки пакета на желеном уровне...
 
но...
 
Это не все. Я прощупал протым тестером все пины радиомодуля. Везде есть токи и напряжения тупым прощупыванием постоянного тока, причем разноуровневые. Полагаю это некорректные измерения, но жизнь модуля можно прикинуть. Схема, возможно не мертвая. И даже на DIO0 можно что-то поймать. Но ооочень слабенькое в районе 0.01В.
 
Ну так вот... Я стал шевелить макетку в непонимание, чтобы такое сделать... И... Опа ... waitPacketSent() окончился, и сработал loop().
 
Я стал шевелитть и трогать все, что можно и обнаружил, что когда касаюсь пальцем D2, то иногда срабатывание все таки происходит... Еще долго мучая тактильно собраную схему, я нашел вариант, когда D2 срабатывает.
 
Оказалось, что если я не буду подавать питание на радиомодуль с Arduino Due через 3,3В то прерывания работают стабильно даже без прикосновения пальцем к D2! Я прощупал тестером - на рабиомодуле везде остаютчся разные уровни напряжения до ~2,5В. Очевидно мусорная запитка по SPI-выводам. Но если я прикоснусь тестером к D2 - схема опять остановится. Очевидно тестер своей нагрузкой нарушает хрупкое равновесие.
 
Пока я точно не могу дать обьяснение всему этому. Я даже не могу утверждать, почему D2 стал срабатывать. Может это банально какие-то шумы, а может быть без питания смещается уровень сигнала к тому, что может быть распознан.
 
Собственно говоря, обращаюсь к Вам за помощью! Помогите завести зверя! Оставлять трансивер без питания не вариант. Мне надо 50 метров внутри здания пробить и 20дбм выдать. Это тоьлко с внешним питанием возможно.
 
Кстати пробовал с Arduino Uno, внешним питанием, делителем напряжения - все равно WaitPacketSent виснет.
 
p.s. Особо удивляет крайне малое количество информации по практическим инсталляциям в проектах rfm69. После анализа предложений, пришел к выводу, что это ведущий радиомодуль для построения приличных радиоканалов 868. А за рубежом все сидят на Moteino (RFM69 + MCU), построенное на них. Здесь Moteino не продают, только сами трансиверы.
 
Памажите! Уже вторую неделю мучаюсь.
Jaguar
Offline
Зарегистрирован: 18.02.2016

Новая библиотека RadioHead работает великолепно. Пожалрвался производителю библиотеки, и он ее доработал. Тему можно закрывать

BDW
Offline
Зарегистрирован: 09.03.2018

Добрый день! Помогите разобраться с работой этого модуля. 

Итересует реализация сканера на этом модуле. Смысл такой: есть брелок запуска webasto похожий на telestart t91. Работает на частоте 868 МГц. Требуется считать код этого брелка и имитировать его код.

К сожалению, у меня крайне плохо с английским, а все что есть в интернете - на английском. И во всю документацию въехать сразу не могу.

Насколько я понял, у него есть несколько видов модуляции: FSK, GFSK, MSK, GMSK и OOK. Можно ли заставить приемник этого модуля автоматом выбрать и подобрать тип модуляции? Или все это надо делать руками, путем перебора (если не известен вид модуляции)?