Costruite il robot Devastator e scoprite il mondo dei sensori, MCU, del software e del controllo motori divertendovi
Contributo di Editori nordamericani di DigiKey
2017-10-18
Costruire un robot multifunzione da un kit è un ottimo modo per iniziare a definirsi un maker, in quanto dà la possibilità di acquisire conoscenze in molti campi correlati: microcontroller, sensori, motori, sviluppo software e altri. Inoltre, esiste una vasta scelta di kit per robot, componenti aggiuntivi e assistenza online sia per i principianti che per i maker esperti.
Questo articolo illustra alcuni passaggi pratici, questioni e possibili aggiornamenti da prendere in considerazione quando si realizza un robot basato sulla piattaforma tank Devastator di DF Robot (Figura 1).

Figura 1: Devastator di DFRobot è una piattaforma versatile che permette a progettisti e maker di acquisire un'ampia gamma di competenze elettroniche e software. (Immagine per gentile concessione di DFRobot)
Perché il Devastator? È robusto e durevole, con una struttura in alluminio e due motoriduttori c.c. a spazzole in metallo. È in grado di gestire un carico fino a 3 kg e presenta diversi fori di montaggio per sensori, servomotori, bracci robotici e altri accessori; inoltre è compatibile con tutte le schede microcontroller maker-friendly più rinomate.
Realizzazione di un sistema robotico completo
Il robot viene fornito con telaio, ruote, battistrada e due motori, mentre gli altri componenti sono a scelta del progettista. Un sistema completo richiede una scheda microcontroller, una scheda per driver motori e uno strumento per immettere i comandi. Componenti aggiuntivi opzionali possono includere elementi quali braccio robotico, videocamera o un sistema anti-collisione per offrire un determinato livello di funzionamento autonomo.
Scelta di una piattaforma di microcontroller
Il robot Devastator è compatibile con diverse rinomate piattaforme di microcontroller. La piattaforma di sviluppo open-source Arduino, nata in Italia nel 2003, viene ampiamente utilizzata sia dai progettisti neofiti che da quelli professionisti. Arduino Uno (Figura 2) utilizza il microcontroller RISC a 8 bit ATmega328P di Microchip Technology (ex Atmel).
Altre caratteristiche standard comprendono una porta USB controllata da un microcontroller ATmega16U2 preprogrammato, ingressi e uscite digitali, una porta di ingresso analogico e una porta di programmazione seriale in-circuit (ICSP) per gli aggiornamenti software. La più recente Arduino Due aggiorna il core su un processore ARM® Cortex®-M3 a 32 bit. Esso viene utilizzato anche nella scheda controller di DFRobot, come illustrato sotto, che unisce la compatibilità Arduino con il driver per motori.

Figura 2: Arduino Uno è una scelta diffusa per progetti di maker ed è basata sul microcontroller RISC a 8 bit ATmega328P di Microchip Technology. (Immagine per gentile concessione di Arduino)
Il computer monoscheda Raspberry Pi è stato sviluppato inizialmente per l'insegnamento dell'informatica base nelle scuole, per diventare poi molto rinomato all'interno della comunità dei maker. L'ultimo Raspberry Pi 3 è basato su una CPU quad-core a 64 bit e 1,2 GHz di Broadcom. Include una LAN wireless 802.11n, Bluetooth 4.1 e Bluetooth low energy (BLE). Ha inoltre 1 GB di RAM, una slot per schede micro SD, 4 porte USB, porte HDMI e Ethernet, un'interfaccia foto/videocamera, 40 pin GPIO e altre interfacce specializzate.
I guru Windows che vogliono sfruttare la loro esperienza possono iniziare con la scheda controller LattePanda compatibile con Devastator, in quanto viene fornita con una edizione completa di Windows 10 installata e attivata. La scheda utilizza una CPU quad-core a 1,8 GHz in bundle con un coprocessore, ATmega32u4 a 8 bit di Microchip, per la compatibilità con Arduino.
La scheda controller LattePanda viene fornita con 2 GB di RAM DDR3L e fino a 32 GB di storage, una porta USB 3.0 e due porte USB 2.0, Wi-Fi, Bluetooth 4.0, un coprocessore e un totale di 22 GPIO suddivisi tra i due processori.
Controllo dei motori
Una volta deciso il core del microcontroller, il passaggio successivo consiste nel selezionare una scheda di controllo motori. Il Devastator include due motori da 6 V che operano a 160 giri/min (in assenza di carico). Ognuno ha una coppia di uscita massima di 0,8 kgf/cm (0,078453 Nm) e una corrente di stallo massima di 2,8 A.
Il Raspberry Pi necessita di una scheda di espansione plug-in per funzioni robotiche specifiche, tuttavia la scheda Romeo BLE Quad DFR0398 di DFRobot fornisce una opzione monoscheda per gli amanti di Arduino, contenente sia il microcontroller che i driver per motori (Figura 3). La scheda offre un core più potente rispetto ai derivati di UNO, pur mantenendo la compatibilità con il software Arduino.
Il microcontroller è il modello STM32F103RET6 di STMicroelectronics: questo dispositivo usa il core ARM® Cortex®-M3 a 32 bit e 72 MHz e comprende 512 kilobyte di memoria flash, un blocco a modulazione della larghezza di impulso (PWM) di controllo motori, 16 canali di conversione analogico/digitale (ADC) a 12 bit e due canali di conversione digitale/analogico (DAC) a 12 bit.

