Всем доброго времени суток. Извиняюсь, если залез не в тот раздел, но вот что я хочу опубликовать.
Было у меня 2 беспроводных трансивера nRF24L01. Я сделал два мини-прибора, которые друг другу могут слать побайтно информацию. Возможно, кто-то уже давно много всего подобного переделал, я просто хочу поделиться, авось кому-нибудь, да пригодится. Мало ли кто ищет что-нибудь работающее для них.
Итак, что у нас есть:
- 2 трансивера
nRF24L01. (стоимость из на ибее смешная - не более 500р за 2 штуки)
- 2 платы AVR-Crumb644-Net (Это уже значительно подороже, но тут подойдёт нечто гораздо проще. Мне просто нужен был преобразователь 5В - 3.3В, и он тут как раз оказался, а платы у меня давно валяются)
- 2 Кабеля USB
- придётся спаять кабели для обоих трансиверов, чтобы соединить с атмегой.
- 2 ПК или 2 ноутбука или ноут и ПК - для более эффектного результата и проверки дальности функционирования.
- дрова для CP210x на обе ПЭВМ (например, на сайте силабс)
- гипертерминал (или что-то покруче)
Что я с этим сделал:
1. Соединил Crumb644 с трансивером, получилось две такие пары.
2. Прилагаемый файл прошивки залил и туда и туда (в оба камня одинаковый)
3. Соединил одну систему с ПК, вторую с ноутом. Включил терминал и там и там.
Что получается:
1. Пишем в терминал одного трансивера символ, видим, как он пришёл в терминал на второй трансивер.
2. Ходим с ноутом всюду и смотрим, насколько далеко бьёт сигнал. У меня получилось, если из одной комнаты в другую, то примерно метров 20, в пространстве без стен и перегородок около 60 метров.
Как так-то?
1. Приёмопередатчики работают на частоте 2,4 ГГц, с возможностью программно калибровать частоту в небольшом диапазоне. Важно, чтобы в обоих была одинаковая, но в нашем случае прошивка вообще одна и та же.
2. Оба трансивера по-умолчанию сидят в режиме приёмника. При отправке символа в USART происходит перенастройка на передачу и обратно при завершении. Более подробно написано в коде программы в комментариях.
3. Каждый символ, введенный в терминал одного трансивера сразу идёт в буфер передачи и отправляется в эфир.
4. Если передатчик не нашёл флага о завершении передачи, это не означает, что байт не был передан, но он уведомит об этом пользователя сообщением в терминал.
Как соединять?
вот все 8 пинов, которые есть у трансивера и куда они идут на мою Crumb644:
Vcc --› V33
GND --› GND
CE --› PB0
CSN --› PB4
SCK --› PB7
MISO --› PB6
MOSI --› PB5
IRQ --› PB1
Питание трансивера должно быть не более 3,6 В. Тут 3.3 у меня. Выходы толерантны к пяти.
Трансивер общается, как вы поняли уже, по SPI. есть у него всего 0x1D регистров и несколько основных инструкций, благодаря которым он управляется (см. даташит).
Прикрепляю всё необходимое для работы и прошивку на Си.
Удачи