Съдържание:

Безжична комуникация, използваща евтини 433MHz RF модули и микроконтролери Pic. Част 2: 4 стъпки (със снимки)
Безжична комуникация, използваща евтини 433MHz RF модули и микроконтролери Pic. Част 2: 4 стъпки (със снимки)

Видео: Безжична комуникация, използваща евтини 433MHz RF модули и микроконтролери Pic. Част 2: 4 стъпки (със снимки)

Видео: Безжична комуникация, използваща евтини 433MHz RF модули и микроконтролери Pic. Част 2: 4 стъпки (със снимки)
Видео: Бюджетните Безжични Слушалки ПОЧТИ за Всеки 2024, Юли
Anonim
Безжична комуникация, използваща евтини 433MHz RF модули и микроконтролери Pic. Част 2
Безжична комуникация, използваща евтини 433MHz RF модули и микроконтролери Pic. Част 2

В първата част на тази инструкция демонстрирах как да програмирате PIC12F1822, използвайки MPLAB IDE и XC8 компилатор, за да изпращате обикновен низ безжично, използвайки евтини TX/RX 433MHz модули.

Приемният модул е свързан чрез USB към UART TTL кабелен адаптер към компютър и получените данни се показват на RealTerm. Комуникацията се осъществяваше на 1200 бода и максималният постигнат обхват беше около 20 метра през стени. Моите тестове показаха, че за приложения, където няма нужда от висока скорост на предаване на данни и дълъг обхват, както и за непрекъснато предаване, тези модули се представиха изключително добре.

Втората част на този проект демонстрира как да добавите микроконтролер PIC16F887 и LCD модул 16 × 2 символа към приемника. Освен това на предавателя се следва прост протокол с добавяне на няколко байта преди предусилвателя. Тези байтове са необходими, за да може RX модулът да коригира печалбата си, преди да получи действителния полезен товар. От страна на приемника PIC отговаря за получаването и валидирането на данните, които се показват на LCD екрана.

Стъпка 1: Модификации на предавателя

Модификации на предавателя
Модификации на предавателя
Модификации на предавателя
Модификации на предавателя
Модификации на предавателя
Модификации на предавателя

В първата част предавателят изпращаше прост низ на всеки няколко ms, използвайки осем бита данни, начален и стоп бит при 1200 бита в секунда. Тъй като предаването беше почти непрекъснато, приемникът нямаше проблеми да настрои печалбата си към получените данни. Във втората част фърмуерът се променя така, че предаването се извършва на всеки 2,3 секунди. Това се постига чрез прекъсване на таймера за наблюдение (зададено на 2.3s), за да се събуди микроконтролерът, който се поставя в режим на заспиване между всяко предаване.

За да може приемникът да има време за фина настройка на печалбата си, няколко байта от преамбюла с кратки LO времена "(0Xf8) (0Xf8) (0Xf8) (0Xf8) (0Xf8) (0Xfa)" се изпращат преди действителните данни. След това полезният товар се обозначава с начален байт '&' и стоп '*'.

Следователно простият протокол е описан, както следва:

(0Xf8) (0Xf8) (0Xf8) (0Xf8) (0Xf8) (0Xfa) & Hello InstWorld!*

Освен това, 10uF разединяващ танталов кондензатор е добавен между V+ и GND на RF модула, за да се отървете от вълните, причинени от модула за увеличаване на dc-dc.

Скоростта на предаване остава същата, но моите тестове показаха, че и при 2400 бода предаването беше ефективно.

Стъпка 2: Модификации на приемника: Добавяне на PIC16F887 и HD44780 LCD

Модификации на приемника: Добавяне на PIC16F887 и HD44780 LCD
Модификации на приемника: Добавяне на PIC16F887 и HD44780 LCD
Модификации на приемника: Добавяне на PIC16F887 и HD44780 LCD
Модификации на приемника: Добавяне на PIC16F887 и HD44780 LCD
Модификации на приемника: Добавяне на PIC16F887 и HD44780 LCD
Модификации на приемника: Добавяне на PIC16F887 и HD44780 LCD

Дизайнът на приемника се основава на PIC16F887, но можете да използвате различен PIC с малки модификации. В моя проект използвах този 40 пинов μC, тъй като ще се нуждая от допълнителни щифтове за бъдещи проекти, базирани на този дизайн. Изходът на RF модула е свързан към UART rx извод, докато 16x2 символен LCD (HD44780) е свързан чрез PORTB пинове b2-b7 за показване на получените данни.

Както при част 1, получените данни също се показват на RealTerm. Това се постига с помощта на UART tx щифт, който е свързан чрез USB към UART TTL кабелен адаптер към компютър.

Вглеждайки се във фърмуера, когато се случи UART прекъсване, програмата проверява дали полученият байт е стартов байт ('&'). Ако отговорът е да, той започва да записва следващите байтове, докато не бъде уловен стоп байт ('*'). Веднага след като се получи цялото изречение и ако то отговаря на простия протокол, описан по -горе, то се изпраща на lcd екрана, както и на UART tx порта.

Преди да получи началния байт, приемникът вече е коригирал печалбата си, използвайки предходните байтове на преамбюла. Те са от решаващо значение за безпроблемната работа на приемника. Извършва се проста проверка на грешки при превишаване и кадриране, но това е само основна реализация на UART за обработка на грешки.

Що се отнася до хардуера, за приемника са необходими няколко части:

1 x PIC16F887

1 x HD44780

1 x RF Rx модул 433Mhz

1 x 10 μF танталов кондензатор (отделяне)

1 x 10 K тример (яркост на LCD шрифта)

1 x 220 Ω 1/4 W резистор (LCD подсветка)

1 x 1 KΩ 1/4 W

1 x Антена 433Mhz, 3dbi

На практика получените работиха изключително добре в диапазони до 20 метра през стени.

Стъпка 3: Няколко справки …

Има много блогове в мрежата, които дават съвети за PIC програмиране и отстраняване на проблеми, освен официалния уебсайт на Microschip. Намерих следното за много полезно:

www.romanblack.com/

0xee.net/

www.ibrahimlabs.com/

picforum.ric323.com/

Стъпка 4: Заключения и бъдеща работа

Надявам се, че тази инструкция ви е помогнала да разберете как да използвате RF модули и микроконтролери Pic. Можете да настроите вашия фърмуер според вашите собствени нужди и да включите CRC и криптиране. Ако искате да направите своя дизайн още по-сложен, можете да използвате технологията Keeloq на Microschip. В случай, че приложението ви се нуждае от двупосочни данни, ще трябва да имате чифт TX/RX и на двата микроконтролера, или можете да използвате по-сложен трансивър модули. Използвайки обаче този вид евтини 433MHz модули, може да се осъществи само половин дуплекс комуникация. Освен това, за да направите комуникацията по -надеждна, ще трябва да имате някаква форма на ръкостискане между TX и RX.

На следващата инструкция ще ви покажа практическо приложение, при което сензор за околната среда с температура, барометрично налягане и влажност се добавя към предавателя. Тук предаваните данни ще включват crc и ще имат основно криптиране.

Сензорът ще използва порта i2c на PIC12F1822, докато реализацията както на предавателя, така и на приемника ще бъде разкрита чрез схеми и pcb файлове. Благодаря, че ме прочетохте!

Препоръчано: