RF433Mhz - Communication Arduino-Pi
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:
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:
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