dimanche 29 avril 2018

Détecteur de mouvement MYSENSORS sur batterie


Détecteur de mouvement MYSENSORS

sur batterie


Le but de cette page est d'expliquer pas à pas la réalisation d'un détecteur de mouvement basse consommation à base d'ARDUINO PRO MINI, relié par radio à un serveur DOMOTICZ, à l'aide d'un module NRF24L01 2.4GHZ.

Il s'adresse à toute personne ayant une bonne expérience en matière de développement ARDUINO et quelques notions d'électroniques.

Un serveur DOMOTICZ (ou autre supporté par MYSENSORS) est nécessaire. Ce serveur domotique peut être installé avantageusement sur une plateforme du type RASPBERRY PI.
On lui connectera une passerelle MYSENSORS. Cette passerelle peut être construite avec une carte ARDUINO UNO ou NANO et un deuxième module NRF24L01.

Les liens suivants vous seront utiles :
https://riton-duino.blogspot.com/2019/05/mysensors-presentation.html 
https://easydomoticz.com/domoticz-arduino-mysensors-org-partie-2-la-passerelle

1. Les fonctionnalités

Le montage proposé permet de remonter au serveur DOMOTICZ une information de passage d'une personne devant un capteur du type HC-SR501.
Il permet de remonter également le niveau de la batterie.

L'autonomie est importante. Avec une consommation de 65µA, une batterie de 2300mAH devrait durer 35000 heures. Seule l'auto-décharge de la batterie peut poser problème. Préférer les modèles à faible auto-décharge.

2. Le matériel

Pour réaliser ce détecteur, il vous faudra réunir :
  • un ARDUINO PRO MINI 8Mhz 3.3V
  • un module radio NRF24L01
  • un détecteur de mouvement HC-SR501 ou HC-SR602
  • une résistance de 47 K
  • une résistance de 1 M
  • une résistance de 330 K
  • un régulateur LM2936-3.3
  • un condensateur 6.2V 10 µF 
  • une LED blanche 3 mm
  • un chargeur TP4056
  • un connecteur 2 broches mâle au pas de 2.54
  • un connecteur 3 broches mâle au pas de 2.54
  • un accumulateur  3.7V LI-ION 16340
  • un support de batterie 16340 pour PCB
  • un cavalier au pas de 2.54
  • un petit câble type DUPONT 3 broches
Voici le support que j'utilise :
https://fr.aliexpress.com/item/Coque-en-plastique-3-V-CR123A-Bouton-Titulaire-Sockets-Cas-Noir/32833014988.html?spm=a2g0s.9042311.0.0.ppOTYI
Le PCB est prévu pour une batterie 16340 sur support mais il est tout à fait possible d'utiliser une LIPO fixée au PCB par de l'adhésif double face ou de la colle. La place disponible pour la batterie est de 24x42mm, ou 31x36mm, ce qui autorise un vaste choix.

Personnellement j'ai utilisé une XTAR 16430 650mAH achetée chez Gotronic.

2.1 Le capteur HC-SR602

Ce capteur consomme moins que le HC-SR501 et n'a besoin d'aucune modification pour qu'il fonctionne en 3.3V.
De plus il est beaucoup plus petit et sera plus facile à intégrer dans un boîtier.
Je le recommande.
Par contre il n'a pas de réglage de portée ni de temps.

2.2 Le capteur HC-SR501

Si l'on a que ce modèle sous la main le détecteur HC-SR501 doit être modifié pour pouvoir fonctionner en 3.3V.

Partons du schéma :

On voir rapidement que l'intégralité de la carte fonctionne en 3.3V.
Il suffirait de :
- court-circuiter la diode D1
- dessouder le régulateur IC1
- court-circuiter les broches Vin et Vout.

 


C'est ce que j'ai fait et cela marche parfaitement bien.

Sur l'image, les deux traits rouges représentent les deux straps à mettre en place.
Je n'ai pas essayé de laisser le régulateur en place. Cela provoquerait certainement une surconsommation.
Attention, sans la diode D1, plus aucune protection contre les inversions de polarité de l'alimentation.

