Finalitzat el taller d’iniciació a l’Arduino – TECNO@4weeks’15 Solsona

Cal dir que m’ho he passat molt i molt bé i he après molt també tot dinamitzant el taller d’iniciació a l’Arduino de la Tecno@4weeks’15. El taller, que tot just ha finalitzat avui, ha estat organitzat pel Refugi Tecnològic d’Empresaris del Solsonès. L’Enric i jo mateix n’hem estat els professors.

L’objectiu del curs ha consistit a implementar la majoria d’experiments que conté l’Arduino Starter Kit , encara que n’hi hem afegit algun altre i n’hem proposat també algun de propi. Adjunto, en aquest apunt, alguns videos.

 

 

 

 

Monitoritzant l’estat d’un host amb Arduino

Monitoritzem l’estat d’un servidor remot a través d’un led connectat a una placa Arduino. La idea és molt senzilla: Si el servidor remot deixa de contestar a ping’s, s’encen un led.

monitoringwitharduino

 

 

 

 

 

 

 

 

 

Per a implementar-ho, he col·locat solament un led a la placa Arduino (pin 13) i he escrit el programa següent:

/*****************************
* Programa per a Arduino
*
* El programa escolta pel port serie
*
* Si rebem una O --> encenem led
* Si rebem una C --> tanquem led
*/
// Pin en el qual hi ha connectat el led
int outPin = 13;

//Estat del led
int estat = LOW;

//Valor rebut pel port serie
int valor;

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

void loop()
{
if (Serial.available())
{
valor = Serial.read();
Serial.println(valor);
if (valor == 'O') estat = HIGH;
else if (valor == 'C') estat = LOW;
}

// Establim estat del pin
digitalWrite(outPin, estat);
}

Ara, escriurem un altre programa que s’encarregarà d’investigar si un servidor remot contesta o no a ping’s i, en funció de la resposta, trametrà una C si obté resposta, i una O en cas contrari. El codi, aquesta vegada escrit en Phyton, és el següent:

Nota: Atenció amb la llibreria pyserial, l’he hagut d’instal·lar abans.

#!/usr/bin/python2.7
import serial, sys, time, os

SERIALPORT = "/dev/ttyUSB0"

# Set up serial port
try:
sys.stdout.write("Obrint port serie\n")
ser = serial.Serial(SERIALPORT, 9600)
except serial.SerialException:
sys.stdout.write("Error obrint el port")
sys.exit

host = "google.com"

while (1):

response = os.system("ping -c 1 " + host + " > /dev/null")
if response == 0:
# Hi ha resposta de ping: No hi ha problemes
ser.write('C')
else:
# Hi ha resposta de ping: Problemes
ser.write('O')
time.sleep(2)

# Tanquem port serie
ser.close()

Fet! Quan s’encengui el led és que tenim problemes a la xarxa!

Mesura de la temperatura amb l’Arduino i el sensor LM35DT

Aquesta tarda he estat provant el sensor de temperatura LM35DT amb la placa Arduino, a veure si en puc aprendre prou com per aportar alguna cosa de profit al projecte SonCube.

L’esquema de connexió d’aquest sensor és molt senzill:

– Un cable connectat al Power 5V i un altre al GND de la placa.

– Un altre a l’entrada analògica 0.

Atenció però a com connecteu tots els pins. Assegureu-vos que llegiu atentament el datasheet del vostre sensor.

tempLM35DT

 

 

 

 

 

 

 

 
El codi que he utilitzat és aquest (seguint aquestes directrius per tal d’obtenir més resolució).

float tempC;
int reading;
int tempPin = 0;

void setup()
{
analogReference(INTERNAL);
Serial.begin(9600);
}

void loop()
{
reading = analogRead(tempPin);
tempC = reading / 9.31;
Serial.print(tempC);
Serial.print(" graus \n");
  delay(1000);
}

I obtenim això:

resLM35DT