Art. 5 : Créer une boite aux lettres connectée

Sommaire

  1. Présentation
  2. Cahier des charges
  3. Solution
  4. Matériels
  5. Travaux pratiques
  6. Partie électronique
  7. Partie logicielle
  8. Résultat final
  9. Améliorations

1. Présentation

Je vais présenter dans cet article comment transformer sa boite aux lettres classique en boite aux lettres 2.0 (C’est à dire connectée, qui est capable d’indiquer la présence de courrier ou non).

18236651_1752499778098592_953750962_o

2. Cahier des charges

  • La boite aux lettres ne doit pas subir de modifications (En location, ce n’est pas la mienne :p). Il doit donc être aisé de mettre en place le système, mais aussi de l’enlever.
  • La solution ne doit pas être volumineuse et ne doit pas empêcher le facteur de déposer un colis
  • L’alimentation doit être autonome
  • Aucune action humaine ne doit être faite (Ni du facteur pour le dépôt, ni de moi pour la relevée)
  • L’envoi des données doit se faire via signal radio car la boite aux lettres se situe à 50-60m de la maison

3. Solution

Plusieurs solutions peuvent être envisagées. En parcourant les blogs, on peut surtout voir la mise en place d’un capteur d’ouverture/fermeture du clapet et de la porte. Il y a surtout des inconvénients pour cette solution :

  • L’électronique doit rester en écoute permanente, donc la veille est impossible : Pas terrible pour un système sur batterie
  • On ne sait pas si l’ouverture de la porte est un second dépôt d’une lettre ou le retrait de la 1ère ?

La solution que j’ai retenue est d’utiliser le principe d’une barrière IR à l’aide de simples photodiodes et des leds infrarouge. Cette solution corrige les inconvénients de la solution ci-dessus :

  • On effectue un contrôle toutes les X minutes (J’ai pris 10min comme intervalle). Le reste du temps le système est mis en veille
  • Le système s’auto-reset lorsqu’on retire le courrier (10min d’attente maximum)

L’envoi des données sera réalisé par le protocole MySensors (Basé sur un arduino + NRF24L01), et le traitement de l’information sera effectué par Gladys (Assistant domotique installé sur un raspberry, couplé aux modules MySensors / Pushbullet / SMS Free mobile).

4. Matériels

  • Planche de bois (1cm d’épaisseur)
  • Perceuse
  • Scie sauteuse
  • Scie à métaux
  • Pistolet à colle
  • Fer à souder / étain
  • Tige fileté pleine
  • Tige fileté creuse (Diamètre légèrement supérieur à la tige fileté pleine)
  • Écrous / rondelles
  • Fils breadboard
  • 1 arduino nano
  • 1 powerbank (Dans mon cas 3.7V – 9.25Wh soit 2.5Ah)
  • 1 câble USB pour l’alimentation de l’arduino
  • 1 résistance de 220Ω
  • 1 résistance de 700KΩ
  • 2 plaques d’essai avec soudure
  • 6 photodiodes de type SFH213FA
  • 6 LED IR de type SFH 487-2
  • 1 boitier de dérivation d’électricité
  • Module NRF24L01+PA+LNA SMA

5. Travaux pratiques

L’arduino nano dispose de plusieurs entrées/sorties, ce qui nous permet de mettre en place 6 capteurs (6 couples led IR / photodiode).

  • On commence par découper 2 planches de bois aux dimensions internes de la boite
  • On perce aux 4 coins pour y insérer les tiges filetées
  • On perce les emplacements des led IR / photodiodes au centre. Les placer au mieux pour réaliser le meilleur quadrillage possible de la zone. Attention les trous doivent correspondent parfaitement entre la plaque du bas et celle du haut
  • DSCN0405DSCN0408
  • Découper les différentes tiges filetées. J’ai trouvé pleins d’avantages à ce système :
    • L’ensemble ne passe pas d’un bloc dans la boite aux lettres. Il faut installer la plaque du bas, puis les tiges filetées, puis la plaque du haut. La modularité doit donc être au rendez-vous !
    • On peut faire varier toutes les hauteurs à volonté à l’aide des 5 écrous
  • Insérer les photodiodes dans les trous de la plaque du bas et les coller avec le pistolet à colle
  • Insérer les leds IR dans les trous de la plaque du haut et les coller avec le pistolet à colle
  • Dans la boite de dérivation, installer le module radio NRF24L01

DSCN0409.JPG

6. Partie électronique

Le principe de la barrière infrarouge est ici utilisé. Un seul couple LED IR/photodiode sera allumé à un instant T. Ils seront allumés à tour de rôle pour effectuer le contrôle.

  • Lorsque la boite est vide, chaque photodiode reçoit beaucoup de lumière de la part de sa led IR
  • Lorsque la boite contient du courrier, chaque photodiode (Peut-être pas toutes si le courrier est petit) ne reçoit pas de lumière, car obstruée par le courrier

Voici une explication par l’image sur le fonctionnement mis en place :

leds

 

Pour la plaque du haut :

  • Souder la résistance de 220Ω sur une plaque d’essai
  • Souder un fil sur une des broches de la résistance (Broche connectée à la masse de l’arduino)
  • Souder 6 fils sur l’autre broche de la résistance (Chaque fil sera connecté à la cathode d’une led IR)
  • Brancher un fil sur l’anode des 6 led IR (Ces 6 fils seront reliés à 6 broches distinctes de l’arduino pour commander l’allumage/l’extinction : A0, A1, A2, A3, A4, A5)LedIR

