nRF24L01 + с 3 контактами ATtiny85
Компоненты и расходные материалы
| × | 2 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Об этом проекте
Это было бы продолжением моего предыдущего проекта Programming ATtiny85 с Arduino Uno. Теперь с более дешевым ATtiny85 я искал более дешевые способы передачи данных с датчиков. Это привело меня к nRF24L01 + дешевому, маломощному радиопередатчику. Мне это показалось лучшим решением. Но была одна проблема - ограничение количества выводов в ATtiny85. Не могу подключить одновременно nRF24L01 + и датчик в нем. Так что я искал решения и наткнулся на «регулятор nrf24l01 + с 3 контактами ATtiny85». Здесь я расскажу, как я это реализовал.
Модули
Здесь будет два модуля - передатчик и приемник. Передатчиком будет ATtiny85, отправляющий некоторые данные, а приемником будет Arduino Uno, получающий данные через nRF25L01 +. Я использую библиотеку RF24 (http://tmrh20.github.io/RF24/). Следуйте приведенным там инструкциям и добавьте его в Arduino IDE, прежде чем начать с этого. Я не буду подробно рассказывать о RF24, так как по нему есть очень хорошая документация.
Передатчик
Передатчик каждую секунду передает увеличивающееся число. ATtiny85 отправит данные через nRF24L01 +, используя только 3 контакта. Я следую инструкциям Ральфа Донкастера по его реализации.
Необходимые компоненты:
- ATtiny85
- nRF24L01 +
- Керамический конденсатор - 10 нФ
- Углеродный пленочный резистор - 22 кОм
- Переключающий диод - 1n4148
Загрузите приведенный ниже код в ATtiny85 (обратитесь к моему предыдущему проекту «Программирование ATtiny85 с Arduino Uno, если хотите знать, как это сделать»)
sender.inoСоедините компоненты, как показано ниже
Когда источник питания подключен, передатчик будет отправлять последовательность чисел каждую 1 секунду.
Получатель
Приемник принимает данные, отправленные передатчиком, и полученные данные можно увидеть в Serial Monitor.
Необходимые компоненты:
- Arduino Uno
- nRF24L01 +
- nRF24L01 + адаптер розетки (необязательно)
Загрузите приведенный ниже код в Uno
Receiver.inoСоедините компоненты, как показано ниже
Если это не ясно, обратитесь к файлу fritzing, приложенному к этому проекту. Обратите внимание, что Vcc всегда должен быть 3 на 3. В некоторых клонах Arduino Uno питание 3v3 может не иметь достаточного тока, что приводит к тому, что nRF24L01 + не работает. Для решения этой проблемы рекомендуется любой из следующих способов.
- Используйте отдельный блок питания 3v3.
- Добавьте конденсатор 10 мкФ между Vcc и Gnd в самом модуле.
- Используйте адаптер розетки nRF24L01 +
Теперь, когда передатчик и приемник готовы, пришло время проверить. Убедитесь, что питание передатчика включено. Подключите Arduino Uno к ПК и откройте последовательный монитор в arduino ide. Он должен работать, как показано ниже
Сделать это навсегда
Имея небольшие познания в пайке, я сделал его постоянным, используя перфорированную плату.
Это более простой модуль, демонстрирующий, как nRF24L01 + и как мы можем использовать только 3 контакта ATtiny85 для его подключения, чтобы остальные контакты были доступны для чтения данных датчика. Отзывы / предложения приветствуются.
Код
- Передатчик
- Получатель
Передатчик C / C ++
#define CE_PIN 3 # define CSN_PIN 3 // Поскольку мы используем конфигурацию с 3 контактами, мы будем использовать один и тот же контакт для CE и CSN # включая RF24 Radio (CE_PIN, CSN_PIN) "RF24.h"; адрес байта [11] ="SimpleNode"; беззнаковая длинная полезная нагрузка =0; void setup () {radio.begin (); // Запускаем радио radio.setAutoAck (1); // Убедитесь, что autoACK включен radio.setRetries (15,15); // Максимальная задержка между попытками и количеством попыток radio.openWritingPipe (address); // Запись по адресу устройства 'SimpleNode'} void loop (void) {payload ++; radio.write (&payload, sizeof (беззнаковое длинное)); // Отправляем данные в 'Receiver' каждую секунду с задержкой (1000);}
Получатель C / C ++
#define CE_PIN 7 # define CSN_PIN 8 # include#include "RF24.h" RF24 radio (CE_PIN, CSN_PIN); байтовый адрес [11] ="SimpleNode"; unsigned long payload =0; void setup () {Serial.begin (115200); radio.begin (); // Запускаем радио radio.setAutoAck (1); // Убедитесь, что autoACK включен radio.setRetries (15,15); // Максимальная задержка между попытками и количеством попыток radio.openReadingPipe (1, address); // Запись по адресу устройства 'SimpleNode' radio.startListening ();} void loop (void) {radio.stopListening (); radio.startListening (); radio.read (&payload, sizeof (длинное беззнаковое)); if (payload! =0) {Serial.print ("Получены данные"); Serial.println (полезная нагрузка); } delay (1000);}
Схема
nRF24L01% 2B (с% 20Socket)% 20Attiny85.fzz nRF24L01% 2B% 20Arduino% 20Uno.fzzПроизводственный процесс
- Схема с переключателем
- Скалка
- Считать температуру с помощью DS18B20 | Raspberry Pi 2
- Измерение температуры с помощью RASPBERRY PI
- Мониторинг температуры с помощью Raspberry Pi
- Приятель осанки с Walabot
- Распознавание цифр AI с помощью PiCamera
- Начало работы с TJBot
- Создание сегвея с Raspberry Pi
- GoPiGo v2 с Windows IoT