Page 2 sur 3

Re: DIY-Capteur d'humidité du sol-ATiny

Publié : 21 déc. 2016, 11:30
par manu663
J'en ai profité pour tester tous mes modules émetteurs 433 et surprise ! :o
4 sur 10 étaient défectueux, j'ai pu en récupérer un en refaisant les soudure qui présentaient un aspect terne (soudures sèches).

Rien de nouveau en somme mais j'étais loin de m'imaginer un tel pourcentage de rebut!

Re: DIY-Capteur d'humidité du sol-ATiny

Publié : 01 mars 2017, 20:27
par sebnatl
Bonjour comment change t on ID de ces 2 scripts , car j essai en vain mais je ne trouve pas .
merci

Re: DIY-Capteur d'humidité du sol-ATiny

Publié : 05 mars 2017, 21:19
par sebnatl
Bonjour j ai fait mon boulet !! j avais pas lu tous les postes , j ai fait la modif de Jeff avec celui pour le niveau d eau ( tank_water_level_low_power )

Code : Tout sélectionner

// including x10rf library
#include "x10rf.h"
#include <avr/sleep.h>
#include <avr/wdt.h>

#ifndef cbi
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#endif
#ifndef sbi
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
#endif

// define I/O PINS
#define SENSOR_LEVEL_0_PIN 0    // SENSOR LEVEL 0
#define SENSOR_LEVEL_1_PIN 1    // SENSOR LEVEL 1
#define SENSOR_LEVEL_2_PIN 2    // SENSOR LEVEL 2
#define SENSOR_LEVEL_3_PIN 3    // SENSOR LEVEL 3
#define RF_OUT 4                // OUTPUT RF 

#define rfxSensorID 5 // PARAMETRAGE ID 5 => 0005 dans DOMOTICZ

x10rf myx10 = x10rf(RF_OUT,0,5);
int level = 0;
volatile boolean f_wdt = 1;

// The setup 
void setup() {

CLKPR = (1<<CLKPCE); 
CLKPR = B00000000;  // set the fuses to 8mhz clock-speed.

ADCSRA &= ~(1<<ADEN);// disable ADC (before power-off)

  // SETING UP THE I/O PINS
  pinMode(SENSOR_LEVEL_0_PIN, INPUT);
  pinMode(SENSOR_LEVEL_1_PIN, INPUT);
  pinMode(SENSOR_LEVEL_2_PIN, INPUT);
  pinMode(SENSOR_LEVEL_3_PIN, INPUT);
  pinMode(RF_OUT, OUTPUT);

  // MYX10 INITIALIZATION
  myx10.begin();          
   setup_watchdog(9); // approximately 8 seconds sleep 
}

// The loop
void loop() {

get_and_sent_water_level();

delay(100);

// Sleep for 8 s  8 x 75 = 600 s = 10m
for (int i=0; i<75; i++){
      system_sleep();
}
delay(100);

}


/*
      FUNCTION
      get_and_sent_water_level
*/
int get_and_sent_water_level(){

// INTERNAL PULL-UP ENABLING TO BE ABLE TO READ 
digitalWrite(SENSOR_LEVEL_0_PIN, HIGH); 
digitalWrite(SENSOR_LEVEL_1_PIN, HIGH); 
digitalWrite(SENSOR_LEVEL_2_PIN, HIGH); 
digitalWrite(SENSOR_LEVEL_3_PIN, HIGH); 

delay(100);
/*
Serial.print(" LEVELLEVELLEVEL  : ");
Serial.println(digitalRead(SENSOR_LEVEL_0_PIN));
Serial.print(" LEVELLEVELLEVEL  : ");
Serial.println(digitalRead(SENSOR_LEVEL_1_PIN));
Serial.print(" LEVELLEVEL  : ");
Serial.println(digitalRead(SENSOR_LEVEL_2_PIN));
Serial.print(" LEVEL  : ");
Serial.println(digitalRead(SENSOR_LEVEL_3_PIN));  
*/
int level = (1-digitalRead(SENSOR_LEVEL_0_PIN)) + (1-digitalRead(SENSOR_LEVEL_1_PIN)) + (1-digitalRead(SENSOR_LEVEL_2_PIN)) + (1-digitalRead(SENSOR_LEVEL_3_PIN)) ;
/*
Serial.print(" LEVEL OF WATER  : ");
Serial.println(level);  
*/

// INTERNAL PULL-UP DESABLING TO AVOID ELECTROLYSE 
digitalWrite(SENSOR_LEVEL_0_PIN, LOW); 
digitalWrite(SENSOR_LEVEL_1_PIN, LOW); 
digitalWrite(SENSOR_LEVEL_2_PIN, LOW); 
digitalWrite(SENSOR_LEVEL_3_PIN, LOW); 

// SENDING THE LEVEL OVER RF
myx10.RFXmeter(rfxSensorID,0,level);

}





// set system into the sleep state 
// system wakes up when wtchdog is timed out
void system_sleep() {
  cbi(ADCSRA,ADEN);                    // switch Analog to Digitalconverter OFF
  set_sleep_mode(SLEEP_MODE_PWR_DOWN); // sleep mode is set here
  sleep_enable();
  sleep_mode();                        // System sleeps here
  sleep_disable();                     // System continues execution here when watchdog timed out 
  //sbi(ADCSRA,ADEN);                    // switch Analog to Digitalconverter ON
}