Figura 3: La scheda Romeo BLE Quad DFR0398 è una scheda di controllo robot compatibile con Arduino con funzionalità Bluetooth e driver per quattro motori. (Immagine per gentile concessione di DFRobot)
I driver per motori sono per gentile concessione di due dispositivi HR8833 di Microsemi. Ogni driver MOSFET include due driver a ponte H per il controllo bidirezionale dei motori del Devastator. La scheda Romeo BLE Quad include quattro interfacce encoder e integra anche il transceiver RF CC2540 di Texas Instruments per la connettività wireless Bluetooth 4.0.
Aggiunta di potenza
Le schede microcontroller possono operare con i 5 volt del connettore USB, tuttavia i motori richiedono una sorgente portatile (es. una batteria) con tensione e corrente più elevate. Diversi maker adattano pacchi batteria ricaricabili poco costosi progettati in origine per le macchine radiocomandate (RC). Normalmente essi hanno una tensione di 7 volt o più e capacità superiori a 5000 mAh; inoltre è molto facile sostituire il connettore originale. L'ingresso di alimentazione servo della Romeo BLE Quad può accettare c.c. da 7 fino a 10 volt.
Programmazione della scheda microcontroller
Installare il software sulla scheda microcontroller è facile, diversi fornitori maker-friendly inoltre offrono istruzioni passo-passo sui loro siti web.
Per il sistema operativo (OS) la scelta varia a seconda della piattaforma. La scheda LattePanda viene fornita con Windows già installato. Raspberry Pi offre molteplici opzioni, tra cui Windows IoT Core, nonché varie distribuzioni Linux. Raspbian, una variante dell'OS open-source Debian Linux, è la scelta più comune tra i maker.
Arduino invece non utilizza un OS tradizionale. Le piattaforme Arduino usano un esecutivo ciclico che esegue loop ripetitivi attraverso una sequenza codificata. Gli sviluppatori scrivono e installano il codice con l'ambiente di sviluppo integrato (IDE) open-source di Arduino. Si tratta di una applicazione multipiattaforma scritta in Java e disponibile per macchine host Windows, Mac OS X e Linux. L'ambiente Arduino ha una terminologia propria per diversi elementi. Ad esempio una scheda plug-in compatibile con Arduino è uno "shield", un modulo software è uno "sketch".
Programmazione con la scheda Romeo BLE Quad
Dato che la scheda Romeo BLE Quad è una soluzione per robot monoscheda con periferiche avanzate, verrà usata per la discussione a seguire.
Per iniziare scegliere l'OS preferito per la macchina host e scaricare l'IDE apposito dal sito web Arduino. Sebbene la Romeo BLE Quad non utilizzi lo stesso processore ATmega328 dell'hardware Arduino standard, il processo di sviluppo software è simile, in quanto la scheda è compatibile con l'IDE di Arduino.
L'IDE accetta più di venticinque schede di diversi produttori, la Romeo BLE Quad però non è tra queste. La Romeo BLE Quad è una versione di un'altra scheda di DFRobot, la Bluno M3, con l'aggiunta di driver per motori. Per configurare l'IDE è necessario prima scaricare il file Bluno M3 dal sito open-source GitHub.
Per installare il file:
- Aprire l'IDE di Arduino e andare su File -> Preferenze. Copiare il link GitHub nella casella "Additional Boards Manager URLs", poi fare clic su "OK".
- Andare su Strumenti -> Scheda -> Gestione scheda, inserire "Bluno M3" nella casella di ricerca e fare clic su "Install". Viene scaricato il file di configurazione.
- Selezionare la scheda Bluno M3 dal menu Strumenti -> Scheda.
Il sistema ora è pronto per lo sviluppo dell'applicazione. L'IDE standard supporta la programmazione in C e C++ e include diversi esempi di codice. Gli sviluppatori utilizzano l'editor di testo per scrivere sketch (programmi) (Figura 4).

