Posts | Comments

Planet Arduino

Archive for the ‘Domotique’ Category

Jan
01

Domotique avec raspberryPi et Domoticz

arduino, compteur de gaz, Do it, domoticz, Domotique, gasmonitor, Hack it, planet, Raspberry Comments Off on Domotique avec raspberryPi et Domoticz 

J’utilise depuis quelques mois une solution domotique qui me donne pleinement satisfaction. Cette solution relativement économique repose sur l’utilisation d’un RaspberryPi avec le logiciel Domoticz ainsi que d’un « modem » radio 433MHz RFXCom

Je ne vais pas détailler l’installation de Domoticz, tout est décrit sur leur site et l’opération reste très simple.

Mes besoins essentiels concernent les consommations de l’habitation ( eau, gaz, électricité ) et les relevés de température et humidité dans certaines pièces. De plus, je pilote quelques lumières ainsi qu’un radiateur de type sèche serviettes. Depuis quelques temps j’ai ajouté des capteurs d’ouverture sur les Vélux et les portes. Je peux ainsi savoir par une notification sur le téléphone si l’on quitte la maison avec un Vélux oublié ouvert…

La solution à base de technologie radio en 433MHz présente quelques avantages:

  • Le prix
  • Le nombre de modules disponibles sur le marché
  • La possibilité de créer facilement ses propres capteurs avec un arduino par exemple

Le gros inconvénient c’est que contrairement au Zwave, il n’y a pas de retour d’état. Pour piloter des éléments « critiques » comme le chauffage, c’est un peu gênant mais on peut y remédier d’une façon assez satisfaisante à l’aide d’un script.

Les modules que j’utilise sont disponibles facilement dans les grandes surfaces de bricolage ou sur internet.

 

Le raspberry équipé d’une carte RFM12Pi en 868MHz pour un usage futur.

RasberryPi
RaspberryPi

 

Le modem RFXCom. On pourrait en créer un avec un arduino pour beaucoup moins cher mais il faut décoder les différents protocoles ce qui m’aurait demandé trop de temps. J’ai donc préféré acheter un module « tout fait » et consacrer plus de temps sur les autres parties.

Module RFXCom
Module RFXCom

 

Des sondes de température Oregon sont disposées aux endroits stratégiques ( Salon, Salle de bain, extérieur, chambres…)

Capteur oregon de température et humidité
Capteur Oregon de température et humidité

 

Le carillon de la porte d’entrée est lui aussi compatible. Il peut donc servir d’alerte sonore si besoin, d’autant qu’il dispose de 3 mélodies utilisables avec des codes différents.

Carillion
Carillon

 

Pour les Vélux, de simples capteurs d’ouverture

Capteur d'ouverture
Capteur d’ouverture

 

Pareil pour la porte du garage

Capteur d'ouverture
Capteur d’ouverture

 

Il y a aussi un capteur de mouvement pour le déclenchement d’un éclairage et d’une notification sur smartphone

Capteur de mouvements
Capteur de mouvements

 

Les lumières sont pilotables par ces petits relais.

Module d'éclairage
Module d’éclairage

J’utilise aussi les modules d’éclairage pour piloter le sèche serviette. Attention, il faut le piloter au travers du fil pilote. Il y a une petite astuce très bien décrite sur le site d’Alexandre.

La consommation électrique est relevée par un OWL180. Une petite pince ampèremétrique branchée sur le compteur transmet la consommation en temps réel.

Consommation électrique - OWL180
Consommation électrique – OWL180

 

Un petit écran déporté affiche la consommation en temps réel

Consommation électrique - OWL180
Consommation électrique – OWL180

 

Pour le gaz, c’est un peu plus compliqué mais aussi plus amusant. Les modules du commerce sont très chers, le DIY vient à la rescousse.

Capteur DIY Gasmonitor
Capteur DIY Gasmonitor

C’est simple, un arduino relève les impulsions générées par le compteur de gaz (un aimant est placé sur la roue du compteur) et les transmet à Domoticz par radio. On peut capter les impulsions d’un compteur de gaz avec un interrupteur reed.

Par la même occasion je relève la température et l’humidité du garage avec un DHT22.

Je vais aussi ajouter la consommation d’eau un peu plus tard.

IMG_20141230_095054_

Et le circuit vraiment très simple

Sélection_023

Le schéma et le code pour programmer l’arduino sont sur Github ici. C’est une première version mais ça marche très bien.

Pour la transmission des informations, j’ai utilisé une librairie permettant de simuler un capteur de type RFXMeter et RFXSensor. Du coup domoticz détecte le capteur tout seul comme un grand. Pour les informations de température et d’humidité, j’ai plutôt utilisé le format Oregon V2 gentiment mis à disposition par Olivier ici. Le nombre d’impulsions comptées est stocké dans l’EEPROM de l’arduino toutes les heures afin de ne pas perdre les informations en cas de coupure de courant.

Un seul arduino peut donc émuler toutes les sondes possibles et imaginables. D’autant qu’il ne faut qu’un arduino et un petit transmetteur 433MHz qui coûte 2-3€ ! Pour les arduino, j’utilise des Mini Pro en 5v ou en 3.3v suivant le type d’alimentation.

 

Après les informations concernant le matériel, voilà un petit tour de ce que ça donne dans Domoticz.

 

Le dashboard
Le dashboard
Les compteurs
Les compteurs
La conso de gaz
La conso de gaz
Les rapports d'électricité avec les coûts
Les rapports d’électricité avec les coûts
La météo
La météo
Des scénarios
Des scénarios

 

Des scripts lua sont aussi possibles pour faire ce qui n’est pas possible avec l’interface web. Ici par exemple, on envoie une notification sur mobile si la porte du garage est restée ouverte. Pratique avec des enfants :-D

print(‘Porte de garage…’)

t1 = os.time()
s = otherdevices_lastupdate[‘Porte de garage’]
— returns a date time like 2013-07-11 17:23:12

year = string.sub(s, 1, 4)
month = string.sub(s, 6, 7)
day = string.sub(s, 9, 10)
hour = string.sub(s, 12, 13)
minutes = string.sub(s, 15, 16)
seconds = string.sub(s, 18, 19)

commandArray = {}

t2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
difference = (os.difftime (t1, t2))
if (otherdevices[‘Porte de garage’] == ‘Open’ and difference > 300 and difference < 400) then
commandArray[‘SendNotification’]=’La porte de garage est ouverte depuis plus de 5 minutes!’

end

return commandArray

Il y a aussi des applications android / iphone pour piloter le tout avec son mobile.

Voilà un bref aperçu de ce que l’on peut faire. Tout ou presque est possible ! Si vous avez des questions sur cette solution, n’hésitez pas à laisser un commentaire :)

J’utilise depuis quelques mois une solution domotique qui me donne pleinement satisfaction. Cette solution relativement économique repose sur l’utilisation d’un RaspberryPi avec le logiciel Domoticz ainsi que d’un « modem » radio 433MHz RFXCom

Je ne vais pas détailler l’installation de Domoticz, tout est décrit sur leur site et l’opération reste très simple.

Mes besoins essentiels concernent les consommations de l’habitation ( eau, gaz, électricité ) et les relevés de température et humidité dans certaines pièces. De plus, je pilote quelques lumières ainsi qu’un radiateur de type sèche serviettes. Depuis quelques temps j’ai ajouté des capteurs d’ouverture sur les Vélux et les portes. Je peux ainsi savoir par une notification sur le téléphone si l’on quitte la maison avec un Vélux oublié ouvert…

La solution à base de technologie radio en 433MHz présente quelques avantages:

  • Le prix
  • Le nombre de modules disponibles sur le marché
  • La possibilité de créer facilement ses propres capteurs avec un arduino par exemple

