KY-028 : Digital Temperature Sensor Module
Posted on 9 octobre 2016
in Arduino, Composants

Le Raspberry Pi a en contraste avec le Arduino pas d’ entrées analogiques et il n’y a pas ADC (Analog Digital Converter) intégré dans la puce de la Raspberry Pi.
Il est donc plus simple de l’utiliser avec Arduino ou avec raspberry mais en lui interfacant un convertisseur ADC0832 par exemple.
Pour cet exemple j’utilise la bibliothèque Adafruit ADC0832.[Téléchargement introuvable]
#!/usr/bin/env python
import RPi.GPIO as GPIO
import time
ADC_CS = 11
ADC_CLK = 12
ADC_DIO = 13
def setup(cs=11,clk=12,dio=13):
global ADC_CS,ADC_CLK,ADC_DIO
ADC_CS = cs
ADC_CLK = clk
ADC_DIO = dio
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD) # Number GPIOs by its physical location
GPIO.setup(ADC_CS, GPIO.OUT) # Set pins' mode is output
GPIO.setup(ADC_CLK, GPIO.OUT) # Set pins' mode is output
def destroy():
GPIO.cleanup()
def getResult(channel): # Get ADC result, input channal
GPIO.setup(ADC_DIO, GPIO.OUT)
GPIO.output(ADC_CS, 0)
GPIO.output(ADC_CLK, 0)
GPIO.output(ADC_DIO, 1); time.sleep(0.000002)
GPIO.output(ADC_CLK, 1); time.sleep(0.000002)
GPIO.output(ADC_CLK, 0)
GPIO.output(ADC_DIO, 1); time.sleep(0.000002)
GPIO.output(ADC_CLK, 1); time.sleep(0.000002)
GPIO.output(ADC_CLK, 0)
GPIO.output(ADC_DIO, channel); time.sleep(0.000002)
GPIO.output(ADC_CLK, 1)
GPIO.output(ADC_DIO, 1); time.sleep(0.000002)
GPIO.output(ADC_CLK, 0)
GPIO.output(ADC_DIO, 1); time.sleep(0.000002)
dat1 = 0
for i in range(0, 8):
GPIO.output(ADC_CLK, 1); time.sleep(0.000002)
GPIO.output(ADC_CLK, 0); time.sleep(0.000002)
GPIO.setup(ADC_DIO, GPIO.IN)
dat1 = dat1 << 1 | GPIO.input(ADC_DIO)
dat2 = 0
for i in range(0, 8):
dat2 = dat2 | GPIO.input(ADC_DIO) << i
GPIO.output(ADC_CLK, 1); time.sleep(0.000002)
GPIO.output(ADC_CLK, 0); time.sleep(0.000002)
GPIO.output(ADC_CS, 1)
GPIO.setup(ADC_DIO, GPIO.OUT)
if dat1 == dat2:
return dat1
else:
return 0
Le programme de lecture devient simple:
##############################################
# Hub.bosseur@gmail.com -
#
# Programme qui lit le capteur analogique
# http://aubonsurf.free.fr
##############################################
#!/usr/bin/python
import RPi.GPIO as GPIO
import ADC0832 #bibliotheque Adafruit ADC0832
import time
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
def init():
ADC0832.setup()
if __name__ == '__main__':
init()
try:
while True:
res0 = ADC0832.getResult(0)
res1 = ADC0832.getResult(1)
print 'res0 = %d, res1 = %d' % (res0,res1)
time.sleep(0.2)
except KeyboardInterrupt:
print ("end")
ADC0832.destroy()
Thank you for the good writeup. It in fact was a amusement account it.
Look advanced to far added agreeable from you!
However, how can we communicate?
Hi, this weekend is fastidious designed for me, as this
moment i am reading this impressive informative article here at my residence.