Archivi tag: radiocomando per raspberry

Tutorial: Come creare un webserver per robot, rover e droni

Lo scopo del tutorial e’ appunto descrivere come creare un webserver che permetta di pilotare da remoto robot o droni controllati da rpi

L ‘ architettura che ho in mente e’ la seguente:

  • raspeberry pi e’ il controllore del device (sia un auto, robot, rover o nel mio casospecifico, un quadricottero).
  • raspberry pi e’ connesso ad una rete wifi locale.
  • un pc o uno smartphone sono connessi alla stessa rete wifi.
  • Usando il browser del pc/smartphone voglio pilotare il device.
  • Lo sviluppo e’ fatto usando python

Quindi e’ necessario un webserver che giri su raspberry ed almeno una pagina web come interfaccio utente.

Iniziamo ipotizzando di dover gestire una serie di parametri (per esempio la velocita’ delle ruote , l’ angolo di un braccio robotizzato).

Prima di tutto ho creato una classe generica che includa i parametri da gestire:

class mydataclass(object):

def __init__(self):

self.param1=0

self.param2=0

Secondo, ho creato un webserver.

La classe si trova nel modulo webserver.py. Questo girara’ in un thread in parallelo.

Nella routine init() viene quindi passata la classe dei dati . Inoltre vi sono le routine start() e stop() per gestire avvio e arresto del webserver.Questo e’ usabile cosi’ com’e’ dato che e’ indipendente dalla struttura di mydataclass.

Poi ho creato una classe MyHandler(BaseHTTPRequestHandler). Questa e’ la parte di codice che va implementato per gestire gli specifici dati. In questo esempio , c’e’ param1 che puo’ essere incrementato o ridottodall’ utente ed un secondo param2 che e’ gestito da qualche altra parre (nel loop del main in questo esempio).

E’ stato implementati poi la routine do_GET() dove si ottiene il comando che arriva dal client (pagina web) e in accordo con tale comando , viene eseguita l’ azione necessaria.

In fine ho creatoil modulo webserver_test.py che e’ il loop principale dell’ applicazione.Vi e’ l’ initializzazione di mydata e mywebserver ed un esempio di controllo.

Tutto qua!

Ops, di sicuro poi c’e’ bisogno di una pagina web (migliore della mia) per i comandi. In questo link poi trovare tutto il codice e la pagina web: webserver_test.

Per testarlo esegui: python webserver_test.py

Quindi lancia il browser e apri : http://localhost/index.html oppure l’ indirizzo del server: http://192.168.0.10/index.html

Nel prossimo post sostituiro’ questo esempio base con il caso specifico di un drone.