Самодельный комплект радиоуправления на основе телефона-трубки (433МГц)

Самодельный комплект радиоуправления на основе телефона-трубки (433МГц) Мультикоптеры

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

Источник статьи

702 просмотров

Двигатели и пропеллеры для лодки

Также необходимо учитывать вес компонентов, поэтому мы выбрали двигатели постоянного тока типа n20, которые работают при напряжении 5 В и являются небольшими и легкими. Для предотвращения радиопомех параллельно входным контактам двигателя должен быть подключен дополнительный конденсатор 0,1 Ф.

Мы сделали пропеллеры для лодки из пластиковых листов, но при желании их можно купить в магазинах. Мы просто нарезали необходимые пластиковые полоски, согнули их с помощью тепла свечи и проделали небольшое отверстие, чтобы прикрепить их к валам двигателя.

Детали

Проволочные спицы длиной 160 мм образуют антенну. Передающие катушки L1 и L2 (рис. Каждая имеет по 5 витков провода ПЭВ-2 0,31, бескаркасная, с внутренним диаметром 3 мм, намотана с шагом витка. Катушка L3 идентична, но намотана с шагом 1 мм.

Дроссель L4 является готовым и имеет 100 hm и более.

Катушки приемника (рис.2) L1 и L2 установлены близко друг к другу на общей оси, как будто одна катушка является продолжением другой. L1 – 2,5 витка, L2 – 10 витков, ПЭВ 0,67, внутренний диаметр катушки 3 мм, каркас отсутствует. Катушка L3 состоит из 30 витков провода ЭПИ 0,12, намотанного на постоянном резисторе МЛТ-0,5, сопротивление которого не менее 1М.

Смотрите про коптеры:  От концепции к созданию: рабочий процесс завода дронов

Шатров С. И. Р К-2023-10.

Литература: С. Петрус. Удлинитель ИК пульта дистанционного управления для спутникового тюнера, P-6-200.

Задания

Теперь вы можете попрактиковаться в изготовлении различных полезных приспособлений. Вот несколько идей.

  1. Пульт дистанционного управления светильником. Со стороны приемника: модуль реле, подключенный к цепи питания светильника (осторожно: 220 вольт!). На стороне передатчика: кнопка часов. Напишите программы для приемника и передатчика, которые активируют дистанционное реле при нажатии кнопки. Повторное нажатие кнопки выключает реле.
  2. Наружный термометр с радиоканалом. Установите датчик температуры на боковой стороне излучателя. Обеспечивают автономное питание от батарей. На стороне приемника: символьный ЖК-дисплей. Напишите программы для приемника и передатчика, чтобы вывести на экран показания температуры с удаленного датчика.

Исходный код программы (скетча)

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

Полный код программы приведен в конце статьи, но здесь мы кратко обсудим основные элементы. Программа очень проста, поскольку единственное, что нам нужно сделать, это управлять переключением логических уровней выводов платы.

Для работы с кнопками и входными контактами энкодера в начале программы объявите переменные целочисленного типа.

Настройка режимов работы используемых контактов, к которым подключены кнопки – режим ввода данных с внутренними подтягивающими резисторами – и контакты энкодера – режим вывода данных – проводится в функции настройки.

В рамках функции цикла состояние каждой кнопки будет считываться через digitalRead. Контакт, к которому подключена кнопка, будет НИЗКИМ, если кнопка нажата.

Если нажата кнопка “вперед”, необходимо выполнить следующие действия:

При вводе этой последовательности команд оба двигателя лодки будут вращаться по часовой стрелке. Поэтому для движения назад необходимо выполнить следующие команды:

Ездить слева:

Переключитесь на правую сторону:

Когда аппаратная часть проекта собрана, можно загрузить программу в плату Arduino и начать ее тестирование.

Прежде чем начать испытания своего проекта, убедитесь, что лодка ровно стоит на поверхности воды, что она не перегружена, что моторы переключены на правильную полярность, а пропеллеры изогнуты в нужном направлении.

Подключение

Передатчики имеют только три выхода: земля, напряжение и данные.

Подключаем их к первой плате Ардуино по схеме:

Передатчик MX-05V 433МГцGNDVCCData
Ардуино Уно №1GND 5V2

Несмотря на наличие у приемника четырех выводов, один из них не используется.

Подключение второй платы Arduino такое же, как и первой:

Приемник XD-RF-5V 433МГцGNDVCCData
Ардуино Уно №2GND 5V2

Установите оба устройства на макетную плату и начните писать программы.

Приемный радио модуль на 433 мгц

Приемные радиомодули 433 МГц также очень малы и имеют 4 вывода: VCC, земля, два средних штырька и два выходных штырька для данных. Рабочее напряжение модуля составляет 5 В. Приемный модуль также имеет низкое энергопотребление и может иметь антенный контакт (тот, который мы используем, не имеет).

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

Модуль радиоприемника сначала принимает передаваемый сигнал, как показано на блок-схеме. В результате на выходе радиомодуля получаются последовательные данные, которые нельзя использовать для управления двигателем, поэтому выход радиоприемного модуля подключается к декодеру, который преобразует поступающие последовательные данные в параллельную форму.

Принципиальная схема

Пример системы радиоуправления показан на рисунке 1. Эта трубка питается от источника постоянного тока 9 В через резистор R1, который является нагрузкой на цепь тонального набора TA. При нажатии кнопок на ТА изменяется составляющая DTMF на R1.

В передатчике НЧ-сигнал модулируется резистором R1. Передатчик состоит из двух каскадов. Осциллятор подключен к транзистору VT1. SAW-резонатор стабилизирует свою частоту на 433,92 МГц. Он работает на этой частоте.

Рисунок 1. Схема подключения передатчика 433 МГц к телефонной трубке.

Усилители мощности построены на транзисторах VT2. На этом этапе амплитудная модуляция осуществляется путем смешивания радиочастотного сигнала с напряжением смещения, поступающим на базу транзистора. R1, R3 и R5 транзистора VT2 генерируют кодовый сигнал напряжения DTMF из низкочастотного сигнала, поступающего с резистора R1.

С помощью конденсатора C3 и резистора R1 мы можем создать фильтр, отделяющий ВЧ от НЧ. Через U-образный фильтр C7-L3-C8 усилитель нагружается на антенну.

Дроссель L4 используется для блокировки пути радиочастотного сигнала от передатчика в цепь телефонного аппарата, предотвращая проникновение сигнала в цепь телефонного аппарата. Для приемного тракта используются сверхрегенеративные схемы (рис. 2). Сверхрегенеративный детектор находится на транзисторе VT1.

L1 является катушкой связи, поэтому сигнал от антенны проходит через эту катушку. Сигналы, полученные и обнаруженные на R9, изолированы, так как он является частью делителя напряжения R6-R9, создавая входную среднюю точку для Op-A1.

В частности, операционный усилитель A1 отвечает за усиление низкочастотных сигналов. В процессе настройки можно регулировать коэффициент усиления для достижения оптимального значения. После этого DTMF – код поступает на вход микросхемы А2, типа КР1008ВЖ18, через резистор R10.

Декодер DTMF-кода на микросхеме A2 почти такой же, как и стандартный, за исключением того, что он использует только три разряда выходного регистра. Полученный трехразрядный двоичный код поступает на десятичный декодер мультиплексора К561КП2. А затем – на выход. Выходы пронумерованы в соответствии с подписями кнопок.

Рисунок 2. Схема приемника радиоуправления на 433 МГц с декодером на К1008ВЖ18.

Вход К1008ВЖ18 чувствителен к сопротивлению R12 (или отношению R12/R13).

При получении команды на соответствующем выходе появляется логическая единица.

Когда команды не поступают, выходы остаются в высокоимпедансном состоянии, за исключением выхода последней полученной команды, на котором будет логический ноль. Управление схемой должно учитывать это. По запросу можно использовать постоянные резисторы для подтягивания всех выходов к нулю.

Принципиальная схема передающей части проекта

На следующем рисунке представлена схема дистанционного управления судном на базе платы Arduino.

На схеме один конец кнопок подключен к цифровым контактам D6-D9 на плате Arduino, а их другой конец подключен к общему проводу (земле). Таким образом, при нажатии на одну из кнопок на соответствующий цифровой контакт платы Arduino подается низкое напряжение.

Основная функция H T12E заключается в преобразовании параллельных входных данных в последовательные выходные данные. Из этих 12 битов 8 битов являются битами адреса, которые используются для управления несколькими приемниками.

На микросхеме HT12E имеется семь входных адресных контактов. В нашем проекте нам нужно управлять только одним приемником, поэтому мы замкнули эти контакты на землю. С помощью HT12E вы можете управлять несколькими приемниками с помощью одного передатчика, используя дип-переключатели.

D8-AD11 – это входные контакты, они могут управлять выходами D0-D3 декодера HT12D. Наконец, нам нужен эмиттер 3 кГц, который работает с напряжением 5 В в нашей схеме. При питании от 5 В резистор должен быть 1,1 МОм.

Мы подключили выход микросхемы HT12E к модулю радиопередатчика. Поскольку все компоненты в нашей схеме работают от напряжения 5 В, мы добавили в схему стабилизатор напряжения 7805, чтобы обеспечить напряжение на входе схемы в диапазоне 6-12 В.

Принципиальная схема приемной части проекта

На следующем рисунке показана схема приемной части дистанционно пилотируемой лодки.

С помощью микросхемы HT12D данные могут быть преобразованы из последовательного режима в параллельный. Последовательный выход подключается к входным контактам HT12D модуля радиоприемника. 8 из этих битов (A0-A7) являются битами адреса; микросхема HT12D декодирует входные данные только при совпадении адреса.

Наш проект предусматривает подключение адресных выводов микросхемы HT12D к общему выводу (земля). Мы будем получать параллельные данные с D8-D11 микросхемы HT12D. Для настройки частоты схемы необходимо подключить резистор 33-56 кОм к выводам осциллятора микросхемы HT12D.

Светодиод, подключенный к контакту 17 микросхемы HT12D, указывает на правильный прием данных и горит только тогда, когда приемник находится в контакте с передатчиком. Приемные части проекта также могут питаться напряжением в диапазоне 6-12 В.

В нашей конструкции для управления двигателями использовалась микросхема драйвера двигателя L293D, чтобы уменьшить ее вес. Эта микросхема позволяет управлять двумя двигателями сразу в двух направлениях. Распиновка микросхемы L293D показана на следующем рисунке.

Эти контакты включены и получают напряжение 5 В от источника питания 5 В. Контакты 1A, 2A, 3A и 4A являются управляющими. Двигатель будет вращаться вправо, если контакты 1A и 2A находятся в низком состоянии. Когда контакт 2A находится в низком состоянии, а контакт 1A – в высоком, двигатель будет вращаться влево.

Поэтому мы подключили этот вывод к выходам микросхемы декодера. Двигатели подключены к выводам 1Y, 2Y, 3Y и 4Y. На вывод Vcc2 подается напряжение. Вы должны подать соответствующее напряжение на этот вывод, если вы используете высоковольтные двигатели.

Принципы работы дистанционно управляемой лодки на arduino

В лодке находятся два двигателя, назовем их левый и правый. Двигатель, вращающийся по часовой стрелке и имеющий правильную форму винта, втягивает воздух спереди и выталкивает его сзади. Это создает силу, направленную вперед.

Лодки двигались вперед, вращая оба мотора по часовой стрелке.

При вращении против часовой стрелки лодочные моторы совершают обратное движение.

Движение влево: Если работает только правый двигатель, поступательная тяга создается только с правой стороны, поэтому судно поворачивает влево.

В зависимости от направления вращения лодка поворачивает вправо, если вращается только левый двигатель.

Входные контакты драйвера двигателя подключены к битам D8-D11 декодера. Проектом можно управлять путем замыкания контактов AD8-AD11 в передающей части схемы на землю. Например, замыкание AD8 на землю приведет к срабатыванию D8.

Эти 4 выхода позволяют нам управлять вращением двух двигателей в двух направлениях. Тем не менее, мы не можем управлять двумя двигателями одновременно (что необходимо для движения вперед и назад) с помощью одной кнопки, поэтому мы использовали плату Arduino для управления входными контактами энкодера.

Программа для приемника

Теперь мы напишем программу для приемника. Чтобы продемонстрировать факт передачи, мы зажжем светодиод, подключенный к контакту 3 платы Arduino. Если приемник принимает код B1000, мы включаем светодиод, а если B0100, то выключаем его.

#include <RCSwitch.h>

RCSwitch mySwitch = RCSwitch();

void setup() {
    pinMode( 3, OUTPUT );
    mySwitch.enableReceive(0);
}

void loop() {
    if( mySwitch.available() ){
        int value = mySwitch.getReceivedValue();
 
        if( value == B1000 )
            digitalWrite( 3, HIGH );
        else if( value == B0100 )
            digitalWrite( 3, LOW );

        mySwitch.resetAvailable();
    }
}

Функция available возвращает true, если передатчик получил данные:

mySwitch.available()

Пакет извлекается из потока данных и декодируется в число командой getReceivedValue. Программа присваивает переменной значение результата вычисления:

int value = mySwitch.getReceivedValue();

Программа для передатчика

Для работы с радиомодулями мы будем использовать библиотеку RCSwitch. Предположим, мы напишем программу, которая отправляет два сообщения каждую секунду.

#include <RCSwitch.h>

RCSwitch mySwitch = RCSwitch();

void setup() {
    mySwitch.enableTransmit(2);
}

void loop() {
    mySwitch.send(B0100, 4);
    delay(1000); 
    mySwitch.send(B1000, 4);
    delay(1000); 
}

Давайте проанализируем программу. MySwitch – это объект, который мы объявили для работы с передатчиком.

RCSwitch mySwitch = RCSwitch();

Затем вы активировали передатчик в функции стандартной конфигурации и указали вывод, к которому он подключен:

mySwitch.enableTransmit(2);

Наконец, в главном цикле программы мы отправляем сначала одно сообщение, а затем второе с помощью функции send:.

mySwitch.send(B1000, 4);

Функция send имеет два аргумента. Он будет отправлен в виде импульсного пакета в эфир в качестве первого отправляемого сообщения. Во-вторых, имеется аргумент размера отправляемого пакета.

Для нашей программы мы задали сообщения в формате двоичных чисел. B1000 имеет букву “B” в начале кода. Десятичное представление этого числа дало бы восьмерку. Функция send может быть вызвана таким образом:

mySwitch.send(8, 4);

Send также может принимать двоичные строки:

mySwitch.send("1000", 4);

Сборка конструкции передающей части проекта

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

Кроме женских разъемов, мы использовали их для подключения платы Arduino и модуля радиопередатчика. Вместо того чтобы использовать провода-перемычки, используйте дорожки печатных плат для соединения всех компонентов. Вы также можете подключить небольшой кусок провода к излучающему радиомодулю – он будет действовать как антенна, увеличивая дальность связи. Перед подключением платы Arduino и передающего радиомодуля убедитесь, что напряжение на выходе регулятора lm7805 правильное.

На следующей иллюстрации показана нижняя часть печатной платы для передающей части нашего проекта.

Сборка конструкции приемной части проекта

Прежде чем собирать входную часть проекта, необходимо понять следующее – ее вес и размеры имеют решающее значение, поскольку ее придется размещать на лодке. Это означает, что если вес лодки увеличивается, это отрицательно сказывается на плавучести и скорости лодки.

Если возможно, припаяйте все компоненты схемы на печатную плату небольшого размера и не используйте провода-перемычки (как для передающей части проекта). Поскольку мы используем двигатели с рабочим напряжением 5 В, вывод 8 драйвера двигателя L293D подключен к нашему проекту.

Сборка корпуса передающей части проекта

Вам понадобится подходящий корпус, чтобы иметь возможность управлять (дистанционно) нашей лодкой – вы можете сконструировать его в соответствии с вашими потребностями. Как вариант, для изготовления корпуса пульта дистанционного управления можно использовать фанеру, пенокартон или картон.

Из этих листов мы вырезали две части длиной 10 см и шириной 5 см, на которых отметили расположение кнопок. Кнопки “влево-вправо” были размещены на левой стороне листа, а кнопки “вперед-назад” – на правой. На другой стороне листа кнопки подключены к основной схеме.

Затем основная плата пульта дистанционного управления была помещена между двумя листами МДФ и закреплена длинными болтами.

Сборка корпуса приемной части проекта

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

После разметки контуров углубления для электронного компонента вырезаем его из листа термокола. Для этой цели можно также использовать игрушечную лодку или сделать корпус лодки в соответствии с собственными предпочтениями.

Структурная схема работы передающей части проекта

В нашем проекте в передающей части, которая по сути является пультом дистанционного управления, есть четыре кнопки, с помощью которых мы легко управляем направлением движения лодки (вперед, назад, вправо и влево). К сожалению, мы не можем подавать нажатия этих кнопок непосредственно на энкодер, поэтому они должны пройти через плату Arduino, прежде чем попасть на энкодер.

Здесь плата Arduino используется для одновременного управления двумя параллельными входами энкодера, когда лодка движется вперед или назад, чего нельзя добиться простым использованием кнопок. Затем энкодер преобразует эти параллельные входы в последовательный формат, который подается на модуль передачи данных.

Характеристики fs1000a/xd-fst

Рабочее напряжение: DC 5 ВРабочий ток: 4 мРежим работы: OOC (AM)Рабочая температура: -10°C ~ 70°CЧувствительность: -110 дБООперационная частота: 433 МГцРазмер: 30 x 14 x 7 мм

Модуляция цепей приемника осуществляется колебательными контурами и усилителями. Источник питания подключен к контактам 1 и 2 с напряжением питания, к контактам 3 и 5 с землей. Сигналы от радиомодуля имеют логический уровень, но принимаются аналоговыми. В этом случае за декодирование сообщения отвечает устройство (обычно Arduino), принимающее сигнал.

Характеристики FS1000A/XD-FST

Ниже приведена схема, показывающая, как радиомодули 433 МГц подключаются к Arduino. Для обработки модулированного сигнала выходы передатчика и приемника подключаются к цифровым портам Arduino.

Схема подключения радио модулей 433 Mgz к Arduino

Можно увеличить радиус действия приемопередатчиков, подключив антенну. Кусок провода длиной 17 см с импедансом 50 Ом – самый простой вариант. Благодаря своей длине в 1/4 волны он резонирует на частоте 433 МГц.

Вы можете использовать библиотеку VirtualWire для кодирования/декодирования цифровых данных на Arduino.h Вот пара примеров использования этой библиотеки.

Передатчик:

#include "VirtualWire.h"

const int led_pin = 13; // Пин светодиода
const int transmit_pin = 12; // Пин подключения передатчика

void setup()
{
	vw_set_tx_pin(transmit_pin);
	vw_setup(2000); // Скорость передачи (Бит в секунду)
	pinMode(led_pin, OUTPUT);
}

void loop()
{
	const char *msg = "Hello, Arduinomania"; // Передаваемое сообщение
	digitalWrite(led_pin, HIGH); // Зажигаем светодиод в начале передачи
	vw_send((uint8_t *)msg, strlen(msg)); // Отправка сообщения
	vw_wait_tx(); // Ожидаем окончания отправки сообщения
	digitalWrite(led_pin, LOW); // Гасим светодиод в конце передачи
	delay(1000); // Пауза 1 секунда
}

Получатель:

#include "VirtualWire.h"

byte message[VW_MAX_MESSAGE_LEN]; // Буфер для хранения принимаемых данных
byte messageLength = VW_MAX_MESSAGE_LEN; // Размер сообщения

const int led_pin = 13; // Пин светодиода
const int receiver_pin = 11; // Пин подключения приемника

void setup()
{
	Serial.begin(9600); // Скорость передачиданных
	Serial.println("Read 433mHz begin");
	vw_set_rx_pin(receiver_pin); // Пин подключения приемника

	vw_setup(2000); // Скорость передачи данных (бит в секунду)
	vw_rx_start(); // Активация применика
}
void loop()
{
	if (vw_get_message(message, &messageLength)) // Если есть данные..
	{
		digitalWrite(led_pin, HIGH); // Зажигаем светодиод в начале приема пакета
		for (int i = 0; i < messageLength; i  )
		{
			Serial.write(message[i]); // выводим их в одной строке
		}
		Serial.println();
		digitalWrite(led_pin, LOW); // Гасим светодиод в конце
	}
}

Характеристики xd-rf-5v

Рабочее напряжение: 3V ~ 12VРабочий ток: 20mA ~ 28mARБегущий ток: 0mAOперационная частота: 433MHzДальность действия передатчика: >500м (чувствительность может быть выше-103дБм, если в широком поле)Выходная мощность: 16дБм (40мВт)Скорость передатчика: Режим модуляции: OOC (AM)Рабочая температура: -10 ° C ~ 70 ° Cs Размер: 19 х 19 х 8 мм

Для подключения доступны контакт данных, контакт VCC и контакт заземления. Хотя антенна не встроена, она подключается через контакт. Когда необходимо увеличить расстояние передачи, обычно изготавливаются проволочные антенны. В устройствах “умного дома” передатчик используется для автоматического сбора данных.

Неприхотливость, стабильность в работе и низкое энергопотребление являются основными преимуществами. Недостатком, который необходимо отметить, является его аналоговый характер. Программный код для кодирования потока данных сложен, но у него есть и преимущество, так как нет ограничений на протокол связи.

Радио передатчик XD-RF-5V 433Mhz

Заключение

Итак, теперь мы знаем простой и дешевый способ удаленной передачи данных. К сожалению, скорость передачи и дальность действия этих радиостанций очень ограничены, поэтому мы не можем полностью управлять, например, квадрокоптером. Однако мы можем сделать радиопульт для управления простым бытовым прибором: лампой, вентилятором или телевизором.

Почти все контроллеры радиоканалов полагаются на приемопередатчики 433 МГц и 315 МГц. Мы можем повторить эти сигналы, используя Arduino и приемник. В одном из следующих уроков мы объясним, как это сделать!

Для передачи большого объема данных на высокой скорости и на большие расстояния рекомендуется использовать цифровые приемопередатчики: nrf24l01, bluetooth, wi-fi или LoraWAN.

Оцените статью
Радиокоптер.ру
Добавить комментарий