Nell'ultimo post del blog, il ragno bionico è stato controllato con un controller autocostruito tramite il protocollo ESPNOW.
Ciò consente una semplice connessione da dispositivo a dispositivo senza dover essere collegati a una rete.
In questo blog, utilizziamo il protocollo Internet UDP per scambiare pacchetti di dati tra i microcontrollori. A tale scopo, il telecomando e lo spider devono trovarsi nella stessa rete.
Tuttavia, questa piccola limitazione ha anche il vantaggio che la portata dei ripetitori e dei punti di accesso della rete domestica è di solito più ampia e completa e la connessione può essere stabilita anche su una distanza maggiore rispetto alla linea di vista.
Hardware
Se il controllore è già stato installato nella cartella Blog del controllore ragno si può saltare la parte seguente e proseguire con il software.
Sono disponibili due versioni del joystick: da un lato, il joystick KY-023 è possibile utilizzare un modulo di tipo "a". Tuttavia, dato che anche in questo caso sarebbe necessario un cablaggio molto lungo, si consiglia di usare il modulo Schermo per joystick PS2che può anche essere collegato direttamente ad un microcontrollore con Uno Il layout può essere collegato.
Poiché il microcontrollore deve comunicare con il robot, è necessario un microcontrollore con funzionalità WiFi. Inoltre, sono necessari due ADC per ciascuno degli assi X e Y, motivo per cui è necessario utilizzare un ESP32.
(L'ESP8266 ha solo un ingresso ADC).
Per la realizzazione del progetto sono necessari:
(opzionale) Batteria di blocco da 9V + Clip per batteria
e naturalmente uno assemblato Kit robot Bionic Spider
Poiché gli ingressi analogici dei due assi del joystick sono collegati ai GPIO 2 e 4, che sono collegati all'ADC2, questi non possono essere utilizzati contemporaneamente al modulo WLAN. Tuttavia, le connessioni IO 34 e IO35 (ADC1) si trovano direttamente accanto a queste, il che significa che la funzionalità può essere facilmente stabilita tramite un ponticello.

Figura 1: Ponte di fili tra le connessioni
Collegare i collegamenti come indicato sopra.
Poiché il LED di bordo è collegato al GPIO 2, il pin deve essere rimosso in questo punto, poiché altrimenti il collegamento influirebbe sul valore della tensione dell'asse X.
Lo stesso vale per il pin D12, che interferisce con il processo di avvio e quindi non è possibile avviare il sistema con lo shield inserito. Il pulsante centrale del joystick è collegato a questa connessione, il che significa che non può più essere utilizzato. Se si desidera comunque implementarlo, è necessario ricollegarlo a una connessione libera.

Figura 2: Scudo con modifiche
Lo schermo può essere semplicemente collegato al D1 R32. Assicuratevi che il piccolo interruttore nell'angolo sinistro sia impostato su 3v3 Altrimenti l'ESP32 potrebbe essere danneggiato dalla tensione eccessiva di 5 V.
Software
Se si sta programmando un ESP32/ESP8266 nell'IDE Arduino per la prima volta, copiare i seguenti URL nell'IDE Arduino in: File->Preferences->Additional boards manager URLs : https://dl.espressif.com/dl/package_esp32_index.json
http://arduino.esp8266.com/stable/package_esp8266com_index.json
e installare il pacchetto ESP32 e ESP8266 nell'amministrazione della scheda.
Per la comunicazione, i pacchetti di dati vengono scambiati utilizzando UDP. Con questo protocollo di comunicazione, i pacchetti vengono semplicemente inviati senza controllare se il pacchetto è stato ricevuto.
Questo rende lo scambio di dati molto veloce, ma anche insicuro, poiché non è possibile determinare se il destinatario riceve effettivamente i dati.
La libreria per la comunicazione UDP è già inclusa nei pacchetti di schede complete per ESP8266 e ESP32.
Nel blog ESPnow, per la comunicazione era richiesto l'indirizzo MAC del microcontrollore.
Quando si comunica via UDP, è necessario solo l'indirizzo IP del ricevitore. Questo viene assegnato automaticamente tramite il server DHCP del router al momento della connessione alla rete domestica (WLAN).
L'indirizzo IP può essere determinato tramite l'interfaccia utente del router, ma viene anche visualizzato sul monitor seriale all'inizio del programma del ricevitore.
Codice Ragno bionico
Caricare il seguente codice sull'ESP8266 del kit Bionic Spider selezionando la porta e la scheda corretta nell'IDE Arduino.
|
#include <ESP8266WiFi.h> |
Spiegazione:
Le librerie necessarie sono integrate all'inizio. Il file comandi.h con le sequenze di movimento si trova, insieme al codice, nel download alla fine di questa sezione.
Vengono quindi definiti i dati di accesso alla WLAN e viene dichiarata una variabile per il comando ricevuto. Viene inoltre creato l'oggetto per la libreria UDP.
In setup(), il microcontrollore viene collegato alla WLAN e i singoli servomotori vengono inizializzati.
Nel ciclo(), i pacchetti di dati in arrivo vengono trasferiti dal mittente al sistema cmd viene salvata. Questa viene poi analizzata dalle query if e il comando corrispondente viene eseguito. Una volta eseguito il comando, viene inviata una conferma al controllore.
È possibile scaricare il codice completo qui scaricare.
Inserire i dati di accesso alla WLAN nel programma al posto dei segnaposto.
Dopo il caricamento sul microcontrollore, aprire il monitor seriale e annotare l'indirizzo IP visualizzato.
Se questo non viene visualizzato all'inizio, si possono usare le due righe all'inizio nel loop() per l'output.
Codice Controllore
|
#include <WiFi.h> |
Spiegazione:
In primo luogo, si integrano le librerie necessarie, si creano le macro per i pin dei vari pulsanti e si dichiarano i dati di accesso alla WLAN e l'indirizzo IP del ricevitore. Vengono poi dichiarate le variabili globali per la calibrazione degli assi del joystick, per il comando da inviare e per l'implementazione del messaggio di conferma.
In setup(), il microcontrollore viene collegato alla WLAN, gli assi del joystick vengono calibrati e gli ingressi digitali vengono definiti.
Nel loop(), la posizione del joystick viene prima letta come valore analogico e memorizzata nelle variabili corrispondenti.
Segue un controllo, che ripristina lo stato di trasmissione dopo un timeout di 10 secondi.
L'algoritmo di valutazione della direzione del movimento controlla se i valori degli assi superano un valore limite di 50. Ciò è necessario perché sia i potenziometri, utilizzati per leggere la posizione degli assi, sia i convertitori analogico-digitali (ADC) si muovono minimamente intorno al valore zero anche in posizione zero (la cosiddetta deriva).
Se un asse supera il valore di soglia, i valori della magnitudo dei due assi vengono confrontati tra loro. In questo modo è possibile determinare l'asse che si è spostato di più e che quindi è direzionale.
Inoltre, gli ingressi digitali vengono letti e il comando corrispondente (designazione del pulsante) viene salvato nella variabile msg quando viene premuto un pulsante.
Infine, il comando viene inviato al robot come pacchetto UDP.
Quando il ricevitore ha eseguito il comando, invia una conferma al mittente. Se questa viene ricevuta, la variabile stato di nuovo in piedi vero che rende possibile un nuovo invio.
È possibile scaricare l'intero programma qui scaricare.
Caricare questo con i dati di accesso WLAN e l'indirizzo IP corretti sull'ESP32 D1 R32 selezionando la porta corretta.
Conclusione
In questo post avete imparato a controllare il robot bionico Spider utilizzando il protocollo di comunicazione UDP.
Naturalmente, questo progetto pone solo le basi per le vostre estensioni e modifiche. Ad esempio, è possibile utilizzare un microcontrollore in modalità AP per evitare di dover ricorrere a un router esterno.
Così, oltre al protocollo di comunicazione ESPnow con UDP, avete imparato a conoscere un protocollo molto diffuso, utilizzato in molte applicazioni time-critical.
Divertitevi a ricostruire :)