// 0=16ms, 1=32ms,2=64ms,3=128ms,4=250ms,5=500ms
// 6=1 sec,7=2 sec, 8=4 sec, 9= 8sec
void setup_watchdog(int ii) {

  byte bb;
  int ww;
  if (ii > 9 ) ii=9;
  bb=ii & 7;
  if (ii > 7) bb|= (1<<5);
  bb|= (1<<WDCE);
  ww=bb;

  MCUSR &= ~(1<<WDRF);
  // start timed sequence
  WDTCR |= (1<<WDCE) | (1<<WDE);
  // set new watchdog timeout value
  WDTCR = bb;
  WDTCR |= _BV(WDIE);
}
  
// Watchdog Interrupt Service / is executed when watchdog timed out
ISR(WDT_vect) {
  f_wdt=1;  // set global flag
}

pour ceux interessés .

Re: DIY-Capteur d'humidité du sol-ATiny

Publié : 26 avr. 2017, 11:11
par Nico14600
Bonjour, Je suis arrivé au meme stade que manu66. j'ai desespérémant une valeur a 0. pourtant, mes 2 electrodes sont dans un verre d'eau et j'ai mis une resistance de 10k. quelqu'un aurait-il une idée. lorsque j’écris la valeur en dur, je recoit bien 0.106

Re: DIY-Capteur d'humidité du sol-ATiny

Publié : 12 mai 2017, 14:22
par spike2012
Bonjour,
Avez-vous réussi à régler le problème car moi aussi la valeur reste à 0. :evil:

Re: DIY-Capteur d'humidité du sol-ATiny

Publié : 12 mai 2017, 14:32
par Nico14600
spike2012 a écrit :Bonjour,
Avez-vous réussi à régler le problème car moi aussi la valeur reste à 0. :evil:
Bonjour, désolé j'ai mis en pause le projet du fait de la valeur restant à 0


Envoyé de mon iPhone en utilisant Tapatalk

Re: DIY-Capteur d'humidité du sol-ATiny

Publié : 12 mai 2017, 19:45
par Neutrino
J'ai modifié le code de Vil1driver pour y intégrer une lecture analogique : https://easydomoticz.com/forum/viewtopi ... 400#p36179
ça peut peut-être vous aider ?

Re: DIY-Capteur d'humidité du sol-ATiny

Publié : 13 mai 2017, 22:22
par spike2012
Neutrino a écrit :J'ai modifié le code de Vil1driver pour y intégrer une lecture analogique : https://easydomoticz.com/forum/viewtopi ... 400#p36179
ça peut peut-être vous aider ?
Merci effectivement votre code à l'air de fonctionner en remplaçant la photorésistance par 2 tiges. :D

J'ai cependant un problème et une question sur votre code:

*l'envoi à domoticz (via rflink) se fait une fois lors de la mise sous tension de l'ATtiny85 mais ensuite plus aucun envoi malgré des changements d'état. Avez-vous une idée sur la raison de ce phénomène?

*Dans votre code vous définissez les pin comme suit:
#define DATA_PIN 3                // pin 2 // data de la sonde
#define TX_PIN 4                  // pin 3 // data transmetteur
#define SWITCH_A_PIN 0            // pin 5 // wake up SWITCH A output
#define SWITCH_B_PIN 1            // pin 6 // wake up SWITCH B output
#define PHOTORES_PIN 1            // pin 7

Je ne comprends pas pourquoi vous définissez PHOTORES_PIN 1 alors que le capteur est branché sur la pin physique 7 soit pin logique 2. :?:
Je débute en Arduino alors votre réponse pourra m'aider à comprendre un peu.

D'avance merci.

Re: DIY-Capteur d'humidité du sol-ATiny

Publié : 13 mai 2017, 22:39
par Neutrino
spike2012 a écrit : *l'envoi à domoticz (via rflink) se fait une fois lors de la mise sous tension de l'ATtiny85 mais ensuite plus aucun envoi malgré des changements d'état. Avez-vous une idée sur la raison de ce phénomène?
Étonnant, décommente (désolé, le vouvoiement sur un forum, je n'y arrive pas :mrgreen: )

Code : Tout sélectionner

#define ALWAYS_SEND
ça force l'envoie des données.
Si les données ne dont pas envoyés, c'est qu'aucun changement n'est détecté. (ou que mon code est buggé, et ça, c'est possible aussi :oops: )
spike2012 a écrit : *Dans votre code vous définissez les pin comme suit:
#define DATA_PIN 3 // pin 2 // data de la sonde
#define TX_PIN 4 // pin 3 // data transmetteur
#define SWITCH_A_PIN 0 // pin 5 // wake up SWITCH A output
#define SWITCH_B_PIN 1 // pin 6 // wake up SWITCH B output
#define PHOTORES_PIN 1 // pin 7

Je ne comprends pas pourquoi vous définissez PHOTORES_PIN 1 alors que le capteur est branché sur la pin physique 7 soit pin logique 2. :?:
Je débute en Arduino alors votre réponse pourra m'aider à comprendre un peu.

D'avance merci.
Pin Physique 7, Pin logique 2 (PB2), pin ANALOGIQUE 1 (ADC1) ;)
Image

Re: DIY-Capteur d'humidité du sol-ATiny

Publié : 15 mai 2017, 19:56
par spike2012
Après plusieurs test ça fonctionne seulement si la sonde ds18b20 n'est pas branché sur l'ATtiny85, si on branche la sonde + la photorésistance ou les tiges pour l'humidité du sol plus d'émission! Bizarre.
Merci pour le coup de main. :D