Bonjour à tous,
Je me suis lancé dans un petit projet ludique qui consiste à récupérer la température de quelques pièces de ma maison ainsi que la température extérieure.
Pour cela j'ai en ma possession :
- des arduino UNO
- Un PI 3 model B+
- plusieurs capteur DHT22 pour relever la température
- des émetteurs et des récepteurs 433 Mhz
J'ai suivi plusieurs tuto sur le net, notamment celui-ci :
Lien
Pour le moment je réalise mes tests avec un seul capteur de température et un Arduino.
Les mesures relevés par le capteur me semblent OK.
Mon problème se situe dans l'envoie des données et dans la récupération via le PI.
Le code ARDUINO :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
46
47
48
49 #include <VirtualWire.h> #include <DHT.h> #define PIN 8 #define TYPE DHT22 DHT dht(PIN, TYPE); void setup() { Serial.begin(9600); dht.begin(); vw_set_ptt_inverted(true); vw_setup(2000); vw_set_tx_pin(10); } void loop() { // LECTURE DES DONNEES float h = dht.readHumidity(); float t = dht.readTemperature(); if (isnan(h) || isnan(t)) { Serial.println("Echec de lecture !"); return; } Serial.print("Humidite: "); Serial.print(h); Serial.print(" %\t"); Serial.print("Temperature: "); Serial.print(t); Serial.print(" *C "); Serial.print("\n"); //TRANSMISSION DES DONNEES vw_send((uint8_t *)&t, sizeof t); vw_wait_tx(); //delay(60000); // 1 minute delay(2000); }
Le code du script sur le PI :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 import time import pigpio import vw import MySQLdb import datetime #!/usr/bin/env python # -*- coding: utf-8 -*- RX=26 BPS=2000 pi = pigpio.pi() rx = vw.rx(pi, RX, BPS) start = time.time() print ("debut reception mesure") while (1): while rx.ready(): msg = rx.get() print(msg) rx.cancel() pi.stop()
J'ai plusieurs problèmes :
- Comment passer des float via VirtualWire ? J'ai essayé de feinter en séparant la partie entière et la partie décimale mais ça n'a pas l'air de fonctionner
- Je n'arrive pas à récupérer les données proprement sur le PI. L’exécution du script m'affiche pour la variable msg : [51, 51, 207, 65]
Est-ce que quelqu'un peut me venir en aide ?
Merci d'avance,
Merci d'avance,
Evo
Partager