Figura 4: Schermata dell'IDE di Arduino e dell'editor di testo: un nuovo programma include le due funzioni richieste. (Immagine per gentile concessione di Arduino)
L'IDE esegue poi il debug del codice, lo compila in modo incrociato e carica il risultato sulla scheda microcontroller tramite la porta di programmazione seriale in-circuit (ICSP). La scheda Romeo BLE Quad può essere programmata anche tramite la porta Bluetooth.
L'editor di testo inizia un nuovo programma con due funzioni richieste precaricate, pronto per aggiungere il codice: la sezione setup() configura le condizioni iniziali ed effettua l'esecuzione una volta, la sezione loop() poi opera in continuo.
Per il funzionamento dei motori del Devastator con la scheda Romeo BLE Quad devono essere installate due librerie Arduino: Motor.h e PID_v1.h.
Il codice per il motore inizia richiedendo queste due librerie come file di intestazione tramite una dichiarazione di inclusione, definisce i pin I/O e alcune costanti iniziali, poi configura i motori nella sezione setup() (Listato 1).
Copy
/*!
* @file RemeoBLEQuadDrive.ino
* @brief RemeoBLEQuadDrive.ino PID control system of DC motor
*
* RemeoBLEQuadDrive.ino Use PID control 4 way DC motor direction and speed
*
* @author linfeng(490289303@qq.com)
* @version V1.0
* @date 2016-4-14
*/
#include "PID_v1.h"
#include "Motor.h"
Motor motor[4];
int motorSpeed[4] = {-200,200,400,-400};/*Set 4 speed motor*/
/* Speed=motorSpeed/(32*(setSampleTime/1000))(r/s) */
const int motorDirPin[4][2] = { //Forward, Backward
/*Motor-driven IO ports*/
{8,23},
{7,9},
{24,14},
{4,25}
};
//const double motorPidParam[3]={0.6,1,0.03};/*DC MOTOR,Yellow??180degree*/
//const double motorPidParam[3]={1.5,1,0.05};/*DC MOTOR,Yellow??90 degree*/
const double motorPidParam[3]={1.2,0.8,0.05};/*Encoder V1.0,160rd/min ;19500/min; 32:1,Kr=3.5*/
void setup( void )
{
Serial1.begin(115200);
for(int i=0;i<4;i++){
motor[i].setPid(motorPidParam[0],motorPidParam[1],motorPidParam[2]);/*Tuning PID parameters*/
motor[i].setPin(motorDirPin[i][0],motorDirPin[i][1]);/*Configure IO ports*/
motor[i].setSampleTime(100);/*Sets the sampling period*/
motor[i].setChannel(i);/*Sets the motor channel */
motor[i].ready();/*Motor enable*/
motor[i].setSpeed(motorSpeed[i]);/*Set motor speed*/
}
}
void loop( void )
{
for(int i = 0; i < 4; i++){
motor[i].calibrate();/*motor PID calibrate*/
}
}
Listato 1: Questo esempio di codice C configura e controlla quattro motori Arduino per la scheda Romeo BLE Quad. (Codice per gentile concessione di DFRobot)
Le sezioni setup() e loop() configurano e controllano quattro canali motore. Dato che il telaio del Devastator ne richiede solo due, i restanti sono disponibili per accessori come il braccio robotico, come illustrato sotto.
Controllo wireless del robot
È possibile inserire un cavo USB nella scheda di controllo e comandare il robot in questo modo, tuttavia è molto più comodo controllarlo wireless tramite Wi-Fi o Bluetooth e uno smartphone, un tablet o un computer. Come già illustrato in precedenza, la scheda Romeo BLE Quad include lo stesso modulo Bluetooth 4.0 della piattaforma Bluno. In GitHub sono disponibili app open-source per iOS 7.0+ e Android 4.3+. Tramite queste app il progettista può controllare il robot e caricare un nuovo sketch a distanza.
Aggiornamento del progetto base
Dopo aver assemblato il progetto base, un passaggio successivo molto diffuso consiste nell'aggiungere accessori in modo che il robot possa eseguire alcuni compiti utili (Figura 5). Ecco alcuni aggiornamenti da provare.

