venerdì 19 agosto 2011

Ardualarm parte 1



Eccoci quindi alla prime puntata che questa volta è tutta dedicata all'hardware. Il sistema Ardualarm verrà organizzato sotto forma di uno o più shield fissati su una scheda arduino uno e questo pone un primo problema... il passo fra gli input 7 ed 8 non è corretto sulle schede arduino col risultato che ogni shield basato su una mille fori sforzerà inevitabilmente i piedini o, peggio ancora, il pcb di arduino piegandolo innaturalmente. Da questa osservazione è venuta l'idea di realizzare uno shield per cosi dire intermedio di puro servizio, che abbia degli stackable header, in grado di compensare il disallinemento.


A questo questo punto mi sono fatto prendere un pò la mano e ho aggiunto un pò di hardware, tanto per non sprecare uno shield quindi nell'ordine ho inserito:
  1. Il reset hardware visto che quello su arduino non era più raggiungibile. Basta mettere una resistenza da 10k fra i 5v ed il pin di reset e l'interruttore fra il pin reset e ground... più facile a farsi che a dirsi! ;)
  2. Un led blu (con la sua bella resistenza da 180 hom) al pin 6, che può lavorare in PWM. Il led può essere tagliato fuori rimuovendo un piccolo jumper.
  3. Un LM35DZ al pin analog 5 che può tornare utile nel caso in cui si voglia implementare un controllo per un eventuale ventola di raffreddamento case. Anche questo sensore può essere scollegato rimuovendo un jumper. A scanso d'equivoci, sulla base di precedenti esperienze contraddittorie, ho applicato in via del tutto preventiva il consiglio unversale degli elettronici..."PROVA A METTERE UN CONDENSATORINO" ;)
  4. Un led verde che indica la presenza di alimentazione alla scheda
  5. Un connettore 3 poli all'analog 4, con resistenza da 10k sul pin di lettura, che può essere esclusa ponticellando con un jumper (lo si vede in foto a lato della resistenza), nel caso in cui il sensore non ne abbia bisogno (il sensore PIR per esempio ne fa volentieri a meno).
Ovviamente per testare le funzionalità dello shield basta buttare giù un codicillo che per esempio dimeri il led sul pin 6 in funzione di una lettura di temperatura effettuata sul pin analog5... per il reset ovviamente non serve che vi spieghi come verificarne il funzionamento spero! ;)
Ah si... fondamentale è verniciare con la bomboletta spray di blu la millefori prima di lavorarci ma miraccomando, coprite con del nastro carta il lato ramato!

NB:Informazioni per l'uso, la mille fori che ho usato (e segato!) misura 20x17 fori!

Ecco un'aggiunta dell'ultima ora, un banalerrimo codicillo per testare la funzionalità dello shield...

/*
Programmino molto banalotto per controllare al volo la funzionalità dello shield intermedio per
Ardualarm. Ogni vota che viene premuto il tasto reset, compare a schermo la scritta "STARTING COMMUNICATION".
La temperatura controlla il LED che lampeggia al di sotto dei 50°C e rimane fisso al di sopra.
*/
int counter = 0;
int LED = 0;
int check = 0;
int temp = 0;
int time = 0;
int tempPIN = 0;
int control = 1;

void setup()
{
Serial.begin(9600);
LED = 6;
tempPIN = 5;
time = 15;
pinMode(LED,OUTPUT);
pinMode(tempPIN, INPUT);
Serial.println("STARTING COMMUNICATION");
}

void loop()
{
temp = analogRead(tempPIN);
temp = ((5.0 * temp * 100.0)/1024.0)-1.0;
if (temp > 50){
digitalWrite(LED,HIGH);
}
else{
analogWrite(LED,counter);
}
delay(time);
if (counter == 0){
check = 0;
}
if(counter == 200){
check = 1;
Serial.print("Temperature: "); //all'apice della luminosità viene comunicata la temperatura;
Serial.println(temp);
}
if(check == 0){
counter++;
}
else{
counter--;
}
}


Nessun commento:

Posta un commento