Arduino и Радиомодули 433 МГц

Программная часть состоит из бесплатной программной оболочки (IDE) для написания программ, их компиляции и программирования аппаратуры.
Аппаратная часть представляет собой набор смонтированных печатных плат, продающихся как официальным производителем, так и сторонними производителями.
Полностью открытая архитектура системы позволяет свободно копировать или дополнять линейку продукции Arduino.
Аватара пользователя
Артём Мамзиков
Admin
Сообщения: 914
Стаж: 5 лет 11 месяцев
Откуда: Вологодская область
Благодарил (а): 1 раз
Поблагодарили: 42 раза
Контактная информация:

Arduino и Радиомодули 433 МГц

Сообщение Артём Мамзиков »

В данном примере будут использоваться Arduino ESP32
Arduino esp32.jpg
Подключение плат.jpg
Для USB-SERIAL CH340 загрузка пошла только при драйвере 2011 года на Windows 10 на более новых не захотела.
USB-SERIAL CH340.jpg
Для CP210x заработало сразу
CP210x.jpg
Модули с частотой 433 МГц
RX - Приемник (кварцевый резонатор 6.7458)
TX - Передатчик (кварцевый резонатор 13.560)
Модули с частотой 433 МГц.jpg

Для теста был написан следующий код
ПЕРЕДАЧА

Код: Выделить всё

#include <RCSwitch.h>

RCSwitch mySwitch = RCSwitch();

void setup() {
    Serial.begin(9600); // Инициализация последовательного порта
    mySwitch.enableTransmit(27); // Используем GPIO 27 для передачи (можете изменить на свой)
}

void loop() {
    // Отправляем значение каждую секунду
    mySwitch.send(12345, 24); // Отправляем значение 12345, 24 бита
    Serial.println("Отправлено: 12345");
    
    delay(1000); // Ждем 1 секунду перед следующей отправкой
}
ПРИЕМ

Код: Выделить всё

#include <RCSwitch.h>

RCSwitch mySwitch = RCSwitch();

void setup() {
    Serial.begin(9600);
    mySwitch.enableReceive(digitalPinToInterrupt(34)); // Используем пин 34 для приема
}

void loop() {
    if (mySwitch.available()) {
        Serial.print("Получен код: ");
        Serial.print(mySwitch.getReceivedValue());
        Serial.print(" (длина: ");
        Serial.print(mySwitch.getReceivedBitlength());
        Serial.println(" бит)");

        // Получение и вывод дополнительных данных
        Serial.print("Данные в двоичном формате: ");
        printBinary(mySwitch.getReceivedValue(), mySwitch.getReceivedBitlength());

        // Пример простой проверки на шифрование (можно адаптировать под ваши нужды)
        if (isEncrypted(mySwitch.getReceivedValue())) {
            Serial.println("Данные зашифрованы!");
        } else {
            Serial.println("Данные не зашифрованы.");
        }

        mySwitch.resetAvailable();
    }
}

// Функция для вывода двоичного представления числа
void printBinary(unsigned long value, int bits) {
    for (int i = bits - 1; i >= 0; i--) {
        Serial.print((value >> i) & 1);
    }
    Serial.println();
}

// Пример функции для проверки шифрования (можно изменить)
bool isEncrypted(unsigned long value) {
    // Простейшая проверка: если последний бит 1, считаем, что данные зашифрованы
    return (value & 1) == 1;
}
Первый вариант приема
Показать

Код: Выделить всё

#include <RCSwitch.h>

RCSwitch mySwitch = RCSwitch();

void setup() {
    Serial.begin(9600); // Инициализация последовательного порта
    mySwitch.enableReceive(34); // Используем GPIO 34 для приема (можете изменить на свой)
}

void loop() {
    // Проверяем наличие полученного значения
    if (mySwitch.available()) {
        int value = mySwitch.getReceivedValue(); // Получаем значение
        if (value == 0) {
            Serial.println("Не удалось получить значение");
        } else {
            Serial.print("Получено: ");
            Serial.println(value); // Выводим полученное значение
        }
        mySwitch.resetAvailable(); // Сбрасываем состояние
    } else {
        Serial.println("Нет полученных данных"); // Сообщение, если данных нет
    }
    
    delay(100); // Ждем 100 мс перед следующей проверкой
}
Библиотеки которые мне попались для работы 433Мгц

#include <VirtualWire.h>
rc-switch-maste
RemoteSwitch
#include <RemoteReceiver.h>
#include <RemoteTransmitter.h>

#include <RCSwitch>
Библиотека для работы с 433 Мгц RCSwitch.h для Arduino Яндекс диск

RFControl
433Utils

Для данных модулей можно использовать библиотеки:
• VirtualWire – устаревшая библиотека для передачи данных при помощи радио модулей
RadioHead (если офф. сайт не работает – открываем через WebArchive, вот прямая ссылка на загрузку v1.121) – “обновлённая” VirtualWire, поддерживает некоторые протоколы пультов и может передавать пользовательские данные