Figura 5: Il sensore a ultrasuoni URM37 v4.0 di DFRobot (a sinistra) e il modulo foto/videocamera 397 di Adafruit (a destra) sono due accessori tra i più diffusi (immagini per gentile concessione di DFRobot e Adafruit)
Una caratteristica molto apprezzata in un robot mobile è la possibilità di rilevare ed evitare ostacoli. Il sensore a ultrasuoni URM37 v4.0 di DFRobot emette una tensione proporzionale alla distanza ed è compatibile sia con Arduino che con Raspberry Pi. Il sensore rileva la presenza di un oggetto o di una parete, il codice poi esegue una svolta casuale e il robot prosegue nella nuova direzione.
Un altro aggiornamento molto diffuso consiste nel trasformare il robot in una foto/videocamera mobile. Il modulo foto/videocamera 397 di Adafruit è in grado di catturare immagini fisse o video. Grazie al sensore di immagine CMOS, la foto/videocamera può catturare una immagine da 640 x 480 pixel a trenta fotogrammi al secondo (fps); inoltre è dotata di una caratteristica di rilevamento del movimento.
Consideriamo di montare la foto/videocamera su un braccio robotico, ad esempio il gruppo tilt/pan DF05BB (Figura 6). Il kit comprende due staffe e due servomotori DF05 ed è progettato per il montaggio orizzontale.

Figura 6: Il gruppo tilt/pan DF05BB di DFRobot viene fornito con due servomotori e due staffe. (Immagine per gentile concessione di DFRobot)
Assemblaggio di tutti i componenti
Un robot Devastator completo comprende il telaio, la scheda controller, una scheda di espansione e un sensore a ultrasuoni (Figura 7). Le due schede sono posizionate per comodità sulla piattaforma superiore, tuttavia è presente anche una piattaforma di montaggio inferiore se si desidera una foto/videocamera mobile con montaggio dall'alto.

Figura 7: Questo esempio di progetto completo include il telaio del Devastator, la scheda controller, una scheda di espansione di controllo motori e un sensore a ultrasuoni. (Immagine per gentile concessione di DFRobot)
Conclusione
La piattaforma di DFRobot è una eccellente piattaforma basata sui maker che consente sia ai progettisti che ai maker di esplorare lo sviluppo software, la funzionalità dei microcontroller, le opzioni sensore e il controllo motori in un ambiente divertente e ben supportato.
Inoltre sul sito web di DigiKey sono disponibili diverse risorse. Ad esempio qui potete scoprire come programmare la piattaforma Arduino. DigiKey inoltre offre un aiuto per la programmazione del Raspberry Pi con Python, il linguaggio Pi più diffuso. Tutti i prodotti illustrati sopra sono provvisti di ampia documentazione, note applicative e tutorial.
Una volta completato questo progetto se ne possono provare poi molti altri. Maker.io è dedicato al movimento maker, con decine di progetti in evidenza, risorse, fonti di finanziamento e molto altro ancora.
Esonero della responsabilità: le opinioni, le convinzioni e i punti di vista espressi dai vari autori e/o dai partecipanti al forum su questo sito Web non riflettono necessariamente le opinioni, le convinzioni e i punti di vista di DigiKey o le sue politiche.




