Плата расширения для Arduino NANO v.3 подключения модуля беспроводной связи X-Bee Новый продукт от компании Robotdyn – Nano V3.0 I/O & Wireless Shield – это шилд для платы Arduino Nano.
Выведенные на плату разъёмы типа "мама" с шагом 0,1 дюйма позволяют произвести подключение к ней платы Arduino Nano по модульному принципу, что значительно экономит место.
По периметру установлены тройки контактов SVG. Они соединены с линиями управляющей платы (14 цифровых и 8 аналоговых) следующим образом:
- S — с соответствующим цифровым или аналоговым пином;
- V — с рабочим напряжением;
- G — с землёй.
Это позволяет подключать большое количество устройств через стандартные 3-проводные шлейфы (аналоговые датчики, сервоприводы и пр.).
Имеются отдельные выводы для подключения устройств, работающих по протоколам I2C и UART.
Плата имеет контакты для подключения следующих беспроводных модулей: xBee, nRF24, ESP2866, APC. Для включение/отключения беспроводных модулей на плате установлены перемычки.
Плата имеет гнездо стандартного соединителя для подключения питания (6-18 В) и кнопку выключения питания.
Размеры платы – 74.4 x 50.3 мм.
Рассмотрим подключение к плате радимодуля
nRF24L01. Беспроводные радимодули nRF24L01 работают на частоте 2.4 ГГц и поддерживают скорость передачи до 2Mbps. Радиоканал на данных модулях может обмениваться информацией в оба направления. Радиосеть может состоять из нескольких устройств на базе nRF24L01+ или NRF24LE1.
В качестве примера рассмотрим создание недорогого датчика, передающего показания влажности и температуры с датчика
DHT11 на сервер по радиоканалу.
Радиомодуль nRF24L01 при подключении к плате использует следующие контакты контроллера Arduino Nano:
Arduino PIN | nRF24L01+ |
D2 | IRQ |
D9 | CE |
D10 | CSn |
D11 | MOSI |
D12 | MISO |
D13 | SCK |
Для работы с радио модулями nRF24L01 нам потребуется Arduino-библиотека
RF24, для работы с датчиком влажности и температуры DHT11 – библиотека
DHT.
Схема соединений:
Скетч для передачи данных:
// Подключаем библиотеку для работы с шиной SPI #include // Подключаем файл настроек из библиотеки RF24 #include // Подключаем библиотеку для работы с nRF24L01 #include // Создаём объект radio для работы с библиотекой RF24, // указывая номера выводов nRF24L01+(CE, CSN) RF24 radio(9, 10); // Создаём массив для отправки данных int data[2]; // Подключение библиотеки DHT #include "DHT.h" // номер пина, к которому подсоединен датчик #define DHTPIN 2 // Инициируем датчик DHT dht(DHTPIN, DHT11); void setup() { // Инициируем работу nRF24L01 radio.begin(); // Указываем канал передачи данных (от 0 до 127), // 5 - значит передача данных осуществляется // (на частоте 2,405 ГГц на одном канале // может быть только 1 приёмник и до 6 передатчиков) radio.setChannel(5); // Указываем скорость передачи данных // (RF24_250KBPS, RF24_1MBPS, RF24_2MBPS), // RF24_1MBPS - 1Мбит/сек radio.setDataRate (RF24_1MBPS); // Указываем мощность передатчика // (RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm, // RF24_PA_HIGH=-6dBm, RF24_PA_MAX=0dBm) radio.setPALevel (RF24_PA_HIGH); // Открываем трубу с идентификатором 0x1234567890 // для передачи данных (на одном канале может быть // открыто до 6 разных труб, которые должны // отличаться только последним байтом идентификатора) radio.openWritingPipe (0x1234567890LL); // запуск датчика DHT dht.begin(); } void loop() { // считываем показания влажности // и записываем их в 0 элемент массива data data[0] = dht.readHumidity(); // считываем показания температуры // и записываем их в 1 элемент массива data data[1] = dht.readTemperature(); // отправляем данные из массива data указывая // сколько байт массива мы хотим отправить radio.write(&data, sizeof(data)); }