Persistent of vision display with Arduino – TdR Marcel Jané

Trameto en aquest apunt informació sobre el treball de recerca d’en Marcel Jané, alumne de 2n de Batxillerat de l’Escola Arrels de Solsona i que fou tutoritzat per mi mateix.

L’objectiu del projecte consistia en implementar un artefacte que mostrés un “display” amb persistència de la visió fent servir leds senzills i una placa Arduino. El suport que aguanta la placa fou construït per ell mateix emprant una impressora 3D:

tdrMarcel1

tdrMarcel2

Aquí una demostració del seu funcionament:


Codi del programa per Arduino.

Enllaç al treball complet.

 

 

 

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.

 

 

 

 

Comentari sobre el sensor d’ozó #SonCube

Desitjava escriure el comentari següent respecte al sensor d’O3 que integrarem en la sonda SonCube.

Resulta que, examinant, el datasheet, observem que aquest sensor solament és sensible en el rang de 5 a 100 ppm, però resulta que aquests valors, son molt alts per la troposfera.

grafo3datasheet

Examinant els valors de contaminació d’ara mateix de la Xarxa de Vigilància i Previsió de la Contaminació Atmosfèrica de Catalunya, observem que els valors d’ozó son de l’ordre de 100micrograms / m3 que, convertint-los a ppm, no arriba ni al 0.05 ppm.

Per tant doncs, el nostre sensor ens haurà de permetre verificar aquesta gràfica teòrica, però a partir dels 5ppm.

 

Ozone_vs_Altitude

 

 

 

Sensor de metà per al projecte SonCube

Indiquem en aquest apunt com hem programat el sensor de CH4 per tal d’incloure’l en la sonda SonCube.

El meu company Enric ha implementat el circuit tal i com s’indica en el datasheet . En aquesta imatge s’hi veu també el sensor de gas d’ozó (ubicat a la dreta) però, en aquest apunt, em centro solament en el de metà ( es tracta del sensor de l’esquerra).

SonCubeMQ4
El principal problema que tenim és que no sabem com calibrar el sensor i és que no disposem de cap altre mecanisme que ens indiqui la quantitat de metà que hi ha ara mateix en el nostre entorn així que, malauradament, hem de fer una suposició. De totes maneres, serà interessant veure com fluctuen els valors a mesura que la sonda ascedeix a l’estratosfera, malgrat els valors no siguin reals al 100%.

Aquesta és la gràfica que presenta el datasheet que indica la quantitat de metà que hi ha a l’atmosfera ( veiem que ho presenta en ppm versus una relació de resistències Rs/Ro).

 

SonCubeMQ4DataSheet

 

Considerem una Ro fixa i una Rs que obtenim a partir de la lectura del sensor a través del pin analògic 0.

En el codi de l’Arduino donem més detalls:

void setup() {
  // initialize serial communication at 9600 bits per second:
  Serial.begin(9600);
}
// the loop routine runs over and over again forever:
void loop() {
  //Obtenim el voltatge (valor entre 0V i 5V) del pin 0 (valor analògic de 10bits).
  int ch4value = analogRead(0);  
  float Vrl = 5.0 * analogRead(ch4value) / 1023
  //Resistència de càrrega de 20K.
  float Rs = 20000 * ( 5.0 - Vrl) / Vrl;
  //Aquí hi ha la suposició: Suposem que estem a 1000ppm.
  //Si és així, aquesta és la resistència que obtenim.
  float Ro =  58740;
  //Mostrem per pantalla el valor de Rs/Ro.  
  Serial.print("Rs/Ro: ");  
  Serial.print(Rs/Ro);
  delay ( 5000 );
}

El circuit, tal i com el tenim muntat, sembla que funciona i és que, abocant el gas d’un encenedor prop del sensor, fa que s’obtingui una relació Rs/Ro més baixa, amb la qual cosa indica que detecta més gas.

Si algú té comentaris, propostes o suggeriments, no dubteu en contactar amb nosaltres !

 

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