Sei sulla pagina 1di 4

Giovanni Rega M64000713

PROGETTO ARDUINO

Il mio progetto consiste nell’automatizzare alcune funzioni che normalmente si svolgono all’interno
di un ambiente domestico, come:
• Accensione/spegnimento di una luce;
• Apertura/chiusura di una porta;
• Misurazione della temperatura in una stanza;
Tutto ciò è possibile leggerlo su un Display LCD montato sulla facciata dell’abitazione.

COMPONENTI

1) MODULO BLUETOOTH HC-06


Ho usato questo dispositivo per far comunicare il
microprocessore (Arduino) con il mio Smart Phone
sfruttando la connessione Bluetooth.
Esso è dotato di 4 Pin:
• Vcc→3.3V
• Gnd→Gnd
• Rx→Tx
• Tx→Rx
Giovanni Rega M64000713

2) TERMISTORE NTC 10 kohm


Per poter calcolare la temperatura, ho utilizzato un
termistore di tipo NTC per cui è stato necessario impostare
all’interno del codice l'equazione di Steinhart-Hart che
rappresenta il modello matematico della resistenza elettrica
di un semiconduttore al variare della temperatura.

1 /T = A + B ln( R ) + C [ ln( R ) ] 3
dove:

• T è la temperatura (in kelvin)


• R è la resistenza (in ohm)
• A, B e C sono i coefficienti di Steinhart-Hart che variano a seconda del tipo e modello di
termistore e il range di temperatura scelto.

3) POTENZIOMETRO per regolare il contrasto del display LCD


cambiando quindi il valore della tensione in ingresso al display.

4) DISPLAY LCD 16x2 per mostrare le varie informazioni


eseguite.
Collegamenti:
Pin 1: Vss – collegato al
GND
Pin 2: VDD – collegato a
+5V
Pin 3: V0 – controllo del
contrasto dei caratteri,
collegato ad un
potenziometro in modo
da applicare sul Pin 3 una
tensione che varia da 0 a
+5V e al variare della
tensione varia il
contrasto.
Pin 4: RS segnale di selezione registro – per selezionare il registro nel quale registrare ciò
che appare sul display oppure selezionare il registro di funzionamento in cui viene
memorizzata di volta in volta l’istruzione da eseguire per il funzionamento dell’LCD
Pin 5: segnale Read/Write – per selezionare la modalità di funzionamento: lettura/scrittura –
collegato a GND
Pin 6: segnale Enable (E) – per abilitare la scrittura nei registri
Pin 7 al Pin 14: linee dati che si inviano o si ricevono dai registri del display. Un valore
HIGH (H) indica scrittura (WRITE) del bit nel registro del display, un valore LOW (L)
indica un valore letto (READ) da un registro.
Giovanni Rega M64000713

Pin 15: A (Anodo) – piedino a cui collegare una tensione positiva (nel caso del display
descritto +4,2V) che serve per la retroilluminazione del display.
Pin 16: K (Catodo) – piedino da collegare a GND per consentire la retroilluminazione.

5) Led per l’illuminazione inserendo il Catodo del


diodo nel foro indicato con GND e l’anodo al pin
corrispondente nello schetch.

6) Servo Motore HG90 per l’apertura e la chiusura


della porta dotato di 3 contatti di cui due servono per
l’alimentazione (5V e GND) mentre il terzo è il pin
di controllo che nel nostro caso andrà collegato ad un
pin di Arduino.

Codice:
int Vo; void loop() {
float R1 = 10000;// valore resistenza in ohm if (blueToothSerial.available()>0){
float logR2, R2, T, Tc, Tf; comando=blueToothSerial.read();
float c1 = 1.009249522e-03, c2 = 2.378405444e-04, if (comando == 65) {//lettera A
c3 = 2.019202697e-07; digitalWrite(13,HIGH);
int comando; lcd.clear();
SoftwareSerial blueToothSerial(0,1); lcd.setCursor(0,0);
lcd.print("Luce Accesa");
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
}else if (comando == 83) {//lettera S
digitalWrite(13,LOW);
void setup() { lcd.clear();
comando=0; lcd.setCursor(0,0);
pinMode(0,INPUT); lcd.print("Luce Spenta");
pinMode(1, OUTPUT); delay(1000);
blueToothSerial.begin(9600); }else if (comando == 67) {//lettera C
blueToothSerial.flush(); servos[8].write(0);
pinMode(13,OUTPUT); delay(1000);
servos[8].attach(8); }else if (comando == 68) {//lettera D
servos[8].write(90);
//impostiamo il numero di colonne ed il numero di delay(1000);
Giovanni Rega M64000713

righe di lcd }
lcd.begin(16, 2); else if (comando == 84) {//lettera T
// Visualizzo il messaggio sul display Vo = analogRead(ThermistorPin); //leggo il
lcd.clear(); voltaggio tra 0 e 1023
lcd.setCursor(0,0); R2 = R1 * (1023.0 / (float)Vo - 1.0);//resistenza
lcd.print("Benvenuto"); del termistore, convertendo il valore di tensione letto
} in tensione compresa tra 0-5V
logR2 = log(R2);
T = (1.0 / (c1 + c2*logR2 +
c3*logR2*logR2*logR2)); //calcolo la temperatura
con la formula di Steinhart-Hart
Tc = T - 273.15;

lcd.clear();
lcd.print("Temp = ");
lcd.print(Tc);
lcd.print(" C");
delay(1000);
}
}

delay(500);

Potrebbero piacerti anche