Le gros inconvénient c’est que contrairement au Zwave, il n’y a pas de retour d’état. Pour piloter des éléments « critiques » comme le chauffage, c’est un peu gênant mais on peut y remédier d’une façon assez satisfaisante à l’aide d’un script.

Les modules que j’utilise sont disponibles facilement dans les grandes surfaces de bricolage ou sur internet.

 

Le raspberry équipé d’une carte RFM12Pi en 868MHz pour un usage futur.

RasberryPi
RaspberryPi

 

Le modem RFXCom. On pourrait en créer un avec un arduino pour beaucoup moins cher mais il faut décoder les différents protocoles ce qui m’aurait demandé trop de temps. J’ai donc préféré acheter un module « tout fait » et consacrer plus de temps sur les autres parties.

Module RFXCom
Module RFXCom

 

Des sondes de température Oregon sont disposées aux endroits stratégiques ( Salon, Salle de bain, extérieur, chambres…)

Capteur oregon de température et humidité
Capteur Oregon de température et humidité

 

Le carillon de la porte d’entrée est lui aussi compatible. Il peut donc servir d’alerte sonore si besoin, d’autant qu’il dispose de 3 mélodies utilisables avec des codes différents.

Carillion
Carillon

 

Pour les Vélux, de simples capteurs d’ouverture

Capteur d'ouverture
Capteur d’ouverture

 

Pareil pour la porte du garage

Capteur d'ouverture
Capteur d’ouverture

 

Il y a aussi un capteur de mouvement pour le déclenchement d’un éclairage et d’une notification sur smartphone

Capteur de mouvements
Capteur de mouvements

 

Les lumières sont pilotables par ces petits relais.

Module d'éclairage
Module d’éclairage

J’utilise aussi les modules d’éclairage pour piloter le sèche serviette. Attention, il faut le piloter au travers du fil pilote. Il y a une petite astuce très bien décrite sur le site d’Alexandre.

La consommation électrique est relevée par un OWL180. Une petite pince ampèremétrique branchée sur le compteur transmet la consommation en temps réel.

Consommation électrique - OWL180
Consommation électrique – OWL180

 

Un petit écran déporté affiche la consommation en temps réel

Consommation électrique - OWL180
Consommation électrique – OWL180

 

Pour le gaz, c’est un peu plus compliqué mais aussi plus amusant. Les modules du commerce sont très chers, le DIY vient à la rescousse.

Capteur DIY Gasmonitor
Capteur DIY Gasmonitor

C’est simple, un arduino relève les impulsions générées par le compteur de gaz (un aimant est placé sur la roue du compteur) et les transmet à Domoticz par radio. On peut capter les impulsions d’un compteur de gaz avec un interrupteur reed.

Par la même occasion je relève la température et l’humidité du garage avec un DHT22.

Je vais aussi ajouter la consommation d’eau un peu plus tard.

IMG_20141230_095054_

Et le circuit vraiment très simple

Sélection_023

Le schéma et le code pour programmer l’arduino sont sur Github ici. C’est une première version mais ça marche très bien.

Pour la transmission des informations, j’ai utilisé une librairie permettant de simuler un capteur de type RFXMeter et RFXSensor. Du coup domoticz détecte le capteur tout seul comme un grand. Pour les informations de température et d’humidité, j’ai plutôt utilisé le format Oregon V2 gentiment mis à disposition par Olivier ici. Le nombre d’impulsions comptées est stocké dans l’EEPROM de l’arduino toutes les heures afin de ne pas perdre les informations en cas de coupure de courant.

Un seul arduino peut donc émuler toutes les sondes possibles et imaginables. D’autant qu’il ne faut qu’un arduino et un petit transmetteur 433MHz qui coûte 2-3€ ! Pour les arduino, j’utilise des Mini Pro en 5v ou en 3.3v suivant le type d’alimentation.

 

Après les informations concernant le matériel, voilà un petit tour de ce que ça donne dans Domoticz.

 

Le dashboard
Le dashboard
Les compteurs
Les compteurs
La conso de gaz
La conso de gaz
Les rapports d'électricité avec les coûts
Les rapports d’électricité avec les coûts
La météo
La météo
Des scénarios
Des scénarios

 

Des scripts lua sont aussi possibles pour faire ce qui n’est pas possible avec l’interface web. Ici par exemple, on envoie une notification sur mobile si la porte du garage est restée ouverte. Pratique avec des enfants </p>				</div>

			</div>

				<div class=

J’utilise depuis quelques mois une solution domotique qui me donne pleinement satisfaction. Cette solution relativement économique repose sur l’utilisation d’un RaspberryPi avec le logiciel Domoticz ainsi que d’un « modem » radio 433MHz RFXCom

Je ne vais pas détailler l’installation de Domoticz, tout est décrit sur leur site et l’opération reste très simple.

Mes besoins essentiels concernent les consommations de l’habitation ( eau, gaz, électricité ) et les relevés de température et humidité dans certaines pièces. De plus, je pilote quelques lumières ainsi qu’un radiateur de type sèche serviettes. Depuis quelques temps j’ai ajouté des capteurs d’ouverture sur les Vélux et les portes. Je peux ainsi savoir par une notification sur le téléphone si l’on quitte la maison avec un Vélux oublié ouvert…

La solution à base de technologie radio en 433MHz présente quelques avantages:

  • Le prix
  • Le nombre de modules disponibles sur le marché
  • La possibilité de créer facilement ses propres capteurs avec un arduino par exemple

Le gros inconvénient c’est que contrairement au Zwave, il n’y a pas de retour d’état. Pour piloter des éléments « critiques » comme le chauffage, c’est un peu gênant mais on peut y remédier d’une façon assez satisfaisante à l’aide d’un script.

Les modules que j’utilise sont disponibles facilement dans les grandes surfaces de bricolage ou sur internet.

 

Le raspberry équipé d’une carte RFM12Pi en 868MHz pour un usage futur.

RasberryPi
RaspberryPi

 

Le modem RFXCom. On pourrait en créer un avec un arduino pour beaucoup moins cher mais il faut décoder les différents protocoles ce qui m’aurait demandé trop de temps. J’ai donc préféré acheter un module « tout fait » et consacrer plus de temps sur les autres parties.

Module RFXCom
Module RFXCom

 

Des sondes de température Oregon sont disposées aux endroits stratégiques ( Salon, Salle de bain, extérieur, chambres…)

Capteur oregon de température et humidité
Capteur Oregon de température et humidité

 

Le carillon de la porte d’entrée est lui aussi compatible. Il peut donc servir d’alerte sonore si besoin, d’autant qu’il dispose de 3 mélodies utilisables avec des codes différents.

Carillion
Carillon

 

Pour les Vélux, de simples capteurs d’ouverture

Capteur d'ouverture
Capteur d’ouverture

 

Pareil pour la porte du garage

Capteur d'ouverture
Capteur d’ouverture

 

Il y a aussi un capteur de mouvement pour le déclenchement d’un éclairage et d’une notification sur smartphone

Capteur de mouvements
Capteur de mouvements

 

Les lumières sont pilotables par ces petits relais.

Module d'éclairage
Module d’éclairage

J’utilise aussi les modules d’éclairage pour piloter le sèche serviette. Attention, il faut le piloter au travers du fil pilote. Il y a une petite astuce très bien décrite sur le site d’Alexandre.

La consommation électrique est relevée par un OWL180. Une petite pince ampèremétrique branchée sur le compteur transmet la consommation en temps réel.

Consommation électrique - OWL180
Consommation électrique – OWL180

 

Un petit écran déporté affiche la consommation en temps réel

Consommation électrique - OWL180
Consommation électrique – OWL180

 

Pour le gaz, c’est un peu plus compliqué mais aussi plus amusant. Les modules du commerce sont très chers, le DIY vient à la rescousse.

Capteur DIY Gasmonitor
Capteur DIY Gasmonitor

