Buy from OSOYOO Buy from UK Buy from DE Buy from IT Buy from FR Buy from ES Buy from JP

In questa lezione, ti mostreremo come utilizzare un’app mobile per controllare l’auto robot tramite il protocollo UDP. Il Raspberry Pi eseguirà un programma Python per ricevere pacchetti UDP dall’app.

No. Immagine Dispositivo Qtà. Accessori Collegamento
1 Ultrosonic Sensor 1 M1.4*8 Vite x 4
M1.4 Dado x 4
Acquistare
2 Servomotore 1 Vite autofilettante M2.2*8 x 2
Vite autofilettante M2 * 4 x 1
Acquistare
3 Supporto di montaggio per sensore a ultrasuoni 1 M1.4*8 Vite x 4
M1.4 Dado x 4
Vite autofilettante M2 * 4 x 1
Acquistare
4 Modulo sensore di tracciamento 1 Vite di plastica M2.5 x 2
M2.5 Dado di plastica x2
Pilastro di plastica M2.5 x 2
Acquistare
5 Cavo da 7 pin da 25 cm da femmina a femmina 1 Acquistare
6 Ponticello a 10 pin da femmina a femmina da 20 cm Alcuni
7 Cacciavite Philips 1 Acquistare

Prima di tutto, installa la Lezione 3 (Tracciamento delle linee ) e la Lezione 4 (Evitamento degli ostacoli ).

Ricorda: Mantieni tutti i fili già collegati nelle Lezioni dalla 1 alla 4.

Osoyoo WIFI Robot APP cerca “Osoyoo WIFI UDP Robot APP” in
Google Play or Apple Store
(
Nota: se non riuscite a trovare questa APP in Google Play,
potete scaricare direttamente l’APP dal seguente link:
https://osoyoo.com/driver/udp-app.apk)

Passo (1) Scarica l’app di controllo OSOYOO WIFI UDP Robot Car
Su Google Play o sull’App Store, cerca le parole chiave “OSOYOO WIFI UDP Robot Car”. Troverai un’icona arancione dell’app come segue( Nota: se non riuscite a trovare questa APP in Google Play, potete scaricare direttamente l’APP dal seguente link: https://osoyoo.com/driver/udp-app.apk):

Passo (2) Assicurati di aver installato le librerie rpi.gpio e adafruit-pca9685 nella Lezione 1.
Passo (3) Digita il seguente comando per scaricare il codice di esempio:

wget http://osoyoo.com/driver/servo-steer-car/picar-udp.py

Passo (4) Digita il seguente comando per eseguire il codice di esempio:

python picar-udp.py

or if you want to use Python3, typing:

python3 picar-udp.py

Una volta che il codice Python sopra è in esecuzione, la tua auto aspetterà i comandi dal tuo cellulare.

Passo (5) Collega il tuo telefono alla stessa rete Wi-Fi del tuo Raspberry Pi. Apri l’app, fai clic su “Impostazioni”, inserisci l’indirizzo IP del tuo Raspberry Pi e la porta 8888 nelle impostazioni:

Ora puoi fare clic sui tasti di direzione < > ^ v per far muovere l’auto. Utilizza il tasto || per fermare il movimento dell’auto.

Se fai clic sul tasto “Ostacoli”, l’auto eseguirà l’evitamento automatico degli ostacoli, simile alla  Lezione 4

If you click Tracking key, the car will do link tracking auto driving similar to Lezione 3

Nota: F1~F6 sono funzioni di sviluppo future.

Domande frequenti sull’app WIFI UDP e sul codice di esempio:

D 1) Come posso regolare la velocità dell’auto robot?
R: Se desideri cambiare le prestazioni di velocità dell’auto robot, modifica i valori dei parametri seguenti nelle righe 19-21 del file picar-udp-control.py:

high_speed = 3500  # Max pulse length out of 4096
mid_speed = 1900  # Max pulse length out of 4096
low_speed = 1700  # Max pulse length out of 4096

D 2) Cosa succede quando premi i pulsanti nell’app OSOYOO WiFi UDP Robot Car?
R: Quando premi un pulsante dell’app, l’app invia un messaggio di una singola lettera tramite il protocollo UDP al dispositivo di destinazione Raspberry Pi

Pulsante messaggio UDP
F1 F
F2 G
F3 H
F4 I
F5 J
F6 K
A
B
R
L
piazza E
ostacolo O
monitoraggio T

D 3) Come gestisce il programma Python del Raspberry Pi il comando UDP?
Il ciclo while dalle righe 319 a 347 riceve dati UDP dall’app e li assegna alla variabile cur_status. La funzione ticker nelle righe 292-307 gestisce la variabile cur_status nel seguente modo :

def ticker():	
    if cur_status=='R':
    	turnRight(high_speed,0)
    if cur_status=='L':
    	turnLeft(0,high_speed)
    if cur_status=='A':
    	forward(mid_speed,mid_speed)
    if cur_status=='B':
    	backward(mid_speed,mid_speed)
    if cur_status=='E':
    	stopcar()
    if cur_status=='T':
    	line_tracking()
    if cur_status=='O':
    	obstacle_avoid()

Ad esempio, quando viene premuto il tasto ▲ nell’app, il valore di cur_status diventa A e la funzione ticker() chiama la funzione forward(mid_speed, mid_speed) per far muovere l’auto in avanti.