Оглавление:
- Шаг 1: Модификации передатчика
- Шаг 2: Модификации приемника: добавление ЖК-дисплеев PIC16F887 и HD44780
- Шаг 3. Несколько ссылок…
- Шаг 4: выводы и дальнейшая работа
Видео: Беспроводная связь с использованием дешевых радиочастотных модулей 433 МГц и микроконтроллеров Pic. Часть 2: 4 шага (с изображениями)
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:53
В первой части этого руководства я продемонстрировал, как запрограммировать PIC12F1822 с использованием MPLAB IDE и компилятора XC8, чтобы отправлять простую строку по беспроводной сети с использованием дешевых модулей TX / RX 433 МГц.
Модуль приемника был подключен через переходник кабеля USB-UART TTL к ПК, и полученные данные отображались на RealTerm. Связь осуществлялась на скорости 1200 бод, а максимальная дальность передачи составляла около 20 метров через стены. Мои тесты показали, что для приложений, где нет необходимости в высокой скорости передачи данных и большой дальности, а также для непрерывной передачи, эти модули работали исключительно хорошо.
Вторая часть этого проекта демонстрирует, как добавить микроконтроллер PIC16F887 и ЖК-модуль 16 × 2 символа на приемник. Более того, на передатчике следует простой протокол с добавлением нескольких байтов предварительной выборки. Эти байты необходимы модулю RX для регулировки своего усиления до получения фактической полезной нагрузки. На стороне приемника PIC отвечает за получение и проверку данных, которые отображаются на ЖК-экране.
Шаг 1: Модификации передатчика
В первой части передатчик отправлял простую строку каждые несколько мс, используя восемь бит данных, начальный и стоповый бит со скоростью 1200 бит в секунду. Поскольку передача была почти непрерывной, у приемника не было проблем с настройкой усиления в соответствии с полученными данными. Во второй части прошивка модифицирована так, что передача выполняется каждые 2,3 секунды. Это достигается с помощью прерывания сторожевого таймера (установленного на 2,3 с) для пробуждения микроконтроллера, который переводится в спящий режим между каждой передачей.
Чтобы приемник успел точно настроить усиление, перед фактическими данными отправляются несколько байтов преамбулы с короткими временами гетеродина «(0Xf8) (0Xf8) (0Xf8) (0Xf8) (0Xf8) (0Xfa)». В этом случае полезная нагрузка обозначается начальным '&' и конечным байтом '*'.
Следовательно, простой протокол описывается следующим образом:
(0Xf8) (0Xf8) (0Xf8) (0Xf8) (0Xf8) (0Xfa) & Hello InstWorld! *
Кроме того, между клеммами V + и GND радиочастотного модуля добавлен развязывающий танталовый конденсатор на 10 мкФ, чтобы избавиться от пульсаций, вызванных повышающим модулем dc-dc.
Скорость передачи осталась прежней, но мои тесты показали, что и на 2400 бод передача была эффективной.
Шаг 2: Модификации приемника: добавление ЖК-дисплеев PIC16F887 и HD44780
Конструкция приемника была основана на PIC16F887, но вы можете использовать другую PIC с небольшими изменениями. В моем проекте я использовал этот 40-контактный микроконтроллер, так как мне потребуются дополнительные контакты для будущих проектов, основанных на этой конструкции. Выход радиочастотного модуля подключается к выводу UART rx, а ЖК-дисплей размером 16x2 символов (HD44780) подключается через выводы b2-b7 PORTB для отображения полученных данных.
Как и в части 1, полученные данные также отображаются в RealTerm. Это достигается с помощью вывода UART tx, который подключается через переходник кабеля USB-UART TTL к ПК.
Заглянув в прошивку, при возникновении прерывания от UART программа проверяет, является ли полученный байт стартовым байтом ('&'). Если да, он начинает запись последующих байтов, пока не будет пойман стоповый байт ('*'). Как только получено все предложение и если оно соответствует простому протоколу, описанному ранее, оно отправляется на ЖК-экран, а также на порт tx UART.
Перед получением начального байта приемник уже отрегулировал свое усиление, используя предыдущие байты преамбулы. Это очень важно для бесперебойной работы приемника. Выполняется простая проверка ошибок переполнения и кадрирования, однако это только базовая реализация обработки ошибок UART.
Что касается аппаратного обеспечения, то для приемника необходимо несколько деталей:
1 х PIC16F887
1 х HD44780
1 x RF Rx модуль 433 МГц
1 танталовый конденсатор 10 мкФ (развязка)
1 триммер 10 K (яркость шрифта ЖК-дисплея)
1 резистор 220 Ом 1/4 Вт (подсветка ЖК-дисплея)
1 x 1 кОм 1/4 Вт
1 х антенна 433 МГц, 3 дБи
На практике приемник исключительно хорошо работал на дальностях до 20 метров сквозь стены.
Шаг 3. Несколько ссылок…
Помимо официального сайта Microschip, в сети есть много блогов, дающих советы по программированию PIC и устранению неисправностей. Мне очень помогли следующие вещи:
www.romanblack.com/
0xee.net/
www.ibrahimlabs.com/
picforum.ric323.com/
Шаг 4: выводы и дальнейшая работа
Я надеюсь, что это руководство помогло вам понять, как использовать радиочастотные модули и микроконтроллеры Pic. Вы можете настроить прошивку под свои нужды и включить CRC и шифрование. Если вы хотите сделать свой дизайн еще более сложным, вы можете использовать технологию Keeloq от Microschip. Если вашему приложению требуются двунаправленные данные, вам потребуется пара TX / RX на обоих микроконтроллерах, или вы можете использовать более сложный трансивер. модули. Однако, используя такие дешевые модули 433 МГц, можно обеспечить только полудуплексную связь. В дополнение к этому, чтобы сделать связь более надежной, вам потребуется некоторая форма подтверждения связи между TX и RX.
В следующем руководстве я покажу вам практическое приложение, в котором датчик окружающей среды с температурой, барометрическим давлением и влажностью добавляется к передатчику. Здесь передаваемые данные будут включать crc и будут иметь базовое шифрование.
Датчик будет использовать порт i2c PIC12F1822, тогда как реализация и передатчика, и приемника будет представлена через схемы и файлы pcb. Спасибо, что прочитали меня!
Рекомендуемые:
RSSI для определения расстояния с помощью радиочастотных модулей (Xbees): 4 шага
RSSI to Distance With RF Modules (Xbees): Xbees - это небольшие радиочастотные модули, которые могут быть полезны для отправки информации туда и обратно, а также для некоторых других более конкретных целей. В этом проекте я использую их для получения значений индикатора мощности принимаемого сигнала (RSSI), чтобы оценить
RF 433MHZ Радиоуправление с использованием HT12D HT12E - Создание радиочастотного пульта дистанционного управления с использованием HT12E и HT12D с частотой 433 МГц: 5 шагов
RF 433MHZ Радиоуправление с использованием HT12D HT12E | Создание радиочастотного пульта дистанционного управления с использованием HT12E и HT12D с частотой 433 МГц: в этой инструкции я покажу вам, как сделать радиоуправляемый пульт дистанционного управления с использованием модуля приемника передатчика 433 МГц с кодированием HT12E & ИС декодера HT12D. В этом руководстве вы можете отправлять и получать данные, используя очень-очень дешевые КОМПОНЕНТЫ, КАК: HT
Беспроводная связь с использованием модуля приемопередатчика NRF24L01 для проектов на базе Arduino: 5 шагов (с изображениями)
Беспроводная связь с использованием модуля приемопередатчика NRF24L01 для проектов на базе Arduino: это мой второй поучительный учебник о роботах и микроконтроллерах. Это действительно потрясающе видеть вашего робота живым и работающим, как ожидалось, и поверьте мне, будет веселее, если вы будете управлять своим роботом или другими вещами по беспроводной сети с помощью быстрых и
Беспроводная последовательная связь с использованием Bluefruit: 4 шага
Беспроводная последовательная связь с использованием Bluefruit: Вот простое пошаговое руководство по замене ваших проводов на соединение с низким энергопотреблением Bluetooth: мне потребовалось время, чтобы понять это, потому что почти нет документации по выполнению этого с помощью современных технологий Bluetooth с низким энергопотреблением, таких как как Bluefrui
Простой измеритель частоты вращения с использованием дешевых модулей: 8 шагов
Простой измеритель оборотов с использованием дешевых модулей: это очень интересный проект, требующий очень меньших усилий. Он позволяет сделать очень простой измеритель оборотов в минуту (в моем случае - раунд за секунду)