- Wymagane składniki:
- Schemat obwodu:
- Mikrokontroler 8051:
- Moduł Bluetooth HC-05:
- Układ scalony sterownika silnika L293D:
- Działanie robota sterowanego telefonem z systemem Android:
- Objaśnienie kodu:
W tym projekcie zamierzamy zbudować robota sterowanego telefonem z systemem Android przy użyciu mikrokontrolerów 8051 i modułu Bluetooth. Robot został zaprojektowany z wykorzystaniem silników prądu stałego, a kierunek silników prądu stałego będzie kontrolowany za pomocą poleceń otrzymywanych z aplikacji na Androida. Stan robota jest przesyłany z powrotem do aplikacji na Androida. Projekt ten pomoże również w połączeniu modułu HC-05 Bluetooth z mikrokontrolerami 8051. Użyliśmy już modułu Bluetooth do sterowania urządzeniami domowymi za pomocą 8051.
Wymagane składniki:
- Mikrokontroler 8051 (AT89S52)
- Moduł Bluetooth HC-05
- Sterownik silnika L293D
- Podwozie robota
- Silniki DC (2)
- Koła (2)
- Koło rolkowe
- Przewody połączeniowe
- Terminal Bluetooth aplikacja na Androida
Schemat obwodu:
Mikrokontroler 8051:
Mikrokontroler 8051 to 8-bitowy mikrokontroler, który ma 128 bajtów pamięci RAM w chipie, 4 bajty pamięci ROM chipa, dwa timery, jeden port szeregowy i cztery porty 8-bitowe. Mikrokontroler 8052 jest rozszerzeniem mikrokontrolera 8051. W tym projekcie wykorzystujemy mikrokontroler AT89S52. Poniższa tabela przedstawia porównanie 8051 członków rodziny.
Funkcja |
8051 |
8052 |
ROM (w bajtach) |
4K |
8K |
RAM (bajty) |
128 |
256 |
Timery |
2 |
3 |
Piny I / O |
32 |
32 |
Port szeregowy |
1 |
1 |
Źródła przerwań |
6 |
8 |
Moduł Bluetooth HC-05:
HC-05 to szeregowy moduł Bluetooth. Można go skonfigurować za pomocą poleceń AT. Może pracować w trzech różnych konfiguracjach (Master, Slave, Loop back). W naszym projekcie będziemy go używać jako niewolnika. Cechy modułu HC-05 obejmują:
- Typowa czułość -80dBm.
- Domyślna szybkość transmisji: 9600bps, 8 bitów danych, 1 bit stopu, brak parzystości.
- Kod PIN automatycznego parowania: domyślny kod PIN „1234”
- Posiada 6 pinów.
- Piny Vcc i Gnd służą do zasilania HC-05.
- Do komunikacji z mikrokontrolerem służą piny Tx i Rx.
- Włącz pin do aktywacji modułu HC-05. gdy jest niski, moduł jest wyłączony
- Stan pin działa jako wskaźnik stanu. Gdy nie jest sparowane / połączone z żadnym innym urządzeniem Bluetooth, dioda LED miga w sposób ciągły. Gdy jest połączony / sparowany z jakimkolwiek innym urządzeniem Bluetooth, dioda LED miga ze stałym opóźnieniem 2 sekund.
Układ scalony sterownika silnika L293D:
L293D to układ scalony sterownika silnika z podwójnym mostkiem H. Działa jako wzmacniacz prądu, wyjście L293D napędza silniki prądu stałego. Zawiera dwa wbudowane obwody mostka H. W zwykłym trybie pracy może sterować dwoma silnikami prądu stałego jednocześnie w obu kierunkach. Poniższa tabela przedstawia opis pinów układu scalonego L293D. Oto kilka projektów wykorzystujących sterownik silnika L293D.
Opis pinów
Nr pinu |
Nazwa |
Funkcjonować |
1 |
Włącz 1,2 |
Włącz pin dla silnika 1 |
2 |
Wejście 1 |
Wejście 1 dla silnika 1 |
3 |
Wyjście 1 |
Wyjście 1 dla silnika 1 |
4 |
Gnd |
Masa (0 V) |
5 |
Gnd |
Masa (0 V) |
6 |
Wyjście 2 |
Wyjście 2 dla silnika 1 |
7 |
Wejście 2 |
Wejście 2 dla silnika 1 |
8 |
Vcc 2 |
Napięcie zasilania silników (5 V) |
9 |
Włącz 3,4 |
Włącz pin dla silnika 1 |
10 |
Wejście 3 |
Wejście 1 dla silnika 2 |
11 |
Wyjście 4 |
Wyjście 1 dla silnika 2 |
12 |
Gnd |
Masa (0 V) |
13 |
Gnd |
Masa (0 V) |
14 |
Wyjście 4 |
Wyjście 2 dla silnika 2 |
15 |
Wejście 4 |
Wejście 2 dla silnika 2 |
16 |
Vcc 1 |
Napięcie zasilania (5 V) |
Działanie robota sterowanego telefonem z systemem Android:
W tym robocie sterowanym smartfonem użytkownik aplikacji na Androida przesyła dane do mikrokontrolera 8051 za pośrednictwem modułu HC-05. Odebrane dane są porównywane w mikrokontrolerze 8051 i na tej podstawie podejmowana jest decyzja. Poniższa tabela przedstawia kierunek silników i stan robota dla różnych odbieranych znaków.
Otrzymany charakter |
Silnik 1 |
Silnik 2 |
Status robota |
fa |
Naprzód |
Naprzód |
Idzie naprzód |
b |
Do tyłu |
Do tyłu |
Porusza się do tyłu |
r |
Naprzód |
Do tyłu |
Porusza się w prawo |
l |
Do tyłu |
Naprzód |
Porusza się w lewo |
s |
Poza |
Poza |
Zatrzymany |
Terminalu Bluetooth aplikacja pozwala na emulację terminala Bluetooth. Ta aplikacja obsługuje komunikację dwukierunkową i jest kompatybilna z większością urządzeń.
Poniższe kroki pokazują, jak zainstalować i używać tej aplikacji.
1. Pobierz i zainstaluj aplikację terminala Bluetooth na swoim telefonie z systemem Android. Aplikację można pobrać z poniższego linku.
play.google.com/store/apps/details?id=ptah.apps.bluetoothterminal
2. Po zainstalowaniu aplikacji otwórz aplikację i włącz Bluetooth.
3. Wybierz urządzenie i kliknij opcję połączenia. Po udanym połączeniu możemy rozpocząć wysyłanie danych do modułu HC-05.
Sprawdź objaśnienie kodu poniżej, aby zobaczyć, w jaki sposób znak jest wysyłany i odbierany przez mikrokontroler 8051 w celu obracania wymaganych silników.
Objaśnienie kodu:
Kompletny program C i film demonstracyjny dla tego projektu jest podany na końcu tego projektu. Kod jest podzielony na małe znaczące fragmenty i wyjaśniony poniżej.
Dla współpracy L293D z mikrokontrolerami 8051 musimy zdefiniować piny, na których L293D jest podłączony do mikrokontrolera 8051. Pin In1 silnika 1 jest podłączony do P2.0, pin In2 silnika 1 jest podłączony do P2.1, pin In1 silnika 2 jest podłączony do P2.2, pin In2 silnika 2 jest podłączony do P2.3
sbit m1f = P2 ^ 0; // pin in1 silnika1 sbit m1b = P2 ^ 1; // pin in2 motor1 sbit m2f = P2 ^ 2; // pin in1 motor2 sbit m2b = P2 ^ 3; // pin in2 motor2
Następnie musimy zdefiniować funkcje, które są używane w programie. Funkcja opóźnienia służy do tworzenia określonego opóźnienia czasowego. Funkcja Txdata służy do przesyłania danych przez port szeregowy. Funkcja Rxdata służy do odbioru danych z portu szeregowego.
void delay (unsigned int); // funkcja do tworzenia znaku opóźnienia rxdata (void); // funkcja do odbioru znaku przez port szeregowy 8051 void txdata (unsigned char); // funkcja wysyłania znaku przez port szeregowy 8051
W tej części kodu skonfigurujemy mikrokontroler 8051 do komunikacji szeregowej. Rejestr TMOD jest ładowany z 0x20 dla timera 1, tryb 2 (automatyczne przeładowanie). Rejestr SCON jest ładowany z 0x50 dla 8 bitów danych, 1 bit stopu i włączony odbiór. Rejestr TH1 jest ładowany z 0xfd dla szybkości transmisji 9600 bitów na sekundę. TR1 = 1 służy do uruchomienia timera.
TMOD = 0x20; SCON = 0x50; TH1 = 0xfd; TR1 = 1; W tej części kodu zwrócony znak funkcji rxdata jest przechowywany w zmiennej „s” do dalszego wykorzystania.
s = rxdata (); // odbieranie danych szeregowych z modułu bluetooth hc-05
W tej części kodu musimy porównać otrzymany znak z przypisanymi wcześniej znakami dla różnych kierunków. Jeśli odebrany znak to „f”, robot musi poruszać się do przodu. Osiąga się to poprzez ustawienie wysokich pinów m1f, m2f i niskich pinów m1b, m2b . Po wykonaniu tej czynności musimy wysłać stan robota do aplikacji na Androida. Odbywa się to za pomocą funkcji txdata . Ten sam proces jest powtarzany dla różnych otrzymanych znaków i podejmowana jest odpowiednia decyzja. W tabeli 1 przedstawiono różne wartości m1f, m1b, m2f, m2b dla różnych kierunków ruchu robota.
if (s == 'f') // przesuń oba silniki w kierunku do przodu {m1f = 1; opóźnienie (1); m1b = 0; opóźnienie (1); m2f = 1; opóźnienie (1); m2b = 0; opóźnienie (1); for (i = 0; msg1! = '\ 0'; i ++) // wyślij stan robota do aplikacji na Androida przez bluetooth {txdata (msg1); }}
m1f |
m1b |
m2f |
m2b |
Obroty silnika 1 |
Obrót silnika 2 |
Status robota |
1 |
0 |
1 |
0 |
Naprzód |
Naprzód |
Idąc naprzód |
0 |
1 |
0 |
1 |
odwrócić |
odwrócić |
Poruszanie się do tyłu |
1 |
0 |
0 |
1 |
Naprzód |
odwrócić |
Idąc w prawo |
0 |
1 |
1 |
0 |
odwrócić |
Naprzód |
Poruszam się w lewo |
0 |
0 |
0 |
0 |
zatrzymany |
zatrzymany |
zatrzymany |
To znaczy, że możesz obracać samochód robota w dowolnym kierunku, kontrolując cztery silniki za pomocą mikrokontrolera 8051. Tym robotem można również sterować za pomocą DTMF z 8051, jeśli nie masz telefonu z systemem Android.
Sprawdź również wszystkie projekty robotyki tutaj.