Projet Wokwi : Station sans fil avec 2 Arduino Mega 2560 + 2 modules RFM69HCW
COMPOSANTS :
- 2 Arduino Mega 2560 Rev3
- 2 Modules RFM69HCW
- 1 DHT11
- 1 HC-SR04
- 1 MPX4250AP
- 2 PC (Serial Monitor TX/RX)
========================================
ARDUINO EMETTEUR
========================================
DHT11
VCC -> 5V
GND -> GND
DATA -> D7
HC-SR04
VCC -> 5V
GND -> GND
TRIG -> D8
ECHO -> D9
MPX4250AP
VCC -> 5V
GND -> GND
OUT -> A0
RFM69HCW
MISO -> D50
MOSI -> D51
SCK -> D52
NSS -> D53
DIO0 -> D2
GND -> GND
3.3V -> 3.3V
========================================
ARDUINO RECEPTEUR
========================================
RFM69HCW
MISO -> D50
MOSI -> D51
SCK -> D52
NSS -> D53
DIO0 -> D2
GND -> GND
3.3V -> 3.3V
========================================
FICHIER diagram.json
========================================
{
"version": 1,
"author": "ChatGPT",
"editor": "wokwi",
"parts": [
{
"type": "wokwi-arduino-mega",
"id": "megaTX",
"top": -20,
"left": -250,
"attrs": {}
},
{
"type": "wokwi-arduino-mega",
"id": "megaRX",
"top": -20,
"left": 350,
"attrs": {}
},
{
"type": "wokwi-dht11",
"id": "dht1",
"top": -220,
"left": -390,
"attrs": {}
},
{
"type": "wokwi-hc-sr04",
"id": "ultra1",
"top": -220,
"left": -120,
"attrs": {}
},
{
"type": "wokwi-potentiometer",
"id": "pot1",
"top": -220,
"left": 90,
"attrs": {}
}
],
"connections": [
[ "dht1:VCC", "megaTX:5V", "red" ],
[ "dht1:GND", "megaTX:GND.1", "black" ],
[ "dht1:SDA", "megaTX:7", "green" ],
[ "ultra1:VCC", "megaTX:5V", "red" ],
[ "ultra1:GND", "megaTX:GND.1", "black" ],
[ "ultra1:TRIG", "megaTX:8", "blue" ],
[ "ultra1:ECHO", "megaTX:9", "green" ],
[ "pot1:VCC", "megaTX:5V", "red" ],
[ "pot1:GND", "megaTX:GND.1", "black" ],
[ "pot1:SIG", "megaTX:A0", "orange" ]
]
}
========================================
CODE EMETTEUR
========================================
#include <SPI.h>
#include <RH_RF69.h>
#include <DHT.h>
#define DHTPIN 7
#define DHTTYPE DHT11
#define TRIG_PIN 8
#define ECHO_PIN 9
#define PRESSURE_PIN A0
#define RFM69_CS 53
#define RFM69_INT 2
#define RF69_FREQ 868.0
RH_RF69 rf69(RFM69_CS, RFM69_INT);
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
dht.begin();
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
rf69.init();
rf69.setFrequency(RF69_FREQ);
rf69.setTxPower(20, true);
}
void loop() {
float temp = dht.readTemperature();
float hum = dht.readHumidity();
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
long duration = pulseIn(ECHO_PIN, HIGH);
float distance = duration * 0.034 / 2;
int pressure = analogRead(PRESSURE_PIN);
String data =
String(temp) + "," +
String(hum) + "," +
String(distance) + "," +
String(pressure);
rf69.send((uint8_t*)data.c_str(), data.length());
rf69.waitPacketSent();
Serial.println(data);
delay(2000);
}
========================================
CODE RECEPTEUR
========================================
#include <SPI.h>
#include <RH_RF69.h>
#define RFM69_CS 53
#define RFM69_INT 2
#define RF69_FREQ 868.0
RH_RF69 rf69(RFM69_CS, RFM69_INT);
void setup() {
Serial.begin(9600);
rf69.init();
rf69.setFrequency(RF69_FREQ);
}
void loop() {
if (rf69.available()) {
uint8_t buf[RH_RF69_MAX_MESSAGE_LEN];
uint8_t len = sizeof(buf);
if (rf69.recv(buf, &len)) {
Serial.print("Donnees recues : ");
for (int i = 0; i < len; i++) {
Serial.print((char)buf[i]);
}
Serial.println();
}
}
}
========================================
BIBLIOTHEQUES WOKWI
========================================
RadioHead
DHT sensor library
========================================