Dernière chose : la consommation de ce PIR modifié est de 60µA au repos.


3. Le schéma


Le schéma est réalisé à l'aide de KICAD.

Pour récupérer le projet voir plus bas :  12. Téléchargements.

Vous pouvez aisément essayer ce montage sur une breadboard.

Remarque  : sur le schéma, le brochage connecteur P1 ne correspond pas au brochage du capteur HC-SR501.

Le capteur doit être raccordé avec 3 fils en respectant son brochage :

Connecteur P1 :
1 : GND
2 : +3.3V
3 : OUT

HC-SR501 :
1 : GND
2 : OUT
3 : +3.3V

HC-SR602 :
1 : GND
2 : +3.3V
3 : OUT
 

4. Réalisation

La réalisation ne pose pas de problème particulier. Tout est sur la carte, sauf le détecteur.
Attention : le câble reliant celui-ci à la carte n'est pas droit.
Sur la carte le connecteur est câblé comme suit :
GND 3.3V SIGNAL
Sur le détecteur le connecteur est câblé comme suit :
GND SIGNAL 3.3V
Voir photo ci-dessous.

Un cavalier est placé sur le connecteur deux broches au dessus à gauche.  Celui-ci a deux fonctions :
  • connecter et déconnecter la batterie à l'aide du cavalier
  • mesurer la consommation du montage à l'aide d'un multimètre
Un petit câble de mesure maison

5. La basse consommation

Reportez-vous à la page traitant de l'ARDUINO MINI.

6. Photos

Voici une image de la carte :


7. IDE ARDUINO

Il vous faudra bien entendu installer les bibliothèques ARDUINO suivantes :
Librairie MYSENSORS : https://www.mysensors.org/download

Dans votre IDE (arduino-cc 1.6.9 par exemple), dans le menu "Outils/Type de Carte" choisir "Arduino Pro or Pro Mini". Dans le menu "Outils/Processeur" choisir "ATmega328 (3.3V, 8MHz)".


8. Le code

Pour récupérer le projet voir plus bas :  12. Téléchargements.
 
La fonction sleep() permet d'endormir l'ARDUINO et le NRF24L01.

La valeur de VREF dans le sketch est à adapter en fonction de la mesure réelle de la tension de la batterie.
La tension mesurée par l'ARDUINO est affichée dans le terminal. A comparer donc avec la valeur affichée par un bon multimètre.

9. Chargement

Reportez-vous à la page traitant de l'ARDUINO MINI.

10. DOMOTICZ

Reportez-vous à ce document :

11. Boîtier

Ce montage a été intégré dans boîtier kradex-Z-123.

https://www.tme.eu/fr/details/z-123_wh/boitiers-universels/kradex/z123b-abs/

12. Téléchargements

Pour télécharger le projet : https://bitbucket.org/henri_bachetti/mysensors-motion-sensor.git
 
Cette page vous donne toutes les informations nécessaires :
https://riton-duino.blogspot.com/p/migration-sous-bitbucket.html

13. Liens utiles

DOMOTICZ : https://domoticz.com/

14. Retour sur expérience

La batterie a une capacité théorique de 2300mAH, ce qui est totalement farfelu pour une batterie de cette taille. En réalité elle a une capacité de 225mAH.

Comme il y a pas mal de passage dans la couloir où le capteur est installé, la batterie tient environ 6 mois.

Le 23/04/2020 le l'ai remplacée par une batterie de marque : une XTAR 650mAH.

La Recharge suivante a été faite le 10/12/2021 : l'autonomie est de 20 mois.



Cordialement
Henri

14. Mises à jour

20/09/2018 : bug fix dans la mesure de tension batterie
29/06/2019 : 8. Le code (réglage de VREF)
25/10/2019 : 14. Retour sur expérience

jeudi 19 avril 2018

Carte d'expérimentation MYSENSORS




Carte d'expérimentation MYSENSORS


D'habitude lorsque j'ai besoin de développer un nouveau capteur MYSENSORS je fais d'abord une expérimentation sur breadboard.




J'enfiche Un ARDUINO MINI, un NRF24L01 sur un adaptateur, un régulateur 3.3V et quelques condensateurs.
Mais c'est un peut frustrant de recommencer à chaque fois la même opération fastidieuse de connexion entre ces composants.
L'idéal serait de pouvoir disposer d'une carte toute faite regroupant tout le nécessaire une bonne fois pour toutes.


1. Les fonctionnalités

La carte en question devrait idéalement regrouper :
  • un ARDUINO PRO MINI
  • un module NRF24L01
  • une batterie lithium-ion
  • un régulateur 3.3V
  • des connecteurs de reprise des broches de l'ARDUINO
  • des connecteurs d'alimentation
  • un connecteur de mesure de consommation
Le but de cette carte est de développer principalement des applications sur batterie mais un connecteur d'alimentation externe est prévu.
On peut y brancher une autre batterie ou une alimentation régulée.

Le régulateur utilisé est un LM2936-3.3. Sa tension de dropout est de seulement 200mV. C'est important dans le cas d'une alimentation par batterie NI-MH en 3.6V ou lithium-ion en 3.7V.

Il délivre 50mA. Cela peut paraître peu mais suffit amplement pour la majeure partie des application.

La puissance maximale dissipée par le régulateur est de 700mW.
Le courant maximal disponible sur la ligne 3.3V dépendra de la tension d'alimentation en entrée.

Pour une batterie lithium-ion à pleine charge, donc 4.2V :
Pmax = Imax * (Vin - Vout) = 0.05 * (4.2 - 3.3) = 45mW
Pour une alimentation en 12V :
Pmax = Imax * (Vin - Vout) = 0.05 * (12 - 3.3) = 435mW

Dans les deux cas, les 700mW ne sont pas dépassés.

2. Régulateurs

Il est bien entendu possible de remplacer ce régulateur par un modèle plus approprié à vos applications.Attention au brochage le pinout du LM2936 est le suivant :
  • 1: OUT
  • 2: GROUND
  • 3: IN
La tension d'une batterie lithium-ion chute à 3.7V lorsque sa capacité restante est de 55%.
Avec un LM2936 cette tension pourra descendre à 3.5V, ce qui correspond à une capacité restante de 30%.

Le LP2950 peut être une bonne alternative, mais sa tension de dropout est un peu trop importante.

En modifiant le schéma et le routage vous pourrez adapter d'autres régulateurs :
Pour vous aider dans votre choix, voici une liste de régulateurs que vous pourrez utiliser :
https://riton-duino.blogspot.com/2018/11/les-regulateurs-ldo.html

3. Le matériel

Pour réaliser cette carte, il faut réunir le matériel suivant :
  • un ARDUINO PRO MINI 8Mhz 3.3V
  • un module radio NRF24L01
  • un régulateur LM2936-3.3V
  • quatre connecteurs femelle 2.54 12 broches
  • un connecteur femelle 2.54 4 broches
  • deux connecteurs femelle 2.54 8 broches
  • un connecteur mâle 2.54 2 broches
  • 1 connecteur NS25-W2P
  • un support de batterie lithium-ion 18650
Vous pouvez trouver tous ces composants facilement chez les revendeurs classiques ou vous inspirer de leurs caractéristique pour trouver des équivalents sur les sites chinois.
J'ai par exemple trouvé des connecteurs identiques aux NS25 sur AliExpress, où ils s'appellent KF2510.


4. Le schéma


Le schéma est réalisé à l'aide de KICAD.

Pour récupérer le projet voir plus bas :  9. Téléchargements.

5. Connexions

Le NRF24L01 est connecté à l'ARDUINO comme suit :

NRF24L01 PIN ARDUINO PRO MINI
3 CE D7
4 CSN D8
5 SCK D13
6 MOSI D11
7 MISO D12
8 IRQ D2

Dans le sketch, il faudra définir CS et CSN comme suit:

#define MY_RF24_CE_PIN 7
#define MY_RF24_CS_PIN 8

6. Photos

Voici une image de la carte :


7. Utilisation