C’est simple, un arduino relève les impulsions générées par le compteur de gaz (un aimant est placé sur la roue du compteur) et les transmet à Domoticz par radio. On peut capter les impulsions d’un compteur de gaz avec un interrupteur reed.

Par la même occasion je relève la température et l’humidité du garage avec un DHT22.

Je vais aussi ajouter la consommation d’eau un peu plus tard.

IMG_20141230_095054_

Et le circuit vraiment très simple

Sélection_023

Le schéma et le code pour programmer l’arduino sont sur Github ici. C’est une première version mais ça marche très bien.

Pour la transmission des informations, j’ai utilisé une librairie permettant de simuler un capteur de type RFXMeter et RFXSensor. Du coup domoticz détecte le capteur tout seul comme un grand. Pour les informations de température et d’humidité, j’ai plutôt utilisé le format Oregon V2 gentiment mis à disposition par Olivier ici. Le nombre d’impulsions comptées est stocké dans l’EEPROM de l’arduino toutes les heures afin de ne pas perdre les informations en cas de coupure de courant.

Un seul arduino peut donc émuler toutes les sondes possibles et imaginables. D’autant qu’il ne faut qu’un arduino et un petit transmetteur 433MHz qui coûte 2-3€ ! Pour les arduino, j’utilise des Mini Pro en 5v ou en 3.3v suivant le type d’alimentation.

 

Après les informations concernant le matériel, voilà un petit tour de ce que ça donne dans Domoticz.

 

Le dashboard
Le dashboard
Les compteurs
Les compteurs
La conso de gaz
La conso de gaz
Les rapports d'électricité avec les coûts
Les rapports d’électricité avec les coûts
La météo
La météo
Des scénarios
Des scénarios

 

Des scripts lua sont aussi possibles pour faire ce qui n’est pas possible avec l’interface web. Ici par exemple, on envoie une notification sur mobile si la porte du garage est restée ouverte. Pratique avec des enfants </p/></p>				</div>

			</div>

				<div class=

J’utilise depuis quelques mois une solution domotique qui me donne pleinement satisfaction. Cette solution relativement économique repose sur l’utilisation d’un RaspberryPi avec le logiciel Domoticz ainsi que d’un « modem » radio 433MHz RFXCom

Je ne vais pas détailler l’installation de Domoticz, tout est décrit sur leur site et l’opération reste très simple.

Mes besoins essentiels concernent les consommations de l’habitation ( eau, gaz, électricité ) et les relevés de température et humidité dans certaines pièces. De plus, je pilote quelques lumières ainsi qu’un radiateur de type sèche serviettes. Depuis quelques temps j’ai ajouté des capteurs d’ouverture sur les Vélux et les portes. Je peux ainsi savoir par une notification sur le téléphone si l’on quitte la maison avec un Vélux oublié ouvert…

La solution à base de technologie radio en 433MHz présente quelques avantages:

  • Le prix
  • Le nombre de modules disponibles sur le marché
  • La possibilité de créer facilement ses propres capteurs avec un arduino par exemple

Le gros inconvénient c’est que contrairement au Zwave, il n’y a pas de retour d’état. Pour piloter des éléments « critiques » comme le chauffage, c’est un peu gênant mais on peut y remédier d’une façon assez satisfaisante à l’aide d’un script.

Les modules que j’utilise sont disponibles facilement dans les grandes surfaces de bricolage ou sur internet.

 

Le raspberry équipé d’une carte RFM12Pi en 868MHz pour un usage futur.

RasberryPi
RaspberryPi

 

Le modem RFXCom. On pourrait en créer un avec un arduino pour beaucoup moins cher mais il faut décoder les différents protocoles ce qui m’aurait demandé trop de temps. J’ai donc préféré acheter un module « tout fait » et consacrer plus de temps sur les autres parties.

Module RFXCom
Module RFXCom

 

Des sondes de température Oregon sont disposées aux endroits stratégiques ( Salon, Salle de bain, extérieur, chambres…)

Capteur oregon de température et humidité
Capteur Oregon de température et humidité

 

Le carillon de la porte d’entrée est lui aussi compatible. Il peut donc servir d’alerte sonore si besoin, d’autant qu’il dispose de 3 mélodies utilisables avec des codes différents.

Carillion
Carillon

 

Pour les Vélux, de simples capteurs d’ouverture

Capteur d'ouverture
Capteur d’ouverture

 

Pareil pour la porte du garage

Capteur d'ouverture
Capteur d’ouverture

 

Il y a aussi un capteur de mouvement pour le déclenchement d’un éclairage et d’une notification sur smartphone

Capteur de mouvements
Capteur de mouvements

 

Les lumières sont pilotables par ces petits relais.

Module d'éclairage
Module d’éclairage

J’utilise aussi les modules d’éclairage pour piloter le sèche serviette. Attention, il faut le piloter au travers du fil pilote. Il y a une petite astuce très bien décrite sur le site d’Alexandre.

La consommation électrique est relevée par un OWL180. Une petite pince ampèremétrique branchée sur le compteur transmet la consommation en temps réel.

Consommation électrique - OWL180
Consommation électrique – OWL180

 

Un petit écran déporté affiche la consommation en temps réel

Consommation électrique - OWL180
Consommation électrique – OWL180

 

Pour le gaz, c’est un peu plus compliqué mais aussi plus amusant. Les modules du commerce sont très chers, le DIY vient à la rescousse.

Capteur DIY Gasmonitor
Capteur DIY Gasmonitor

C’est simple, un arduino relève les impulsions générées par le compteur de gaz (un aimant est placé sur la roue du compteur) et les transmet à Domoticz par radio. On peut capter les impulsions d’un compteur de gaz avec un interrupteur reed.

Par la même occasion je relève la température et l’humidité du garage avec un DHT22.

Je vais aussi ajouter la consommation d’eau un peu plus tard.

IMG_20141230_095054_

Et le circuit vraiment très simple

Sélection_023

Le schéma et le code pour programmer l’arduino sont sur Github ici. C’est une première version mais ça marche très bien.

Pour la transmission des informations, j’ai utilisé une librairie permettant de simuler un capteur de type RFXMeter et RFXSensor. Du coup domoticz détecte le capteur tout seul comme un grand. Pour les informations de température et d’humidité, j’ai plutôt utilisé le format Oregon V2 gentiment mis à disposition par Olivier ici. Le nombre d’impulsions comptées est stocké dans l’EEPROM de l’arduino toutes les heures afin de ne pas perdre les informations en cas de coupure de courant.

Un seul arduino peut donc émuler toutes les sondes possibles et imaginables. D’autant qu’il ne faut qu’un arduino et un petit transmetteur 433MHz qui coûte 2-3€ ! Pour les arduino, j’utilise des Mini Pro en 5v ou en 3.3v suivant le type d’alimentation.

 

Après les informations concernant le matériel, voilà un petit tour de ce que ça donne dans Domoticz.

 

Le dashboard
Le dashboard
Les compteurs
Les compteurs
La conso de gaz
La conso de gaz
Les rapports d'électricité avec les coûts
Les rapports d’électricité avec les coûts
La météo
La météo
Des scénarios
Des scénarios

 

Des scripts lua sont aussi possibles pour faire ce qui n’est pas possible avec l’interface web. Ici par exemple, on envoie une notification sur mobile si la porte du garage est restée ouverte. Pratique avec des enfants </p/></p>				</div>

			</div>

				<div class=

Jun
27

Tuto – Lire un capteur infrarouge avec Arduino

arduino, ArduRasp, capteur, diy, Domotique, planet, tutoriel Comments Off on Tuto – Lire un capteur infrarouge avec Arduino 

Bonjour à tous,

J’ai reçu quelques capteurs intéressants, dont un capteur infrarouge (permettant par exemple de détecter une source de chaleur), on va donc reprendre un tuto avec ce capteur et un arduino (et un bonus en deuxième partie de tutoriel).

Le matériel

Pour ce tutoriel il nous faudra :

  • Un arduino (ici un Uno)
  • Un capteur HC SR-501
  • 3 fils
  • Une led 5mm

Et c’est tout. Minimaliste comme montage non ?

Le principe

Un capteur infrarouge permet de détecter un mouvement dans son champ de vision en se basant sur l’infrarouge. On parle aussi de capteur pyroélectrique ou PIR. Le PIR sont capable de détecter une variation des ondes infrarouges, ce qui génère un courant électrique. Dans le cas de notre capteur, il est en fait divisé en deux partie différente reliées ensemble afin de détecter une variation lors qu’une des moitiés capte plus qu’une autre. On a ainsi un relevé d’une différence, et non plus d’une valeur simple.

Lors d’un mouvement, la variation des deux moitiés vont varier, et on va donc capter cette variation positive.

Principe de fonctionnement

Principe de fonctionnement

Le capteur

Le capteur lui même ressemble à ça :

Le capteur

Le capteur

Et l’intérieur fonctionne de la manière suivante :

PIR_interneLes spécifications techniques sont les suivantes :

  • Entrée : Courant continue de 4.5 à 20V
  • Sortie : High 3.3 V / Low 0V (Détection ou non)
  • Angle : <100 °
  • Dimension : 32 mm * 24 mm
  • Délai : de 5 à 200 secondes (ajustable)
  • Portée : de 3 à 7 mètres (ajustable).
  • Au repos : 50 microampères.

Le montage

Au vu des éléments nécessaires, vous allez voir, c’est plutôt simple !

Branchement du PIR sur l'arduino Uno

Branchement du PIR sur l’arduino Uno

On branche donc :

  • Le VCC du Pir  sur le 5V de l’arduino
  • Le GRD du PIR sur le GRD de l’arduino
  • La dernière branche sur le pin 2 de l’arduino
  • On ajoute une led de contrôle entre le pin 13 et un GRD de l’arduino

Mais attention : D’un PIR à l’autre, les branchements sont inversés ! J’avais 2 types de PIR, et j’ai grillé 2 PIR avant de me rendre compte que le branchement + et – était différent entre les 2 types de capteurs. BIEN SE RENSEIGNER AUPRÈS DU REVENDEUR !

Le code

Il est enfin temps de faire fonctionner tout ça ! Rien de bien compliqué non plus. On va commencer par laisser 30 secondes au PIR pour se calibrer, puis un fois cela fait, on va en boucle relever la valeur que nous renvoi le capteur : 0 ou 1. 0 signifiant pas de signal et 1 signifiant qu’il détecte une variation infrarouge.

Le code en lui même est disponible sur mon dépôt github : ici.

Si vous n’êtes pas à l’aise avec github, je vous le reproduis ci dessous :

//the time we give the sensor to calibrate (10-60 secs according to the datasheet)
int calibrationTime = 30;

int ledPin = 13;                // choose the pin for the LED
int inputPin = 2;               // choose the input pin (for PIR sensor)
int pirState = LOW;             // we start, assuming no motion detected
int val = 0;                    // variable for reading the pin status

void setup() {
  pinMode(ledPin, OUTPUT);      // declare LED as output
  pinMode(inputPin, INPUT);     // declare sensor as input
  Serial.begin(9600);

  Serial.print("calibrating sensor ");
  for(int i = 0; i < calibrationTime; i++){
    Serial.print(".");
    delay(1000);
  }
}

void loop(){
  val = digitalRead(inputPin);  // read input value
  Serial.println(val);
  if (val == HIGH) { // check if the input is HIGH
    digitalWrite(ledPin, HIGH);  // turn LED ON
    delay(150);

    if (pirState == LOW) {
      // we have just turned on
      Serial.println("Motion detected!");
      // We only want to print on the output change, not state
      pirState = HIGH;
    }
  } else {
    digitalWrite(ledPin, LOW); // turn LED OFF
    delay(300);
    if (pirState == HIGH){
      // we have just turned of
      Serial.println("Motion ended!");
      // We only want to print on the output change, not state
      pirState = LOW;
    }
  }
}

On commence donc par initialiser les pins dans leur état d’entrée ou de sortie, puis on calibre le capteur.

Puis dans le loop, on relève la valeur renvoyée par le capteur et on agit en conséquence. Quand vous lancez le moniteur, vous avez alors un retour comme ceci :

Ce que le moniteur nous ressort

Ce que le moniteur nous ressort

 

Bonus : Créer une lampe qui s’allume automatiquement

On va profiter de ce capteur pour l’utiliser dans un cas pratique ! Nous allons le coupler avec un relai, qui va nous permettre de contrôler du courant (du 220V par exemple) pour allumer ou éteindre une lampe lorsque l’on détecte un mouvement. Cette deuxième partie est donc un cas pratique d’utilisation de notre capteur de mouvement.

Le matériel nécessaire, en plus est le suivant :

Pour la lampe, j’ai acheté une lampe à LED chez Castorama à 12€. Vu qu’il faut couper le câble d’alimentation pour le montage, évitez de sacrifier une lampe de qualité (ça vaut mieux pour la paix des ménages).

Un relais, ou relais électromagnétique est, selon wikipedia un organe électrique permettant de dissocier la partie puissance de la partie commande, autrement dit,  Il permet l’ouverture / la fermeture d’un circuit électrique par un second circuit totalement isolé. Ici, nous allons donc contrôler l’ouverture ou la fermeture du circuit en 220V (enfin 12V sur ma lampe de test) avec un second circuit en 5V contrôlé par la carte Arduino.

Voila à quoi va désormais ressembler notre montage :

Schéma du montage PIR et relais

Schéma du montage PIR et relais

Comme vous pouvez le voir, le montage du PIR ne varie pas, on le connecte toujours aux mêmes bornes.

Pour le relais, il faut faire 2 choses : Connecter GND à la masse commune du montage (pir et relais doivent avoir la même masse), connecter le VCC au 5V fourni par l’arduino, et connecter le pin de données au port 3 de l’arduino.

De l’autre côté du relais, il va falloir couper votre câble d’alimentation de la lampe.  On va donc avoir quelque chose qui ressemble à ça :

Contrôle de l'alimentation de la lampe grâce au module relais

Contrôle de l’alimentation de la lampe grâce au module relais

Le montage dans son ensemble

Le montage dans son ensemble

Avant de vous donner le code, voici une petite vidéo qui vous montre comment tout cela fonctionne :

Passons au code désormais. Comme vous pouvez vous en douter, on va utiliser le code de la première partie du tutoriel que l’on va enrichir pour prendre en compte le contrôle du module relais.

Vous trouverez le code sur mon dépôt github, ici.

Si vous êtes githubophobe, vous trouverez le code ci dessous :

//the time we give the sensor to calibrate (10-60 secs according to the datasheet)
int calibrationTime = 30;  
// The time the device will stay on
int delayTime = 5000;

int ledPin = 13;                // choose the pin for the LED
int inputPin = 2;               // choose the input pin (for PIR sensor)
int relayPin = 3;
int pirState = LOW;             // we start, assuming no motion detected
int stateRelay = HIGH;
int val = 0;                    // variable for reading the pin status

void setup() {
  pinMode(ledPin, OUTPUT);      // declare LED as output
  pinMode(relayPin, OUTPUT);
  pinMode(inputPin, INPUT);     // declare sensor as input
  Serial.begin(9600);
  digitalWrite(relayPin, stateRelay);
  //give the sensor some time to calibrate
  Serial.print("calibrating sensor ");
  for(int i = 0; i < calibrationTime; i++){
    Serial.print(".");
    delay(1000);
  }
  Serial.println("SENSOR ACTIVE");
  delay(50);
}

void loop(){
  val = digitalRead(inputPin);  // read input value
  //Serial.println(val);
  if (val == HIGH) { // check if the input is HIGH
    digitalWrite(ledPin, HIGH);  // turn LED ON
    delay(150);    

    if (pirState == LOW) {
      // we have just turned on
      Serial.println("Motion detected!");
      // We only want to print on the output change, not state
      pirState = HIGH;
    }
  } else {
    digitalWrite(ledPin, LOW); // turn LED OFF
    delay(300);    
      if (pirState == HIGH){
      // we have just turned of
      Serial.println("Motion ended!");
      // We only want to print on the output change, not state
      pirState = LOW;
    }
  }

  Serial.println(pirState);
  if(pirState == HIGH){
     digitalWrite(relayPin, LOW);
     delay(delayTime);
  } else {
     digitalWrite(relayPin, HIGH);
  }
}

Comme vous pouvez le voir, rien de bien compliqué ! Comme dans le premier montage, on contrôle si on détecte un mouvement, et si oui, dans ce cas on va activer le module relais pour allumer la lampe.

Et voila, c’est fini pour ce tutoriel.

Précaution importante

Ce montage est assez simpliste et n’est en soit pas sécurisé pour l’arduino. En effet, le fait d’ouvrir ou fermer un relai va générer des surtensions. Si vous souhaitez utiliser ce montage de manière régulière, il va donc être IMPÉRATIF de protéger votre circuit. Heureusement, c’est assez simple.

Je vous invite à lire ce tuto pour en savoir plus et protéger votre circuit. L’idée est d’utiliser une diode pour protéger notre arduino des retours potentiels du relais. Il se peut aussi que votre module relais possède déjà cette sécurité, donc à vous de vérifier en fonction du module que vous avez acheté !

Voila, c’est enfin tout pour ce tutoriel. Si vous avez des questions, n’hésitez pas !

 

Bonjour à tous,

J’ai reçu quelques capteurs intéressants, dont un capteur infrarouge (permettant par exemple de détecter une source de chaleur), on va donc reprendre un tuto avec ce capteur et un arduino (et un bonus en deuxième partie de tutoriel).

Le matériel

Pour ce tutoriel il nous faudra :

  • Un arduino (ici un Uno)
  • Un capteur HC SR-501
  • 3 fils
  • Une led 5mm

Et c’est tout. Minimaliste comme montage non ?

Le principe

Un capteur infrarouge permet de détecter un mouvement dans son champ de vision en se basant sur l’infrarouge. On parle aussi de capteur pyroélectrique ou PIR. Le PIR sont capable de détecter une variation des ondes infrarouges, ce qui génère un courant électrique. Dans le cas de notre capteur, il est en fait divisé en deux partie différente reliées ensemble afin de détecter une variation lors qu’une des moitiés capte plus qu’une autre. On a ainsi un relevé d’une différence, et non plus d’une valeur simple.

Lors d’un mouvement, la variation des deux moitiés vont varier, et on va donc capter cette variation positive.

Principe de fonctionnement

Principe de fonctionnement

Le capteur

Le capteur lui même ressemble à ça :

Le capteur

Le capteur

Et l’intérieur fonctionne de la manière suivante :

PIR_interneLes spécifications techniques sont les suivantes :

  • Entrée : Courant continue de 4.5 à 20V
  • Sortie : High 3.3 V / Low 0V (Détection ou non)
  • Angle : <100 °
  • Dimension : 32 mm * 24 mm
  • Délai : de 5 à 200 secondes (ajustable)
  • Portée : de 3 à 7 mètres (ajustable).
  • Au repos : 50 microampères.

Le montage

Au vu des éléments nécessaires, vous allez voir, c’est plutôt simple !

Branchement du PIR sur l'arduino Uno

Branchement du PIR sur l’arduino Uno

On branche donc :

  • Le VCC du Pir  sur le 5V de l’arduino
  • Le GRD du PIR sur le GRD de l’arduino
  • La dernière branche sur le pin 2 de l’arduino
  • On ajoute une led de contrôle entre le pin 13 et un GRD de l’arduino

Mais attention : D’un PIR à l’autre, les branchements sont inversés ! J’avais 2 types de PIR, et j’ai grillé 2 PIR avant de me rendre compte que le branchement + et – était différent entre les 2 types de capteurs. BIEN SE RENSEIGNER AUPRÈS DU REVENDEUR !

Le code

Il est enfin temps de faire fonctionner tout ça ! Rien de bien compliqué non plus. On va commencer par laisser 30 secondes au PIR pour se calibrer, puis un fois cela fait, on va en boucle relever la valeur que nous renvoi le capteur : 0 ou 1. 0 signifiant pas de signal et 1 signifiant qu’il détecte une variation infrarouge.

Le code en lui même est disponible sur mon dépôt github : ici.

Si vous n’êtes pas à l’aise avec github, je vous le reproduis ci dessous :

//the time we give the sensor to calibrate (10-60 secs according to the datasheet)
int calibrationTime = 30;

int ledPin = 13;                // choose the pin for the LED
int inputPin = 2;               // choose the input pin (for PIR sensor)
int pirState = LOW;             // we start, assuming no motion detected
int val = 0;                    // variable for reading the pin status

void setup() {
  pinMode(ledPin, OUTPUT);      // declare LED as output
  pinMode(inputPin, INPUT);     // declare sensor as input
  Serial.begin(9600);

  Serial.print("calibrating sensor ");
  for(int i = 0; i < calibrationTime; i++){
    Serial.print(".");
    delay(1000);
  }
}

void loop(){
  val = digitalRead(inputPin);  // read input value
  Serial.println(val);
  if (val == HIGH) { // check if the input is HIGH
    digitalWrite(ledPin, HIGH);  // turn LED ON
    delay(150);

    if (pirState == LOW) {
      // we have just turned on
      Serial.println("Motion detected!");
      // We only want to print on the output change, not state
      pirState = HIGH;
    }
  } else {
    digitalWrite(ledPin, LOW); // turn LED OFF
    delay(300);
    if (pirState == HIGH){
      // we have just turned of
      Serial.println("Motion ended!");
      // We only want to print on the output change, not state
      pirState = LOW;
    }
  }
}

On commence donc par initialiser les pins dans leur état d’entrée ou de sortie, puis on calibre le capteur.

Puis dans le loop, on relève la valeur renvoyée par le capteur et on agit en conséquence. Quand vous lancez le moniteur, vous avez alors un retour comme ceci :

Ce que le moniteur nous ressort

Ce que le moniteur nous ressort

 

Bonus : Créer une lampe qui s’allume automatiquement

On va profiter de ce capteur pour l’utiliser dans un cas pratique ! Nous allons le coupler avec un relai, qui va nous permettre de contrôler du courant (du 220V par exemple) pour allumer ou éteindre une lampe lorsque l’on détecte un mouvement. Cette deuxième partie est donc un cas pratique d’utilisation de notre capteur de mouvement.

Le matériel nécessaire, en plus est le suivant :

Pour la lampe, j’ai acheté une lampe à LED chez Castorama à 12€. Vu qu’il faut couper le câble d’alimentation pour le montage, évitez de sacrifier une lampe de qualité (ça vaut mieux pour la paix des ménages).

Un relais, ou relais électromagnétique est, selon wikipedia un organe électrique permettant de dissocier la partie puissance de la partie commande, autrement dit,  Il permet l’ouverture / la fermeture d’un circuit électrique par un second circuit totalement isolé. Ici, nous allons donc contrôler l’ouverture ou la fermeture du circuit en 220V (enfin 12V sur ma lampe de test) avec un second circuit en 5V contrôlé par la carte Arduino.

Voila à quoi va désormais ressembler notre montage :

