arduino mega и nano и rfm12bs 433mhz
- Войдите на сайт для отправки комментариев
Подскажите пож-та, не могу самостоятельно решить следующий вопрос
1. имеется в наличие arduino nano v3 atmega 328, arduino mega 2560 и два модуля rfm12bs 433mhz
2. подключение rfm12b через SPI интерфейс
3. на рисунках подключение к arduino nano и arduino mega, у них разные порты spi интерфейса. NANO SPI-10,11,12,13, IRQ2-2. MEGA SPI-50,51,52,53, IRQ2-21
4. для работы используется библиотека jeelib https://github.com/jcw/jeelib, в файле RF12.cpp есть прописка относительно AVR_ATmega2560 для MEGA и ATmega328 для NANO, т.е. библиотека не старая и данные adruin-ы учитываются.
Мне кажется что-то аппаратно сделал не так, подключал как обозначено в ссылке jeelabs от модуля rfm к arduino портам, без резисторов, питание от arduino 3.3v, на одной найденной схеме подключение используется один gnd на второй этот gnd вообще не используется, на другой через резистор замыкают CLK и VDD.
В настройках jeelib для mega и nano разные параметры ss_bit - возможно в этом дело?
Нашел статью по использованию rfm12b в пульте пиротехники (там чистый С), схема подключения rfm12b на этом пульте существенно отличается от jeelabs-ой.
Дайте направление, любую информацию для решения данного вопроса. Спасибо
в простейшем скетче rf12_recvDone не отрабатывает, передача
Передача
#include <JeeLib.h> //payload def typedef struct { float tempC; } Payload; Payload payload; void setup() { rf12_initialize(1, RF12_433MHZ, 212); } void loop() { while(!rf12_canSend()){ rf12_recvDone(); } payload.tempC = 10; rf12_sendStart(0, &payload, sizeof payload); rf12_sendWait(3); }
Прием
#include <JeeLib.h> //payload def typedef struct { float tempC; } Payload; Payload payload; void setup() { rf12_initialize(2, RF12_433MHZ, 212); } void loop() { if (rf12_recvDone() && rf12_crc == 0 and rf12_len == sizeof(Payload)){ const Payload* p = (const Payload*) rf12_data; // Serial.print( "temp C: " ); // Serial.println(p->tempC); } }