Le connecteur sur lequel est placé un cavalier bleu à côté de la batterie a deux fonctions :
  • connecter et déconnecter la batterie à l'aide du cavalier
  • mesurer la consommation du montage à l'aide d'un multimètre
Un petit câble de mesure maison
La consommation d'un montage dépend du matériel utilisé mais également du logiciel. Par exemple :

NŒUD Consommation Remarques
Répéteur 20mA Il est toujours en réception, jamais en veille.
Capteur de température DS18B20 20µA Il est en sommeil permanent et envoie périodiquement la température mesurée à la passerelle.

Si le sujet basse consommation vous intéresse, voyez ICI.

Sous le cavalier bleu se trouve le connecteur d'alimentation externe. Si vous branchez dessus une alimentation 5V à 24V ou une batterie NI-MH, il vous faudra retirer la batterie lithium-ion.

En bas à droite, un connecteur fournissant 8 masses.
En bas à gauche, un connecteur fournissant des alimentations
  • 4 pins de droite : tension batterie ou externe
  • 4 pins de gauche : 3.3V
En haut, de part et d'autre de l'ARDUINO, deux connecteurs 12 points fournissent un accès aux pins de l'ARDUINO.
Tout en haut un connecteur 4 points fournit un accès aux pins A6, A7, A4 et A5 de l'ARDUINO.

8. La sécurité

Le courant disponible sur la ligne VCC dépend totalement de la source de tension utilisée.
ATTENTION, une batterie lithium-ion peut délivrer des courants importants. Certaines d'entre elles peuvent délivrer 20A ou plus.
Il est très facile de faire fondre des fils de connexion ou les pistes de la carte en cas de court-circuit.
Je vous conseille d'utiliser une alimentation externe limitée en courant dans un premier temps, et de remplacer par la batterie une fois que vous êtes sûr que votre câblage est correct.

9. Téléchargements

Pour télécharger le projet : https://bitbucket.org/henri_bachetti/mysensors-experimentation-board.git
 
Cette page vous donne toutes les informations nécessaires :
https://riton-duino.blogspot.com/p/migration-sous-bitbucket.html

10. Références


LM2936 : http://www.ti.com/lit/ds/symlink/lm2936.pdf
NRF24L01 : http://www.nordicsemi.com/eng/Products/2.4GHz-RF/nRF24L01
Basse consommation : https://riton-duino.blogspot.fr/2018/02/arduino-pro-mini-basse-consommation.html
 

11. Mises à jour

20/04 : Régulateurs - ajout du régulateur 7133-1
24/04 : Régulateurs - ajout du régulateur 7533-1
04/05 : Régulateurs - ajout du régulateur 7333-1, MIC5205

dimanche 15 avril 2018

DFPLAYER MINI et bruit de fond

DFPLAYER MINI et bruit de fond

 

J'ai en cours de réalisation un carillon intelligent. Pour cela je suis en train d'expérimenter le DFPLAYER MINI. J'utilise la librairie DFROBOT.

1 Présentation

Le carillon est équipé d'un détecteur de mouvement HR-SR501 afin de diffuser un premier son (aboiement de chien) et éventuellement allumer la lumière en cas de visite. Reste à compléter avec un détecteur de luminosité.

Afin d'obtenir plus de puissance un amplificateur à base de TDA8932 alimenté en 24V est branché en sortie du DFPLAYER, car je compte utiliser un haut-parleur de 10cm large-bande de plusieurs dizaines de watts :

1.1. L'amplificateur intégré

Le DFPLAYER est équipé d'un amplificateur 8002A de 3W mono :


Sur ce schéma on voit que les 2 sorties du DAC, DAC_L et DAC_R sont mélangées par les deux résistances R2 etR3, avant d'attaquer l'amplificateur 8002A.

ATTENTION : Les deux sorties SPK_1 et SPK2 du DFPLAYER sont deux sorties en opposition de phase. L'amplificateur 8002A du DFPLAYER est un amplificateur bridgé :

Il ne faut en aucun cas considérer que SPK_1 ou SPK_2 est une masse, sous peine de griller le 8002A. Cela m'est arrivé, mais le module n'est pas mort pour autant. Je continue à l'utiliser, sans le 8802A (voir plus loin :  2.3. Suppression de l'amplificateur intégré).

