Radio FM pour cabine de douche à base d'Arduino
Composants et fournitures
![]() |
| × | 1 | |||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 6 | |||
![]() |
| × | 1 | |||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 2 | ||||
![]() |
| × | 1 | |||
| × | 1 |
À propos de ce projet
Il y a quelques années, j'ai acheté une cabine de douche chinoise qui a installé le système de contrôle TR028 avec radio. Malheureusement, un beau jour, j'ai trouvé ce système complètement mort. Personne ne pouvait le réparer alors j'ai acheté une autre radio de douche moins chère. Il est mort au bout d'un an environ.
Ma famille avait une radio dans la cabine de douche, alors j'ai commencé à étudier comment ces radios étaient fabriquées. À l'intérieur du système TR028, j'ai trouvé un étrange module TEA5767. Certaines recherches m'ont permis de savoir qu'il s'agit d'un petit module radio FM bon marché. Dans les résultats de recherche, j'ai trouvé un autre module radio FM intéressant - RDA5807. Il est très similaire au TEA5767, mais dispose de fonctions RDS, de contrôle du volume et d'amplification des basses. Ma décision a donc été d'utiliser RDA5807 dans mon nouveau projet.
J'ai cherché sur Internet et j'ai trouvé plusieurs projets où le module RDA5807 a été utilisé :
- Projet principal qui a inspiré ma vision.
- Variation où j'ai trouvé un excellent signe de force de signal et des informations plus utiles.
- Une autre variante.
- Grande bibliothèque de modules radio
- Informations utiles (en russe).
- Un de plus
Il était possible de répéter l'un de ces projets, mais personne n'a répondu exactement à ma vision.
Ma vision était :
- L'appareil avec écran tactile pour assurer une construction étanche. (J'ai utilisé un boîtier avec écran tactile de TR0289 mort).
- Radio
- Plusieurs préréglages de stations de radio préférées
- Contrôle du volume
- Fonction de recherche automatique de stations de radio
- Possibilité de mémoriser la radio recherchée
- Une horloge pour voir l'heure actuelle.
- Fonction Marche/Arrêt
- Contrôle de la lumière
- Certaines informations mineures s'affichent comme la température à l'intérieur d'une cabine, RDS.
Sur Aliexpress j'ai acheté RDA5807, Tiny RTC avec 32kb EEPROM, PAM8403, NOKIA 5110 LCD, modules LM2596 pour moins de 10€ et j'ai commencé les expérimentations.
Ce que j'ai finalement obtenu :
- Radio FM avec 2 rangées (!) RDS
- 6 préréglages pour les stations de radio préférées
- Réglage automatique ou manuel
- Possibilité de stocker la station de radio préférée dans l'un des 6 préréglages
- Contrôle du volume et de l'amplification des basses
- Contrôle des lumières de la cabine de douche
- Un calendrier et une horloge
- RSSI (indicateur de force du signal radio)
- Indicateur de mode stéréo
- Fonction Marche/Arrêt
Quelques photos du projet

Pour l'écran NOKIA 5110, j'ai trouvé une belle bibliothèque

Compris le fonctionnement de l'écran tactile TR028. En fait, c'est un clavier à 2 colonnes X 7 rangées. Pour le faire fonctionner, j'ai utilisé cette bibliothèque.



Planche assemblée placée dans la boîte. Vous pouvez remarquer que j'ai dessoudé la prise USB et soudé le câble directement. C'est pour la possibilité de connecter un PC et les futures améliorations logicielles.




