Ce projet est né du constat que nos enfants sont bien souvent le nez collé sur l’écran.
Afin de corriger ce comportement j’ai pris l’habitude d’éteindre la télé avec la télécommande.
C’est rapidement fatiguant de faire le surveillant. Même si j’ai obtenu quelques succès.
Et la je me dis que si le truc pourrait être fait par un petit montage électronique.
Problème, mes notions d’électronique sont proche de zéro.
Par contre il y a les cartes Arduino qui peuvent être programmées et vous donnent accès à tout un tas de capteurs de l’environnement extérieur.
Armé d’une bonne dose de motivation j’achète le Arduino Starter Kit et quelques composants non inclus chez Arobose.
Voici la première version, les composants sont les suivants :
- Arduino Uno rev 3
- Capteur de distance par ultrasons URM 37 V3.2
- 3 LEDs rouge, jaune, verte, avec des résistances 1kOhm pour pas les cramer
- Platine de montage
Le fonctionnement de cette version 0.1 est simple.
Si une présence est détectée à plus de 1.5 m la LED verte s’allume.
Si une présence est détectée à moins de 1.5 m la LED jaune s’allume.
Si une présence est détectée à moins de 1 m la LED rouge s’allume.
Pour le code le voici :
// # Author : Hugues Lepesant // # Date : 11/04/2013 // # Version : 0.1 // # URM Code based on Jiang's work from DFRobot // # Product name:ultrasonic scanner Kit // # Product SKU:SEN0001 // # Description: // # The Sketch for scanning 180 degree area 4-500cm detecting range // # Connection: // # Pin 1 VCC (URM V3.2) -> VCC (Arduino) // # Pin 2 GND (URM V3.2) -> GND (Arduino) // # Pin 4 PWM (URM V3.2) -> Pin 3 (Arduino) // # Pin 6 COMP/TRIG (URM V3.2) -> Pin 5 (Arduino) // # Pin mode: PWM // # Working Mode: PWM passive control mode. // # If it is your first time to use it,please make sure the two jumpers to the right hand // # side of the device are set to TTL mode. You'll also find a secondary jumper on // # the left hand side, you must break this connection or you may damage your device. int URPWM=3; // PWM Output 0-25000us,every 50us represent 1cm int URTRIG=5; // PWM trigger pin int pinGreen = 2; int pinYellow = 6; int pinRed = 7; int distMinimum = 100; // 100 cm int distMedium = 150; // 150 cm boolean up=true; // create a boolean variable unsigned long time; // create a time variable unsigned long urmTimer = 0; // timer for managing the sensor reading flash rate unsigned int Distance=0; uint8_t EnPwmCmd[4]={0x44,0x22,0xbb,0x01}; // distance measure command void setup() { // Serial initialization Serial.begin(9600); // Sets the baud rate to 9600 pinMode(pinGreen, OUTPUT); digitalWrite(pinGreen, LOW); pinMode(pinYellow, OUTPUT); digitalWrite(pinYellow, LOW); pinMode(pinRed, OUTPUT); digitalWrite(pinRed, LOW); PWM_Mode_Setup(); } void loop() { Distance = PWM_Mode(); Serial.print("Distance = "); Serial.print(Distance); Serial.println(" cm"); if ( Distance > distMedium ) { digitalWrite(pinGreen, HIGH); digitalWrite(pinYellow, LOW); digitalWrite(pinRed, LOW); } if ( Distance > distMinimum && Distance < distMedium ) { digitalWrite(pinGreen, LOW); digitalWrite(pinYellow, HIGH); digitalWrite(pinRed, LOW); } if ( Distance < distMinimum ) { digitalWrite(pinGreen, LOW); digitalWrite(pinYellow, LOW); digitalWrite(pinRed, HIGH); } delay(2000); } void PWM_Mode_Setup(){ pinMode(URTRIG,OUTPUT); // A low pull on pin COMP/TRIG digitalWrite(URTRIG,HIGH); // Set to HIGH pinMode(URPWM, INPUT); // Sending Enable PWM mode command for (int i=0;i<4;i++) { Serial.write(EnPwmCmd[i]); } } int PWM_Mode(){ // a low pull on pin COMP/TRIG triggering a sensor reading digitalWrite(URTRIG, LOW); digitalWrite(URTRIG, HIGH); // reading Pin PWM will output pulses unsigned long DistanceMeasured=pulseIn(URPWM,LOW); if (DistanceMeasured==50000) { // the reading is invalid. return 0; } else { return DistanceMeasured/50; // every 50us low level stands for 1cm } }
La roadmap du projet est la suivante :
Version 0.2 :
Un signal sonore (façon « dernière sommation ») est joué.
Version 0.3 :
Après la sommation, la télé est éteinte.
Version 0.4 :
Si aucune présence n’est détectée à moins de 1.5 m pendant 10 secondes la télé est rallumée.
Version 0.5 :
Pouvoir programmer le code d’extinction de la télé avec la télécommande de celle-ci.
Version 0.6 :
Réalisation d’un boitier pour placer le NoNoseOnTV sous la télé.
Version 0.7 :
Réalisation d’un PCB.
Version 0.8 :
Réalisation d’un boitier pour une diffusion en masse.
Version 0.9 :
Vendre le truc à Sony, Samsung, Toshiba, Philips, …
Version 1.0 :
Aller se coucher ou partir en vacances.