- Необходими компоненти
- Използван софтуер
- 433MHz RF трансмитер и приемник модул
- Електрическа схема
- Създаване на проект за Atmega 8 с помощта на CodeVision
- КОД и обяснение
- Качете кода в Atmega8
Осъществяването на нашите проекти Wireless винаги го прави да изглежда страхотно и също така разширява обхвата, в който може да се контролира. Започвайки от използването на нормален IR светодиод за безжично управление на къси разстояния до ESP8266 за световно HTTP управление, има много начини да управлявате нещо безжично. В този проект научаваме как да изграждаме безжични проекти с помощта на 433 MHz RF модул и AVR микроконтролер.
В този проект правим следните неща: -
- Използваме Atmega8 за RF предавател и Atmega8 за раздел RF приемник.
- Ние свързваме светодиод и бутон с микроконтролери Atmega8.
- От страна на предавателя ние свързваме бутон с Atmega и предаваме данните. От страна на приемника ще получим данните безжично и ще покажем изхода на LED.
- За предаване на 4-битови данни използваме IC кодер и декодер.
- Честотата на приемане е 433Mhz, като се използва евтин RF TX-RX модул, наличен на пазара.
Необходими компоненти
- Atmega8 AVR микроконтролер (2)
- USBASP програмист
- 10-пинов FRC кабел
- Дъска за хляб (2)
- Светодиоди (2)
- Бутон (1)
- Двойка HT12D и HT12E
- RX-TX RF модул
- Резистори (10k, 47k, 1M)
- Джъмперни проводници
- 5V захранване
Използван софтуер
Използваме софтуер CodeVisionAVR за писане на нашия код и софтуер SinaProg за качване на кода ни в Atmega8 с помощта на USBASP програмист.
Можете да изтеглите тези софтуери от дадените връзки:
CodeVisionAVR :
SinaProg:
Преди да влезем в схемите и кодовете, нека разберем работата на RF модула с интегрални схеми за кодиране-декодиране.
433MHz RF трансмитер и приемник модул
Това са модулите на предавателя и приемника, които използваме в проекта. Това е най-евтиният модул на разположение за 433 MHz Тези модули приемат серийни данни в един канал.
Ако видим спецификациите на модулите, предавателят е предназначен за работа от 3,5 до 12V като входно напрежение и разстоянието на предаване е 20-200 метра. Той предава в AM (Audio Modulation) протокол с честота 433 MHz. Можем да прехвърляме данни със скорост 4KB / S с мощност 10mW.
В горното изображение можем да видим извода на модула на предавателя. Отляво надясно щифтовете са VCC, DATA и GND. Можем също да добавим антената и да я запоим в точката, обозначена на горното изображение.
За спецификацията на приемника, приемникът има мощност от 5V dc и 4MA ток на покой като вход. Приемащата честота е 433,92 MHz с чувствителност -105DB.
На горното изображение можем да видим извода на модула на приемника. Четирите щифта са отляво надясно, VCC, DATA, DATA и GND. Тези средни два щифта са вътрешно свързани. Можем да използваме всяка една или и двете. Но е добра практика да се използват и двете за намаляване на шумовото съединение.
Също така, едно нещо не е споменато в листа с данни, променливият индуктор или POT в средата на модула се използват за калибриране на честотата. Ако не успяхме да получим предадените данни, има вероятност честотите на предаване и приемане да не съвпадат. Това е RF схема и ние трябва да настроим предавателя в перфектната предавана честотна точка. Също както този на предавателя, този модул има и антенен порт; можем да запоим тел в навита форма за по-дълго приемане.
Обхватът на предаване зависи от напрежението, подавано към предавателя и дължината на антените от двете страни. За този конкретен проект не използвахме външна антена и използвахме 5V от страната на предавателя. Проверихме с 5 метра разстояние и се получи перфектно.
Научете повече за RF двойката в RF предавателя и приемника. Можете да разберете повече за работата на RF, като проверите следните проекти, които използват RF двойка:
- RF контролиран робот
- IR към RF конверторна верига
- RF дистанционно управлявани светодиоди, използващи Raspberry Pi
- RF контролирани домакински уреди
Електрическа схема
Електрическа схема за страната на радиочестотния предавател
- Пин D7 на atmega8 -> Пин13 HT12E
- Pin D6 на atmega8 -> Pin12 HT12E
- Пин D5 на atmega8 -> Pin11 HT12E
- Пин D4 на atmega8 -> Pin10 HT12E
- Бутон за щифт B0 на Atmega.
- 1M-омов резистор между pin15 и 16 на HT12E.
- Pin17 на HT12E към щифт за данни на RF модула на предавателя.
- ПИН 18 на HT12E към 5V.
- GND щифт 1-9 и щифт 14 на HT12E и щифт 8 на Atmega.
Схема на веригата за страната на RF приемника
- Пин D7 на atmega8 -> Пин13 HT12D
- ПИН D6 на atmega8 -> Пин12 HT12D
- Пин D5 на atmega8 -> Пин11 HT12D
- Пин D4 на atmega8 -> Pin10 HT12d
- LED към щифт B0 на Atmega.
- ПИН 14 на HT12D към ПИН за данни на RF приемника.
- 47Kohm резистор между pin15 и 16 на HT12D.
- GND щифт 1-9 на HT12D и щифт 8 на Atmega.
- LED към щифт 17 на HT12D.
- 5V към щифт 7 на Atmega и щифт 18 на HT12D.
Създаване на проект за Atmega 8 с помощта на CodeVision
След като инсталирате тези софтуери, следвайте стъпките по-долу, за да създадете проект и код за писане:
Стъпка 1. Отворете CodeVision Щракнете върху Файл -> Ново -> Проект . Ще се появи диалоговият прозорец за потвърждение. Щракнете върху Да
Стъпка 2. Ще се отвори CodeWizard. Щракнете върху първата опция, т.е. AT90 , и щракнете върху OK.
Стъпка 3. Изберете вашия микроконтролерен чип, тук ще вземем Atmega8, както е показано.
Стъпка 4: - Щракнете върху Портове. В частта на предавателя бутонът е нашият вход и се извеждат 4 линии за данни. И така, трябва да инициализираме 4 извода на Atmega като изход. Кликнете върху Port D. Направете битове 7, 6, 5 и 4 като излезте, като кликнете върху него.
Стъпка 5: - Щракнете върху Програма -> Генериране, запазване и излизане . Сега повече от половината от нашата работа е завършена
Стъпка 6: - Направете нова папка на работния плот, така че нашите файлове да останат в папката, в противен случай ще бъдат разпръснати върху целия прозорец на работния плот. Наименувайте папката си, както искате и ви предлагам да използвате същото име, за да запазите програмните файлове.
Ще имаме три диалогови прозореца един след друг, за да запазваме файлове. Направете същото с другите два диалогови прозореца, които ще се появят, след като запазите първия.
Сега вашето работно пространство изглежда така.
По-голямата част от работата ни е завършена с помощта на съветника. Сега трябва да напишем само няколко реда код за частта на предавателя и приемника и това е…
Следвайте същите стъпки, за да създадете файлове за частта на приемника. В частта на приемника, само Led е нашият изход, така че направете Port B0 bit out.
КОД и обяснение
Ще напишем код за безжично превключване на светодиода чрез RF. Пълният код както за Atmega на предавателя, така и на приемника е даден в края на тази статия.
Atmega8 код за RF предавател:
Първо включете заглавния файл delay.h, за да използвате забавяне в нашия код.
#include
Сега стигнете до последните редове на кода, където ще намерите цикъл while . Нашият основен код ще бъде в този цикъл.
В цикъла While ще изпратим 0x10 байта към PORTD при натискане на бутона и ще изпратим 0x20, когато бутонът не е натиснат. Можете да използвате всяка стойност за изпращане.
while (1) { if (PINB.0 == 1) { PORTD = 0x10; } ако (PINB.0 == 0) { PORTD = 0x20; } } }
Atmega код за RF приемник
Първо декларирайте променливи над void main function за съхраняване на входящ символ от RF модула.
#include
Сега стигнете до цикъл while . В този цикъл съхранявайте входящите байтове в байт с променлива char и проверете дали входящият байт е същият, както пишем в нашата част на предавателя. Ако байтовете са еднакви, направете PortB.0 висок и вземете NOT от PORTB.0 за превключване на светодиода.
докато (1) { байт = ПИНД; ако (PIND.7 == 0 && PIND.6 == 0 && PIND.5 == 0 && PIND.4 == 1) { PORTB.0 = ~ PORTB.0; delay_ms (1000); }}}
Изградете проекта
Нашият код е попълнен. Сега трябва да изградим нашия проект . Кликнете върху Изграждане на иконата на проекта, както е показано.
След изграждането на проекта се генерира HEX файл в папката Debug-> Exe, който може да бъде намерен в папката, която сте направили преди това, за да запазите проекта си. Ще използваме този HEX файл за качване в Atmega8 с помощта на софтуера Sinaprog.
Качете кода в Atmega8
Свържете веригите си съгласно дадената схема към програмата Atmega8. Свържете едната страна на FRC кабела към USBASP програмист, а другата страна ще се свърже към SPI щифтове на микроконтролера, както е описано по-долу:
- Pin1 на женски конектор FRC -> Pin 17, MOSI на Atmega8
- Пин 2, свързан към Vcc на atmega8, т.е. Пин 7
- Пин 5, свързан към Нулиране на atmega8, т.е. Пин 1
- Пин 7, свързан към SCK на atmega8, т.е. Пин 19
- Пин 9, свързан към MISO на atmega8, т.е. Пин 18
- Пин 8, свързан към GND на atmega8, т.е. Пин 8
Свържете останалите компоненти на макетната платка според схемата и отворете Sinaprog.
Ще качим горния генериран шестнадесетичен файл с помощта на Sinaprog, така че го отворете и изберете Atmega8 от падащото меню Device. Изберете HEX файла от папката Debug-> Exe, както е показано.
Сега кликнете върху Програма.
Приключихте и вашият микроконтролер е програмиран. Използвайте същите стъпки, за да програмирате друга Atmega от страната на приемника.
Пълният код и демонстрационното видео е дадено по-долу.