Schéma du montage PIR et relais

Schéma du montage PIR et relais

Comme vous pouvez le voir, le montage du PIR ne varie pas, on le connecte toujours aux mêmes bornes.

Pour le relais, il faut faire 2 choses : Connecter GND à la masse commune du montage (pir et relais doivent avoir la même masse), connecter le VCC au 5V fourni par l’arduino, et connecter le pin de données au port 3 de l’arduino.

De l’autre côté du relais, il va falloir couper votre câble d’alimentation de la lampe.  On va donc avoir quelque chose qui ressemble à ça :

Contrôle de l'alimentation de la lampe grâce au module relais

Contrôle de l’alimentation de la lampe grâce au module relais

Le montage dans son ensemble

Le montage dans son ensemble

Avant de vous donner le code, voici une petite vidéo qui vous montre comment tout cela fonctionne :

Passons au code désormais. Comme vous pouvez vous en douter, on va utiliser le code de la première partie du tutoriel que l’on va enrichir pour prendre en compte le contrôle du module relais.

Vous trouverez le code sur mon dépôt github, ici.

Si vous êtes githubophobe, vous trouverez le code ci dessous :

//the time we give the sensor to calibrate (10-60 secs according to the datasheet)
int calibrationTime = 30;  
// The time the device will stay on
int delayTime = 5000;

int ledPin = 13;                // choose the pin for the LED
int inputPin = 2;               // choose the input pin (for PIR sensor)
int relayPin = 3;
int pirState = LOW;             // we start, assuming no motion detected
int stateRelay = HIGH;
int val = 0;                    // variable for reading the pin status

void setup() {
  pinMode(ledPin, OUTPUT);      // declare LED as output
  pinMode(relayPin, OUTPUT);
  pinMode(inputPin, INPUT);     // declare sensor as input
  Serial.begin(9600);
  digitalWrite(relayPin, stateRelay);
  //give the sensor some time to calibrate
  Serial.print("calibrating sensor ");
  for(int i = 0; i < calibrationTime; i++){
    Serial.print(".");
    delay(1000);
  }
  Serial.println("SENSOR ACTIVE");
  delay(50);
}

void loop(){
  val = digitalRead(inputPin);  // read input value
  //Serial.println(val);
  if (val == HIGH) { // check if the input is HIGH
    digitalWrite(ledPin, HIGH);  // turn LED ON
    delay(150);    

    if (pirState == LOW) {
      // we have just turned on
      Serial.println("Motion detected!");
      // We only want to print on the output change, not state
      pirState = HIGH;
    }
  } else {
    digitalWrite(ledPin, LOW); // turn LED OFF
    delay(300);    
      if (pirState == HIGH){
      // we have just turned of
      Serial.println("Motion ended!");
      // We only want to print on the output change, not state
      pirState = LOW;
    }
  }

  Serial.println(pirState);
  if(pirState == HIGH){
     digitalWrite(relayPin, LOW);
     delay(delayTime);
  } else {
     digitalWrite(relayPin, HIGH);
  }
}

Comme vous pouvez le voir, rien de bien compliqué ! Comme dans le premier montage, on contrôle si on détecte un mouvement, et si oui, dans ce cas on va activer le module relais pour allumer la lampe.

Et voila, c’est fini pour ce tutoriel.

Précaution importante

Ce montage est assez simpliste et n’est en soit pas sécurisé pour l’arduino. En effet, le fait d’ouvrir ou fermer un relai va générer des surtensions. Si vous souhaitez utiliser ce montage de manière régulière, il va donc être IMPÉRATIF de protéger votre circuit. Heureusement, c’est assez simple.

Je vous invite à lire ce tuto pour en savoir plus et protéger votre circuit. L’idée est d’utiliser une diode pour protéger notre arduino des retours potentiels du relais. Il se peut aussi que votre module relais possède déjà cette sécurité, donc à vous de vérifier en fonction du module que vous avez acheté !

Voila, c’est enfin tout pour ce tutoriel. Si vous avez des questions, n’hésitez pas !

 

Bonjour à tous,

J’ai reçu quelques capteurs intéressants, dont un capteur infrarouge (permettant par exemple de détecter une source de chaleur), on va donc reprendre un tuto avec ce capteur et un arduino (et un bonus en deuxième partie de tutoriel).

Le matériel

Pour ce tutoriel il nous faudra :

  • Un arduino (ici un Uno)
  • Un capteur HC SR-501
  • 3 fils
  • Une led 5mm

Et c’est tout. Minimaliste comme montage non ?

Le principe

Un capteur infrarouge permet de détecter un mouvement dans son champ de vision en se basant sur l’infrarouge. On parle aussi de capteur pyroélectrique ou PIR. Le PIR sont capable de détecter une variation des ondes infrarouges, ce qui génère un courant électrique. Dans le cas de notre capteur, il est en fait divisé en deux partie différente reliées ensemble afin de détecter une variation lors qu’une des moitiés capte plus qu’une autre. On a ainsi un relevé d’une différence, et non plus d’une valeur simple.

Lors d’un mouvement, la variation des deux moitiés vont varier, et on va donc capter cette variation positive.

Principe de fonctionnement

Principe de fonctionnement

Le capteur

Le capteur lui même ressemble à ça :

Le capteur

Le capteur

Et l’intérieur fonctionne de la manière suivante :

PIR_interneLes spécifications techniques sont les suivantes :

  • Entrée : Courant continue de 4.5 à 20V
  • Sortie : High 3.3 V / Low 0V (Détection ou non)
  • Angle : <100 °
  • Dimension : 32 mm * 24 mm
  • Délai : de 5 à 200 secondes (ajustable)
  • Portée : de 3 à 7 mètres (ajustable).
  • Au repos : 50 microampères.

Le montage

Au vu des éléments nécessaires, vous allez voir, c’est plutôt simple !

Branchement du PIR sur l'arduino Uno

Branchement du PIR sur l’arduino Uno

On branche donc :

  • Le VCC du Pir  sur le 5V de l’arduino
  • Le GRD du PIR sur le GRD de l’arduino
  • La dernière branche sur le pin 2 de l’arduino
  • On ajoute une led de contrôle entre le pin 13 et un GRD de l’arduino

Mais attention : D’un PIR à l’autre, les branchements sont inversés ! J’avais 2 types de PIR, et j’ai grillé 2 PIR avant de me rendre compte que le branchement + et – était différent entre les 2 types de capteurs. BIEN SE RENSEIGNER AUPRÈS DU REVENDEUR !

Le code

Il est enfin temps de faire fonctionner tout ça ! Rien de bien compliqué non plus. On va commencer par laisser 30 secondes au PIR pour se calibrer, puis un fois cela fait, on va en boucle relever la valeur que nous renvoi le capteur : 0 ou 1. 0 signifiant pas de signal et 1 signifiant qu’il détecte une variation infrarouge.

Le code en lui même est disponible sur mon dépôt github : ici.

Si vous n’êtes pas à l’aise avec github, je vous le reproduis ci dessous :

//the time we give the sensor to calibrate (10-60 secs according to the datasheet)
int calibrationTime = 30;

int ledPin = 13;                // choose the pin for the LED
int inputPin = 2;               // choose the input pin (for PIR sensor)
int pirState = LOW;             // we start, assuming no motion detected
int val = 0;                    // variable for reading the pin status

void setup() {
  pinMode(ledPin, OUTPUT);      // declare LED as output
  pinMode(inputPin, INPUT);     // declare sensor as input
  Serial.begin(9600);

  Serial.print("calibrating sensor ");
  for(int i = 0; i < calibrationTime; i++){
    Serial.print(".");
    delay(1000);
  }
}