Pour la plaque du bas :

  • Souder la résistance de 700KΩ sur une plaque d’essai
  • Souder 2 fils sur une des broches de la résistance (Un fil sera connecté directement à la masse de l’arduino, l’autre servira à fournir la masse à la plaque du haut)
  • Souder 7 fils sur l’autre broche de la résistance (6 fils seront connectés à l’anode d’une photodiode – le 7ème fil sera connecté à la broche A6 de l’arduino pour effectuer une mesure)
  • Brancher un fil sur la cathode des 6 photodiodes (Ces 6 fils seront reliés à 6 broches distinctes de l’arduino pour commander l’allumage/l’extinction : D2, D3, D4, D5, D6, D7)
  • photodiode.png

7. Partie logicielle

1. Installation du raspberry

  • Installer Gladys sur le raspberry ainsi que ses modules MySensors / Pushbullet / SMS Free mobile

2. Analyse des valeurs renvoyées par les 6 capteurs

Les valeurs mesurées par la broche A6 de l’arduino pour les 6 capteurs ne sont pas identiques. J’imagine que cela provient du placement de certaines led IR (ou de la photodiode) qui n’est pas optimal.

J’ai donc réalisé 2 tests à partir du sketch MySensors suivant https://github.com/Florian56/mysensors-boiteauxlettres-statistiques :

  • Envoi des valeurs, toutes les minutes, pendant 12h pour les 6 capteurs (Sans courrier)
  • Envoi des valeurs, toutes les minutes, pendant 12h pour les 6 capteurs (Avec courrier)

La réception des valeurs se fait sur une gateway MySensors branchée à mon PC (Le contrôleur étant MYSController). Activer le bouton « Logging » dans MYSController pour tracer les résultats dans un fichier.

On se retrouve donc avec 2 fichiers de traces, totalement inexploitable à la main. Exemple du fichier avec courrier :

Resultats

J’ai réalisé un petit projet console en C# pour extraire les statistiques des 6 capteurs.

https://github.com/Florian56/boiteauxlettres-analyseresultats/

Cela permet de générer le résultat suivant (Avec courrier – Sans courrier) :

Resultats_Statistiques

3. Modification du sketch MySensors selon les résultats précédents

L’analyse des valeurs mesurées pour chaque capteur à permis de constater que le 6ème capteur renvoyait souvent des valeurs plus faibles que les autres lorsqu’il n’y a pas de courrier.

On peut tout de même placer un curseur commun à tous les capteurs qui servira de seuil à la détection du courrier. J’ai pris la valeur 60 comme seuil :

  • Si l’un des 6 capteurs renvoie une valeur inférieure à 60 : Il y a du courrier
  • Sinon : Pas de courrier

Modifier le sketch de l’arduino avec celui-ci : https://github.com/Florian56/mysensors-boiteauxlettres : il envoie maintenant un booléen à la gateway MySensors, toutes les 10min.

4. Paramétrage de Gladys pour traiter l’information

Créer un script « NotifierCourrierDetecte » : Il permet de m’envoyer une notification par SMS ou par PushBullet.

gladys.notification.create({
text: ‘Du courrier est arrivé’,
title: ‘Courrier détecté’,
icon: ‘fa fa-bed’,
iconColor: ‘bg-blue’,
priority: 1,
user: 1
});

Créer un script « ControlerPresenceCourrier » : Il permet de contrôler la présence du courrier (Réception d’une valeur true, alors que la précédente valeur était false).

gladys.utils.sql(‘SELECT value FROM devicestate WHERE devicetype = 132 ORDER BY createdat DESC LIMIT 2’)
.then(function(resultats) {
if (resultats.length === 2 && resultats[1].value === 0) {
gladys.script.exec({id : 3})
}
});

  • Modifier dans ce script l’id du deviceType
  • Modifier dans ce script l’id du script « NotifierCourrierDetecte« 

Créer un nouveau scénario :

  • Device
  • Valeur = 1
  • Exécute un script : « ControlerPresenceCourrier« 

8. Résultat final

DSCN0402DSCN0407DSCN0422DSCN0424

9. Améliorations

  • Mettre en veille l’arduino plus longtemps la nuit. Inutile de contrôler toutes les 10min
  • On peut aussi envoyer une information plus précise qu’un booléen. Par exemple 1, 2, 3, 4, 5, 6 selon le nombre de capteurs qui indique un courrier : Ceci permettrait pourquoi pas d’indiquer la présence d’une petite lettre, ou d’un colis qui remplit entièrement la boite
  • Connaitre l’état de la batterie : MySensors le permet, mais pas encore testé 🙂
  • Utiliser un petit panneau solaire comme batterie

Une réflexion sur “Art. 5 : Créer une boite aux lettres connectée

  1. Papyruse dit :

    Un très beau projet dont je me suis grandement inspiré pour créer ma propre boite à lettre connectée.
    J’y ai apporté quelques modifications personnelles (retour de la data en filaire reliée à un IPX800 à la place du sans fil ayant la chance d’avoir un fourreau arrivant juste derrière ma boite, remontée de l’ouverture clapet et porte afin de différencier la lettre du colis vie des capteurs magnétique, diode lumineuse pour afficher la présence de courrier derrière la boite à lettre, etc..). En tout je vous remercie car c’est bien grâce à votre tuto de qualité très bien expliqué et détaillé que mon projet à vu le jour, continuez à nous offrir des articles de cet qualité c’est vraiment super. Bravo.

    J'aime

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l’aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s