====== Utilisation d'un capteur DS18B20 (OneWire) ======
Nous avons utilisé le DS18B20P. Ce capteur comporte 3 pattes. De gauche à Droite:
1 la masse
2 le bus de données Input/Output
3 l'alimentation
/|--->/ 4.7K ohm
| |-----------+---/\/\/\/-----> +5V
\|---> GDN |
+----------- DIGITAL Input pin 10
===== Le code Arduino modifié par Papa Nicolas =====
La lib de référence pour l'arduino est disponible ici :
http://www.pjrc.com/teensy/td_libs_OneWire.html
#include
OneWire ds(10);
void setup(void) {
Serial.begin(9600);
}
void loop(void) {
byte i;
byte present = 0;
byte data[12];
byte LSB;
byte MSB;
byte temp;
byte addr[8];
if ( !ds.search(addr)) {
delay(10);
//Serial.print("No more addresses.\n");
ds.reset_search();
delay(250);
return;
}
if ( OneWire::crc8( addr, 7) != addr[7]) {
Serial.print("CRC is not valid!\n");
return;
}
if ( addr[0] != 0x28) {
Serial.print("Device is not a DS18S20 family device.\n");
return;
}
ds.reset();
ds.select(addr);
ds.write(0x44,1);
delay(1000);
present = ds.reset();
ds.select(addr);
ds.write(0xBE);
for ( i = 0; i < 9; i++) {
data[i] = ds.read();
LSB=data[0];
MSB=data[1];
temp=(LSB >> 4)+(MSB << 4);
}
Serial.print(temp,DEC);
}
=====Capture de la température et représentation graphique=====
Supposons la capture de la température pendant 48H à raison de 2 captures par heures. Nous récupérons 96 données. Cela peux se faire de deux façons:
* dans le code arduino mettre un delay pour 30 minutes.
* Soit au niveau du code python avec un filtre pour la récupération des bonnes données
====Le code====
#!/usr/bin/python
import serial;
import Gnuplot;
ser = serial.Serial('/dev/ttyUSB0', 9600);
i=0;
val=0;
tplist=[];
gp = Gnuplot.Gnuplot(persist = 1) ;
gp('set data style lines');
while (i<96):
val = int(ser.read(2));
print val
tplist.append([i, val])
i +=1;
gp.plot(tplist)
==== todo ====
- Augmenter la précision de la température
- Lorsque que la température est constante le script emet une warning
- Modifier le delay dans le code arduino
- Production d'un graph au format png
- Affichage sur une page web
{{tag>électronique arduino}}