Решил опробовать радио модули NRF24L011. http://robocraft.ru/shop/index.php?route=product/product&path=54&product_id=268
Задача №1 просто передать переменную от одной ардуины до второй.
В начале пробовал пользоваться библиотекой Mirf, но даже пробные примеры не заработали.
Далее решил опробовать библиотеку RF24, тоже безрезультатно.
Передатчик Craftduino
Пины:
13 - SCK
12 - MISO
11 - MOSI
10 - CSN
9 - CE
IRQ не используется
питание подано от стабилизатора 3,3.
Код передатчика
- Код: Выделить всё
#include <SPI.h>
#include "RF24.h" // Подключаем скачанную библиотеку RF24.
//Контакты от радио модуля NRF24L01 подключаем к pins -> Arduino
//SCK -> 13//MISO -> 12//MOSI -> 11//CSN -> 10//CE -> 9
// Set up nRF24L01 radio on SPI bus plus pins 9 & 10
RF24 radio(9,10);
const uint64_t pipe = 0xE8E8F0F0E1LL; // адрес канала передачи
int msg[1]; //переменная для отправки радио сигнала
void setup(void){
Serial.begin(9600);
radio.begin();
radio.openWritingPipe(pipe); // Открываем канал передачи
msg[0] = 123;
msg[1] = 125;
}
void loop() {
radio.write(msg, 1);
Serial.println(msg[0]);
delay(3000);
}
В качестве приемника использую Arduino Mega, соответственно номера пинов SPI тоже изменены.
Пины:
52 - SCK
51 - MOSI
50 - MISO
42 - CSN
40 - CE
Код:
- Код: Выделить всё
#include <SPI.h>
#include "RF24.h"
//Контакты от радио модуля NRF24L01+ подключаем к pins -> Arduino
//SCK -> 13//MISO -> 12//MOSI -> 11//CSN -> 42//CE -> 40
// Set up nRF24L01 radio on SPI bus plus pins 9 & 10
RF24 radio(40,42);
const uint64_t pipe = 0xE8E8F0F0E1LL; // адрес канала
int msg[1]; //переменная для приёма радио сигнала
void setup()
{
Serial.begin(9600);
radio.begin();
radio.openReadingPipe(1,pipe); // Открываем один из 6-ти каналов приема
radio.startListening(); // Начинаем слушать эфир
}
void loop()
{
if (radio.available())
{
radio.read(msg, 1);
Serial.println(msg[0]);
}
}
Распиновку проверил уже по 100 раз, контакты надежные.
Питание радиомодулей раздельное, на каждый свой стабилизатор на 3,3В.
Где-то вычитал, что у стабилизатора может иногда проседать напряжение, потому на выходе подключил электролитический конденсатор на 100мкФ.
Мультиметром замерил напряжение, все точно, напряжение корректное.
Уже все вроде перепробовал, результата ноль.
Даже не ясно проблема программная или хардверная.
У меня цель на данный момент хотя бы увидеть что модули работают, так что буду благодарен любой помощи с отладкой этого скетча или если кто приложит свой рабочий пример.
В наличии имеется логический анализатор. Просмотр интерфейса показывает что модули по крайней мере что-то отсылают ардуине, так что видимо они все же рабочие.