Bonjour à tous, je suis tout nouveau dans le monde de l'arduino et aussi sur ce site.
Je suis en train de concevoir une partie de mon projet sur tinkercad avant de commander les pièces et de mettre les mains dans le cambouis.
Bref, Je souhaite créer 4 petit module arduino équipés d'un capteurs infrarouge sharp (pour le niveau d'eau),une LED ROUGE et une VERTE d'un capteur de PH étanche et de conductivité chacun relié par bluetooth,radio ou wifi à un arduino nano (ou méga en cas d'évolution) qui centraliserait les données reçues équipé lui d'1 capteur DHT11 +1 autre pour la température ambiante de la salle et les afficherait sur un petit écran 16*2 via un menu déroulant.
est-il possible de "mettre en veille" les modules et de ne les réactivé qu'après un appuis sur un bouton de la centrale? Ce qui checkerais les capteurs, activerait les led rouge ou vertes selon la hauteur d'eau capté par les sharp.
Puis les données sont envoyé à la centrale qui les affiches et garde en mémoire (sans carte sd) et/ou les envoi sur une page web afin de pouvoir les consulter sous forme de graphique.
Je m'interroge donc sur la meilleure façon de réaliser à moindre coup les 4 modules "PH+EC" le but étant d'éviter au maximum les fils car j'ai 1M entre chaque module et l'arduino "CENTRAL" à l'opposé du tout et à moindre coup.
ensuite j'aimerais pouvoir accéder aux données via une page web grâce à ma freebox mais chaque chose en son temps.
Pour le moment je liste ce dont j'aurais besoin et m'entraine à coder sur tinkercad mais tout les capteurs n'y sont pas.
Voici mon code de test sur tinkercad avec 1 led rvb+1buzzer d'alerte en cas de niveau d'eau critique,un capteur ultrason et un capteur de température.
Cela vous parait-il logique ou est-ce déjà améliorable?
#include <LiquidCrystal.h>
LiquidCrystal lcd(12,11,5,4,3,2);
int capteur = 0;
int var1 = 30;
unsigned long currentTime=0;
unsigned long previousTime=0;
unsigned long interval,interval1=200, interval2=1000;
bool ledState=LOW;
void setup()
{
Serial.begin(9600);
lcd.begin(16,2);
lcd.setCursor(2,0);
lcd.print("Systeme on");
delay(1000);
lcd.clear();
pinMode(13,OUTPUT);
}
void loop()
{
// Capteur ultrason
pinMode (8, OUTPUT);
digitalWrite(8, LOW);
delay(500);
// Début de la mesure
digitalWrite(8, HIGH);
delayMicroseconds(10);
digitalWrite(8, LOW);
// Passage en mode réception
pinMode(8, INPUT);
long temps = pulseIn(8, HIGH);
// V=D/T ==> D=V*T
float vitesse =346;//m/s
long distance = vitesse * temps / 10000;
distance = distance / 2;
// LED's
pinMode (7, OUTPUT);
pinMode (6, OUTPUT);
if (distance>var1){
digitalWrite(7, HIGH);
digitalWrite(6, LOW);
delay(1000);
}
else
{
digitalWrite(6, HIGH);
digitalWrite(7, LOW);
delay(1000);
}
// Capteur Temperature
int valcapt = analogRead(capteur);
float voltage = valcapt*5.0/1024.0;
float temperature = (voltage -0.5)*100;
lcd.print("Temp: ");
lcd.print(temperature);
lcd.print("°C");
lcd.setCursor(1,1);
lcd.print("EAUteur: ");
lcd.print(distance);
lcd.print("cm");
delay(1000);
lcd.clear();
// BUZZER
if (distance>var1){
currentTime=millis();
if(ledState){
interval=interval2;
}else{
interval=interval1;
}
if((currentTime-previousTime)>interval){
previousTime=currentTime;
ledState=!ledState;
digitalWrite(13,!ledState);
Serial.print(F("LED State : "));Serial.println(ledState);
}
}
}
d'avance Merci à vous tous j'ai besoin de vos conseils