Управление светодиодами по радиоканалу с помощью Raspberry Pi


В данной статье мы рассмотрим управление светодиодами по радиоканалу с помощью платы Raspberry Pi и радиочастотных модулей. Аналогично на основе данного проекта вы можете создать пульты дистанционного управления на основе радиочастотных модулей для любых устройств. На нашем сайте мы уже рассматривали следующие аналогичные проекты:

Внешний вид проекта управления светодиодами по радиоканалу с помощью Raspberry Pi

Необходимые компоненты

Передающая часть

  1. Радиочастотный передатчик (ASK Hybrid Transmitter) (купить на AliExpress).
  2. Микросхема HT12E (купить на AliExpress).
  3. Кнопка – 4 шт.
  4. Резистор 750 кОм (купить на AliExpress).
  5. Батарейка 9 В.

Приемная часть

  1. Плата Raspberry Pi (купить на AliExpress).
  2. ЖК дисплей 16x2 (купить на AliExpress).
  3. Резисторы 1 кОм (5 шт.) и 10 кОм (4 шт.) (купить на AliExpress).
  4. Резистор 33 кОм (купить на AliExpress).
  5. Потенциометр 10 кОм (купить на AliExpress).
  6. Микросхема HT12D (купить на AliExpress).
  7. Радиочастотный приемник (ASK Hybrid Receiver) (купить на AliExpress).
  8. Светодиод – 5 шт. (купить на AliExpress).
  9. Источник питания.
  10. Макетная плата.
  11. Соединительные провода.

Радиочастотные модули

В данном проекте мы будем использовать гибридные передатчики и приемники с амплитудной манипуляцией (ASK Hybrid Transmitter and receiver), работающие на частоте 433 МГц. В своем составе они содержат кварцевый генератор для поддержания хорошей стабильности частоты. В нашем проекте нам понадобится всего одна внешняя антенна для этого модуля. Внешний вид данных модулей представлен на следующем рисунке.

Внешний вид гибридных передатчика и приемника с амплитудной манипуляцией

Также широко распространены варианты не с 8 контактами у приемника (как на рисунке), а с 4.

Данные модули достаточно дешево стоят, что обусловило их широкое применение в разнообразных устройствах. Для подобных модулей не используется технология передачи данных к компьютеру или микроконтроллеру с помощью последовательного порта связи (UART), поскольку в данном случае сигнал оказывается сильно зашумлен, поэтому общепринятой практикой в этом случае является использование кодера и декодера, которые позволяют защитить сигнал от шумов.

При максимально возможном напряжении питания дальность связи этих радиочастотных модулей составляет примерно 100 метров, при использовании напряжения питания 5 В и простой штыревой антенны длиной 17 см дальность связи с помощью данных модулей составит примерно 50-60 метров.

Технические характеристики радиочастотного передатчика:

  • рабочая частота: 433 МГц;
  • выходная мощность: 4-16 дБм;
  • напряжение питания: 3-12 В постоянного тока.

Назначение контактов (распиновка) модуля передатчика:
1. GND – общий провод (земля).
2. Data In – по этому контакту модуль принимает последовательные данные от кодера (encoder).
3. Vcc – на этот контакт подается питающее напряжение +5 В.
4. Antenna – к этому контакту подключается внешняя антенна.

Внешний вид передающей части нашего проекта

Технические характеристики радиочастотного приемника:

  • чувствительность: -105 дБм;
  • промежуточная частота: 1 МГц;
  • низкое потребление энергии;
  • потребляемый ток: 3,5 мА;
  • напряжение питания: 5 В.

Назначение контактов (распиновка) модуля приемника:
1. GND – общий провод (земля).
2. Data In – по этому контакту передаются последовательные данные декодеру.
3. Data In – по этому контакту передаются последовательные данные декодеру.
4. Vcc – на этот контакт подается питающее напряжение +5 В.
5. Vcc – на этот контакт подается питающее напряжение +5 В.
6. GND – общий провод (земля).
7. GND – общий провод (земля).
8. Antenna – к этому контакту подключается внешняя антенна.

Объяснение работы проекта