Comment ça marche :
- La radio ne s'allume pas une fois que l'alimentation est connectée. Cela empêche la lecture de la radio si la ligne électrique n'est pas stable ou si l'alimentation a été coupée. Pour allumer la radio la première fois, vous devez connecter l'alimentation et après quelques secondes, appuyez sur la touche d'alimentation. La radio jouera la dernière station de radio jouée avec un volume au niveau 03. Le mode de fonctionnement sera le contrôle du VOLUME. Pour éteindre la radio, appuyez simplement sur la touche marche/arrêt. L'appareil éteint l'écran LCD, le rétroéclairage LCD, l'amplificateur et la lampe LED / halogène.
- Pour rechercher une station de radio, vous pouvez choisir le mode de syntonisation Auto ou Manuel en appuyant sur le bouton "Mod". En appuyant sur les boutons "<" ou ">", la radio recherchera une station de radio en diminuant ou en augmentant la fréquence. Pour mémoriser une station de radio trouvée, appuyez sur le bouton "Mem" et vous aurez 4 secondes pour sélectionner l'un des six préréglages que vous souhaitez mémoriser.
- Pour voir la date actuelle, appuyez sur la touche I (info). La date sera affichée 4 secondes. Cette partie du code peut être optimisée car elle utilise une fonction delay().
- Pour régler l'horloge, maintenez enfoncée la touche D pendant au moins 2 secondes lorsque vous entendez des signaux de fin d'heure (signaux horaires), ou voyez les dernières secondes d'une heure sur une horloge précise. Relâchez la touche D pour régler hh.00.00. Si votre horloge était en retard de 15 à 1 minutes, les minutes et secondes seront mises à 00 et les heures seront augmentées de 1 et si votre horloge était pressée de 1 à 15 minutes, seules les minutes et secondes seront mises à 00 après la procédure de réglage .
Qu'est-ce que je changerais :
- Le résonateur sur le module RTC pour avoir une meilleure précision mais la fonction de réglage de l'horloge permet de résoudre ce problème.
- L'écran LCD 5110 vers un écran plus grand et plus lumineux. Il peut s'agir d'un écran LCD couleur 1, 8" ou 2,0", car il est parfois difficile de lire les informations sur l'écran LCD NOKIA 5110 utilisé dans le projet.
- L'amplificateur PAM8403 vers PAM8610 qui a une puissance de sortie 2x15W ou TDA7297 avec les mêmes caractéristiques.
Conclusion :
Je suis heureux de la façon dont mon nouveau projet fonctionne. Aucun problème n'a été observé après 1 mois de travail hormis la précision de l'horloge.
Je ne suis pas un programmeur, donc le code peut être mieux optimisé. Mon expérience en programmation C/C++ est d'environ un an, autodidacte. C'est mon premier projet utile utilisant la plate-forme Arduino et le premier projet que je partage sur le hub. S'il vous plaît, comprenez-moi et pardonnez-moi pour les erreurs possibles et mon mauvais anglais.
Si vous avez des questions n'hésitez pas à les poser en commentaire ou en MP.
Mise à jour 1 : mises à jour matérielles et logicielles mineures.
Matériel - installé un fusible 2A sur la ligne 12V. Juste pour des raisons de sécurité.
Logiciel - ajout de la ligne 586 menu
=
1 ;
Cela restaure le mode sur VOLUME après avoir appuyé sur la touche marche/arrêt.
Mise à jour 2 :
Malheureusement, l'écran LCD de ma radio va mourir.

Je suis donc à la recherche d'une alternative LCD NOKIA 5110 bon marché. Je n'installerai pas un nouvel écran LCD 5110 car il est petit et difficile à lire. Je pense que je vais expérimenter avec l'écran LCD TFT 1,8". Les bonnes choses - il est plus grand, plus lumineux, a une meilleure résolution. Les mauvaises choses - je suis sûr que le TFT 1,8" consommera plus de ressources qui sont critiques.
Vos conseils concernant le remplacement des écrans LCD sont les bienvenus.
Code
- Esquisse du projet
- Symboles de puissance de signal
Esquisse du projetArduino
Symboles de force de signalC/C++
#ifdefined(__AVR__) #include#define imagedatatype const uint8_t#elifdefined(__PIC32MX__) #define PROGMEM #define imagedatatype const unsigned char#elifdefined(__arm__) #define PROGMEM #define imagedatatype const unsigned char#endifimagedatatype signal5[] PROGMEM={0xC1, 0xC2, 0xC4, 0xFF, 0xC4, 0xC2, 0xC1, 0xC0, 0xE0, 0xC0, 0xF0, 0xC0, 0xF8, 0xC0, 0xFC, 0xFE100 (16), // 0xFE100 (16) , };imagedatatype signal4[] PROGMEM={0xC1, 0xC2, 0xC4, 0xFF, 0xC4, 0xC2, 0xC1, 0xC0, 0xE0, 0xC0, 0xF0, 0xC0, 0xF8, 0xC0, 0xFC, 0xC0, 0xC0, (16) };imagedatatype signal3[] PROGMEM={0xC1, 0xC2, 0xC4, 0xFF, 0xC4, 0xC2, 0xC1, 0xC0, 0xE0, 0xC0, 0xF0, 0xC0, 0xF8, 0xC0, 0xC0, 0xC0,0} 0x010, (16) pixels;imagedatatype signal2[] PROGMEM={0xC1, 0xC2, 0xC4, 0xFF, 0xC4, 0xC2, 0xC1, 0xC0, 0xE0, 0xC0, 0xF0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, // 0x010, (16) pixels}0; imagedatatype signal1[] PROGMEM={0xC1, 0xC2, 0xC4, 0xFF, 0xC4, 0xC2, 0xC1, 0xC0, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, // 0x0010 (16) pixels0xC0, } ;
Schémas

Processus de fabrication