====== 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}}