4 pièce(s) jointe(s)
[WIP] Newbie qui fait sa station météo (Raspberry Pi Zero W)
Bonjour !
Je me présente rapidement avant d'entrer dans la supplication :D J'ai 27 ans, je suis infographiste auto-entrepreneur et co-gérant d'une société de gestion technique événementielle, donc autant dire que je suis plutôt du côté hardware de la force... Si je me débrouille bien en maitrise des logiciels, je n'ai en revanche aucune base en codage si ce n'est les logiques simples (if then while or ...etc) que j'utilise dans certains soft. Ah si, j'ai fait du HTML et CSS à la Fac 8-) :mouarf:
En mai dernier je me suis lancé dans l'inconnu avec un projet en tête, celui de réaliser une sonde météo avec affichage en temps réel et une liaison WiFi avec gestion graphique des températures et de l'humidité via ThingSpeak ! L'idée était de pouvoir afficher différentes infos sur l'écran, et de passer de l'une à l'autre en basculant le bouzin, à l'aide donc d'un tilt-switch (par exemple : info 1 = Temp + HR + Heure, info 2 = Graph dernières 24h, info 3 = prévisions météo 5j)
Le matos que j'ai acheté (en avril) :
- Rasp Pi Zero Wifi
- Sonde température DS18B20
- Sonde humidité (et température) DHT22
- Un breadboard pour vérifier mon montage
J'ai donc assemblé mes 2 sondes en fouinant sur internet pour savoir sur quel port brancher, téléchargé les librairies correspondantes (c'est l'équivalent de drivers pour Raspberry ?)
Ensuite j'ai trouvé différents bouts de codes que j'ai arrangé à ma sauce afin de récupérer les 2 données de température, d'en faire une moyenne (tmoyenne) et d'afficher cette valeur avec l'humidité relative :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| import sys
import Adafruit_DHT
import time
tempfile = open("/sys/bus/w1/devices/28-031652910aff/w1_slave")
thetext = tempfile.read()
tempfile.close()
tempdata = thetext.split("\n")[1].split(" ")[9]
temperature2 = float(tempdata[2:])
temperature2 = temperature2 / 1000
sensor = Adafruit_DHT.AM2302
pin = 5
humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)
tmoyenne = (temperature+temperature2*2)/3
print('Temperature Moyenne={0:0.1f}*C Humidite={1:0.1f}%'.format(tmoyenne, humidity)) |
Bon j'ai passé une journée entière à faire ça, mais j'étais super content car ça marchais impecc !
Je suis ensuite passé à l'étape IoT...pareil, bout de code adapté :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| import sys
import Adafruit_DHT
from time import sleep
import urllib2
myAPI = "touchezpasàmonserveur"
def getSensorData():
tempfile = open("/sys/bus/w1/devices/28-031652910aff/w1_slave")
thetext = tempfile.read()
tempfile.close()
tempdata = thetext.split("\n")[1].split(" ")[9]
temperature2 = float(tempdata[2:])
temperature2 = temperature2 / 1000
sensor = Adafruit_DHT.AM2302
pin = 5
humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)
tmoyenne = (temperature+temperature2*2)/3
T = tmoyenne
RH = humidity
return (str(RH), str(T))
def main():
print 'starting...'
baseURL = 'https://api.thingspeak.com/update?api_key=%s' % myAPI
while True:
try:
RH, T = getSensorData()
f = urllib2.urlopen(baseURL +
"&field1=%s&field2=%s" % (RH, T))
print f.read()
f.close()
sleep(60)
except:
print 'exiting.'
break
# call main
if __name__ == '__main__':
main() |
Ça marchait ! (bien qu'au bout d'une heure ou deux, le script s'arrêtait sans que je comprenne pourquoi)
Pièce jointe 334952
J'ai ensuite eu un peu moins de temps et j'ai totalement laissé le projet de côté...pour reprendre il y a quelques jours en achetant l'écran et le switch.
Problème : plus rien ne marche.
J'ai remarqué (après avoir allumé) que ma sonde DS18B20 avait son cable GND cassé (mal rangé :aie:)...j'ai éteint, réparé, mais voici le message d'erreur que j'obtiens :
Pièce jointe 334955
Dans un premier temps, j'aimerai que cela remarche comment avant...le hic c'est que je n'ai aucune idée de comment aborder la chose...
Ensuite, j'aimerai trouver une solution de câblage propre (j'utilise des fil de breadboard) pour le modèle final, et surtout comprendre comment ajouter à mon câblage l'écran et le switch...
Voici mon câblage actuel, avec celui recommandé pour le switch que je n'ai pas encore relié :
Pièce jointe 334961
Dans le genre bombe artisanale on est bien :mouarf:
Pièce jointe 334966
Thanks ! et merci d'avance pour vos contributions