- Wymagany materiał
- Moduł Bluetooth HC-06
- Schemat obwodu
- Konfiguracja aplikacji Roboremo do sterowania serwomechanizmem:
- Kod i wyjaśnienie
- Działanie sterowania serwomotorem za pomocą Bluetooth:
Stosowanie silnika serwo jest powszechne w robotyce do precyzyjnego sterowania. W tym samouczku pokażemy, jak bezprzewodowo korzystać z silnika Servo z Arduino UNO i urządzeniem z Androidem przez połączenie Bluetooth. Kontrolowaliśmy już serwo za pomocą Arduino, tym razem sterujemy serwomotorem za pomocą Arduino i Bluetooth.
Wymagany materiał
- Arduino UNO
- Moduł Bluetooth HC-05 lub HC-06
- Siłownik
- Aplikacja Roboremo z Playstore
- Płytka prototypowa
- Przewód łączący
Moduł Bluetooth HC-06
Bluetooth może działać w dwóch następujących trybach:
- Tryb poleceń
- Tryb pracy
W trybie poleceń będziemy mogli skonfigurować właściwości Bluetooth, takie jak nazwa sygnału Bluetooth, jego hasło, operacyjna prędkość transmisji itp. Tryb pracy to ten, w którym będziemy mogli wysyłać i odbierać dane między mikrokontrolerem PIC i moduł Bluetooth. Dlatego w tym samouczku będziemy bawić się tylko trybem pracy. Tryb poleceń zostanie pozostawiony do ustawień domyślnych. Nazwa urządzenia to HC-05 (używam HC-06), hasło to 0000 lub 1234, a co najważniejsze, domyślna prędkość transmisji dla wszystkich modułów Bluetooth będzie wynosić 9600.
Moduł pracuje na zasilaniu 5V a piny sygnałowe na 3,3V stąd regulator 3,3V występuje w samym module. Dlatego nie musimy się tym martwić. Z sześciu pinów tylko cztery będą używane w trybie pracy. Tabela połączeń pinów jest pokazana poniżej
S.Nr | Przypnij HC-05 / HC-06 | Nazwa pinu na MCU | Numer pinu w PIC |
1 | Vcc | Vdd | 31 ul kołek |
2 | Vcc | Gnd | 32 ND kołek |
3 | Tx | RC6 / Tx / CK | 25- ty pin |
4 | Rx | RC7 / Rx / DT | 26- ty pin |
5 | Stan | NC | NC |
6 | EN (Włącz) | NC | NC |
Sprawdź nasze inne projekty, aby dowiedzieć się więcej o module Bluetooth HC-05 z innymi mikrokontrolerami:
- Samochodzik sterowany przez Bluetooth za pomocą Arduino
- System automatyki domowej sterowany przez Bluetooth przy użyciu 8051
- Światła sterowane głosem za pomocą Raspberry Pi
- Radio FM sterowane smartfonem za pomocą Arduino i przetwarzania
- Połączenie modułu Bluetooth HC-06 z mikrokontrolerem PIC
Sprawdź również wszystkie projekty związane z bluetooth tutaj.
Schemat obwodu
Schemat obwodu dla tego projektu Arduino Bluetooth Servo Motor Control znajduje się poniżej:
Konfiguracja aplikacji Roboremo do sterowania serwomechanizmem:
Krok 1: - Pobierz aplikację Roboremo ze sklepu Android Play i zainstaluj ją na swoim smartfonie. Po zainstalowaniu zobaczysz okno aplikacji, jak pokazano na rysunku 1, a po kliknięciu przycisku `` Menu '' zobaczysz okno pokazane na rysunku 2 poniżej:
Krok 2: - Następnie kliknij przycisk Połącz , a zobaczysz okno pokazane na rysunku 3 poniżej, a następnie wybierz „ Bluetooth RFCOMM”, a następnie będziesz mógł połączyć swój moduł bluetooth HC-06 z aplikacją „Roboremo” na Androida.
Krok 3: - Po podłączeniu do modułu bluetooth HC-06 wróć do okna rysunek 2, a następnie kliknij „ edit ui ”, aby utworzyć interfejs użytkownika zgodnie z potrzebami.
Po kliknięciu „Edytuj interfejs użytkownika” ponownie zobaczysz okno pokazane na rysunku 1, a następnie kliknij w dowolnym miejscu ekranu, aby wyświetlić okno aplikacji, takie jak na rysunku 4, i wybierz „ Przycisk ”, aby uzyskać strukturę przycisku.
Krok 4: - Po wybraniu przycisku na ekranie pojawi się struktura przycisków do edycji. Możesz zmieniać rozmiar i przesuwać strukturę w dowolnym miejscu ekranu. Teraz, aby ustawić wartość, która ma być wysłana po kliknięciu przez Bluetooth, musisz `` ustawić akcję naciśnięcia '' (jak pokazano na rysunku 6) i wpisać wartość, którą chcesz wysłać z tego konkretnego przycisku. Na przykład wysyłamy „1” do obracania serwomechanizmu, naciskając przycisk „Start” w aplikacji Roboremo na Androida.
Możesz sprawdzić wszystkie wartości wysyłane po kliknięciu różnych przycisków w tabeli podanej w dalszej części.
Krok 5: - Wreszcie mamy interfejs użytkownika do sterowania serwomotorem za pomocą smartfona.
Kod i wyjaśnienie
Na końcu podano pełny kod serwomotoru sterującego Arduino przez Bluetooth.
Arduino ma bibliotekę dla serwomotorów i obsługuje wszystkie rzeczy związane z PWM, aby obrócić serwo, wystarczy wpisać kąt, do którego chcesz się obrócić i jest funkcja servo1.write (angle); który obróci serwo pod żądany kąt.
Więc tutaj zaczynamy od zdefiniowania biblioteki dla silnika serwo i biblioteki oprogramowania szeregowego używanej do definiowania pinów Rx i Tx.
#zawierać
W poniższym kodzie inicjalizujemy piny Arduino dla Rx i Tx, definiując zmienne dla serwomechanizmu i innych rzeczy .
Servo myServo; int TxD = 11; int RxD = 10; int servoposition; int serwopo; int nowy1; OprogramowanieSerial bluetooth (TxD, RxD);
Teraz ustaw wszystkie zmienne i komponenty na początkowy etap. Tutaj założyliśmy serwo na 9- tym pinie Arduino i ustawiliśmy początkową pozycję serwa na 0 stopni. Szybkość transmisji dla komunikacji szeregowej i Bluetooth również została ustawiona na 9600.
void setup () { int pos = 0; myServo.attach (9); myServo.write (0); Serial.begin (9600); // rozpoczęcie komunikacji szeregowej z prędkością 9600bps bluetooth.begin (9600); }
W funkcji void loop Arduino będzie cały czas sprawdzać przychodzące wartości i obracać serwomechanizm zgodnie z otrzymaną wartością ze Smartfona. Wszystkie wartości zostaną odebrane przy użyciu komunikacji szeregowej.
Jeśli wartość wynosi 0, serwo obróci się do 0 stopni. Podobnie, jeśli wyślemy 45, 90, 135 i 180 z aplikacji Bluetooth, serwo obróci się odpowiednio o kąt 45, 90, 135 i 180 stopni.
void loop () { if (bluetooth.available ()) { String value = bluetooth.readString (); servoposition = value.toInt (); if (value.toInt () == 0) { Serial.println (servoposition); myServo.write (0); } if (value.toInt () == 45) { Serial.println (servoposition); myServo.write (45); } if (value.toInt () == 90) { Serial.println (pozycja serw); myServo.write (90); } if (value.toInt () == 135) { Serial.println (servoposition); myServo.write (135); } if (value.toInt () == 180) { Serial.println (servoposition); myServo.write (180); }
Jeśli wyślemy wartość „1” naciskając przycisk Start , to serwo będzie się obracać aż do naciśnięcia przycisku stop . Tutaj jesteśmy wysyłania „2” po naciśnięciu stopu przycisk, który zostanie odczytany przez Arduino i będzie przełamać while pętli i serwo zostanie zatrzymany.
while (value.toInt () == 1) {if (bluetooth.available ()) {value = bluetooth.readString (); Serial.println (wartość); if (value.toInt () == 2) {Serial.println ("RRRR"); przerwa; }} servopos ++; opóźnienie (30); Serial.println (serwa); myServo.write (serwa); if (servopos == 180) {servopos = 0; break;}}}}
Działanie sterowania serwomotorem za pomocą Bluetooth:
W tym projekcie sterujemy serwomotorem za pomocą aplikacji „Roboremo” na Androida. W interfejsie tej aplikacji utworzyliśmy 5 przycisków do sterowania silnikiem Servo, jak wyjaśniono wcześniej. Działanie każdego przycisku przedstawia poniższa tabela:
S.No. |
Nazwa przycisku |
Wysyłanie wartości |
Opis |
1. |
Początek |
1 |
Ten przycisk służy do rozpoczęcia obracania serwa od 0⁰ do 180⁰. |
2. |
Zatrzymać |
2 |
Ten przycisk służy do zatrzymania serwomechanizmu w dowolnym momencie. |
3. |
0⁰ |
0 |
Ten przycisk służy do obracania serwomechanizmu do 0⁰. |
4. |
90⁰ |
90 |
Ten przycisk służy do obracania serwomechanizmu o 90⁰. |
5. |
180⁰ |
180 |
Ten przycisk służy do obracania serwomechanizmu o 180⁰. |
Tak więc, naciskając te przyciski w aplikacji Roboremo na Androida, dane zostaną przesłane przez Bluetooth smartfona do modułu Bluetooth HC-06. Z tego modułu HC-06 dane są odbierane przez Arduino i Arduino obraca Serwo pod kątem zdefiniowanym w kodzie dla danego przycisku. Zakodowaliśmy również dla kąta 45 i 135, ale ze względu na ograniczenia aplikacji Roboremo można utworzyć tylko 5 przycisków, więc pominęliśmy dwa przyciski.
W ten sposób możesz przesłać dane ze smartfona do Arduino za pomocą Bluetooth do bezprzewodowego sterowania serwomechanizmem. Może to być używane w wielu aplikacjach, takich jak samochody zabawkowe, roboty itp.