ultimo aggiornamento 3 ottobre 2015 |
|
Programmi di gestione.
Per la gestione del robot tramite la rete Wi-FI è
previsto l’utilizzo di un’interfaccia che potrà essere caricata su un PC o su un
Tablet.
L’interfaccia è al momento in via di completamento: è composta da una normale
pagina web che viene caricata all’interno della memoria della scheda Arduino Yun.
Questa pagina potrà essere richiamata direttamente tramite l’indirizzo della
scheda se questa è collegata senza collegato senza access point ip di default
http://192.168.240.1/sd/robot/ index.html
oppure se collegato con access point con il comando
http://arduino.local/sd/robot/ index.html
Il video stream potrà essere visto all’indirizzo:
http://arduino.local:8080/stream.html
La pagina principale è formata da due frame in cui il primo mostrerà le immagini
riprese dalla webcam, mentre nel secondo è presente l’interfaccia di comando.
Per la gestione dei comandi è utilizzata una libreria javascript Open Source
chiamata Zepto , questa è rilasciata con licenza MIT ed è largamente compatibile
con jQuery e destinata ai browser moderni e in particolare a quelli dei
dispositivi mobili e proprio per questo motivo è piccolissima (5-10 kb) anche
rispetto a jQuery.
Zepto utilizza le stesse API di jQuery in modo che gli sviluppatori possano
utilizzarla senza dover imparare nuove istruzioni, per questo motivo insieme
alle pagine HTML sarà necessario inserire anche il file: “zepto.min.js”.
Il listato del programma di gestione sarà inserito in un futuro aggiornamento, in
questa fase si procederà solamente a testare le varie parti.
Per quanto riguarda la programmazione di Arduino Yun utilizzeremo il relativo IDE, che in questo momento è disponibile nella versione 1.6.5.
Una volta installato, basterà selezionare Arduino Yún dal menu Strumenti> Board
Per i dettagli, vedere
reference
e tutorials.
L'ATmega32U4 su Arduino Yún è fornito con un bootloader che permette di caricare
un nuovo codice senza l'uso di un programmatore hardware esterno.
È anche possibile programmarlo senza filo utilizzando il collegamento Wi-Fi.
Per verificare il funzionamento del programma potremmo caricare
RoboYun_test.ino, che permette di testare tutte le varie parti.
/*#################################################################### FILE: RoboYun_test.ino VERSION: 1.0 Descrizione: Programma per testare le varie parti del robot RoboYun Ultima modifica il 18/7/2015 Applicazione realizzata da Adriano Gandolfo Sito https://www.adrirobot.it Blog http://it.emcelettronica.com/author/adrirobot This example code is in the public domain. #################################################################### Porte utilizzate: D2 - Relè 1 D3 - IN_1 (Infineon) D4 - Relè 2 D5 - Servo TILT D6 - Servo PAN D7 - Sensore DHT11 D8 - Faro D9 - Led blu D11 - IN_2 (Infineon) D12 - INH_1 (Infineon) D13 - INH_2 (Infineon) A0 - IS_1 (Infineon) A1 - IS_2 (Infineon */ #include <Servo.h> //Libreria gestione servomotori #include "DHT.h" //Libreria gestione sensore #include <Console.h> //Libreria #define DHTTYPE DHT11 // Definisce il tipo di senore DHT 11 #define DHTPIN 7 // Definisce il pin a cui è collegato DHT dht(DHTPIN, DHTTYPE);// Inizializza il sensore DHT11 Servo panservo; Servo tiltservo; const int rele_1 = 2; const int rele_2 = 4; const int fari = 8; const int led_1 = 9; const int vel = 120; // Assegnazione dei pin per il primo half-bridge const int IS_1 = A0; // current sense and diagnostics const int IN_1 = 3; // input (PWM) const int INH_1 = 12; // inhibit (low = sleep) // Assegnazione dei pin per il secondo half-bridge const int IS_2 = A1; // current sense and diagnostics const int IN_2 = 11; // input (PWM) const int INH_2 = 13; // inhibit (low = sleep) void setup() { // initializa la comunicazione seriael Bridge.begin(); Console.begin(); // Gestione servo tiltservo.attach (5); // Collega il servo Tilt alla porta D5 panservo.attach (6); //Collega il servo Pan alla porta D6 tiltservo.write(90); //tilt servo al centro panservo.write(90); // panservo al centro // Gestione relè pinMode(rele_1, OUTPUT); digitalWrite(rele_1, LOW); pinMode(rele_2, OUTPUT); digitalWrite(rele_2, LOW); // Impostazione stato input/output dei pin pinMode(IS_1, INPUT); pinMode(IN_1, OUTPUT); pinMode(INH_1, OUTPUT); pinMode(IS_2, INPUT); pinMode(IN_2, OUTPUT); pinMode(INH_2, OUTPUT); pinMode(fari, OUTPUT); pinMode(led_1, OUTPUT); // Impostazione pin gestione motori analogWrite(IN_1, 0); // set motor speed to 0 digitalWrite(INH_1, HIGH); // enable OUT1 analogWrite(IN_2, 0); // set motor speed to 0 digitalWrite(INH_2, HIGH); // enable OUT2 digitalWrite(led_1, HIGH); // robot operativo while (!Console) { ; // Attesa per la connessione con la Console. } Console.println("Connessione stabilita!!!!"); digitalWrite(led_1, HIGH); } void loop() { //Messaggio iniziale Console.println(""); Console.println("TEST FUNZIONAMENTO RobotYun"); Console.println("By Adriano Gandolfo"); Console.println(""); //Test funzionamento fari Console.println("TEST FUNZIONAMENTO FARI"); Console.println("Fari accesi"); digitalWrite(fari, HIGH); delay (1000); Console.println("Fari spenti"); digitalWrite(fari, LOW); delay (1000); Console.println(""); //Test funzionamento led blu Console.println("TEST FUNZIONAMENTO LED BLU"); Console.println("Led BLU acceso"); digitalWrite(led_1, HIGH); delay (1000); Console.println("Led BLU spento"); digitalWrite(led_1, LOW); delay (1000); // Test del servo Pan Console.println(""); Console.println("TEST FUNZIONAMENTO SERVO MOVIMENTO PAN"); panservo.write(45); delay(1000); panservo.write(0); delay(1000); panservo.write(90); delay(1000); panservo.write(135); delay(1000); panservo.write(160); delay(1000); panservo.write(90); delay(1000); // Test del servo TILT Console.println(""); Console.println("TEST FUNZIONAMENTO SERVO MOVIMENTO TILT"); tiltservo.write(45); delay(1000); tiltservo.write(0); delay(1000); tiltservo.write(90); delay(1000); tiltservo.write(135); delay(1000); tiltservo.write(160); delay(1000); tiltservo.write(90); delay(1000); // Test sensore float t = dht.readTemperature(); float h = dht.readHumidity(); Console.println(""); Console.println ("TEST SENSORE TEMPERATURA/UMIDITA'"); Console.print ("Temperatura :"); Console.print (t); Console.println (" C"); Console.print ("Umidita' :"); Console.print (h); Console.println (" %"); // Test funzionamento motori // Robot AVANTI Console.println(""); Console.println ("TEST FUNZIONAMENTO MOTORI"); Console.println("Robot Avanti"); avanti(vel); delay(2000); // Robot INDIETRO Console.println("Robot Indietro"); indietro(vel); delay(2000); // Robot a DESTRA Console.println("Robot rotazione oraria"); destra(vel); delay(2000); // Robot a Sinistra Console.println("Robot rotazione antioraria"); sinistra(vel); delay(2000); //Robot fermo Console.println("Robot fermo"); fermo(); delay(5000); } //Routine void avanti(int motorSpeed) { digitalWrite(rele_1, HIGH); digitalWrite(rele_2, HIGH); delay (100); analogWrite(IN_1, motorSpeed); analogWrite(IN_2, motorSpeed); } void indietro(int motorSpeed) { digitalWrite(rele_1, LOW); digitalWrite(rele_2, LOW); delay (100); analogWrite(IN_1, motorSpeed); analogWrite(IN_2, motorSpeed); } void destra(int motorSpeed) { digitalWrite(rele_1, HIGH); digitalWrite(rele_2, LOW); delay (100); analogWrite(IN_1, motorSpeed); analogWrite(IN_2, motorSpeed); } void sinistra (int motorSpeed) { digitalWrite(rele_1, LOW); digitalWrite(rele_2, HIGH); delay (100); analogWrite(IN_1, motorSpeed); analogWrite(IN_2, motorSpeed); } void fermo() { digitalWrite(rele_1, LOW); digitalWrite(rele_2, LOW); analogWrite(IN_1, 0); analogWrite(IN_2, 0); } |
Elenco revisioni | |
3/10/2015 |
Emissione preliminare |