void loop(){
  val = digitalRead(inputPin);  // read input value
  Serial.println(val);
  if (val == HIGH) { // check if the input is HIGH
    digitalWrite(ledPin, HIGH);  // turn LED ON
    delay(150);

    if (pirState == LOW) {
      // we have just turned on
      Serial.println("Motion detected!");
      // We only want to print on the output change, not state
      pirState = HIGH;
    }
  } else {
    digitalWrite(ledPin, LOW); // turn LED OFF
    delay(300);
    if (pirState == HIGH){
      // we have just turned of
      Serial.println("Motion ended!");
      // We only want to print on the output change, not state
      pirState = LOW;
    }
  }
}

On commence donc par initialiser les pins dans leur état d’entrée ou de sortie, puis on calibre le capteur.

Puis dans le loop, on relève la valeur renvoyée par le capteur et on agit en conséquence. Quand vous lancez le moniteur, vous avez alors un retour comme ceci :

Ce que le moniteur nous ressort

Ce que le moniteur nous ressort

 

Bonus : Créer une lampe qui s’allume automatiquement

On va profiter de ce capteur pour l’utiliser dans un cas pratique ! Nous allons le coupler avec un relai, qui va nous permettre de contrôler du courant (du 220V par exemple) pour allumer ou éteindre une lampe lorsque l’on détecte un mouvement. Cette deuxième partie est donc un cas pratique d’utilisation de notre capteur de mouvement.

Le matériel nécessaire, en plus est le suivant :

Pour la lampe, j’ai acheté une lampe à LED chez Castorama à 12€. Vu qu’il faut couper le câble d’alimentation pour le montage, évitez de sacrifier une lampe de qualité (ça vaut mieux pour la paix des ménages).

Un relais, ou relais électromagnétique est, selon wikipedia un organe électrique permettant de dissocier la partie puissance de la partie commande, autrement dit,  Il permet l’ouverture / la fermeture d’un circuit électrique par un second circuit totalement isolé. Ici, nous allons donc contrôler l’ouverture ou la fermeture du circuit en 220V (enfin 12V sur ma lampe de test) avec un second circuit en 5V contrôlé par la carte Arduino.

Voila à quoi va désormais ressembler notre montage :

Schéma du montage PIR et relais

Schéma du montage PIR et relais

Comme vous pouvez le voir, le montage du PIR ne varie pas, on le connecte toujours aux mêmes bornes.

Pour le relais, il faut faire 2 choses : Connecter GND à la masse commune du montage (pir et relais doivent avoir la même masse), connecter le VCC au 5V fourni par l’arduino, et connecter le pin de données au port 3 de l’arduino.

De l’autre côté du relais, il va falloir couper votre câble d’alimentation de la lampe.  On va donc avoir quelque chose qui ressemble à ça :

Contrôle de l'alimentation de la lampe grâce au module relais

Contrôle de l’alimentation de la lampe grâce au module relais

Le montage dans son ensemble

Le montage dans son ensemble

Avant de vous donner le code, voici une petite vidéo qui vous montre comment tout cela fonctionne :

Passons au code désormais. Comme vous pouvez vous en douter, on va utiliser le code de la première partie du tutoriel que l’on va enrichir pour prendre en compte le contrôle du module relais.

Vous trouverez le code sur mon dépôt github, ici.

Si vous êtes githubophobe, vous trouverez le code ci dessous :

//the time we give the sensor to calibrate (10-60 secs according to the datasheet)
int calibrationTime = 30;  
// The time the device will stay on
int delayTime = 5000;

int ledPin = 13;                // choose the pin for the LED
int inputPin = 2;               // choose the input pin (for PIR sensor)
int relayPin = 3;
int pirState = LOW;             // we start, assuming no motion detected
int stateRelay = HIGH;
int val = 0;                    // variable for reading the pin status

void setup() {
  pinMode(ledPin, OUTPUT);      // declare LED as output
  pinMode(relayPin, OUTPUT);
  pinMode(inputPin, INPUT);     // declare sensor as input
  Serial.begin(9600);
  digitalWrite(relayPin, stateRelay);
  //give the sensor some time to calibrate
  Serial.print("calibrating sensor ");
  for(int i = 0; i < calibrationTime; i++){
    Serial.print(".");
    delay(1000);
  }
  Serial.println("SENSOR ACTIVE");
  delay(50);
}

void loop(){
  val = digitalRead(inputPin);  // read input value
  //Serial.println(val);
  if (val == HIGH) { // check if the input is HIGH
    digitalWrite(ledPin, HIGH);  // turn LED ON
    delay(150);    

    if (pirState == LOW) {
      // we have just turned on
      Serial.println("Motion detected!");
      // We only want to print on the output change, not state
      pirState = HIGH;
    }
  } else {
    digitalWrite(ledPin, LOW); // turn LED OFF
    delay(300);    
      if (pirState == HIGH){
      // we have just turned of
      Serial.println("Motion ended!");
      // We only want to print on the output change, not state
      pirState = LOW;
    }
  }

  Serial.println(pirState);
  if(pirState == HIGH){
     digitalWrite(relayPin, LOW);
     delay(delayTime);
  } else {
     digitalWrite(relayPin, HIGH);
  }
}

Comme vous pouvez le voir, rien de bien compliqué ! Comme dans le premier montage, on contrôle si on détecte un mouvement, et si oui, dans ce cas on va activer le module relais pour allumer la lampe.

Et voila, c’est fini pour ce tutoriel.

Précaution importante

Ce montage est assez simpliste et n’est en soit pas sécurisé pour l’arduino. En effet, le fait d’ouvrir ou fermer un relai va générer des surtensions. Si vous souhaitez utiliser ce montage de manière régulière, il va donc être IMPÉRATIF de protéger votre circuit. Heureusement, c’est assez simple.

Je vous invite à lire ce tuto pour en savoir plus et protéger votre circuit. L’idée est d’utiliser une diode pour protéger notre arduino des retours potentiels du relais. Il se peut aussi que votre module relais possède déjà cette sécurité, donc à vous de vérifier en fonction du module que vous avez acheté !

Voila, c’est enfin tout pour ce tutoriel. Si vous avez des questions, n’hésitez pas !

 

Aug
13

Arduino – Capteur de luminosité

arduino, ArduRasp, capteur, diy, Domotique, photoresistance, planet, tuto Comments Off on Arduino – Capteur de luminosité 

Bonjour à tous,

Pour reprendre un peu le rythme des tutos, un petit tutoriel pour lire une photorésistance et ainsi calculer la luminosité dans une pièce.

Le matériel

  • Un Arduino (Uno Rev 3 dans mon cas)
  • Une breadboard 170 pts
  • Une photorésistance
  • Une résistance 10Kohm

Et évidemment quelques fils de connexion mâle / mâle. Et c’est tout. C’est un montage on ne peut plus simple, qui permettra ensuite d’être facilement étendu pour interagir avec d’autres éléments.

La photo résistance

La photo résistance

Vous pouvez acheter ces photorésistances sur ebay pour moins d’un euros assez facilement !

Le principe

Une photorésistance est un composant dont la résistivité dépend de la luminosité ambiante. On va donc s’en servir pour détecter le fortes variation de la luminosité.

On note l’illumination en « lux », voici un graphe qui montre l’évolution en lux en fonction de la résistance :

graph

Il faut noter aussi que ces capteurs ne sont pas sensibles de la même manière à toutes les longueurs d’onde (et donc aux couleurs). Les lumières bleues seront par exemple moins efficaces que des lumières jaunes / vertes.

Je vous invite à faire un tour sur la page wikipedia qui explique ce que sont les Lux. On notera notamment ce tableau de valeur indicative :

