- Компоненте потребне
- Модул РФ предајника и пријемника од 433 МХз)
- Кружна шема РФ предајника са СТМ32Ф103Ц8
- Кружни дијаграм РФ пријемника са Ардуино Уно
- Програмирање СТМ32Ф103Ц8 за бежични РФ пренос
- Програмирање Ардуино УНО као РФ пријемника
- Тестирање РФ предајника и пријемника заснованог на СТМ 32
Израда бежичних пројеката у уграђеној електроници постаје веома важна и корисна јер нема преплетених жица што чини уређај практичнијим и преносивијим. Постоје разне бежичне технологије као што су Блуетоотх, ВиФи, 433 МХз РФ (радио фреквенција) итд. Свака технологија има своје предности и недостатке попут трошкова, преноса даљине или домета, брзине или протока итд. Данас ћемо користити РФ модул са СТМ32 за бежично слање и примање података. Ако сте нови у СТМ32 микроконтролеру, покрените трепћућу ЛЕД диоду са СТМ32 користећи Ардуино ИДЕ и погледајте све остале СТМ32 пројекте овде.
Поред овога, такође смо користили РФ 433Мхз бежични модул са другим микроконтролерима за изградњу неких бежично контролисаних пројеката, као што су:
- РФ контролисани кућни апарати
- РФ даљинско управљане ЛЕД диоде помоћу Распберри Пи
- РФ контролисани робот
- Повезивање РФ модула са Ардуином
- Комуникација између ПИЦ-а и ПИЦ-а помоћу РФ модула
Овде ћемо повезати 433МХз РФ бежични модул са СТМ32Ф103Ц8 микроконтролером. Пројекат је подељен у два дела. Предајник ће се повезати са СТМ32 и пријемник ће се повезати са Ардуино УНО. Биће различити дијаграм кола и скице како за преносни, тако и за пријемни део.
У овом упутству РФ предајник шаље две вредности на страну пријемника: удаљеност измерену ултразвучним сензором и вредност АДЦ потенциометра (0 до 4096) која је мапирана бројем од (0 до 100). РФ пријемник на Ардуино прима обе вредности и отиске те удаљеност и број вредности у 16к2 ЛЦД дисплеј бежично.
Компоненте потребне
- СТМ32Ф103Ц8 Микроконтролер
- Ардуино УНО
- РФ предајник и пријемник од 433 МХз
- Ултразвучни сензор (ХЦ-СР04)
- ЛЦД екран од 16к2
- 10к потенциометар
- Бреадбоард
- Повезивање жица
Модул РФ предајника и пријемника од 433 МХз)
Излаз РФ предајника:
РФ предајник од 433 МХз |
Пин Десцриптион |
АНТ |
За повезивање антене |
ГНД |
ГНД |
ВДД |
3.3 до 5В |
ПОДАЦИ |
Подаци који се преносе примаоцу дати су овде |
Пиноут РФ пријемника:
РФ пријемник од 433 МХз |
УСЕ |
АНТ |
За повезивање антене |
ГНД |
ГНД |
ВДД |
3.3 до 5В |
ПОДАЦИ |
Подаци који се добијају од предајника |
ЦЕ / ДО |
То је такође Дата пин |
Спецификације модула 433 МХз:
- Радни напон пријемника: 3В до 5В
- Радни напон предајника: 3В до 5В
- Радна фреквенција: 433 МХз
- Удаљеност преноса: 3 метра (без антене) до 100 метара (максимално)
- Модулациона техника: АСК (Амплитуде схифт кеиинг)
- Брзина преноса података: 10Кбпс
Кружна шема РФ предајника са СТМ32Ф103Ц8
Кружне везе између РФ предајника и СТМ32Ф103Ц8:
СТМ32Ф103Ц8 |
РФ предајник |
5В |
ВДД |
ГНД |
ГНД |
ПА10 |
ПОДАЦИ |
НЦ |
АНТ |
Кружне везе између ултразвучног сензора и СТМ32Ф103Ц8:
СТМ32Ф103Ц8 |
Ултразвучни сензор (ХЦ-СР04) |
5В |
ВЦЦ |
ПБ1 |
Триг |
ПБ0 |
Одјек |
ГНД |
ГНД |
10к потенциометар је повезан са СТМ32Ф103Ц8 да обезбеди аналогни вредност (0 до 3.3В) на АДЦ, пин ПА0 од СТМ32.
Кружни дијаграм РФ пријемника са Ардуино Уно
Кружне везе између РФ пријемника и Ардуино УНО:
Ардуино УНО |
РФ пријемник |
5В |
ВДД |
ГНД |
ГНД |
11 |
ПОДАЦИ |
НЦ |
АНТ |
Кружне везе између ЛЦД-а 16к2 и Ардуино УНО:
Име ЛЦД екрана |
Ардуино УНО Пин Пин |
Приземље (Гнд) |
Приземље (Г) |
ВЦЦ |
5В |
ВЕЕ |
Прибадача са центра потенциометра за контраст |
Изаберите регистар (РС) |
2 |
Читање / писање (РВ) |
Приземље (Г) |
Омогући (ЕН) |
3 |
Бит података 4 (ДБ4) |
4 |
Бит података 5 (ДБ5) |
5 |
Бит података 6 (ДБ6) |
6 |
Бит података 7 (ДБ7) |
7 |
ЛЕД позитиван |
5В |
ЛЕД негативан |
Приземље (Г) |
Кодирање ће у наставку бити објашњено укратко. Биће два дела скице, где ће први део бити део предајника, а други део пријемника. Све датотеке скица и радни видео биће дати на крају овог водича. Да бисте сазнали више о повезивању РФ модула са Ардуино Уно, следите везу.
Програмирање СТМ32Ф103Ц8 за бежични РФ пренос
СТМ32Ф103Ц8 се може програмирати помоћу Ардуино ИДЕ-а. За постављање кода на СТМ32Ф103Ц8 није потребан ФТДИ програмер или СТ-Линк. Једноставно се повежите са рачунаром преко УСБ порта СТМ32 и започните програмирање са АРДУИНО ИДЕ. Програмирање вашег СТМ32 у Ардуино ИДЕ можете научити пратећи везу.
У одељку предајника растојање објекта у 'цм' мери се помоћу ултразвучног сензора, а вредност броја од (0 до 100) подешава се помоћу потенциометра који се преноси преко РФ предајника повезаног са СТМ32.
Прво је укључена Радиохеад библиотека, коју можете преузети овде. Како ова библиотека користи АСК (Амплитуде Схифт Кеиинг Тецхникуе) за пренос и пријем података. Ово чини програмирање врло једноставним. Библиотеку можете укључити у скицу тако што ћете отићи у Скетцх-> инцлуде либрари-> Адд.зип либрари.
#инцлуде
Као у овом упутству на страни предајника, ултразвучни сензор се користи за мерење удаљености тако да се дефинишу окидачи и ехо игле.
#дефине тригПин ПБ1 #дефине ецхоПин ПБ0
Следеће име објекта за библиотеку РХ_АСК поставља се као рф_дривер са параметрима као што су брзина (2000), РКС пин (ПА9) и ТКС пин (ПА10).
РХ_АСК рф_дривер (2000, ПА9, ПА10);
Даље се декларишу променљиве Стрингс потребне у овом програму.
Стринг трансмит_нумбер; Стринг трансмит_дистанце; Стринг пренос;
Следеће у воид сетуп (), објекат за РХ_АСК рф_дривер је иницијализован.
рф_дривер.инит ();
Након тога пин окидача се поставља као ОУТПУТ пин, а ПА0 (спојен на потенциометар) и ецхо пин поставља се као ИНПУТ пин. Серијска комуникација започиње брзином преноса од 9600.
Сериал.бегин (9600); пинМоде (ПА0, ИНПУТ); пинМоде (ецхоПин, ИНПУТ); пинМоде (тригПин, ИЗЛАЗ);
Следеће у празној петљи (), прва вредност потенциометра која је улазни аналогни напон претвара се у дигиталну вредност (пронађена је вредност АДЦ). Како АДЦ СТМ32 има 12-битну резолуцију. Дакле, дигитална вредност варира од (0 до 4096) која је пресликана у (0 до 100).
инт аналогинпут = аналогРеад (ПА0); инт пвмвалуе = мапа (аналогни улаз, 0,4095,0,100);
Затим се удаљеност мери ултразвучним сензором подешавањем окидача на високу и ниску вредност са кашњењем од 2 микросекунде.
дигиталВрите (тригПин, ЛОВ); делаиМицросецондс (2); дигиталВрите (тригПин, ХИГХ); делаиМицросецондс (10); дигиталВрите (тригПин, ЛОВ);
Ехо пин осећа повратни талас натраг, односно време трајања одбијеног таласа се користи за израчунавање удаљености објекта помоћу формуле. Сазнајте више како ултразвучни сензор израчунава растојање пратећи везу.
дуго трајање = пулсИн (ецхоПин, ХИГХ); даљина пловка = трајање * 0,034 / 2;
Сада се и измерени број података и удаљеност претварају у низ података и чувају у одговарајућим променљивим стринга.
број_преноса = Низ (пвмвалуе); трансмит_дистанце = Низ (удаљеност);
Оба низа се додају у један ред и чувају у низу који се назива пренос и зарез “,” користи се за одвајање две жице.
пренос = пренос_пвм + "," + пренос_дистанца;
Низ за пренос се претвара у низ знакова.
цонст цхар * мсг = трансмит.ц_стр ();
Подаци се преносе и сачекајте док се не пошаљу.
рф_дривер.сенд ((уинт8_т *) мсг, стрлен (мсг)); рф_дривер.ваитПацкетСент ();
Подаци о низу се такође приказују у серијском монитору.
Сериал.принтлн (мсг);
Програмирање Ардуино УНО као РФ пријемника
Ардуино УНО је програмиран помоћу Ардуино ИДЕ-а. У одељку пријемника подаци који се преносе из одељка предајника и прима их модул РФ пријемника, а примљени низ података се дели на одговарајуће податке (удаљеност и број) и приказују на ЛЦД дисплеју 16к2.
Погледајмо укратко кодирање пријемника:
Као и у одељку предајника, прво је укључена библиотека РадиохХеад. Како ова библиотека користи АСК (Амплитуде Схифт Кеиинг Тецхникуе) за пренос и пријем података. Ово чини програмирање врло једноставним.
#инцлуде
Како се овде користи ЛЦД екран, тако је укључена и библиотека течних кристала.
#инцлуде
И пинови ЛЦД екрана од 16к2 повезани са Ардуино УНО су наведени и декларисани коришћењем лцд-а као објекта.
ЛикуидЦристал ЛЦД (2,3,4,5,6,7);
Следеће се декларишу променљиве података стринга за чување података низа.
Стринг стр_рецеиве; Стринг стр_нумбер; Стринг стр_дистанце;
Проглашен је објекат за библиотеку Радиохеад.
РХ_АСК рф;
Сада у воид сетуп (), ЛЦД заслон је постављен у режим 16к2 и порука добродошлице се приказује и брише.
лцд.бегин (16,2); лцд.принт ("ДИГЕСТ ЦИРЦУИТ"); лцд.сетЦурсор (0,1); лцд.принт („РФ са СТМ32“); кашњење (5000); лцд.цлеар ();
Након тога се рф објекат иницијализује.
рф.инит ();
Сада је у воид лооп (), низ матрице декларисан као величина 7. Како подаци послати са предајника имају 7 укључујући и „,“. Дакле, промените ово према подацима који се преносе.
уинт8_т буф; уинт8_т буфлен = сизеоф (буф);
Ако је низ доступан у РФ модулу пријемника, иф функција проверава величину и извршава се. Рф.рецв () се користи за пријем података.
иф (рф.рецв (буф, & буфлен))
БУФ има примљену низ па онда добили низ је похрањен у стр_рецеиве стринг променљиву.
стр_рецеиве = Стринг ((цхар *) буф);
Ова петља фор се користи за поделу примљеног низа на два ако открије ',' између два низа.
фор (инт и = 0; и <стр_рецеиве.ленгтх (); и ++) { иф (стр_рецеиве.субстринг (и, и + 1) == ",") { стр_нумбер = стр_рецеиве.субстринг (0, и); стр_дистанце = стр_рецеиве.субстринг (и + 1); пауза; }
Декларишу се два низа цхар за две вредности и низ који је подељен на два се чува у поштованом низу претварањем низа у низ знакова.
цхар нумберстринг; цхар дистанцестринг; стр_дистанце.тоЦхарАрраи (стринг растојања, 3); стр_нумбер.тоЦхарАрраи (стринг стринг, 3);
После тога претворите низ знакова у цео број помоћу атои ()
инт дистанце = атои (стринг у низу); инт број = атои (низ низа);
Након претварања у целобројне вредности вредности раздаљине и броја приказују се на ЛЦД дисплеју 16к2
лцд.сетЦурсор (0,0); лцд.принт ("Број:"); лцд.принт (број); лцд.сетЦурсор (0,1); лцд.принт ("Удаљеност:"); лцд.принт (удаљеност); лцд.принт ("цм");
Након учитавања кодова, односно предајника и пријемника у СТМ32 односно Ардуино УНО, подаци као што су број и удаљеност објекта измерени помоћу СТМ32 преносе се у РФ пријемник путем РФ предајника и примљене вредности се бежично приказују на ЛЦД дисплеју.
Тестирање РФ предајника и пријемника заснованог на СТМ 32
1. Када је број на 0, а удаљеност објекта 6цм.
2. Када је број 47 и удаљеност предмета 3цм.