Что представляет собой радиомодуль FS1000A. Как работает передатчик на 433 МГц. Каковы его основные характеристики и параметры. Для чего используется FS1000A в радиолюбительских проектах. Как правильно подключить и настроить передатчик FS1000A.
Что такое радиомодуль FS1000A и для чего он используется
FS1000A представляет собой компактный радиопередатчик, работающий на частоте 433 МГц. Этот модуль широко применяется радиолюбителями для организации беспроводной связи на небольших расстояниях. Основные сферы использования FS1000A:
- Системы дистанционного управления (например, для управления моделями)
- Беспроводные датчики и сенсоры
- Передача телеметрии
- Домашняя автоматизация
- Охранные системы
Популярность FS1000A обусловлена простотой применения, низкой стоимостью и достаточной дальностью связи для большинства любительских проектов. Этот модуль часто используется в паре с приемником MX-RM-5V для организации двусторонней радиосвязи.
Технические характеристики передатчика FS1000A
Рассмотрим основные параметры и характеристики радиомодуля FS1000A:
- Рабочая частота: 433.92 МГц
- Напряжение питания: 3-12 В
- Потребляемый ток: до 40 мА при передаче
- Выходная мощность: до 10 мВт
- Скорость передачи данных: до 10 кбит/с
- Дальность связи: до 100 м на открытой местности
- Тип модуляции: амплитудная (ASK/OOK)
- Размеры модуля: 19 x 19 мм
Как видно из характеристик, FS1000A обладает хорошим соотношением дальности связи и энергопотребления. Модуль может работать от широкого диапазона напряжений питания, что упрощает его интеграцию в различные устройства.
Принцип работы передатчика FS1000A
Рассмотрим принцип работы радиомодуля FS1000A:
- На вход DATA подается цифровой сигнал с данными для передачи
- Внутренний генератор формирует несущую частоту 433.92 МГц
- Происходит амплитудная модуляция несущей входным цифровым сигналом
- Модулированный сигнал усиливается и подается на антенну
- Антенна излучает радиосигнал в пространство
Таким образом, FS1000A преобразует входные цифровые данные в радиосигнал, который может быть принят совместимым приемником на расстоянии. Простота этого процесса делает модуль удобным для применения даже начинающими радиолюбителями.
Как правильно подключить передатчик FS1000A
Для корректной работы FS1000A необходимо правильно подключить его выводы:
- VCC — питание от 3 до 12В
- GND — общий провод (земля)
- DATA — цифровой вход для данных
- ANT — вывод для подключения антенны
Важные моменты при подключении:
- Используйте стабилизированный источник питания подходящего напряжения
- Подключите антенну — от нее сильно зависит дальность связи
- Линию DATA подключите к выходу микроконтроллера через резистор 1-10 кОм
- Желательно использовать развязывающие конденсаторы по питанию
При правильном подключении и использовании подходящей антенны FS1000A сможет обеспечить стабильную передачу данных на расстояние до 100 метров.
Выбор и изготовление антенны для FS1000A
Антенна играет ключевую роль в обеспечении дальности связи. Для FS1000A можно использовать следующие типы антенн:
- Четвертьволновый штырь длиной 17.3 см
- Спиральная антенна из 5-7 витков провода
- Печатная антенна на плате устройства
Простейшая антенна — отрезок провода длиной 17.3 см. Однако для лучших характеристик рекомендуется изготовить спиральную антенну:
- Возьмите провод диаметром 0.5-1 мм
- Намотайте 5-7 витков на оправку диаметром 5-6 мм
- Оставьте прямой вывод длиной 2-3 см для подключения
- Зафиксируйте витки клеем или термоусадкой
Такая антенна обеспечит хорошую дальность связи при компактных размерах. Главное — правильно подобрать число витков экспериментальным путем.
Программирование передатчика FS1000A
Для управления передатчиком FS1000A через микроконтроллер используется следующий алгоритм:
- Инициализация порта микроконтроллера для работы с DATA
- Формирование пакета данных для передачи
- Побитовый вывод данных на линию DATA
- Добавление задержек между битами для нужной скорости
Пример простого кода для Arduino:
#define TX_PIN 8 // Пин подключения DATA void setup() { pinMode(TX_PIN, OUTPUT); } void loop() { // Передача байта 0xA5 for(int i=0; i<8; i++) { digitalWrite(TX_PIN, (0xA5 & (1 << i)) ? HIGH : LOW); delayMicroseconds(1000); // Задержка 1 мс между битами } delay(100); // Пауза между передачами }
Этот код циклически передает байт 0xA5. Для практического применения нужно реализовать более сложный протокол передачи данных.
Типичные проблемы при работе с FS1000A и их решение
При использовании передатчика FS1000A могут возникать следующие проблемы:
- Малая дальность связи
- Ненадежная передача данных
- Ложные срабатывания приемника
Вот некоторые способы решения этих проблем:
- Проверьте правильность подключения и питания модуля
- Убедитесь в исправности антенны и ее согласовании
- Используйте стабилизированное питание без помех
- Реализуйте помехоустойчивое кодирование данных
- Добавьте проверку контрольной суммы пакетов
- Уменьшите скорость передачи для повышения надежности
При правильной настройке и использовании FS1000A способен обеспечить стабильную радиосвязь на расстоянии до 100 метров в условиях прямой видимости.
Передатчик fs1000a
Тоже к двум. Эта пара отличается очень низкой стоимостью , при этом имеет весьма неплохой радиус передачи около ти метров в условиях города. Это распространённая частота для радиосвязи. Это будет антенной.
Поиск данных по Вашему запросу:
Схемы, справочники, даташиты:
Прайс-листы, цены:
Обсуждения, статьи, мануалы:
Дождитесь окончания поиска во всех базах.
По завершению появится ссылка для доступа к найденным материалам.
Содержание:
- Беспроводной передатчик FS1000A и приемник MX-RM-5V
- Радиомодуль беспроводной передатчик и приемник 433M 2 платы Модуль(FS1000A+080408)
- Щось пішло не так 🙁
- Подключение радиомодулей к микроконтроллеру
- Беспроводной передатчик + приемник 433Mhz для Arduino
- Arduino передатчик и приемник RD-RF5-433 RF 433МГц комплект.
ПОСМОТРИТЕ ВИДЕО ПО ТЕМЕ: ТЕСТ: Передатчика FS1000A vs WL118(Проверка какой из них, самый дальнобойный)
Беспроводной передатчик FS1000A и приемник MX-RM-5V
Передатчик подключается к любым выводам Arduino , а подключение приёмника зависит от типа используемой библиотеки:. Первый усилитель любого приёмника и последний усилитель любого передатчика, это антенна.
Самая простая антенна — штыревая отрезок провода определённой длины. Длина антенны как приёмника, так и передатчика , должна быть кратна четверти длины волны несущей частоты. Антенны припаиваются к контактным площадкам, как показано на схеме:. Артикул: Наличие: шт. Сообщить о поставке на e-mail:. Характеристики передатчика FSA Рабочая частота: Но данные библиотеки не используют аппаратные таймеры, а значит не ограничивают Вас в использовании ШИМ.
При использовании библиотеки VirtualWire , приёмник подключается к любому выводу Arduino.Но библиотека использует первый аппаратный таймер, что накладывает ограничение на использование как данного таймера, так и его выводов ШИМ. Подробнее о модулях Передатчик использует цифровой вход для передачи сигнала с использованием амплитудной манипуляции ASK Amplitude Shift Keying.
Амплитудная манипуляция ASK отличается от амплитудной модуляции AM — amplitude modulation тем, что модулировать можно любой сигнал как цифровой, так и аналоговый , а манипулировать только цифровым.
Данные передаются по радиоканалу на расстоянии до м в пределах прямой видимости указано производителем Расстояние уверенного приёма можно увеличить, если подключить антенны к передатчику и приёмнику. Приёмник имеет два, электрически соединённых, цифровых выхода можно использовать любой. В приёмнике реализован блок автоматической регулировки усиления AGC — Automatic Gain Control благодаря которому увеличивается дальность приёма, но при отсутствии сигнала от передатчика, на выходе приёмника наблюдаются хаотичные чередования логических уровней.
Приемник критичен даже к незначительным пульсациям на шине питания. Если таковые имеются, то приемник принимает их за информационный сигнал, усиливает и выводит на выход в виде логических уровней. Пульсации на шине питания могут вызывать такие устройства как: сервоприводы, LED индикаторы, устройства с собственными генераторами или использующие ШИМ и т.
Влияние пульсаций на приёмник можно снизить несколькими способами, вот некоторые из них: Использовать, для питания Arduino, внешний источник, а не шину USB. Так как напряжение на выходе многих внешних источников питания контролируется или сглаживается. Установить на шине питания приёмника сглаживающий конденсатор. Использовать отдельное стабилизированное питание для приёмника. Использовать отдельное питание для устройств вносящих пульсации в шину питания.
Антенны Первый усилитель любого приёмника и последний усилитель любого передатчика, это антенна. Гарантии и возврат Используя сайт Вы соглашаетесь с условями.
Радиомодуль беспроводной передатчик и приемник 433M 2 платы Модуль(FS1000A+080408)
Новые книги Шпионские штучки: Новое и лучшее схем для радиолюбителей: Шпионские штучки и не только 2-е издание Arduino для изобретателей. Обучение электронике на 10 занимательных проектах Конструируем роботов. Руководство для начинающих Компьютер в лаборатории радиолюбителя Радиоконструктор 3 и 4 Шпионские штучки и защита от них. Сборник 19 книг Занимательная электроника и электротехника для начинающих и не только Arduino для начинающих: самый простой пошаговый самоучитель Радиоконструктор 1 Обновления Подавитель сотовой связи большой мощности. Перед тем как создавать тему на форуме, воспользуйтесь поиском! Пользователь создавший тему, которая уже была, будет немедленно забанен!
Радиомодуль беспроводной передатчик и приемник M 2 платы Модуль( FSA+). Фотография дает общее представление о товаре и не.
Щось пішло не так 🙁
В домашних условиях кирпич, бетон дальность конечно сильно снижается, но все же остается достаточной для уверенной связи между самыми удаленными уголками квартиры, даже при наличии по пути стен. Это позволяет пользовать данные радиомодули как радиоканал для передачи сигнала дистанционного управления бытовой аппаратурой в другую комнату. Конечно, проводной вариант удлинителя тоже актуален, но такая низкая цена радиомодулей, что просто тянет попробовать обойтись без прокладки лишних кабелей. Система состоит из блока передатчика и блока приемника. Задача блока передатчика в приеме инфракрасного сигнала пульта дистанционного управления и передаче его по радиочастоте. Блок передачи предельно прост, его схема показана на рисунке 1. Для приема сигнала команд от пульта используется готовый модуль-микросхема TSOP, по параметрам аналогичный тому, что в спутниковом приемнике. Впрочем, они все аналогичные, только различие в частоте модуляции от 27 кГц до 48 кГц.
Подключение радиомодулей к микроконтроллеру
Организовать беспроводную связь между платформами Arduino можно по нескольким технологиям. Для реализации простого и дешёвого беспроводного подключения, можно применить технологию в диапазоне LPD, работающую на частоте Ввиду того что частоту данного диапазона не нужно лицензировать, она нашла широкое применение в мире, среди маломощных устройств. В данном диапазоне работают авто сигнализации, пульты открывание гаражных дверей и включения люстр, а так же маломощные рации. В Украине и России разрешено свободное использование подобных устройств, если мощность передатчика не превышает 10 мВт.
На сегодняшний день все популярнее становятся примочки, работающие с микроконтроллером по радиочастотным схемам модулям.
Беспроводной передатчик + приемник 433Mhz для Arduino
Рисунок 4. Установка кодов группы и индивидуальных кодов для радиорозеток. Рисунок 8. База знаний. Вконтакте Instagram YouTube. Беспроводная связь.
Arduino передатчик и приемник RD-RF5-433 RF 433МГц комплект.
Частота передачи МГц, модуляция амплитудная. Хорошее решение для передачи данных на малых дистанциях. Передатчик собран на двух транзисторах, модуляция сигнала амплитудная, несущая частота равна Мгц, стабилизирована ПАВ резонатором. Плата передатчика имеет три вывода: Vcc, Gnd, data. Data является входом для модуляции данных, высокий логический уровень на этом выводе включает передатчик.
Внешний вид приёмника XY-MK-5V и передатчика FSA Передатчик имеет три вывода — два по питанию и один для данных.
Принципиальная схема модуля FSA, простейшие радиомикрофоны на основе этого простого радиопередатчика. Модули радиопередатчика типа FSA или аналогичные часто используются в различных устройствах автоматики, охранных системах для радиоуправления или передачи данных. Модуль представляет собой простой однокаскадный микромощный передатчик на транзисторе Q1 рис.
Я давно думал о подключении радиомодулей к микроконтроллеру для осуществления беспроводной передачи данных, и однажды просматривая сеть, наткнулся на дешевые радио-модули под платформу Arduino. Это простые радиомодули, передатчик модель FSA собран на двух транзисторах, модуляция сигнала амплитудная, несущая частота равна Мгц, стабилизирована ПАВ резонатором. Плата передатчика имеет три вывода: Vcc, Gnd для питания 3,В , вывод data является входом для модуляции данных, высокий логический уровень на этом выводе включает передатчик. Приемник модель XY-MK-5V представляет собой сверхгенератор, на выходе которого стоит компаратор, приемники такого типа являются очень простыми из-за малого количества деталей, обладают высокой чувствительностью и автоматической регулировкой усиления, однако есть и недостатки, из-за высокой чувствительности и широкой полосы пропускания, он ловит много помех, на выходе всегда присутствует шум.
Это не опечатка. Метод enableReceive принимает не номер вывода, а номер прерывания.
Войдите , пожалуйста. Хабр Geektimes Тостер Мой круг Фрилансим. Войти Регистрация. Использование RF-модулей Электроника для начинающих Иногда, между устройствами требуется установить беспроводное соединение. В последнее время для этой цели все чаще стали применять Bluetooth и Wi-Fi модули.
Сайт Алексея Пахомова. Электроника Опубликовано в Дом Вокруг дома Досуг Природа Ракеты. Диалог Обратная связь.
Радионабор 433МГц. Джойстик с радиопередатчиком | BayRepo. ХобТех — электроника, программирование, эксперименты, исследования
Рассмотрим радионабор 433МГц состоящий из модуля передатчика FS1000A и приемника XY-MK-5V. Описание работы и устройства этих модулей можно найти по этой ссылке.
Задача
имеется:
- FS1000A
- XY-MK-5V
- джойстик KY-023
- микроконтроллеры attiny13a и attiny45
- 2 сервопривода в держателе для камеры для Raspberry PI
нужно сделать пульт с джойстиком, который бы управлял сервоприводами(и камерой). Нажатие на джойстик включало бы и выключало бы камеру. Сигналы с джойстика конечо должны передаваться по радиоканалу.
Передатчик
Для передатчика используем FS1000A, джойстик KY-023, attiny13a. Запитаем его от кроны через стабилизатор LM317 с понижением до 5В(он выступает как фильтр питающей линии).
В качестве библиотеки передачи данных по воздуху использовались исходники. Я только упростил исходный код, убрал лишний для других контроллеров, оставил только для attyny13/45.
С передатчиком проблем не возникло, скорость передачи выбрал достаточно низкую — MAN_1200 — это примерно 100 бит в секунду.
Микроконтроллер опрашивает через АЦП Rx и Ry ножки джойстка, т.к джойстик — это два потенциометра и определяет позицию потенциометра. А так же детектирует нажатие кнопки джойстика. Считанные данные 2 раза в секунду помещаются в такой массив:
#define MAGIC_NUMBER 0xFFEE #define SEND_SIZE 4 #define Rx_coord sendData[SEND_SIZE-3] #define Ry_coord sendData[SEND_SIZE-2] #define TransmitKey sendData[SEND_SIZE-1] unsigned int sendData[SEND_SIZE] = { MAGIC_NUMBER, 0, 0, 0 };
Массив — это 4 слова:
- 1 — число ключ для проверки приемником, что пришли правильные данные, а не мусор
- 2 — координата X, считанная с джойстика
- 3 — координата Y, считанная с джойстика
- 4 — была ли нажата кнопка
Массив по манчестерскому протоколу передается на передатчик. Один кадр передачи — это преамбула и сами данные. Преамбула — это 15 бит: 14 нулей и единица. преамбула нужна, чтоб приемник настроился на прием кадра и искючился мусор и шум.
Низкая частота передачи и длинная преамбула гарантируют корректный прием данных.
Вся программа опроса датчиков и передачи уместилась в микросхеме attiny13a.
F_CPU=9600000
KiCad проект
Вот схема пульта:
Приемник
А вот с приемником дела обстояли хуже.
Применик должен быть запитан 5Вольтовым напряжением. Т.к. сервоприводы тоже требуют 5 вольт, то я их объединил на одну шину питания, после стабилизатора L7805.
Входной источник питания — батарея крона 9В или адаптер 10В. При работе сервоприводов на шину питания возникала нагрузка до 300 милли ампер, в эти моменты просаживалось напряжение до 4.5 Вольт на выходе L7805, в сети питания были постояные помехи, даже добавление фильтрующей емкости не помогало.
Микросхема XY-MK-5V выдавала нестабильные результаты:
- входной сигнал был инвертирован, по отношению передаваемого
- появились задержки на спадающий фронт сигнала в 450 микросекнуд, что сильно снижало скорость передачи
вот пример такого сигнала.Синим цветом отображается сигнал, который модулировался на передатчике, фиолетовым — сигнал принимаемый на приемнике.
Красным квадратом выделен один из участков с задержкой. На 60 мс сигнал на передатчике переходит от 1 к 0, на приемнике лишь на 61 мс происходит реакция — смена 0 в 1. Пришлось играться с исходным кодом ManchesterRF.c подбирая таймауты для определения 0 и 1, а так же подстроить под инвертированный сигнал.
Но потом пришла идея разделить питание микроконтроллера и сервоприводов и микросхемы XY-MK-5V. Сама микросхема XY-MK-5V была перенесена на питание от L7805CV, а микроконтроллер и серводвигатели перенесены на вывход LM317 и все заработало, пропала инферсия сигнала и задержки. Т.е приемник оказался очень чувствительным к помехам в сети питания.
Вот каким стал сигнал после разделения питания:
Пропала задержка и на 4-й и 5-й дорожке можно видеть ШИМ сигнал для сервоприводов.
Исходный код для программы микроконтроллера attiny45 можно найти здесь, F_CPU=8000000
В программе используется алгоритм поиска в буфере магического числа #define MAGIC_NUMBER 0xFFEE
, даже если это число не в начале буфера, а например в конце, в этом случае прочитается еще один кадр и данные объединятся(можно было не усложнять и сделать просто проверку первых байт на MAGIC_NUMBER
при возникновении события ManchesterRF_available()
)
Ниже приведена схема из файлов для KiCad
Работа модели:
youtube.com/embed/m3pBVN5-LVk» frameborder=»0″ allowfullscreen=»»>Пример приема одного байта по Манчестерскому коду
В программе при изменении уровня сигнала формируется прерывание. LS
— это значение уровня старое, до прерывания, RS
— это значение уровня новое, после прерывания. L
— длинный период(значит или 0 менялся на 1 или 1 на 0 в передаваемом бите), S
— короткий период (значит идет последовательность повторяющихся бит)
Для примера передается последовательность бит: 00101100
Выглядеть это будет по Манчестерскому коду так:
черным выделены биты и сам сигнал, красным — моменты возникновения смены сигнала, зеленым — периоды
№ | LS & RS | период | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | слово |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | LS=1 RS=0 | S | 0 | 0 | |||||||||||||||
2 | LS=0 RS=1 | S | 0 | 1 | 1 | ||||||||||||||
3 | LS=1 RS=0 | S | 0 | 1 | 0 | 2 | |||||||||||||
4 | LS=0 RS=1 | L | 0 | 1 | 0 | 0 | 4 | ||||||||||||
0 | 1 | 0 | 0 | 1 | 9 | ||||||||||||||
5 | LS=1 RS=0 | L | 0 | 1 | 0 | 0 | 1 | 1 | 13 | ||||||||||
0 | 1 | 0 | 0 | 1 | 1 | 0 | 26 | ||||||||||||
6 | LS=0 RS=1 | L | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 4C | ||||||||
0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 99 | ||||||||||
7 | LS=1 RS=0 | S | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 132 | ||||||
8 | LS=0 RS=1 | S | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 1 | 265 | |||||
9 | LS=1 RS=0 | L | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 1 | 1 | 4CB | ||||
0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 996 | ||||||
10 | LS=0 RS=1 | S | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 132D | ||
11 | LS=1 RS=0 | S | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 0 | 265A |
итого имеем 0010011001011010. Разобьем по парам 00.10.01.10.01.01.10.10 и из каждой пары возьмем младьший бит — 00101100, т.е то число, которое закодировали в самом начале на картинке.
Что еще нужно сделать
На текущий момент в проекте нет шифрования и сопряжения устройств, т.е легко можно перехватить управление. Нет возможности сопрягать несколько пар устройств, т.к. манипулятор не имеет адреса. Но в качестве манипулятора для камеры для дома вполне подойдет.
Подключение радиомодулей к микроконтроллеру | RadioLaba.ru
#include <P16F628A.INC>
LIST p=16F628A
__CONFIG H’3F18′ ;внутренний тактовый генератор 4Мгц
flag equ 20h ;дополнительный регистр флагов
vremya equ 21h ;регистр хранения фактического времени
kolbyte equ 22h ;регистр кол-ва принятых байт
reg equ 23h ;регистр приема данных от приемника
shets equ 24h ;регистр кол-ва принятых бит
FSR_osn equ 25h ;регистры для временного хранения значений
FSR_prer equ 26h ;во время прерываний
W_TEMP equ 7Eh ;
STATUS_TEMP equ 7Fh ;
data1 equ 60h ;первый регистр хранения принятых команд
#DEFINE dat PORTB,4 ;присвоение названий линиям ввода-вывода
#DEFINE led PORTB,0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
org 0000h ;начать выполнение программы с адреса 0000h
goto Start ;переход на метку Start
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Подпрограмма обработки прерываний
org 0004h ;начать выполнение подпрограммы с адреса 0004h
movwf W_TEMP ;сохранение значений ключевых регистров
swapf STATUS,W ;
clrf STATUS ;
movwf STATUS_TEMP ;
movf TMR0,W ;сохранение значения счетчика TMR0
movwf vremya ;в регистр vremya
movlw . 0 ;запись числа 0 в счетчик TMR0
movwf TMR0
movf FSR,W ;запись содержимого регистра FSR в
movwf FSR_osn ;регистр FSR_osn
movf FSR_prer,W ;запись содержимого регистра FSR_prer в
movwf FSR ;регистр FSR
btfsc INTCON,T0IF ;опрос флага прерывания по переполнению TMR0
goto outshet ;переполнение TMR0:переход в подпрограмму outshet
btfss dat ;нет переполнения TMR0:сохранение состояния линии
bcf flag,0 ;dat в 0-й бит регистра flag1
btfsc dat
bsf flag,0
movlw .37 ;проверка длительности между
subwf vremya,W ;прерываниями:больше-меньше 150мкс
btfss STATUS,C ;
goto eror ;длительность меньше 150мкс:переход на метку eror
movlw . 87 ;длительность больше 150мкс:проверка длительности:
subwf vremya,W ;больше-меньше 350мкс
btfsc STATUS,C ;
goto int1 ;длительность больше 350мкс:переход на метку int1
bcf flag,1 ;длительность меньше 350мкс:сброс 1-го бита регистра flag:
;приравниваем длительность к 250мкс
goto opred ;переход на метку opred
int1 movlw .100 ;проверка длительности: больше-меньше 400мкс
subwf vremya,W ;
btfss STATUS,C ;
goto eror ;длительность меньше 400мкс:переход на метку eror
movlw .150 ;длительность больше 400мкс:проверка длительности:
subwf vremya,W ;больше-меньше 600мкс
btfsc STATUS,C ;
goto eror ;длительность больше 600мкс:переход на метку eror
bsf flag,1 ;длительность меньше 600мкс:устанавливаем 1-й бит регистра
;flag:приравниваем длительность к 500мкс
opred btfss flag,0 ;опрос ранее сохраненного состояния линии dat
goto int2 ;низкий уровень линии dat:переход на метку int2
btfsc flag,1 ;высокий уровень линии dat(произведено измерение длительности-
;-сигнала низкого уровня):проверка длительности импульса
bsf flag,2 ;устанавливаем 2-й бит регистра flag:зафиксирован низкий
btfss flag,1 ;уровень сигнала длительностью 500мкс
bcf flag,2 ;сбрасываем 2-й бит регистра flag:зафиксирован низкий
;уровень сигнала длительностью 250мкс
bsf flag,7 ;устанавливаем 7-й бит регистра flag:зафиксирован
;низкий уровень сигнала с правильной длительностью-
;-разрешаем прием сигнала высокого уровня
goto vihod ;переход на метку vihod
int2 btfss flag,7 ;низкий уровень линии dat:(произведено измерение длительности-
;-сигнала высокого уровня):проверка разрешение приема сигнала
;высокого уровня
goto vihod ;нет разрешение приема сигнала высокого уровня:переход на
;метку vihod
btfsc flag,2 ;есть разрешение приема сигнала высокого уровня:проверка-
;-длительности предыдущего сигнала низкого уровня
goto int3 ;низкий уровень сигнала равен 500мкс:переход на метку int3
btfss flag,1 ;низкий уровень сигнала равен 250мкс:проверка длительности
;сигнала высокого уровня
goto eror ;высокий уровень равен 250мкс(предыдущий низкий равен 250мкс)-
;-неверная последовательность:переход на метку eror
bsf flag,3 ;высокий уровень равен 500мкс(предыдущий низкий 250мкс)-
;-принят бит единица (лог. 1)
goto intpriem ;переход на метку intpriem
int3 btfsc flag,1 ;низкий уровень сигнала равен 500мкс:проверка длительности
;сигнала высокого уровня
goto eror ;высокий уровень равен 500мкс(предыдущий низкий равен 500мкс)-
;-неверная последовательность:переход на метку eror
bcf flag,3 ;высокий уровень равен 250мкс(предыдущий низкий 500мкс)-
;-принят бит ноль (лог.0)
intpriem btfsc flag,3 ;опрос значения принятого бита и запись в 0-й бит-
bsf reg,0 ;-регистра reg
btfss flag,3 ;
bcf reg,0 ;
incf shets,F ;инкремент счетчика (shets) принятых битов
movlw . 8 ;проверка счетчика (shets) принятых битов на совпадение
xorwf shets,W ;с числом 8
btfsc STATUS,Z ;
goto srav ;есть совпадение,приняты 8 бит(1 байт):переход на метку srav
rlf reg,F ;нет совпадения:смещение регистра reg на один бит влево
;для приема следующего бита
goto vihod ;переход на метку vihod
srav movf reg,W ;сохранение значения принятого байта-
movwf INDF ;-в регистры хранения
incf FSR,F ;инкремент регистра FSR:подготовка следующего регистра
;хранения
clrf shets ;очистка счетчика бит
incf kolbyte,F ;инкремент счетчика кол-ва принятых байт
movlw . 2 ;проверка счетчика (shets) принятых битов на совпадение
xorwf kolbyte,W ;с числом 2
btfss STATUS,Z ;
goto vihod ;нет совпадения:переход на метку vihod
bsf flag,4 ;есть совпадение,приняты 2 байта:установка флага получения-
;-команды!
goto eror ;переход на метку eror
outshet bcf INTCON,T0IF ;сброс флага прерывания по переплнению TMR0
eror clrf shets ;очистка счетчика бит
clrf kolbyte ;очистка счетчика байт
bcf flag,7 ;сброс флага разрешения приема высокой лог. уровня
movlw data1 ;запись адреса первого регистра хранения принятых
movwf FSR ;команд в регистр FSR
vihod movf PORTB,W ;чтение регистра PORTB для устранения несоответствия
bcf INTCON,RBIF ;сброс флага прерывания по изменению уровня сигнала
;на выводах RB4-RB7
kon1 movf FSR,W ;запись содержимого регистра FSR в
movwf FSR_prer ;регистр FSR_prer
movf FSR_osn,W ;запись содержимого регистра FSR_osn в
movwf FSR ;регистр FSR
swapf STATUS_TEMP,W ;восстановление содержимого ключевых регистров
movwf STATUS ;
swapf W_TEMP,F ;
swapf W_TEMP,W ;
;
retfie ;выход из подпрограммы обработки прерывания
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Основная программа
Start clrf PORTB ;очистка выходных защелок портов A и B
clrf PORTA ;
movlw b’00000111′ ;выключение компараторов
movwf CMCON
bsf STATUS,RP0 ;выбрать 1-й банк
movlw b’00011110′ ;настройка линий ввода\вывода порта B
movwf TRISB ;RB0,RB5-RB7 на выход,остальные на вход
movlw b’10000001′ ;коэффициент предделителя TMR0 1:4, внутрен.
movwf OPTION_REG ;тактовый сигнал
bcf STATUS,RP0
bcf flag,5 ;сброс флага состояния светодиода led
bcf flag,7 ;сброс флага разрешения приема высокой лог.уровня
bcf flag,4 ;сброс флага приема пакета данных
clrf shets ;очистка счетчика бит
clrf kolbyte ;очистка счетчика байт
movlw data1 ;запись адреса первого регистра хранения команд
movwf FSR_prer ;в регистр FSR_prer
bcf INTCON,T0IF ;сброс флага прерывания по переполнению TMR0
movlw .0 ;запись 0 в TMR0
movwf TMR0 ;
bsf INTCON,T0IE ;разрешение прерываний по переполнению TMR0
movf PORTB,W ;чтение регистра PORTB для устранения несоответствия
bcf INTCON,RBIF ;сброс флага прерывания по изменению уровня сигнала RB4:RB7
bsf INTCON,RBIE ;разрешение прерываний по изменению уровня сигнала RB4:RB7
bsf INTCON,GIE ;глобальное разрешение прерываний
opros btfss flag,4 ;опрос флага получения команды
goto opros ;команда не получена:переход на метку opros
bcf flag,4 ;команда получена:сброс флага полуения команды
movlw data1 ;проверка первого и второго байта команды на соответствие
movwf FSR ;с командой, отправленной с передатчика
movf INDF,W
xorlw . 196
btfss STATUS,Z
goto opros ;первый байт команды неверный:переход на метку opros
incf FSR,F
movf INDF,W
xorlw .46
btfss STATUS,Z
goto opros ;второй байт команда неверный:переход на метку opros
int4 btfsc flag,5 ;поочередное включение и выключение светодиода led-
goto pro21 ;-при получении правильной команды
bsf led
bsf flag,5
goto opros
pro21 bcf led
bcf flag,5
goto opros
end ;конец всей программы
FS1000A Модули приемника радиочастотного передатчика 433 МГц
Фарва Навази
4164 просмотраОбзор FS1000A
FS1000A 433 МГц — это недорогой и простой в использовании беспроводной радиочастотный модуль. Модули предназначены для беспроводных систем и проектов. В этом модуле передатчик может только передавать данные, а приемник может только получать эту информацию. Это означает, что вы можете отправлять информацию только из пункта один в пункт два, а не из пункта два в один.
Модуль может передавать или получать данные на расстоянии более 3 метров, но с соответствующей антенной и блоком питания теоретически он может достигать 100 метров. Однако практически вряд ли можно пройти около 30-35 метров.
Купить на Amazon
Обзор оборудования
Передатчик
Основной частью модуля передатчика является резонатор на ПАВ, настроенный для работы на частоте 433,xx МГц. Кроме того, есть также переключающий транзистор и несколько других пассивных компонентов.
Приемник
Приемный модуль немного сложен, состоит из настроенной радиочастотной схемы и нескольких операционных усилителей для усиления принятой несущей волны, исходящей от передатчика. Затем он подавал поступающий усиленный сигнал на контур фазовой синхронизации (PLL), который позволяет декодеру блокировать поток цифровых битов, что обеспечивает лучшее декодирование вывода.
Принцип работы
Когда на вход DATA подается ВЫСОКИЙ логический уровень, генератор создает постоянную несущую на выходе РЧ с частотой 433,xx МГц. И, когда на входе DATA установлен логический НИЗКИЙ уровень, генератор останавливается. Этот метод известен как амплитудная манипуляция (ASK).
Характеристики и характеристики модулей FS1000A
Характеристики
- Широкий входной источник питания (от 2,5 В до 12 В)
- Простота интеграции (V+, GND и данные)
- Устройство в режиме глубокого сна, когда вывод данных заземлен
- Очень маленький размер
Характеристики модуля передатчика
- Беспроводной (РЧ) симплексный передатчик и приемник
- Рабочее напряжение передатчика: только +5 В
- Рабочий ток передатчика: 9от мА до 40 мА
- Рабочая частота: 433 МГц
- Дальность передачи: от 3 м (без антенны) до 100 м (максимум)
- Метод модуляции: ASK (амплитудная манипуляция)
- Скорость передачи данных: 10 кбит/с
- Тип цепи: Пильный резонатор
- Недорогой и компактный корпус
Характеристики модуля приемника
- Рабочее напряжение: 5 В пост. тока
- Статический ток: 4 мА
- Частота приемника: 433,92 МГц; 315 МГц
- Sensitivity: 105DB
- Dimension:30*14*7mm
- External Antenna:32CM signal wire, spiral
Pinouts of FS1000A RF Module
Transmitter
Pin No: | Pin Name | Описание |
1 | Данные | Принимают данные, которые будут переданы |
2 | VCC | . Распродажа с 3,5V до 12V. |
3 | Заземление | Заземление должно быть соединено с заземлением системы. |
4 | Antenna | Antenna to improve the range |
Receiver
Pin No: | Pin Name | Description |
1 | Vcc | Блок питания требует 5 В |
2 | ДАННЫЕ | Получение данных |
3 | Данные | Получить данные |
4 | Земля | Наземная земля для подключения к земле. |
5 | антенна | Антенна для улучшения диапазона |
Применение модулей FS1000A
Продукты безопасности
RF. В Security Sharge Alarder Alarder Alarder Alarder, Burglar Burglar, заброшенные будильники, бухгалтерий, затрой. Сигналы тревоги можно найти повсюду, от предприятий, офисов, зданий, банков до наших домашних систем безопасности.
Системы автоматизации
Мы можем разработать проект системы домашней автоматизации на основе радиочастот, используя этот модуль, чтобы заменить использование обычных выключателей в доме и других местах. В проекте задействован передатчик, который посылает сигналы на приемник, в то время как приемники подключены к нагрузкам.
Похожие сообщения:
FS1000A 433 МГц Передатчик Приемник РЧ Радиомодуль – TOMSON ELECTRONICS
Правила доставки:
Чтобы ваш заказ был доставлен вам в кратчайшие сроки и в хорошем состоянии, мы отправляем наши товары только через DELHIVERY, DTDC и SPEEDPOST.
В зависимости от веса и пункта назначения магазин автоматически рассчитает стоимость доставки заказа (дополнительную информацию см. в разделе Стоимость доставки). Обычно доставка в любую точку Индии занимает от 1 до 10 дней.
Наша команда стремится отправить все товары в вашем заказе вместе, но это может быть невозможно в любое время из-за свойства или доступности продуктов, в любом случае мы сообщим клиенту, прежде чем приступить к отправке.
Время доставки и доставки:
Заказы, размещенные до 16:00, будут упакованы и отправлены в тот же день.
Самовывоз посылок возможен до 18:00. Мы также предлагаем гипердоставку для заказов, размещенных до 15:00 в Кочи в радиусе 15 км от магазина.
Мы прилагаем все усилия, чтобы упаковать и отправить заказ в тот же день или в течение 24 часов с момента получения заказа. Заказы, сделанные в воскресенье, будут отправлены в понедельник, а заказы, сделанные в праздничные дни, будут отправлены на следующий рабочий день.
В связи с пандемией правительство наложило определенные ограничения на работу наших партнеров по доставке, поэтому можно ожидать небольшую задержку в передаче посылок соответствующим партнерам по доставке.
Логистические партнеры гарантируют доставку посылок в течение 1-10 дней в любую точку Индии. Дальнейшие задержки не зависят от нас. У каждого из наших партнеров по доставке есть свой способ доставки и промежуточные транзитные узлы в каждом месте.
В результате точное время доставки невозможно предсказать, поэтому мы просим всех наших клиентов соответствующим образом планировать свои заказы, чтобы посылка дошла до вас за достаточное время.
Гарантия и повреждения при транспортировке:
Все товары поставляются со стандартной гарантией не менее 7 дней (если иное не указано на странице продукта), чтобы защитить клиентов от любых производственных дефектов.
Если у вас возникли проблемы с вашим заказом, пожалуйста, сообщите нам об этом в течение этого срока, с момента доставки товара. Мы заменим или отремонтируем поврежденные продукты бесплатно, а расходы по доставке несет Tomson Electronics. В случае, если у нас нет товара на складе, чтобы обеспечить замену, и клиент больше не в состоянии ждать, мы оформим 100% возврат средств.
Если вы обнаружите, что доставленная посылка была повреждена или повреждена, и считаете, что это могло привести к повреждению продукта внутри, вы должны щелкнуть изображение посылки, отказаться принять доставку и сообщить в нашу службу поддержки клиентов +91. 8606650999 вместе с номером вашего заказа. Мы приложим все усилия, чтобы обеспечить замену в кратчайшие сроки.
Для обмена поврежденного товара:
- Пожалуйста, пришлите нам фотографии товара.
- Мы оценим ущерб, а затем решим, как лучше всего обменять или вернуть товар.
- Если конкретный товар отсутствует на складе для замены, и клиент больше не в состоянии ждать, мы обеспечим полный возврат средств.
Кроме того, гарантия не действует, если изделие подвергалось неправильному использованию, статическому разряду, небрежному обращению, аварии, модификации, пайке или каким-либо образом изменено. Из-за характера продуктов и конкурентоспособных цен, которые мы предлагаем, мы не можем обеспечить возврат без нашей строгой действительной проверки.
Отслеживание заказа:
Вы можете отслеживать свой заказ по телефону https://www.tomsonelectronics.com/pages/track-your-order
: [email protected] или через SMS, отправленное на ваш зарегистрированный номер мобильного телефона, в момент оформления заказа, от службы доставки.
Внесение изменений в заказ:
Чтобы внести изменения в заказ, вы можете связаться с нами по электронной почте или позвонить нам через службу поддержки +91 8606650999 в течение 2 часов после оформления заказа. Вы можете внести изменения в следующие поля:
- Товар
- Количество
- Адрес
- Номер телефона
- Курьерская служба
Примечание. Любые дополнительные расходы, связанные с внесением изменений, будут взиматься до отправки заказа.
Отмена заказа:
За отмену заказа может взиматься комиссия банка в размере 5% в зависимости от способа оплаты, используемого клиентом (большинство поставщиков платежных шлюзов взимают комиссию, даже если заказ был отменен и возвращен). Из-за характера продуктов и конкурентоспособных цен, которые мы предлагаем, мы не можем обеспечить отмену заказа и возврат без нашей строгой действительной проверки.
Возврат:
Мы делаем все возможное, чтобы предоставить точные описания и продукты самого высокого качества, как указано на веб-сайте. Мы не можем заверить клиента в точности описаний, поскольку они взяты из сторонних источников. По любым вопросам, касающимся продукта, рекомендуется обращаться в нашу службу поддержки клиентов.
В целях защиты наших клиентов от повреждений при транспортировке, несоответствия товара или отсутствия деталей мы предоставляем клиентам 7 дней с даты доставки, чтобы сообщить о проблеме нашему менеджеру по работе с клиентами через окно чата на нашем веб-сайте или связаться с нами. на + 91 86066 50999, наши инженеры службы поддержки проверят проблему и проведут вас через процесс возврата/возврата средств.
Все возвраты должны включать копию оригинального упаковочного листа, прилагаемого к вашей посылке.
При получении товара наши специалисты определят причину повреждения и приступят к возврату.
Запасные части будут немедленно отправлены покупателю, при этом расходы по доставке несет Tomson Electronics. В случае, если товар отсутствует на складе во время процесса, и клиент больше не в состоянии ждать, мы предоставим клиенту 100% возврат средств.
Все возмещения будут получены клиентом в течение 2-3 дней после утверждения вашего возмещения.
Кроме того, гарантия не действует, если изделие подвергалось неправильному использованию, статическому разряду, небрежному обращению, аварии, модификации, пайке или каким-либо образом изменено. Из-за характера продуктов и конкурентоспособных цен, которые мы предлагаем, мы не можем обеспечить отмену заказа и возврат без нашей строгой действительной проверки.
Пределы ответственности:
Мы не несем ответственности за неправильную установку продуктов. При подключении электрических компонентов необходимо соблюдать электрическую полярность.
Tomson Electronics оставляет за собой право принимать окончательное решение по всем запросам на отмену и возврат средств.
ВАЖНО
Как правило, наш интернет-магазин рассчитывает точную стоимость доставки, но в случае каких-либо проблем или ошибок мы можем пересчитать стоимость доставки и отправляем такие заказы только после их принятия от вас. Если вы не принимаете стоимость доставки, вы получите полный возврат средств.
Вышеупомянутое время доставки является наилучшим случаем. Ваша посылка может быть задержана из-за обработки, погодных условий или других причин. Мы не берем на себя ответственность за своевременную доставку посылок, так как это полностью зависит от поставщика услуг.
Микроконтроллер передает напряжение и частоту через недорогие модули
Загрузите эту статью в формате PDF.
Этот проект сочетает в себе набор 8-битных микроконтроллеров с 433-мегагерцовым процессором. передатчик/приемник промышленного, научного и медицинского (ISM) диапазона. Радиочастотный передатчик FS1000A имеет дальность действия до 200 м; XY-МК-5В РФ приемник работает от 5 В и потребляет всего 4 мА (рис. 1) . Эти модули легко доступны и используются в проектах с такими платформами, как Ардуино.
В проектах используются микроконтроллеры Microchip PIC, включая 16F1619 и 16F1614. В них используются радиомодули с использованием встроенного EUSART (Enhanced Universal синхронный/асинхронный приемник-передатчик). На стороне передатчика, мы используем аналоговый и цифровой интерфейсы PIC для считывать напряжение и частоту источника в диапазоне от 0 до 4,99 В постоянного тока и от 0 до 65,5 кГц соответственно.
Логическая схема преобразователя (рис. 2) включает ЖКИ дисплей для обеспечения обратной связи. Листинг 1 (см. в конце артикул) имеет код 16Ф1619.
Приемная сторона (фиг. 3) также включает в себя пару ЖК-дисплеев. Дисплеи не нужны в приложении, но они удобны для отладка. Листинг 2 (см. в конце статьи) имеет код для 16Ф1614.
Последовательная связь
Во-первых, мы коснемся поддержки последовательной связи, связанной с беспроводные модули. Для установления связи необходимо иметь начальный бит в течение периода времени, чтобы предупредить приемник о том, что пакет данных должен быть передан. Это заставляет часы приемника чтобы начать синхронизацию с 0 бита. Затем каждый бит отправляется индивидуально, начиная с младшего бита и заканчивая старшим битом (см. таблица ниже) . Каждый бит имеет одинаковый период. Как только все биты передано, он должен дождаться стоп-бита, указывающего на конец коробка передач. Это достигается с помощью Высокой логики, где общение заканчивается.
Для передачи буквенно-цифрового символа «A», код ASCII которого равен 0b01000001 (рис. 4) , биты организованы, как показано на стол. Каждый бит имеет период, определяемый скорость передачи (скорость передачи), которая может варьироваться от 115,2 кбит/с до 200 бит/с.
Время для каждого бита определяется как:
Чтобы передать напряжение, мы будем считывать его с помощью 10-битного аналого-цифровой преобразователь (АЦП), который по умолчанию имеет ссылку напряжение, подключенное к 5 В. Это определяет разрешение АЦП:
Для преобразования двоичного кода в десятичный используется следующий код:
VINBCD = VIN*4887 ; умножение на RESlsb = 4,8887VR = div32 1000 ; выполнить 16-битное деление
, где VIN — двоичное напряжение, считываемое АЦП, а VR — результат напряжения.
ТАЙМЕР 1 обеспечивает считывание частот и настроен на прочитать количество импульсов за одну секунду. После этого PIC передает и получает эти показания. Когда данные готовы, инструкция HSEROUT отправляет последовательные данные. Код всегда ждет, чтобы быть активирован пользователем. После активации он отправляет управляющую переменную в приемное устройство с инструкцией HSEROUT, которая отправляется в скорость 2400 бит/с. Эта переменная указывает, что передача данных старт:
HSEROUT ["BZ0",10]; ОТПРАВИТЬ ИНСТРУКЦИЮ ПО АКТИВАЦИИ
Для кода передатчика необходимо прочитать напряжение и частоты с АЦП микроконтроллера и TIMER1 соответственно. максимальная частота:
Затем код переходит к получению каждой десятичной цифры с команда DIG, и каждая цифра отправляется со скоростью 2400 бит/с с последовательными данными с инструкцией Hserout. Две цифры в коде ASCII вставляются в начало каждого пакета данных, чтобы получатель идентифицировал какие данные принимаются.
HSEROUT ["BZ",DEC A,10];HSEROUT ["AZ",VD[3],VD[2],VD[1],VD[0],10]; отправить последовательные данныеHSEROUT ["CZ",H[4],H[3],H[2],H[1],H[0],10];
Когда приемник получает данные «BZ», это представляет активность управление через последовательный порт. Пакет данных AZ представляет напряжение, в то время как пакет данных CZ представляет частоту.
Когда Micro получает команду остановки с помощью кнопки, он передает «1» в пакете управляющих данных, указывая на конец коробка передач.
Приемник ожидает управляющую переменную BZ с инструкции HSERIN и WAIT, которые специально ждут данные «БЖ». Поскольку эта радиочастотная передача данных имеет внешний шум, после получив данные BZ, следующие данные сохраняются в переменной для действуйте следующим образом:
HSERIN 10,MAIN1,[WAIT("BZ"), STR A\1]; подождите одну секунду, чтобы получить команду
Когда второй микроконтроллер получает управляющую переменную, он запускается ввод данных, где инструкции HSERIN ждут кодов ASCII в каждый передаваемый пакет. Если он не получает никаких данных, код переходит к следующей инструкции следующим образом:
HSERIN 10,ПРЫЖОК1,[ОЖИДАНИЕ ("BZ"), СИЛ A\1]ПРЫЖОК1: HSERIN 100,ПРЫЖОК2,[ПОЖИДАНИЕ ("AZ"), STR VD\4]ПРЫЖОК2: HSERIN 10,ЗДЕСЬ, [ПОДОЖДИТЕ ("CZ"), СИЛ H\5]
Когда данные получены, они передаются на два ЖК-дисплея. По с помощью CMOS-переключателя HCF4066, можно управлять функциями включения и чтения/записи на каждом ЖК-дисплее. Два биты в микроконтроллере выбирают, какой ЖК-дисплей будет работать, как показано в следующем коде:
LCD1 = 1 ; ВКЛЮЧИТЬ LCD1LCD2 = 1 ; ВКЛЮЧИТЬ LCD2
Микроконтроллер PIC приемника управляет двумя ЖК-дисплеями 16X2. управляется четырехъядерным КМОП-переключателем — HCF4066, сконфигурированным как мультиплексор для выберите, какой ЖК-дисплей будет получать данные. В этом случае на первом ЖК-дисплее отображается Напряжение, а второй показывает частоту.
Для приемника мы используем инструкцию HSERIN, которая получает два символа ASCII, а затем сохраняет соответствующие данные обоих персонажи.
Рикардо Хименес, имеет степень магистра электроники. Инжиниринг. Он является автором нескольких лабораторных тетрадей по Микроконтроллеры PIC применяются в приборостроении.
Габриэль Ли Альварес занимается электроникой степень в Instituto Tecnologico de Mexicali (ITM).
Листинг 1: Код для PIC16F1619, используемого в качестве передатчика
; БЕСПРОВОДНОЙ ВОЛЬТМЕТР/ЧАСТОТНЫЙ ПЕРЕДАТЧИК RS232 RF ; КОМПИЛЯТОР PBP3 от melabs.com ; Авторы: Рикардо Хименес и Габриэль Ли Альварес ; © 13 июля 2020 г. ; PIC16F1619 ; ПЕРЕДАТЧИК PIC16F1619 #КОНФИГ __config _CONFIG1, _FOSC_INTOSC & _PWRTE_ON & _MCLRE_OFF & _CP_OFF & _BOREN_ON & _CLKOUTEN_OFF __config _CONFIG2, _WRT_OFF & _PPS1WAY_OFF & _ZCD_OFF & _PLLEN_OFF & _STVREN_ON & _BORV_LO & _LVP_OFF __config _CONFIG3, _WDTCPS_WDTCPS4 и _WDTE_ON и _WDTCWS_WDTCWS100 и _WDTCCS_LFINTOSC #КОНЕЦКОНФИГ ОПРЕДЕЛИТЕ OSC 16; ОСККОН = %01111010; внутренний Osc установлен на 16 МГц ОСЦТУН = 0 OSCSTAT = %00011111; ТРИСА = %00111110; RA0 КАК ВЫХОДЫ, RA1:RA2:RA3:RA4:RA5 КАК ВХОДЫ АНСЕЛА = %000100; RA0:RA1:RA4:RA5 КАК ЦИФРОВОЙ, RA2:RA3 КАК АНАЛОГОВЫЙ, TRISC = %100000;RC0:RC1:RC2:RC3:RC4 КАК ВЫХОДЫ, RC5 КАК ВХОДЫ ТРИСК=0; Очистка PORTC ТРИСБ = 0; Очистка PORTB АНСЕЛЬБ = 0; PORTB установлен как цифровой ;PPSLOCK=0; ;Подтягивающие резисторы ANSEL отключены ВПУА = 0; АС = 0; WPUC = 0; ПОДТЯГИВАНИЯ ОТКЛЮЧЕНЫ ОПЦИЯ_РЕГ. 7 = 0; ПОДТЯГИВАНИЯ ВКЛЮЧЕНЫ WPUA.3 = 1; ПОДТЯГИВАНИЕ В RA3 ВКЛЮЧЕНО T1CON = %10000101; TMR1 ВКЛЮЧЕН ADCON0 = %00001111;AN3 ВКЛЮЧЕН ADCON1 = %10000000; ФОСК/2, ВДД ;--------------------------------- ОПРЕДЕЛИТЬ HSER_RCSTA 90ч; МОДУЛЬ ПРИЕМА ВКЛЮЧЕН DEFINE HSER_TXSTA 20 ч; МОДУЛЬ ПЕРЕДАЧИ ВКЛЮЧЕН ОПРЕДЕЛИТЬ HSER_BAUD 2400; СКОРОСТЬ БОД 2400 rc1sta.7 = 1; ПОСЛЕДОВАТЕЛЬНАЯ СВЯЗЬ ВКЛЮЧЕНА РБ7ППС = %10010; ;--КОНФИГУРАЦИЯ ЖКИ ---------------------- DEFINE LCD_DREG PORTC ' PORTC - это порт данных LCD DEFINE LCD_DBIT 0 ' PORTC.0 — младший бит данных DEFINE LCD_RSREG PORTA ' RS подключен к PORTA.0 ОПРЕДЕЛИТЬ LCD_RSBIT 0 DEFINE LCD_EREG PORTA 'E подключен к PORTA.1 ОПРЕДЕЛИТЬ LCD_EBIT 1 DEFINE LCD_BITS 4 ' 4 строка данных DEFINE LCD_LINES 2 ' 2-строчный дисплей DEFINE LCD_COMMANDUS 1500 ' Использовать задержку команды 1500 мкс DEFINE LCD_DATAUS 44 ' Использовать задержку данных 44 мкс ;;------------------------------------------------ ----- LCDOUT $FE, $28; ФУНКЦИОНАЛЬНЫЙ НАБОР 28 ДОЛЛАРОВ США, 4 БИТЫ LCDOUT $FE, $10; ДИСПЛЕЙ СМЕНЫ 10 ДОЛЛАРОВ США LCDOUT $FE,$0C; $0C ОТОБРАЖЕНИЕ ВКЛЮЧЕНО LCDOUT $FE, $06; $06 НАБОР РЕЖИМА ВХОДА ;----------------------------------------------------------------------- ;СОЗДАНИЕ алиаса ;ПЕР. ПЕР.ПОРТC.0;; ПБ ВАР ПОРТ.3 ;---- ;---ПЕРЕМЕННЫЕ X VAR байт[4]; Y VAR СЛОВО; ВИН ВАР СЛОВО; слово переменной VINBCD H VAR БАЙТ[5]; TMR VAR СЛОВО; VD вар байт[4]; ВАР БИТ IN вар байт; OUT VAR БАЙТ; ;-------- А = 1 для х = от 0 до 5 вд[х] = "0"; ч[х] = "0"; следующий х ;отправить сообщение на LCD LCDOUT $FE,$80,"ЧАСТОТОМЕТР-"; LCDOUT $FE,$C0,"--ВОЛЬТМЕТР RF--"; ПАУЗА 2000; ТМР = 0; Т1КОН.0 =0; Вход T1CON Частота ВЫКЛЮЧЕНА ГЛАВНЫЙ LCDOUT $FE,$80,"ЧАСТОТОМЕТР-"; LCDOUT $FE,$C0,"--ВОЛЬТМЕТР RF--"; ;--------- ЕСЛИ РВ = 0 ТО; подождите, пока кнопка не станет низкой ПАУЗА 150 А = 0; ПЕРЕМЕННАЯ УПРАВЛЕНИЯ 0 ДЛЯ Х= 0 ДО 3; HSEROUT["BZ0",10]; ОТПРАВИТЬ ИНСТРУКЦИЮ ПО АКТИВАЦИИ СЛЕДУЮЩИЙ X; КОНЕЦ; ЕСЛИ А = 0 ТО; НАЧАТЬ ВОПРОС ДЛЯ КОНТРОЛЬНОЙ переменной LCDOUT $FE,$80,"СТАРТ"; LCDOUT $FE,$C0,"TX"; ПАУЗА 1000; TMR1L = 0;СБРОС ТАЙМЕРА ТМР1Н = 0; Т1КОН.0 = 1; ВКЛЮЧАЕТ ТАЙМЕР ОСТАТЬСЯ:; Т1КОН.0=1; ПАУЗА 1000 Т1КОН.0=0; ТАЙМЕР ОТКЛЮЧЕН АЦП ГОСУБ; GOSUB H_DEC; ПЕРЕЙТИ К h_DEC И ВОЗВРАТИТЬСЯ; GOSUB SHOW_LCD; ПЕРЕЙТИ К SHOW_LCD И ВЕРНУТЬСЯ ОТПРАВИТЬ; если pb = 0, то; подождите, пока кнопка не станет высокой А = 1; Переменная CONTROL равна 1, КОНЕЦ ПЕРЕДАЧИ ПАУЗА 200; КОНЕЦ; ЕСЛИ A = 0, ТО ОСТАТЬСЯ; ЕСЛИ КОНТРОЛЬ "0", ИДИТЕ, ЧТОБЫ ОСТАТЬСЯ А = 1;; УПРАВЛЯЮЩАЯ ПЕРЕМЕННАЯ "1" ДЛЯ Х = 0 ДО 2; ОТПРАВИТЬ СЛЕДУЮЩИЙ X LCDOUT $FE,$80,"КОНЕЦ"; LCDOUT $FE,$C0,"TX"; ПАУЗА 1000 КОНЕЦ перейти на главную; АЦП:; АДКОН0. 1 = 1; ВКЛЮЧИТЬ МОДУЛЬ АЦП ЗДЕСЬ1: ЕСЛИ ADCON0.1 = 1, ТО ЗДЕСЬ1; КОНВЕРСИЯ в процессе VIN.BYTE0 = АДРЕС; СОХРАНИТЕ НИЖНИЙ РЕГИСТР АЦП В ПЕРЕМЕННОЙ VIN VIN.BYTE1 = АДРЕС; СОХРАНИТЬ ВЫСШИЙ РЕГИСТР АЦП В ПЕРЕМЕННОЙ VIN запрещать; ОТКЛЮЧИТЬ ПРЕРЫВАНИЯ VINBCD = VIN*4887; УМНОЖЕНИЕ НА RESLSB = 4,8887 ВИН = div32 1000; ВЫПОЛНИТЬ 16-БИТНОЕ ДЕЛЕНИЕ включить; ВКЛЮЧИТЬ ПРЕРЫВАНИЯ ДЛЯ Х = 0 ДО 3; НАЧАТЬ ЦИКЛ IN = ВИН ЦИФР X; ПОЛУЧИТЬ ЦИФРУ X ПОИСК,["0123456789ABCDEFG"],OUT; РАСШИФРОВКА ЦИФР VD[X] = ВЫХОД; СОХРАНЯЙТЕ ДЕКОДИРОВАННЫЕ ЦИФРЫ СЛЕДУЮЩИЙ Х; возвращаться; ШОУ_ЖК:; отображать ЭТИКЕТКУ на ЖК-дисплее LCDOUT $FE,$80,"HZ= ",H[4],H[3],H[2],H[1],H[0]," "; LCDOUT $FE,$C0,"V= ",VD[3],".",VD[2],VD[1],VD[0]," "; ВОЗВРАЩАТЬСЯ; ОТПРАВИТЬ:; ЭТИКЕТКА ОТПРАВИТЬ; HSEROUT ["BZ",DEC A,10]; HSEROUT ["AZ",VD[3],VD[2],VD[1],VD[0],10]; ОТПРАВИТЬ ПОСЛЕДОВАТЕЛЬНЫЕ данные HSEROUT ["CZ",H[4],H[3],H[2],H[1],H[0],10]; ВОЗВРАЩАТЬСЯ; H_DEC:; ЭТИКЕТКА h_DEC; TMR.BYTE0 = TMR1L ; ПОЛУЧИТЕ НИЖНИЙ РЕГИСТР ТАЙМЕРА 1 TMR. BYTE1 = TMR1H; ПОЛУЧИТЬ ВЫСШИЙ РЕГИСТР ТАЙМЕРА1 ДЛЯ Х = 0 ДО 4; НАЧАТЬ ЦИКЛЫ IN = TMR DIG X; ПОЛУЧИТЬ ЦИФРЫ ПОИСК,["0123456789"],OUT; РАСШИФРОВКА ЦИФР Н[Х] = ВЫХОД; СОХРАНИТЬ ЦИФРЫ СЛЕДУЮЩИЙ X; СЛЕДУЮЩИЕ ЦИКЛЫ ТМР1Л = 0; ОЧИСТИТЬ ТАЙМЕР ТМР1Н = 0; ВОЗВРАЩАТЬСЯ; КОНЕЦ;
Листинг 2: Код для PIC16F1614, работающего в качестве радиочастотного приемника
; КОМПИЛЯТОР PBP3 от melabs.com ; Авторы: Рикардо Хименес и Габриэль Ли Альварес ; © 13 июля 2020 г. ; PIC16F1614 для модуля приемника ;Включить "modedefs.bas"; включить библиотеку ОСККОН = %01111010; 16 МГц ОСЦТУН = 0; OSCSTAT = %00011111; PLL ВЫКЛЮЧЕНА, HFINTOSC И MFINTOSC ГОТОВЫ ОПРЕДЕЛИТЕ OSC 16; ЧАСЫ УСТАНОВЛЕНЫ НА 16МГЦ ТРИСА = %0000000; ВСЕ ПИНЫ ЯВЛЯЮТСЯ ВЫХОДАМИ АНСЕЛА = %000000; ВСЕ ПИНЫ ЦИФРОВЫЕ ВПУА = 0; ВНУТРЕННИЕ ПОДТЯГИВАНИЯ ОТКЛЮЧЕНЫ ТРИСК = %100000; ВХОД RC5, ВЫХОДЫ RC0:RC4 АНСЕЛК = 0; ВСЕ ПИНЫ ЦИФРОВЫЕ WPUC = 0; ВНУТРЕННИЕ ПОДТЯГИВАНИЯ ОТКЛЮЧЕНЫ ОПЦИЯ_РЕГ.7 = 0; СЛАБЫЕ ПОДТЯГИВАНИЯ ВКЛЮЧЕНЫ ОТДЕЛЬНЫМ WPUX ;----КОНФИГУРАЦИЯ UART-HSERIN------ РХППС = %10101; EUSART CR/RX PORTC. 5 ОПРЕДЕЛИТЬ HSER_RCSTA 90ч; ПРИЕМНИК ВКЛЮЧЕН DEFINE HSER_TXSTA 20 ч; ПЕРЕДАТЧИК ВКЛЮЧЕН ОПРЕДЕЛИТЬ HSER_BAUD 2400; 2400 БОД СКОРОСТЬ ОПРЕДЕЛИТЬ HSER_CLROERR 1; УДАЛИТЬ ОШИБКУ ПЕРЕРАБОТКИ rc1sta.7 = 1; ПОСЛЕДОВАТЕЛЬНЫЙ ПОРТ ВКЛЮЧЕН ;--КОНФИГУРАЦИЯ ЖКИ ---------------------- DEFINE LCD_DREG PORTC; PORTC — ЭТО ПОРТ ДАННЫХ ОПРЕДЕЛИТЬ LCD_DBIT 0 ; RC0 — младший бит, RC1, RC2, RC3 — старший бит. DEFINE LCD_RSREG PORTC 'RS ЭТО В PORTC ОПРЕДЕЛИТЬ LCD_RSBIT 4; РС В RC4 DEFINE LCD_EREG PORTA ; EN В ПОРТУ ОПРЕДЕЛИТЬ LCD_EBIT 0; RA0 ЕСТЬ EN ОПРЕДЕЛИТЬ LCD_BITS 4 '4 ; ИМЕС DEFINE LCD_LINES 2 ' Это 2-строчный дисплей ОПРЕДЕЛИТЬ LCD_COMMANDUS 1500 ; Используйте задержку команды 1500 мкс DEFINE LCD_DATAUS 44 ' Использовать задержку данных 44 мкс ;;------------------------------------------------ ----- ;----УСТАНОВИТЬ алиас-------- ПБ ВАР ПОРТ.3 LCD1 VAR PORTA.1; LCD2 VAR PORTA.2; ;----СОЗДАТЬ ПЕРЕМЕННЫЕ----- X VAR байт; ВИН ВАР СЛОВО; слово переменной VIN2 VD вар байт[4]; Y ВАР БАЙТ; H VAR БАЙТ[5]; ВАР БАЙТ; R ВАР БАЙТ[7] IN вар байт; OUT VAR БАЙТ; ;---- ;-ОЧИСТИТЬ ПЕРЕМЕННЫЕ-- ДЛЯ Y = 0 ДО 5; ВД[Г] = "0" Н[Г] = "0" СЛЕДУЮЩИЙ Г; Х=0; ;---ИНИЦИАЛИЗИРОВАТЬ LCD-------------------- ЖК1 = 1; ВКЛЮЧИТЬ LCD1 ЖК2 = 0; ОТКЛЮЧИТЬ LCD2 ПАУЗА 10; LCDOUT $FE, $28; ФУНКЦИОНАЛЬНЫЙ НАБОР 28 ДОЛЛАРОВ США, 4 БИТЫ LCDOUT $FE, $10; ДИСПЛЕЙ СМЕНЫ 10 ДОЛЛАРОВ США LCDOUT $FE,$0C; $0C ОТОБРАЖЕНИЕ ВКЛЮЧЕНО LCDOUT $FE, $06; $06 НАБОР РЕЖИМА ВХОДА ;--- ЖК1 = 0; ОТКЛЮЧИТЬ LCD1 ЖК2 = 1; ВКЛЮЧИТЬ LCD2 ПАУЗА 10; LCDOUT $FE, $28; ФУНКЦИОНАЛЬНЫЙ НАБОР 28 ДОЛЛАРОВ США, 4 БИТЫ LCDOUT $FE, $10; ДИСПЛЕЙ СМЕНЫ 10 ДОЛЛАРОВ США LCDOUT $FE,$0C; $0C ОТОБРАЖЕНИЕ ВКЛЮЧЕНО LCDOUT $FE, $06; $06 НАБОР РЕЖИМА ВХОДА ;----------------------------------------------------- ЖК1 = 1; ВКЛЮЧИТЬ LCD1 ЖК2 = 1; ВКЛЮЧИТЬ LCD2 ПАУЗА 1; LCDOUT $FE,$80,"---ВОЛЬТМЕТР----"; LCDOUT $FE,$C0,"--RF RECEIVER---"; ПАУЗА 1000 ГЛАВНЫЙ: ЖК1 = 1; ВКЛЮЧИТЬ LCD1 ЖК2 = 0; ОТКЛЮЧИТЬ LCD2 ПАУЗА 1; LCDOUT $FE,$80,"----ОЖИДАНИЕ-----"; LCDOUT $FE,$C0,"----НАПРЯЖЕНИЕ-----"; ЖК1 = 0; ВКЛЮЧИТЬ LCD1 ЖК2 = 1; ОТКЛЮЧИТЬ LCD2 ПАУЗА 1; LCDOUT $FE,$80,"----ОЖИДАНИЕ-----"; LCDOUT $FE,$C0,"---ЧАСТОТА----"; ЖК1 = 1; ВКЛЮЧИТЬ LCD1 ЖК2 = 1; ВКЛЮЧИТЬ LCD2 ;ПРЕРЫВАНИЕ ПЕРЕЙТИ К READ_UART ГЛАВНЫЙ1: HSERIN 10,MAIN1,[WAIT("BZ"), STR A\1]; ПОДОЖДИТЕ 1 С, ЧТОБЫ ПОЛУЧИТЬ ИНСТРУКЦИЮ если а = "0", то ЖК1 = 1; ВКЛЮЧИТЬ LCD1 ЖК2 = 1; ВКЛЮЧИТЬ LCD2 ПАУЗА 1; LCDOUT $FE,$80,"ЗАПУСК"; LCDOUT $FE,$C0,"RX"; ПАУЗА 1000; ЗДЕСЬ_START: HSERIN 10,ПРЫЖОК1,[ОЖИДАНИЕ ("BZ"), STR A\1] ПРЫЖОК 1: HSERIN 100, ПРЫЖОК 2, [ОЖИДАНИЕ ("AZ"), СИЛ VD\4] Прыжок 2: HSERIN 10, ЗДЕСЬ, [ПОЖИДАНИЕ ("CZ"), STR H\5] ЗДЕСЬ:; ЖК1 = 1; ВКЛЮЧИТЬ LCD1 ЖК2 = 0; ОТКЛЮЧИТЬ LCD2 ПАУЗА 2; LCDOUT $FE,$80,"ПОЛУЧЕННОЕ НАПРЯЖЕНИЕ"; LCDOUT $FE,$C0,VD[0],".