Приемопередатчик HC-12 и Arduino
Приемопередатчик HC-12 представляет собой полудуплексный беспроводной последовательный модуль связи со 100 каналами в диапазоне 433.4-473.0 МГц, способный передавать данные на расстояние до 1 км. Радиочастотная микросхема Этого модуля содержит передатчик на 20 дБм (100 мВт) и приемник, который имеет чувствительность -117 дБм (2 × 10-15 Вт) при 5000 бит/с.
Сегодня можно найти несколько разновидностей модуля HC-12, но все они, как правило, основаны на приемопередатчике Si4463 и микроконтроллере STM8S003F3. В данном материале будет реализован несложный проект на основе HC-12 и Arduino.
Модуль HC-12 имеет четырехпроводный интерфейс UART (Vcc, Gnd, TxD, RxD), а также пятый вывод, который используется для входа в режим «Command» для изменения конфигурации модуля. Этот пятый контакт на HC-12 обозначен как «Set», и при низком логическом уровне позволяет выбирать различные настройки HC-12, используя AT-команды, посылаемые на линию приема данных Rx. Конфигурация по умолчанию HC-12 это FU3 на канале 1, FU3 – полностью автоматическая и прозрачная (для других устройств) настройка, которая адаптируется к скорости передачи подключенного устройства (хотя 9600 бод все еще требуется для программирования в режиме «Command». Обратите внимание, что по мере увеличения скорости передачи мощность приемника уменьшается. Вы можете вернуться к состоянию по умолчанию, отправив команду AT + DEFAULT один раз в командном режиме.
Данный обучающий проект предполагает создание информационного радиомоста между двумя компьютерами, к которым подключены платы Arduino с модулями HC-12. Программа позволит отправлять сообщения между двумя компьютерами через приемопередатчики HC-12. Текст, напечатанный на одном компьютере, будет отображаться в интерфейсе последовательного порта второго компьютера. Схема подключения платы Arduino и модуля HC-12 представлена ниже.
Здесь линия приема данных RxD модуля подключается к четвертому выводу платы, линия передачи TxD к пятому выводу платы, а линия установки режима к шестому выводу. Также следует отметить, что питание на модуль HC-12 следует заводить от источника, а не от платы Arduino, поскольку передаче данных этот модуль может потреблять достаточно много тока, поэтому регулятор на плате Arduino может не справиться с такой нагрузкой. Код (скетч) для плат Arduino показан далее.
#include <SoftwareSerial.h>
const byte HC12RxdPin = 4; // Линия приема данных на HC12
const byte HC12TxdPin = 5; // Линия передачи данных на HC12
SoftwareSerial HC12(HC12TxdPin,HC12RxdPin); // Инициализация последовательного порта для HC12
void setup() {
Serial.begin(9600); // Открываем последовательный порт для компьютера со скоростью 9600 бод
HC12.begin(9600); // Открываем последовательный порт для HC12
}
void loop() {
if(HC12.available()){ // Если данные от HC12 получены
Serial.write(HC12.read()); // Отправляем эти данные в компьютер
}
if(Serial.available()){ // Если данные от компьютера получены
HC12.write(Serial.read()); // Отправляем эти данные в HC12
}
}