REMARQUE : le DFPLAYER peut parfaitement être utilisé sans haut-parleur, en reliant un casque stéréo sur les sorties DAC_L et DAC_R.

2. Expérimentation

J'ai dans un premier temps réglé le volume du DFPLAYER sur 5 afin de limiter la puissance de sortie.

  myDFPlayer.volume(5);

La première chose que j'ai remarqué et un bruit important, d'une part un bruit de fond au repos, et d'autre part des bruits numériques très gênants pendant la restitution d'un MP3.

J'ai lu que certains problèmes de bruit pouvaient être réglés par l'ajout de résistances de 1K sur RX TX. Cela n'apporte rien ou presque.

L'amplificateur est hors de cause car en débranchant son entrée, le bruit de fond disparaît.

Je me suis dit que je pouvais certainement diminuer ces bruits en augmentant le signal de sortie du DFPLAYER.

J'ai donc intercalé un potentiomètre 47K logarithmique entre le DFPLAYER et l'amplificateur :

Et je règle le volume du DFPLAYER au maximum.

  myDFPlayer.volume(30);

La solution apporte un gain énorme en terme de rapport signal sur bruit. Je passe d'une solution à peine utilisable à une solution pleinement satisfaisante.

2.1. Câblage

2.1.1. Version mono



On utilise les sorties DAC_L et DAC_R et on les mélange à l'aide de deux résistances. Le connecteur OUT est relié par un câble à l'entrée de l'amplificateur additionnel.

Pour déterminer le réglage optimal du volume, régler le potentiomètre sur zéro, jouer un morceau et augmenter le volume jusqu'à atteindre la puissance désirée.

2.1.1. Version stéréo

il faut tout simplement relier les sorties DAC_L et DAC_R à l'entrée d'un amplificateur stéréo, en intercalant un potentiomètre logarithmique stéréo si celui-ci n'en est pas équipé.

2.2. Choix de l'amplificateur

On peut soit augmenter la puissance disponible en adoptant un amplificateur alimenté en 12V ou plus, soit utiliser un autre amplificateur 5V comme un PAM8403, ce qui limitera la puissance à 3W.

2.3. Suppression de l'amplificateur intégré

Il peut arriver que l'amplificateur 8002A du DFPLAYER soit grillé par une mauvaise manipulation. Si cela arrive, ne pas jeter le module.

On peut continuer à l'utiliser en reliant un casque stéréo sur les sorties DAC_L et DAC_R. 

Pour une utilisation sur haut-parleur :

On peut l'utiliser en version stéréo (voir 2.1.1. Version stéréo), mais je pense qu'il serait plus sage de dessouder le 8002A, car sinon il pourrait être la cause d'une consommation excessive. Sinon, il est préférable de mesurer sa consommation. Elle ne doit pas excéder une vingtaine de mA sans la µSD.

Pour une version mono on peut s'en sortir sans ajouter de résistances de mélange comme sur le schéma ci-dessus, en réutilisant celles du DFPLAYER (R2 et R3). Il faut dessouder le 8002A. Ensuite, il faut relier la broche 4 du 8002A à la broche SPK_2 ou SPK_1 du DFPLAYER à l'aide d'un petit fil :

Amplificateur 8002A dessoudé

Ensuite on n'aura plus qu'à ajouter un potentiomètre et un amplificateur, un PAM8403 par exemple, dont on utilisera une seule voie.

3. Conclusion

S'il vous est déjà arrivé d'essayer un DFPLAYER et que vous avez trouvé ce module exécrable en terme de bruit, voilà la solution pour le réhabiliter.Je ne manquerai pas de créer un article quand le projet sera terminé.


Cordialement

Henri

4. Bibliographie

DFPLAYER : http://www.picaxe.com/docs/spe033.pdf

4 Mises à jour

03/07/2019 : 1.1. L'amplificateur intégré
                     2.1. Câblage                     2.2. Choix de l'amplificateur 
                     2.2. Suppression de l'amplificateur intégré