• Post category:Uno
  • Post comments:0 commentaire
  • Post last modified:mars 12, 2022
  • Temps de lecture :5 min de lecture

Station météo par ondes radio 433mhz avec un attiny85 sur accu 18650 et 1 Arduino Uno avec affichage LCD *

 

 

    Prérequis :

Matériel :

  • 1 x Carte Arduino Uno
  • 1 x LCD 20×4
  • 1 x Module I2C
  • 1 x Module Rf 433mhz Emetteur + Récepteur
  • 1 Led
  • 1 Attiny85
  • 1 Résistances 220Ω (optionnel)
  • 1 Résistance 470KΩ
  • 1 DHT22
  • 1 Accu 18650
  • 1 Batterie Shield V1.2.0 pour Wemos D1 Mini
  • Fils de connexion
  • 1 x Breadboard

Version IDE :

Bibliothèque :

  • tinysnore.h
  • Manchester.h
  • dht.h
  • LiquidCrystal_I2C.h

 

 

Vidéo de démonstration :

 

Schéma de câblage de l’Emetteur :

 

Code :

#include <dht.h>
dht DHT22;
#define DHT22PIN 4

float h=0;
float t=0;
int transmit_t = 0;
int transmit_h = 0;

#include <Manchester.h>
#include "tinysnore.h" // Include TinySnore Library
#define NUMERO_EMETTEUR 8 // choisir un nombre entre 0 et 254, unique pour chaque émetteur du réseau
#define TX_PIN  1  // broche reliée à l'émetteur 433 MHz
#define datalength 4 
uint8_t data[datalength]; 

void setup()
{
  man.setupTransmit(TX_PIN, MAN_1200);
  delay(500);
}


void loop()
{
  int chk = DHT22.read22(DHT22PIN);
  h=DHT22.humidity;
  t=DHT22.temperature;
  transmit_h=(int) h;
  transmit_t=(int) t;
  
  data[0] = datalength; 

  data[1] = NUMERO_EMETTEUR;   
  data[2] = transmit_h;  
  data[3] = transmit_t;   

  man.transmitArray(datalength, data);
  
  snore(500);
}

 

Schéma de câblage du Récepteur :

 

Code :

#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4);  

#include "Manchester.h"
#define RX_PIN 11  // là où est branché le récepteur 433 MHz
int LED_PIN = 10;

uint8_t LedOn = 1;
#define BUFFER_SIZE 22
uint8_t buffer[BUFFER_SIZE];



void setup() {
Serial.begin(9600);

lcd.init();                     
lcd.backlight();
pinMode(LED_PIN, OUTPUT);
man.setupReceive(RX_PIN, MAN_1200);
man.beginReceiveArray(BUFFER_SIZE, buffer);

}

void loop() {


  if (man.receiveComplete()) 
  {
    uint8_t receivedSize = 0;

    receivedSize = buffer[0];  // la taille du message se trouve dans le premier byte

    Serial.print("Message en provenance de l'emmeteur ");
    Serial.println(buffer[1]); 
    Serial.println(buffer[2]);
    Serial.println(buffer[3]);

    man.beginReceiveArray(BUFFER_SIZE, buffer);
    LedOn = !LedOn;
    digitalWrite(LED_PIN, LedOn);
    lcd.setCursor(0,0);
    lcd.print("Temperature :");
    
    lcd.setCursor(14,0);
    lcd.print("   ");
    
    lcd.setCursor(14,0);
    lcd.print(buffer[3]);
    
    lcd.setCursor(17,0);
    lcd.print((char)223);
    lcd.setCursor(18,0);
    lcd.print("C");
    
    lcd.setCursor(0,1);
    lcd.print("Humidite :");
    lcd.setCursor(14,1);
    lcd.print("   ");
    lcd.setCursor(14,1);
    lcd.print(buffer[2]);
    lcd.setCursor(17,1);
    lcd.print((char)37);
  }
}

 


 

Laisser un commentaire