Принцип работы нашего проекта достаточно прост. В передающей части проекта (фактически это пульт дистанционного управления) мы использовали 4 кнопки для управления 4 светодиодами в приемной части. Когда мы нажимаем одну из этих кнопок, то микросхема кодера (Encoder IC) кодирует этот сигнал и передает его радиочастотному передатчику, который излучает его в окружающее пространство. Модуль приемника принимает этот сигнал и декодирует его с помощью микросхемы декодера HT12D, которая затем передает его в 4-битном режиме плате Raspberry Pi. Плата Raspberry Pi считывает эти биты и выполняет соответствующие задачи (зажигает соответствующий светодиод). При нажатии на любую кнопку зуммер звучит на одну секунду. На ЖК дисплее 16x2 отображаются сообщения ‘ON’ или ‘OFF’, показывающие статус подключенных светодиодов.

Структурная схема работы проекта

В этом проекте мы использовали 4 светодиода для демонстрации возможностей проекта, аналогичным образом вместо светодиодов можно использовать любые другие исполнительные устройства, например, реле или драйверы двигателей. То есть на основе платы Raspberry Pi и данного проекта удаленного управления устройствами по радиоканалу мы можем повторить многие проекты автоматизации дома на основе платы Arduino, которые мы раньше рассматривали на сайте.

Схема проекта

Схема управления светодиодами по радиоканалу с помощью Raspberry Pi представлена на следующем рисунке.

Схема управления светодиодами по радиоканалу с помощью Raspberry Pi

На представленной схеме плата Raspberry Pi управляет ЖК дисплеем, считывает данные, поступающие из радиоканала, и выполняет соответствующие команды по управлению светодиодами. В нашем проекте мы использовали плату Raspberry Pi 3, но любая другая модель платы Raspberry Pi также подойдет.

В приемной части схемы контакты ЖК дисплея rs, en, d4, d5, d6, d7 подключены к контактам ввода/вывода (GPIO) 11, 10, 6, 5, 4, 1 платы Raspberry Pi. Таким образом, ЖК дисплей подключен в 4-битном режиме. Приемник принимает сигнал, переданный радиочастотным передатчиком и передает его на микросхему HT12D, которая декодирует его. Контакты D8, D9, D10, D11 микросхемы HT12D непосредственно подключены к контактам 25, 24, 23 и 22 платы Raspberry Pi. Выходные светодиоды подключены к контактам 26, 27, 28 и 29 платы. Зуммер подключен к контакту GPIO 0 платы.

Схема передатчика содержит микросхему кодера HT12E и 4 кнопки. В микросхемах кодера и декодера все адресные линии замкнуты на землю.

Установка библиотеки wiringPi в Raspberry Pi

Если мы пишем программу для Raspberry Pi на Python, то мы используем в ней команду вида "import RPi.GPIO as IO" для того чтобы иметь возможность работы с контактами ввода/вывода (GPIO Pins). Поскольку в этом проекте мы будем писать программу на языке C, то аналогичным образом нам необходимо подключить библиотеку wiringPi чтобы работать с контактами ввода/вывода (GPIO Pins) на языке C. Эту библиотеку можно установить вводя последовательно команды (одну за другой), приведенные ниже. Вы можете вводить эти команды непосредственно в терминале или с помощью SSH клиента, например, Putty.

sudo apt-get install git-core
sudo apt-get update
sudo apt-get upgrade
git clone git://git.drogon.net/wiringPi
cd wiringPi
git pull origin
cd wiringPi
./build

Проверить правильность установки библиотеки wiringPi можно с помощью следующих команд:

gpio -v
gpio readall

Объяснение программы для Raspberry Pi

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.

Первым делом в программе мы подключим необходимые библиотеки, зададим (определим) необходимые контакты и объявим необходимые переменные.

После этого в функции void setup() мы зададим режимы работы используемых контактов и выполним другие необходимые операции.

В коде программы мы будем использовать функцию digitalRead для считывания выходных значений с микросхемы декодера и функцию digitalWrite для управления состоянием подключенных светодиодов.

Также в коде программы мы будем использовать ряд других функций:

  • функция void lcdcmd будет использоваться для передачи команд на ЖК дисплей;
  • функция void write будет использоваться для передачи данных на ЖК дисплей;
  • функция void clear() будет использоваться для очистки экрана ЖК дисплея;
  • функция void setCursor будет использоваться для установки позиции курсора на экране ЖК дисплея;
  • функция void print будет использоваться для передачи строки на ЖК дисплей;
  • функция void begin будет использоваться для инициализации ЖК дисплея в 4-битном режиме;
  • функция void buzzer() будет использоваться для включения сигнала зуммера.

Исходный код программы на C

Видео, демонстрирующее работу проекта

(Проголосуй первым!)
Загрузка...
238 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *