Bonjour à tous
j' ai comme projet la création d'une station météo basée sur arduino , elle serait destinée au vol libre .
Pour cela je souhaiterai mesurer la vitesse moyenne du vente , la direction moyenne du vent , ainsi que la température . Ces données seraient consultable par SMS , il suffirait d'envoyer un SMS pour avoir en retour un SMS indiquant les données . La station sera alimentée par un panneau solaire .
La prochaine évolution serait de la connecter à internet . mais cela ce fera dans un autre temps .
J ai passé beaucoup de temps sur le net a chercher des informations , mais la je n'y arrive plus , j ai besoin d'aide .
le but est d'avoir un topic avec l'ensemble des explications pour que cela soit accessible à tous sans ce faire un nœuds au cerveau
Mon matériel :
- un carte Arduino Uno
- un capteur DHT11 pour la température et l'hygrométrie
- un ensemble girouette et anémomètre SEN 08942
- un module GSM sim 900
- module RTC I2C
sketch pour la mesure de la vitesse / direction du vent
Voici le schéma de câblage :
la résistance doit être de 10 000 ohm
sketch permettant de lire la vitesse depuis le moniteur série
// Pin definitions pour la vitesse du vent
# define Hall sensor 2 // Receive the data from sensor
// Constants definitions
const float pi = 3.14159265; // pi number
int period = 5000; // Measurement period (miliseconds)
int delaytime = 0; // Time between samples (miliseconds)
int radius = 69; // Radius from vertical anemometer axis to a cup center (mm)
// Variable definitions
unsigned int Sample = 0; // Sample number
unsigned int counter = 0; // magnet counter for sensor
unsigned int RPM = 0; // Revolutions per minute
float speedwind = 0; // Wind speed (m/s)
float windspeed = 0; // Wind speed (km/h)
int Direction ; // Wind direction
#define PotPin (A0) // define the input pin for the wind vane potentiometer
int PotValue = 0; // variable to store the value coming from the potentiometer
int DirCorr = 0; // Correction on direction ( - 360 to + 360)
#define PIN_ANEMOMETER 2 // analogique 2
void setup() {
// Set the pins
pinMode(2, INPUT);
digitalWrite(2, HIGH); //internall pull-up active
Serial.begin(9600);
}
void loop() {
Sample++;
windvelocity();
RPMcalc();
Serial.print("vitesse vent:");
//*****************************************************************
//*****************************************************************
//print km/h
SpeedWind();
Serial.print(speedwind*1.538); // la vitesse de base avec le logiciel est de 1.56 km/h par tour , avec le capteur SEN-08942 c est 2.4 km/h par tour donc je multiplie par 1.58
Serial.print(" [km/h] ");
Serial.println();
delay(delaytime);
int sensorValue = analogRead(A0); // lit la valeur analogique sur la broche A0
// et met le résultat dans la variable
delay(0);
// Wind Direction
Serial.print("Direction du vent: ");
if ((sensorValue>880) && (sensorValue<900)) {
Serial.println("Nord Ouest");
}
if ((sensorValue>85) && (sensorValue<100)) {
Serial.println(" Est");
}
if ((sensorValue>180) && (sensorValue<190)) {
Serial.println("Sud Est");
}
if ((sensorValue>200) && (sensorValue<300)) {
Serial.println(" Sud");
}
if ((sensorValue>630) && (sensorValue<640)) {
Serial.println("Sud Ouest");
}
if ((sensorValue>940) && (sensorValue<950)) {
Serial.println(" Ouest");
}
if ((sensorValue>460) && (sensorValue<470)) {
Serial.println("Nord Est");
}
if ((sensorValue>780) && (sensorValue<=800)) {
Serial.println(" Nord");
}
}
// Measure wind speed
void windvelocity(){
speedwind = 0;
windspeed = 0;
counter = 0;
attachInterrupt(0, addcount, CHANGE);
unsigned long millis();
long startTime = millis();
while(millis() < startTime + period) {
}
}
void RPMcalc(){
RPM=((counter*2)*60)/(period/1000); // calcul le nombre de tour par minute (RPM)
}
void WindSpeed(){
windspeed = ((2 * pi * radius * RPM)/60) / 1000; // Calculate wind speed on m/s ( marche pas )
}
void SpeedWind(){
speedwind = (((2 * pi * radius * RPM)/60) / 1000)*3.6; // Calculate wind speed on km/h
}
void addcount(){
counter++;
}
Lire la température et l'hygrométrie avec un capteur DHT 11
Schéma de câblage :
[url=http://[
Le sketch pour le DHT 11 :
// Example testing sketch for various DHT humidity/temperature sensors
// Written by ladyada, public domain
#include "DHT.h"
#define DHTPIN 2 // what pin we're connected to
// Uncomment whatever type you're using!
//#define DHTTYPE DHT11 // DHT 11
#define DHTTYPE DHT22 // DHT 22 (AM2302)
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
Serial.println("DHT test");
dht.begin();
}
void loop() {
// Reading temperature or humidity takes about 250 milliseconds!
// Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
float h = dht.readHumidity();
float t = dht.readTemperature();
// check if returns are valid, if they are NaN (not a number) then something went wrong!
if (isnan(t) || isnan(h)) {
Serial.println("Failed to read from DHT");
} else {
Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(t);
Serial.println(" *C");
}
}
Sketch pour la lecture de l'heure avec un module RTC DS1307 , de type I2C
Schéma de câblage :
[url=http://[
Le sketch pour lire l'heure avec le moniteur série :
// Date and time functions using a DS1307 RTC connected via I2C and Wire lib
// 2010-02-04 <jc@wippler.nl> http://opensource.org/licenses/mit-license.php
#include <Wire.h>
#include <RTClib.h>
RTC_DS1307 RTC;
void setup () {
Serial.begin(9600);
Wire.begin();
RTC.begin();
// following line sets the RTC to the date & time this sketch was compiled
//RTC.adjust(DateTime(__DATE__, __TIME__));
}
void loop () {
DateTime now = RTC.now();
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(' ');
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
delay(1000);
}
Voila l'ensemble des données que j'ai réussie à regrouper .
pour commencer je voudrais mesurer la vitesse et la direction du vent sur une moyenne de 10 mn .
avez vous des idées .
Merci d'avance
Sébastien
](http://www.hostingpics.net/viewer.php?id=921883cablageDS1307moduleRTC.png)](http://www.hostingpics.net/viewer.php?id=680173cablageDHT11.jpg)