RCSwitch – библиотека поддерживает работу со стандартными пультами от шлагбаумов
Gyver433 – моя библиотека для удобной передачи любых данных по своему протоколу
Предлагается использовать Gyver433 как наиболее простую для понимания, также она работает даже с “плохими” китайскими модулями. Библиотека идёт в архиве к набору GyverKIT, а свежую версию всегда можно установить/обновить из встроенного менеджера библиотек Arduino по названию Gyver433. Краткая документация находится по ссылке выше, базовые примеры есть в самой библиотеке.

обозначенному как ANT. Для простейшей антенны типа “полуволновой вибратор” длина должна составлять 14233/433,92 = 32.9 см. Можно также сделать “четверть-волновой вибратор”, тогда его длина должна быть всего 16,5 см (но чувствительность будет несколько хуже). Провод можно скрутить в спираль.
антенну длиной 17.3 см (четверть волны)


К чему я пришел пульты YAM работают с приемниками rx-433, а вот если записать код с пульта на передачу через плату он передается но реле не реагирует.

программируемое реле 433Мгц считывается и работает нормально как с пульта так и с ардуино
программируемое реле 433Мгц.jpg
ради теста попробовал добавить в реле пульт YAM не добавляется не вид его реле.


Принимающий блок реле YAM
на LM358 HCY 6J24B Двухканальный операционный усилитель
YJ-R3.jpg
YJ002-1B.jpg
YJ002-1B(1).jpg
Аналогично на MX-RM-5V (FS1000A)
LM358 95M DN34WH
MX-RM-5V -FS1000A.JPG
MX-RM-5V.JPG
Пульт YAM YJ005-V1 (HD-1256 GS501 T IC1)
YJ005-V1 HD-1256 GS501 T IC1 .JPG
YJ005-V1 (HD-1256 GS501 T IC1).JPG
YJ005-V1 - HD-1256 GS501 T IC1 .JPG
YJ005-V1 - (HD-1256 GS501 T IC1).JPG

Второй пульт YAM BY-089 HCY-503 (AD2262 B1331Y A103J)
BY-089 HCY-503.JPG
BY-089 HCY-503 задняя сторона.JPG
BY-089 HCY-503 лицевая.JPG

Третий пульт YAM RX-V2.1 PCB=1.6mm DATA 2014 03 15
YAM RX-V2.1.JPG
YAM RX-V2.1 (2).JPG
Поиск меня на вел на пару аналогичных тем
radiokot тема Нужна помощь с передатчиком для люстры

arduino.ru Управление люстрой RCSwitch (описание библиотеки)

кроме протокола и типа модуляции еще тупо длительность нулевого и единичного импульса может быть нестандартной
А может еще что-то...
Начал изучать...
При нажатии кнопки идут посылки,длительность посылки=27,8 мсек,между посылками 7,1 мсек
Каждая посылка=25 импульсов
Между фронтами (=период) импульсов 1,14 мсек
Лог "1"-0,84 мсек и пауза 0,3 мсек
Лог "0"-0,40 мсек и пауза 0,74 мсек

Типичный недорогой пульт дистанционного управления выключателем основан на чипе AD2262, клоне PT2262. Хотя для AD2262 можно найти техническое описание на китайском языке, описание оригинального PT2262, похоже, содержит гораздо больше подробностей об их применении. Оба техническое описание доступны в файлах проекта.

«PT2262 — это кодер дистанционного управления, работающий в паре с PT2272, использующий технологию КМОП. Он кодирует данные и адресные выводы в последовательный кодированный сигнал, подходящий для модуляции ВЧ или ИК. PT2262 имеет максимум 12 бит трехпозиционных адресных выводов, обеспечивающих до 531 441 (или 3) адресных кодов; тем самым значительно сокращая любые коллизии кодов и возможности несанкционированного сканирования кодов».

Принимая зашитые биты адреса и биты данных, устанавливаемые нажатием кнопок, PT2262/AD2262 модулирует радиочастотный передатчик, предположительно предназначенный для работы в диапазоне ISM . Частота модуляции задается резистором, подключенным к контактам 15 и 16, образующим вместе с микросхемой цепь RC-генератора.

Перевод переключателей на электронный режим работы позволит использовать программное обеспечение для домашней автоматизации для управления пультом дистанционного управления и, следовательно, сетевыми устройствами, подключенными к сетевому модулю.
PT2262.PNG
AD2262.jpg
1bit = 32a
bit0 = 4a
bit1 = 12a 4a
1/8bit = 4a
4bit = 128a
lcsc_datasheet_1912111437_IDCHIP-AD2262_C329459.pdf

Видео на Дзен Arduino 433Мгц пульт от люстры
У вас нет необходимых прав для просмотра вложений в этом сообщении.
количество слов: 416

Вернуться в «ARDUINO»