Activité ou lieu concerné Éclairement moyen
Sensibilité d’une caméra de bas niveau 0,001 lux
Nuit de pleine lune 0,5 lux
Rue de nuit bien éclairée 20 à 70 lux
Local de vie 100 à 200 lux
Appartement bien éclairé 200 à 400 lux
Local de travail 200 à 3 000 lux
Stade de nuit (suivant les différentes catégories (E1,E2,E3,E4,E5)) 150 à 1 500 lux
Extérieur par ciel couvert 500 à 25 000 lux
Extérieur en plein soleil 50 000 à 100 000 lux

Le montage

Vu le peu de composants, vous allez voir, le montage est extrêmement complexe !

Montage pour lire la photorésistance

Montage pour lire la photorésistance

Hop, finger in ze noze comme on dit !

Le montage

Le montage

Zoom sur la photorésistance

Zoom sur la photorésistance

Le code

On va, comme souvent, se baser sur un code fournit par Adafruit.

/* Photocell simple testing sketch.
Connect one end of the photocell to 5V, the other end to Analog 0.
 Then connect one end of a 10K resistor from Analog 0 to ground
For more information see http://learn.adafruit.com/photocells */

int photocellPin = 0; // the cell and 10K pulldown are connected to a0
int photocellReading; // the analog reading from the analog resistor divider

void setup(void) {
  // We'll send debugging information via the Serial monitor
  Serial.begin(9600);
}

void loop(void) {
  photocellReading = analogRead(photocellPin);
  Serial.print("Analog reading = ");
  Serial.print(photocellReading); // the raw analog reading
  // We'll have a few threshholds, qualitatively determined
  if (photocellReading < 10) {
    Serial.println(" - Noir");
  } else if (photocellReading < 200) {
    Serial.println(" - Sombre");
  } else if (photocellReading < 500) {
    Serial.println(" - Lumiere");
  } else if (photocellReading < 800) {
    Serial.println(" - Lumineux");
  } else {
    Serial.println(" - Tres lumineux");
  }
  delay(5000);
}

Voila pour le code.
Dans le cas d’une utilisation plus poussée au sein d’un montage plus complexe, on se contentera évidemment de lire le pin analog sans afficher d’info.

Idées d’utilisations

Voici plusieurs exemple d’utilisation de ce capteur.

  • Contrôle de la lumière : éteindre automatiquement la lumière d’une pièce grâce à un relais contrôlant l’arrivé de courant de la lampe. Lorsque la lumière est forte, on envoi alors un signal au relai pour qu’il se ferme ou reste fermé, inversement, quand il fait sombre, il déclenche l’allumage de la lumière. Si on rajoute à cela un capteur de mouvement ou de présence, cela permet de gérer plus finement le fonctionnement. Le must : mettre cela en place pour une serre, afin de diffuser de la lumière en permanence sur ses plants.
  • Robot suiveur de lumière : un robot (de ce type par exemple), qui va se diriger vers la source la plus lumineuse, assez fun à utiliser.
  • Station météo : ce genre de petit composant peu chère a tout à fait sa place au sein d’une station météo.

Et évidemment, bien d’autres applications auxquelles je n’ai pas encore pensé.

Personnellement, je compte utiliser de tels capteurs au sein de Ydle, pour pouvoir créer des scénarios d’allumage / extinction de pièces.

Bonjour à tous,

Pour reprendre un peu le rythme des tutos, un petit tutoriel pour lire une photorésistance et ainsi calculer la luminosité dans une pièce.

Le matériel

  • Un Arduino (Uno Rev 3 dans mon cas)
  • Une breadboard 170 pts
  • Une photorésistance
  • Une résistance 10Kohm

Et évidemment quelques fils de connexion mâle / mâle. Et c’est tout. C’est un montage on ne peut plus simple, qui permettra ensuite d’être facilement étendu pour interagir avec d’autres éléments.

La photo résistance

La photo résistance

Vous pouvez acheter ces photorésistances sur ebay pour moins d’un euros assez facilement !

Le principe

Une photorésistance est un composant dont la résistivité dépend de la luminosité ambiante. On va donc s’en servir pour détecter le fortes variation de la luminosité.

On note l’illumination en « lux », voici un graphe qui montre l’évolution en lux en fonction de la résistance :

graph

Il faut noter aussi que ces capteurs ne sont pas sensibles de la même manière à toutes les longueurs d’onde (et donc aux couleurs). Les lumières bleues seront par exemple moins efficaces que des lumières jaunes / vertes.

Je vous invite à faire un tour sur la page wikipedia qui explique ce que sont les Lux. On notera notamment ce tableau de valeur indicative :

Activité ou lieu concerné Éclairement moyen
Sensibilité d’une caméra de bas niveau 0,001 lux
Nuit de pleine lune 0,5 lux
Rue de nuit bien éclairée 20 à 70 lux
Local de vie 100 à 200 lux
Appartement bien éclairé 200 à 400 lux
Local de travail 200 à 3 000 lux
Stade de nuit (suivant les différentes catégories (E1,E2,E3,E4,E5)) 150 à 1 500 lux
Extérieur par ciel couvert 500 à 25 000 lux
Extérieur en plein soleil 50 000 à 100 000 lux

Le montage

Vu le peu de composants, vous allez voir, le montage est extrêmement complexe !

Montage pour lire la photorésistance

Montage pour lire la photorésistance

Hop, finger in ze noze comme on dit !

Le montage

Le montage

Zoom sur la photorésistance

Zoom sur la photorésistance

Le code

On va, comme souvent, se baser sur un code fournit par Adafruit.

/* Photocell simple testing sketch.
Connect one end of the photocell to 5V, the other end to Analog 0.
 Then connect one end of a 10K resistor from Analog 0 to ground
For more information see http://learn.adafruit.com/photocells */

int photocellPin = 0; // the cell and 10K pulldown are connected to a0
int photocellReading; // the analog reading from the analog resistor divider

void setup(void) {
  // We'll send debugging information via the Serial monitor
  Serial.begin(9600);
}

void loop(void) {
  photocellReading = analogRead(photocellPin);
  Serial.print("Analog reading = ");
  Serial.print(photocellReading); // the raw analog reading
  // We'll have a few threshholds, qualitatively determined
  if (photocellReading < 10) {
    Serial.println(" - Noir");
  } else if (photocellReading < 200) {
    Serial.println(" - Sombre");
  } else if (photocellReading < 500) {
    Serial.println(" - Lumiere");
  } else if (photocellReading < 800) {
    Serial.println(" - Lumineux");
  } else {
    Serial.println(" - Tres lumineux");
  }
  delay(5000);
}

Voila pour le code.
Dans le cas d’une utilisation plus poussée au sein d’un montage plus complexe, on se contentera évidemment de lire le pin analog sans afficher d’info.

Idées d’utilisations

Voici plusieurs exemple d’utilisation de ce capteur.

  • Contrôle de la lumière : éteindre automatiquement la lumière d’une pièce grâce à un relais contrôlant l’arrivé de courant de la lampe. Lorsque la lumière est forte, on envoi alors un signal au relai pour qu’il se ferme ou reste fermé, inversement, quand il fait sombre, il déclenche l’allumage de la lumière. Si on rajoute à cela un capteur de mouvement ou de présence, cela permet de gérer plus finement le fonctionnement. Le must : mettre cela en place pour une serre, afin de diffuser de la lumière en permanence sur ses plants.
  • Robot suiveur de lumière : un robot (de ce type par exemple), qui va se diriger vers la source la plus lumineuse, assez fun à utiliser.
  • Station météo : ce genre de petit composant peu chère a tout à fait sa place au sein d’une station météo.

Et évidemment, bien d’autres applications auxquelles je n’ai pas encore pensé.

Personnellement, je compte utiliser de tels capteurs au sein de Ydle, pour pouvoir créer des scénarios d’allumage / extinction de pièces.



  • Newsletter

    Sign up for the PlanetArduino Newsletter, which delivers the most popular articles via e-mail to your inbox every week. Just fill in the information below and submit.

  • Like Us on Facebook