lunedì 6 luglio 2015

Arduino accende il Samsung Navibot

Ciao a tutti,
con questo post vorrei spiegare come ho creato questo piccolo sketch per Arduino per accendere il Samsung Navibot tramite infrarossi.
Un led emettitore infrarosso va collegato alla porta PWM n.3 di Arduino.
Un segnale che corrisponde al tasto PLAY del telecomando del Navibot viene inviato ogni 5 secondi, in contemporanea il led on board di Arduino si illumina per avvisare quando viene emesso il segnale.

/*
 * Questa demo serve per avviare il robot Navibot tramite infrarossi
 * Un led infrarosso deve essere collegato ad Arduino PWM al pin 3.
 */

#include <IRremote.h>

IRsend irsend;

void setup()
{
  pinMode(13, OUTPUT);
  Serial.begin(9600);
}


void loop() {
  delay(4500);
  digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(500);
  digitalWrite(13, LOW);    // turn the LED off by making the voltage LOW
  unsigned int Auto[68] = {4590, 4590, 590, 1690, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590,590, 590, 1690, 590, 1690, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 1690, 590, 590, 590, 1690, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, 1690, 590, 590, 590, 1690, 590, 1690, 590, 1690, 590, 1690, 590, 1690, 590, 1690, 590, 65750};
      irsend.sendRaw(Auto, 68, 38);
}

giovedì 2 luglio 2015

Arduino su internet! Parte 2



Con il seguente codice posso collegare in automatico Arduino (opportunamente collegato al modulo ESP8266

come visto in precedenza) alla mia rete wifi di casa (da cambiare il SSID e la password):

#include <SoftwareSerial.h>
SoftwareSerial softSerial(2, 3); // RX, TX
String WSSID = "xxxxxxxxxxxxxxxxx";
String WPASS = "yyyyyyyyyyyyyyyyy";
void setup() {
connetti();
}


void loop(){
}

void connetti() {

softSerial.begin(9600);
Serial.begin(9600);
softSerial.println("AT");
delay(500);
softSerial.println("AT+RST");
delay(500);

softSerial.println( "AT+CWJAP=\""+WSSID+"\",\""+WPASS+"\"");
delay(1000);

}

Con questo listato si connette automaticamente ad internet grazie alla funzione DHCP del router, quindi l'indirizzo IP lo dirà il router.

Poichè al momento non ho trovato come fare per inviare via seriale l'indirizzo IP, ho impostato il mio router che dia un indirizzo statico ad arduino...


In questo modo si può pingare l'indirizzo di arduino, ma se sul browser si digita l'indirizzo di arduino al momento non si ottengono risposte...a questo miro nella prossima puntata!


PS: nel caso si volesse specificare per qualche motivo l'indirizzo ip, bisogna dare il seguente comando:AT+CIPSTA="192.168.92.82","192.168.92.254","255.255.255.0"prima di AT+CWJAP...

Arduino su internet! Parte 1

Ciao a tutti, in questo post illustrerò i miei primi passi per poter connettere Arduino a internet utilizzando il modulo ESP8266, dal costo esiguo di 5 euro...
Il modulo attualmente in mio possesso è questo ed è la versione 01, sono in attesa del modello 12:

La sua piedinatura è questa:


Dunque...se vogliamo collegarlo a Arduino ricordiamoci SEMPRE che Arduino lavora a 5v mentre il modulo purtroppo lavora a 3.3v, per cui non si può collegare direttamente Arduino all'ESP, pena, a lungo andare, la bruciatura del modulo stesso.
Per cui, per collegare Arduino al modulo ESP occorre utilizzare una conversione dei segnali da 5v a 3.3v, il metodo che ho utilizzato è quello dei DIODI 1N4148:





Bene, una volta effettuati gli opportuni collegamenti (la resistenza da 10k per me era obbligatoria), vado a caricare il seguente sketch, tramite l'interfaccia di Arduino:



#include <SoftwareSerial.h>
SoftwareSerial ESPserial(10, 11); // RX | TX
void setup() 
{
    Serial.begin(9600);     // communication with the host computer
    //while (!Serial)   { ; }
    // Start the software serial for communication with the ESP8266
    ESPserial.begin(9600);  
    Serial.println("");
    Serial.println("Remember to to set Both NL & CR in the serial monitor.");
    Serial.println("Ready");
    Serial.println("");    
}
void loop() 
{
    // listen for communication from the ESP8266 and then write it to the serial monitor
    if ( ESPserial.available() )   {  Serial.write( ESPserial.read() );  }
    // listen for user input and send it to the ESP8266
    if ( Serial.available() )       {  ESPserial.write( Serial.read() );  }
}


Una volta caricato su Arduino facciamo un reset di sicurezza e facciamo partire tutto.
Apriamo il monitor seriale e da li inviamo i comandi AT che vogliamo...
I comandi di prova che ho inviato sono:
AT (con risposta OK)
AT+RST(con risposta OK, più una stringa di caratteri "casuali")
AT+GMR(per sapere il numero di firmware, risposta 00200.9.4)

e ora...per quello che è stato costruito!
AT+CWLAP(restituisce l'elenco delle reti percepite)
AT+CWJAP="SSID","PASSWORD"(sostituendo SSID e PASSWORD con le proprie si connette alla rete)
AT+CIFSR(restituisce indirizzo IP e MAC address)

Una parte dei comandi è qui:
ESP8266ATCommandsSet

Il mio prossimo passo sarà far collegare Arduino alla rete restituendo una pagina HTML!
A presto, spero!