- Komponenty wymagane dla Arduino RC Boat
- Moduły nadajnika i odbiornika RF 433 MHz
- Nadajnik RF 433 MHZ
- Schemat blokowy nadajnika łodzi RC Arduino
- Schemat obwodu pilota Arduino RC (nadajnik)
- Budowa obwodu nadajnika RC BOAT
- Budowa obudowy nadajnika łodzi RC Arduino
- Moduł odbiornika 433 Mhz
- Schemat blokowy odbiornika łodzi RC Arduino
- Schemat obwodu odbiornika łodzi RC Arduino
- Budowa obwodu odbiornika łodzi RC Arduino
- Budowa RC-BOAT
- Silniki i śmigła do Arduino Air Boat
- Działanie Arduino RC Boat
- Programowanie Arduino RC Boat
W ramach tego projektu zbudujemy zdalnie sterowany Air-Boat Arduino, którym można sterować bezprzewodowo za pomocą modułów radiowych RF 433 MHz. Będziemy sterować tą łodzią za pomocą domowego pilota, budując własny nadajnik 433 MHz i moduł odbiornika. W przypadku urządzeń zdalnie sterowanych lub komunikacji między dwoma urządzeniami mamy wiele opcji, takich jak IR, Bluetooth, internet, RF itp. W porównaniu z komunikacją IR, komunikacja radiowa ma pewne zalety, takie jak większy zasięg i nie ma. wymagają bezpośredniego połączenia między nadajnikiem i odbiornikiem. Ponadto moduły te mogą komunikować się na dwa sposoby, co oznacza, że mogą przesyłać i odbierać w tym samym czasie. Więc używając tego modułu RF 433MHz, zbudujmy łódź Arduino RC w tym samouczku.
Wcześniej zbudowaliśmy wiele zdalnie sterowanych projektów wykorzystujących te moduły RF 433 MHz do sterowania robotem, takim jak ten robot sterowany RF, lub do aplikacji automatyki domowej do sterowania urządzeniami domowymi za pomocą RF. Oprócz wykorzystania modułów RF, wcześniej zbudowaliśmy również sterowany przez Bluetooth samochód Raspberry Pi oraz robot Arduino sterowany telefonem komórkowym DTMF. Możesz również sprawdzić te projekty, jeśli jesteś zainteresowany.
Komponenty wymagane dla Arduino RC Boat
- Nadajnik i odbiornik 433 MHz
- Arduino (dowolne Arduino, aby zmniejszyć rozmiar używam promini)
- HT12E i HT12D
- Przyciski - 4 szt
- Rezystory - 1 mega omów, 47 k omów
- Sterownik silnika L293d
- Bateria 9 V (używam baterii 7,4 V) - 2 szt
- Regulator 7805 - 2 nr
- Silniki prądu stałego - 2 szt
- Liść silnika lub śmigła (używam śmigieł domowej roboty) - 2 nr
- .1uf kondensator- 2Nos
- Wspólna płytka drukowana
Moduły nadajnika i odbiornika RF 433 MHz
Tego typu moduły RF są bardzo popularne wśród producentów. Ze względu na niski koszt i prostotę połączeń. Te moduły są najlepsze dla wszystkich form projektów komunikacji bliskiego zasięgu. Moduły te są modułami RF typu ASK (Amplitude Shift Keying). Amplitude-shift Keying (ASK) to forma modulacji amplitudy, która przedstawia dane cyfrowe jako zmiany amplitudy fali nośnej. W systemie ASK symbol binarny 1 jest reprezentowany przez transmitowanie fali nośnej o stałej amplitudzie i stałej częstotliwości przez okres bitowy wynoszący T sekund. Jeżeli wartość sygnału wynosi 1, to sygnał nośnej będzie transmitowany; w przeciwnym razie zostanie przesłany sygnał o wartości 0. Oznacza to, że zwykle nie pobierają mocy podczas transmisji Logic „zero”. To niskie zużycie energii sprawia, że są bardzo przydatne w projektach zasilanych bateryjnie.
Nadajnik RF 433 MHZ
Ten typ modułu jest bardzo mały i zawiera 3 piny VCC, masę i dane. Niektóre inne moduły są wyposażone w dodatkowy pin antenowy. Napięcie robocze modułu nadajnika wynosi 3 V-12 V i moduł ten nie ma żadnych regulowanych elementów. Jedną z głównych zalet tego modułu jest niski pobór prądu, wymaga on prawie zerowego prądu do wysłania bitu zerowego.
Schemat blokowy nadajnika łodzi RC Arduino
Na powyższym schemacie blokowym znajdują się cztery przyciski (przyciski sterujące), te przyciski służą do sterowania kierunkiem łodzi. Mamy cztery z nich do przodu, do tyłu, w lewo i w prawo. Z przycisków otrzymujemy logikę do sterowania łodzią, ale nie możemy bezpośrednio połączyć się z enkoderem, dlatego użyliśmy Arduino. Możesz pomyśleć, dlaczego użyłem tutaj Arduino, po prostu dlatego, że musimy jednocześnie ściągnąć dwa równoległe wejścia danych enkodera, aby wykonać ruch do tyłu i do przodu, którego nie można osiągnąć za pomocą samych przycisków. Następnie enkoder koduje nadchodzące dane równoległe na wyjścia szeregowe. Następnie możemy przesłać te dane szeregowe za pomocą nadajnika RF.
Schemat obwodu pilota Arduino RC (nadajnik)
W powyższym obwodzie widać jedną stronę wszystkich czterech przycisków podłączonych do czterech cyfrowych pinów Arduino (D6-D9), a pozostałe cztery strony podłączone do masy. To znaczy, kiedy naciskamy przycisk, odpowiednie piny cyfrowe mają stan logiczny niski. Cztery równoległe wejścia enkodera HT12E podłączone do kolejnych czterech cyfrowych pinów Arduino (D2-D5). Czyli z pomocą Arduino możemy zdecydować o wejściu kodera.
Mówiąc o enkoderze HT12E to 12-bitowy koder i równoległy koder wejścia-wyjścia szeregowego. Z 12 bitów 8 bitów to bity adresowe, które można wykorzystać do sterowania wieloma odbiornikami. Piny A0-A7 to piny wejściowe adresu. W tym projekcie sterujemy tylko jednym odbiornikiem, więc nie chcemy zmieniać jego adresu, więc podłączyłem wszystkie piny adresowe do masy. Jeśli chcesz sterować różnymi odbiornikami za pomocą jednego nadajnika, możesz użyć tutaj przełączników DIP. AD8-AD11 to kontrolne wejścia bitowe. Wejścia te będą sterować wyjściami D0-D3 dekodera HT12D. Musimy podłączyć oscylator do komunikacji, a częstotliwość oscylatora powinna wynosić 3 kHzdo pracy 5V. Wtedy wartość rezystora będzie wynosić 1,1 MΩ dla 5 V. Następnie podłączyłem wyjście HT12E do modułu nadajnika. Wspomnieliśmy już, że moduł nadajnika Arduino i RF, oba te urządzenia pracujące na wysokim napięciu 5V go zabiją, więc aby tego uniknąć dodałem 7805, regulator napięcia. Teraz możemy podłączyć baterie (Vcc) 6-12 V dowolnego typu do wejścia.
Budowa obwodu nadajnika RC BOAT
Przylutowałem każdy element na wspólnej płytce drukowanej. Pamiętaj, że pracujemy nad projektem RF, więc istnieje wiele szans na różne rodzaje zakłóceń, więc połącz wszystkie komponenty bardzo dokładnie, jak to tylko możliwe. Lepiej jest użyć żeńskich listew pinowych dla Arduino i modułu nadajnika. Spróbuj też przylutować wszystko na miedzianych podkładkach zamiast używać dodatkowych przewodów. Na koniec podłącz mały przewód do modułu nadajnika, który pomoże zwiększyć całkowity zasięg. Przed podłączeniem Arduino i modułu nadajnika należy dwukrotnie sprawdzić napięcie na wyjściu lm7805.
Powyższe zdjęcie przedstawia widok z góry kompletnego obwodu nadajnika RC Boat, a widok z dołu kompletnego obwodu nadajnika RC Boat pokazano poniżej.
Budowa obudowy nadajnika łodzi RC Arduino
Do pilota potrzebne jest porządne ciało. Ten krok dotyczy twoich pomysłów, możesz stworzyć odległe ciało ze swoimi pomysłami. Wyjaśniam, jak to zrobiłem. Do wykonania zdalnej bryły wybieram płyty MDF 4mm, można też wybrać sklejkę, arkusz pianki lub karton, z tego wycinam dwa kawałki o długości 10cm i szerokości 5cm. Następnie zaznaczyłem pozycje przycisków. Umieściłem przyciski kierunku po lewej stronie i do przodu, wstecz po prawej. Po drugiej stronie prześcieradła podłączyłem przyciski do głównego obwodu nadawczego. Pamiętaj, że zwykły przycisk ma 4 piny, czyli po dwa piny z każdej strony. Podłącz jeden pin do Arduino, a drugi do masy. Jeśli jesteś z tym zdezorientowany, sprawdź to za pomocą multimetru lub sprawdź arkusz danych.
Po podłączeniu wszystkich tych rzeczy umieściłem obwód sterujący między dwiema płytami MDF i dokręciłem długą śrubą (jeśli chcesz, zapoznaj się z poniższymi zdjęciami). Po raz kolejny tworzenie dobrego ciała zależy od Twoich pomysłów.
Moduł odbiornika 433 Mhz
Ten odbiornik jest również bardzo mały i jest wyposażony w 4 piny VCC, masę i dwa środkowe piny do przesyłania danych. Napięcie robocze tego modułu wynosi 5 V. Podobnie jak moduł nadajnika, jest to również moduł małej mocy. Niektóre moduły są wyposażone w dodatkowy pin antenowy, ale w moim przypadku go nie ma.
Schemat blokowy odbiornika łodzi RC Arduino
Powyższy schemat blokowy opisuje działanie obwodu odbiornika RF. Po pierwsze możemy odbierać transmitowane sygnały za pomocą modułu odbiornika RF. Wyjściem tego odbiornika są dane szeregowe. Ale nie możemy niczego kontrolować za pomocą tych danych szeregowych, dlatego podłączyliśmy wyjście do dekodera. Dekoder dekoduje dane szeregowe do naszych oryginalnych danych równoległych. W tej sekcji nie potrzebujemy żadnych mikrokontrolerów, wyjścia możemy podłączyć bezpośrednio do sterownika silnika.
Schemat obwodu odbiornika łodzi RC Arduino
HT12D jest dekoder 12-bitowy, który jest szeregowe wejście dekodera wyjście równoległe. Pin wejściowy HT12D zostanie podłączony do odbiornika z wyjściem szeregowym. Wśród 12 bitów, 8 bitów (A0-A7) to bity adresu, a HT12D zdekoduje wejście, jeśli tylko pasuje do jego aktualnego adresu. D8-D11 to bity wyjściowe. Aby dopasować ten obwód do obwodu nadajnika, podłączyłem wszystkie piny adresowe do masy. Dane z modułu są typu szeregowego, a dekoder dekoduje te dane szeregowe do oryginalnych danych równoległych i wychodzimy przez D8-D11. Aby dopasować częstotliwość oscylacji należy podłączyć rezystor 33-56k do pinów oscylatora. Dioda na 17 pinie wskazuje prawidłową transmisję, świeci dopiero po podłączeniu odbiornika do nadajnika. Napięcie wejściowe odbiornika również wynosi 6-12 woltów.
Do sterowania silnikami użyłem układu scalonego L293D, wybieram ten układ scalony, ponieważ w celu zmniejszenia rozmiaru i wagi, a ten układ najlepiej nadaje się do sterowania dwoma silnikami w dwóch kierunkach. L293D ma 16 pinów, poniższy schemat pokazuje pinouty.
1, 9 pinów to pin włączający, podłączamy go do 5 v, aby włączyć silniki 1A, 2A, 3A i 4A to piny sterujące. Silnik obróci się w prawo, jeśli styk 1 A spadnie do stanu niskiego, a 2 A do stanu wysokiego, a silnik obróci się w lewo, jeśli 1 A spadnie do stanu niskiego i 2 A do stanu wysokiego. Więc podłączyliśmy te piny do wyjścia ps dekodera. 1Y, 2Y, 3Y i 4Y to styki podłączenia silnika. Vcc2 jest pinem napięcia sterującego silnika, jeśli używasz silnika wysokiego napięcia, podłącz ten pin do odpowiedniego źródła napięcia.
Budowa obwodu odbiornika łodzi RC Arduino
Przed zbudowaniem układu odbiornika należy pamiętać o kilku ważnych rzeczach. Ważny jest rozmiar i waga, ponieważ po zbudowaniu obwodu musimy go naprawić na łodzi. Więc jeśli waga wzrośnie, wpłynie to na pływalność i ruch.
Podobnie jak w obwodzie nadajnika, przylutuj każdy element do małej wspólnej płytki drukowanej i spróbuj użyć minimalnej liczby przewodów. Podłączyłem pin 8 sterownika silnika do 5V, ponieważ używam silników 5V.
Budowa RC-BOAT
Wypróbowałem różne materiały do budowy korpusu łodzi. I uzyskałem lepszy wynik z arkuszem thermocol. Postanowiłem więc zbudować korpus z thermocolu. Najpierw wziąłem kawałek termokola o grubości 3 cm i umieściłem obwód odbiornika na górze, a następnie zaznaczyłem kształt łodzi termokolem i wyciąłem. Więc to jest mój sposób na zbudowanie łodzi, którą możesz zbudować według swoich pomysłów.
Silniki i śmigła do Arduino Air Boat
Po raz kolejny waga ma znaczenie. Dlatego wybór odpowiedniego silnika jest ważny, wybieram normalne silniki prądu stałego 5 V, typu n20, które są małe i nieważkie. Aby uniknąć zakłóceń RF, należy podłączyć kondensator 0,1 uf równolegle do wejść silnika.
W przypadku śmigieł wykonałem śmigła z plastikowych arkuszy. Możesz kupić śmigła w sklepie lub zbudować własne, oba będą działać dobrze. Aby zbudować śmigła, najpierw wziąłem mały arkusz plastiku i wyciąłem z niego dwa małe kawałki i zginałem je za pomocą ciepła świecy. Na koniec umieściłem w środku mały otwór na silnik i przymocowałem do silnika, to wszystko.
Działanie Arduino RC Boat
Ta łódź ma dwa silniki, nazwijmy ją lewą i prawą. Jeśli silnik porusza się również w kierunku zgodnym z ruchem wskazówek zegara (położenie śmigła również zależy), śmigło zasysa powietrze od przodu i wydech do tyłu. To generuje opór do przodu.
Ruch do przodu: Jeśli zarówno lewy, jak i prawy silnik obracają się zgodnie z ruchem wskazówek zegara, spowoduje to ruch do przodu
Ruch do tyłu: jeśli lewy i prawy silnik obracają się w kierunku przeciwnym do ruchu wskazówek zegara (to znaczy śmigło zasysa powietrze z tyłu i wydmuchuje z przodu), spowoduje to ruch do tyłu
Ruch w lewo: Jeśli obraca się tylko prawy silnik, to znaczy, że łódź ma tylko opór z prawej strony, co spowoduje, że łódź przesunie się na lewą stronę
Ruch w prawo: Jeśli obraca się tylko lewy silnik, to łódź jest tylko opór z lewej strony, co spowoduje, że łódź przesunie się na prawą stronę.
Podłączyliśmy wejście sterownika silników do czterech bitów wyjściowych dekodera (D8-D11). tymi 4 wyjściami możemy sterować podłączając AD8-AD11 do masy czyli przycisków w pilocie. Na przykład, jeśli podłączymy AD8 do masy, która aktywuje D8. W ten sposób możemy sterować dwoma silnikami w dwóch kierunkach za pomocą tych 4 wyjść. Ale nie możemy sterować dwoma silnikami za pomocą jednego przycisku (potrzebujemy tego do ruchu do przodu i do tyłu), dlatego użyliśmy Arduino. Za pomocą Arduino możemy wybrać piny danych wejściowych według własnego uznania.
Programowanie Arduino RC Boat
Programowanie tej łodzi jest bardzo proste, ponieważ chcemy tylko trochę przełączać logikę. I wszystko możemy osiągnąć dzięki podstawowym funkcjom Arduino. Kompletny program dla tego projektu można znaleźć na dole tej strony. Objaśnienie twojego programu jest następujące
Program rozpoczynamy od zdefiniowania liczb całkowitych dla czterech przycisków wejściowych i pinów wejściowych dekodera.
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;
W sekcji konfiguracji zdefiniowałem tryby pinów. Oznacza to, że przyciski są podłączone do pinów cyfrowych, więc te piny powinny być zdefiniowane jako wejście i musimy uzyskać wyjście dla wejścia dekodera, więc powinniśmy zdefiniować te piny jako wyjście.
pinMode (f_button, INPUT_PULLUP); pinMode (b_button, INPUT_PULLUP); pinMode (l_button, INPUT_PULLUP); pinMode (r_button, INPUT_PULLUP); pinMode (m1, WYJŚCIE); pinMode (m2, WYJŚCIE); pinMode (m3, WYJŚCIE); pinMode (m4, WYJŚCIE);
Następnie w funkcji pętli głównej odczytujemy stan przycisku za pomocą funkcji odczytu cyfrowego Arduino. Jeśli stan pinów spadnie na niski, co oznacza, że odpowiedni pin jest wciśnięty, wykonamy warunki w następujący sposób:
if (digitalRead (f_button) == LOW)
Oznacza to, że przycisk do przodu jest wciśnięty
{ digitalWrite (m1, LOW); digitalWrite (m3, LOW); digitalWrite (m2, WYSOKI); digitalWrite (m4, WYSOKI); }
Spowoduje to zmniejszenie m1 i m2 enkodera, co spowoduje aktywację obu silników po stronie odbiornika. Podobnie w przypadku ruchu do tyłu
{ digitalWrite (m1, HIGH); digitalWrite (m3, WYSOKI); digitalWrite (m2, LOW); digitalWrite (m4, LOW); }
Do ruchu w lewo
{ digitalWrite (m1, LOW); digitalWrite (m3, WYSOKI); digitalWrite (m2, WYSOKI); digitalWrite (m4, WYSOKI); }
Właściwy ruch
{ digitalWrite (m1, HIGH); digitalWrite (m3, LOW); digitalWrite (m2, WYSOKI); digitalWrite (m4, WYSOKI); }
Po skompilowaniu kodu prześlij go na swoją płytkę Arduino.
Rozwiązywanie problemów: Umieść łódź na powierzchni wody i sprawdź, czy porusza się prawidłowo, jeśli nie, spróbuj zmienić polaryzację silników i śmigieł. Spróbuj też zrównoważyć wagę.
Pełne działanie projektu można znaleźć w wideo, do którego link znajduje się na dole tej strony. Jeśli masz jakieś pytania, zostaw je w sekcji komentarzy.