- Компоненти, необходими за Arduino RC Boat
- 433MHz RF предавателни и приемни модули
- 433MHZ RF предавател
- Блокова диаграма на Arduino RC Boat Transmitter
- Схема на дистанционното управление Arduino RC (предавател)
- Изграждане на RC BOAT предавателна верига
- Изграждане на корпуса на предавател за лодки Arduino RC
- Модул на приемника 433Mhz
- Блок-схема на приемника на лодка Arduino RC
- Електрическа схема на приемника на лодка Arduino RC
- Изграждане на приемната верига на Arduino RC Boat
- Изграждане на RC-BOAT
- Двигатели и витла за Arduino Air Boat
- Работа на Arduino RC Boat
- Програмиране на Arduino на RC Boat
В този проект ние ще изградим дистанционно управляван Arduino Air-Boat, който може да се управлява безжично с помощта на 433 MHz RF радио модули. Ще управляваме тази лодка с помощта на самоделно дистанционно управление, като изградим собствен 433 MHz предавател и приемник модул. В случай на устройства с дистанционно управление или комуникация между две устройства, имаме много опции като IR, Bluetooth, интернет, RF и т.н. В сравнение с IR комуникацията, радио комуникациите имат някои предимства като по-голям обхват и това не изискват линия на видимост между предавателя и приемника. Също така тези модули могат да осъществяват два начина на комуникация, което означава, че могат да предават и приемат едновременно. Така че използвайки този 433MHz RF модул, нека изградим Arduino RC Boat в този урок.
Преди това сме изградили много проекти с дистанционно управление, използвайки тези 433Mhz RF модули или за управление на робот като този RF контролиран робот, или за приложения за домашна автоматизация за управление на домакински уреди, използващи RF. Освен че използваме RF модули, преди това сме изградили и контролирана с Raspberry Pi кола с Bluetooth и DTMF мобилен телефон, управляван от Arduino Robot. Можете също така да проверите тези проекти, ако се интересувате.
Компоненти, необходими за Arduino RC Boat
- 433MHz предавател и приемник
- Arduino (всеки Arduino, за намаляване на размера, който използвам промини)
- HT12E и HT12D
- Бутони - 4Не
- Резистори - 1 мега ом, 47 к ома
- L293d Двигател на двигателя
- 9V батерия (използвам 7,4-волтова батерия) - 2Nos
- 7805 регулатор - 2 Бр
- DC двигатели - 2Nos
- Моторни крила или витла (използвам самоделни витла) - 2Nos
- .1uf кондензатор - 2Nos
- Общи печатни платки
433MHz RF предавателни и приемни модули
Този тип RF модули са много популярни сред производителите. Поради ниската им цена и простотата на връзките. Тези модули са най-подходящи за всички форми на комуникационни проекти с малък обсег. Тези модули са RF модули от тип ASK (Amplitude Shift Keying), амплитудното изместване (ASK) е форма на амплитудна модулация, която представя цифровите данни като вариации в амплитудата на носеща вълна. В ASK система двоичният символ 1 е представен чрез предаване на носеща вълна с фиксирана амплитуда и фиксирана честота за битова продължителност от T секунди. Ако стойността на сигнала е 1, тогава носещият сигнал ще бъде предаден; в противен случай ще бъде предадена стойност на сигнала 0. Това означава, че те обикновено не черпят енергия, когато предават логиката „нула“. Тази ниска консумация на енергия ги прави много полезни в проекти, работещи с батерии.
433MHZ RF предавател
Този тип модул е супер малък и се предлага с 3 щифта VCC, земя и данни. Някои други модули се предлагат с допълнителен антенен щифт. Работното напрежение на модула на предавателя е 3V-12V и този модул няма регулируеми компоненти. Едно от основните предимства на този модул е ниската консумация на ток, той изисква почти нулев ток, за да изпрати бит нула.
Блокова диаграма на Arduino RC Boat Transmitter
В горната блок-схема има четири бутона (бутони за управление), тези бутони са за управление на посоката на лодката. Имаме четири от тях за напред, назад, ляво и дясно. От бутоните получаваме логика за управление на лодката, но не можем директно да се свържем с енкодера, затова използвахме Arduino. Може би си мислите защо използвах Arduino тук, просто защото трябва да извадим два паралелни входа за данни на кодера едновременно за движение назад и напред, което не може да бъде постигнато само с бутони. След това кодерът кодира идващите паралелни данни към серийни изходи. Тогава можем да предадем тези серийни данни с помощта на RF предавател.
Схема на дистанционното управление Arduino RC (предавател)
В горната схема можете да видите едната страна на всичките четири бутона, свързани към четири цифрови щифта на Arduino (D6-D9) и всички четири други страни, свързани към земята. Тогава, когато натиснем бутона, съответните цифрови щифтове получават ниска логика. Четирите паралелни входа на кодера HT12E, свързани към други четири цифрови щифта на Arduino (D2-D5). Така че с помощта на Arduino можем да решим въвеждането на енкодера.
А като говорим за енкодер HT12E е 12-битов енкодер и паралелен входно-сериен изходен енкодер. От 12 бита, 8 бита са адресни битове, които могат да се използват за управление на множество приемници. Щифтовете A0-A7 са пиновете за въвеждане на адрес. В този проект ние контролираме само един приемник, така че не искаме да променяме адреса му, така че свързах всички адресни щифтове към земята. Ако искате да управлявате различни приемници с един предавател, можете да използвате dip превключватели тук. AD8-AD11 са управляващите битови входове. Тези входове ще управляват изходите D0-D3 на декодера HT12D. Трябва да свържем осцилатор за комуникация и честотата на осцилатора трябва да бъде 3KHzза 5V работа. Тогава стойността на резистора ще бъде 1,1MΩ за 5V. След това свързах изхода на HT12E към модула на предавателя. Вече споменахме, модулът за предавател Arduino и RF, и двете устройства работят на 5V високо напрежение, ще го убият, така че, за да избегна това, добавих 7805, регулатор на напрежение. Сега можем да свържем (Vcc) 6-12волта всякакъв тип батерии към входа.
Изграждане на RC BOAT предавателна верига
Запоях всички компоненти на обща печатна платка. Не забравяйте, че работим по RF проект, така че има много шансове за различни видове смущения, така че свържете всички компоненти много тясно, доколкото е възможно. По-добре е да използвате женски щифтове за Arduino и модула на предавателя. Също така, опитайте се да запоявате всичко на медните подложки, вместо да използвате допълнителни жици. И накрая, свържете малък проводник към модула на предавателя, който ще помогне за увеличаване на общия обхват. Преди да свържете Arduino и модула на предавателя, проверете отново напрежението на изхода lm7805.
Горното изображение показва изглед отгоре на завършената схема на предавателя на RC Boat, а изгледът отдолу на завършената схема на RC Boat Transmitter е показан по-долу.
Изграждане на корпуса на предавател за лодки Arduino RC
За дистанционното е необходимо прилично тяло. Тази стъпка е свързана с вашите идеи, можете да създадете отдалечено тяло с вашите идеи. Обяснявам как направих това. За направата на отдалечено тяло избирам 4 мм MDF листове, можете също да изберете шперплат, пяна или картон, след което изрязах две парчета от това с дължина 10 см и широчина 5 см. След това маркирах позициите за бутоните. Поставих бутоните за посока от лявата страна и бутоните напред, назад отдясно. От другата страна на листа свързах бутоните към основната предавателна верига. Не забравяйте, че нормален бутон има 4 щифта, които са два щифта за всяка страна. Свържете единия щифт към Arduino, а другия щифт към земята. Ако сте объркани с това, моля, проверете го с мултицет или проверете листа с данни.
След като свързах всички тези неща, поставих контролната верига между двете MDF плоскости и затегнах с някакъв дълъг болт (моля, вижте снимките по-долу, ако искате). За пореден път създаването на добро тяло е свързано с вашите идеи.
Модул на приемника 433Mhz
Този приемник също е много малък и се предлага с 4 щифта VCC, заземен и двата средни щифта са данни. Работното напрежение на този модул е 5v. Подобно на модула на предавателя, това също е модул с ниска мощност. Някои модули се доставят с допълнителен антенен щифт, но в моя случай това не е налице.
Блок-схема на приемника на лодка Arduino RC
Горната блок-схема описва работата на веригата на RF приемника. Първо, можем да приемаме предадените сигнали, използвайки модула на RF приемника. Изходът на този приемник е серийни данни. Но ние не можем да контролираме нищо с тези серийни данни, поради което свързахме изхода към декодера. Декодерът декодира серийните данни до нашите оригинални паралелни данни. В този раздел не се нуждаем от никакви микроконтролери, можем директно да свържем изходите към драйвера на двигателя.
Електрическа схема на приемника на лодка Arduino RC
В HT12D е 12-битов декодер, който е сериен вход-изход паралелно декодер. Входният щифт на HT12D ще бъде свързан към приемник, който има сериен изход. Сред 12-битовите 8 бита (A0-A7) са адресни битове и HT12D ще декодира входа, само ако съвпада с текущия си адрес. D8-D11 са изходните битове. За да съчетая тази верига с веригата на предавателя, свързах всички адресни щифтове към земята. Данните извън модула са от сериен тип и декодерът декодира тези серийни данни до оригинални паралелни данни и ние излизаме през D8-D11. За да съответства на честотата на трептене, трябва да свържете резистора 33-56k към осцилаторните щифтове. Светодиодът на 17-ия пин показва валидното предаване, той свети само след като приемникът е свързан към предавател. Входното напрежение на приемника също е 6-12 волта.
За управление на двигатели използвах интегралната схема L293D, избирам тази интегрална схема, защото за намаляване на размера и теглото и тази интегрална схема е най-подходяща за управление на два двигателя в две посоки. L293D има 16 пина, диаграмата по-долу показва пиновете.
1, 9 щифта са щифтът за активиране, ние го свързваме към 5 v, за да позволят двигатели 1А, 2А, 3А и 4А са контролните щифтове. Двигателят ще се обърне надясно, ако щифтът 1А се спусне ниско и 2А отиде високо, а двигателят ще се завърти наляво, ако 1А се спусне ниско и 2А е високо. Така че ние свързахме тези щифтове към изходния ps на декодера. 1Y, 2Y, 3Y и 4Y са щифтовете за свързване на двигателя. Vcc2 е щифтът на задвижващото напрежение на двигателя, ако използвате двигател с високо напрежение, тогава свързвате този щифт към съответния източник на напрежение.
Изграждане на приемната верига на Arduino RC Boat
Преди да изградите веригата на приемника, трябва да запомните някои важни неща. Важното е размерът и теглото, защото след изграждането на веригата, трябва да я фиксираме на лодката. Така че, ако теглото се увеличи, това ще повлияе на плаваемостта и движението.
Също както в схемата на предавателя, запоявайте всеки компонент в малка обща платка и се опитайте да използвате минимални проводници. Свързах щифт 8 на драйвера на двигателя към 5v, защото използвам 5V двигатели.
Изграждане на RC-BOAT
Опитах различни материали за изграждане на корпуса на лодката. И постигнах по-добър резултат с термокол. Затова реших да изградя тялото с термокол. Първо взех 3 см дебел термокол и поставих отгоре веригата на приемника, след това маркирах формата на лодката в термокол и изрязах. Така че това е моят начин да построя лодката, можете да изградите според вашите идеи.
Двигатели и витла за Arduino Air Boat
Отново теглото има значение. Така че изборът на правилния мотор е важен, аз избирам 5volt, n20 тип нормални постояннотокови двигатели, който е малък и без тегло. За да се избегнат радиочестотните смущения, трябва да свържете 0.1uf кондензатор успоредно на входовете на двигателя.
В случай на витла, направих витла, използвайки пластмасови листове. Можете да си купите витла от магазина или да създадете свои собствени, и двете ще работят добре. За да изградя витлата, първо взех малък пластмасов лист и отрязах две малки парчета от него и огъвам парчетата с помощта на топлина от свещи. Накрая сложих малка дупка в центъра му за мотора и фиксирах към мотора, това е.
Работа на Arduino RC Boat
Тази лодка има два мотора, позволяващи да я наричаме ляво и дясно. Ако двигателят се движи и по посока на часовниковата стрелка (позицията на пропелера също зависи), пропелер изсмуква въздух отпред и изпуска отзад. Това генерира плъзгане напред.
Движение напред: Ако и левият, и десният мотор се въртят по посока на часовниковата стрелка, това ще се движи напред
Движение назад: Ако и левият, и десният двигател се въртят обратно на часовниковата стрелка (т.е. витлото изсмуква въздух от задната страна и изпускането към предната страна), което ще направи движение назад
Движение наляво: Ако само десният мотор се върти, това е лодка, вземете само плъзгане от дясната страна, която ще придвижи лодката към лявата страна
Дясно движение: Ако само левият мотор се върти, това е лодка, получава само плъзгане от лявата страна, което ще накара лодката да се премести в дясната страна.
Свързахме входа на драйвера на двигателя към четири изходни бита на декодера (D8-D11). можем да контролираме тези 4 изхода чрез свързване на AD8-AD11 към земята, която е бутоните в дистанционното. Например, ако свържем AD8 към земята, която ще активира D8. Така че такъв начин можем да управляваме двата двигателя в две посоки, използвайки тези 4 изхода. Но не можем да управляваме два двигателя само с един бутон (това ни е необходимо за движение напред и назад), затова използвахме Arduino. С помощта на Arduino можем да изберем пиновете за входни данни като наше желание.
Програмиране на Arduino на RC Boat
Програмирането на тази лодка е много просто, защото искаме само някакво логическо превключване. И можем да постигнем всичко с основните функции на Arduino. Пълната програма за този проект може да бъде намерена в долната част на тази страница. Обяснението на вашата програма е следното
Стартираме програмата, като дефинираме целите числа за четири входни бутона и декодиращи входове.
int f_button = 9; int b_button = 8; int l_button = 7; int r_button = 6; int m1 = 2; int m2 = 3; int m3 = 4; int m4 = 5;
В раздела за настройка дефинирах режимите на щифтове. Това означава, че бутоните са свързани към цифрови щифтове, така че тези щифтове трябва да се определят като вход и ние трябва да получим изход за входа на декодера, така че трябва да определим тези щифтове като изход.
pinMode (f_button, INPUT_PULLUP); pinMode (b_button, INPUT_PULLUP); pinMode (l_button, INPUT_PULLUP); pinMode (r_button, INPUT_PULLUP); pinMode (m1, OUTPUT); pinMode (m2, OUTPUT); pinMode (m3, OUTPUT); pinMode (m4, OUTPUT);
След това във функцията на основния цикъл ще прочетем състоянието на бутона, използвайки функцията за цифрово четене на Arduino. Ако състоянието на щифта е ниско, това означава, че съответният щифт е натиснат, тогава ще изпълним условията, както следва, както следва -
ако (digitalRead (f_button) == LOW)
Това означава, че бутонът за напред е натиснат
{ digitalWrite (m1, LOW); digitalWrite (m3, LOW); digitalWrite (m2, HIGH); digitalWrite (m4, HIGH); }
Това ще изтегли m1 и m2 на енкодера, което ще активира двата двигателя от страната на приемника. По същия начин, за движение назад
{ digitalWrite (m1, HIGH); digitalWrite (m3, HIGH); digitalWrite (m2, LOW); digitalWrite (m4, LOW); }
За движение наляво
{ digitalWrite (m1, LOW); digitalWrite (m3, HIGH); digitalWrite (m2, HIGH); digitalWrite (m4, HIGH); }
За правилно движение
{ digitalWrite (m1, HIGH); digitalWrite (m3, LOW); digitalWrite (m2, HIGH); digitalWrite (m4, HIGH); }
След като компилирате кода, качете го на вашата дъска Arduino.
Отстраняване на неизправности: Поставете лодката на водната повърхност и проверете дали се движи правилно, ако не се опитате да промените полярността на двигателите и витлата. Също така, опитайте се да балансирате теглото.
Цялостната работа на проекта може да бъде намерена във видеото, свързано в долната част на тази страница. Ако имате някакви въпроси, оставете ги в раздела за коментари.