ThomasChappe / S63_Arduino

Ressusciter un téléphone à cadran S63 avec un Arduino Uno et un player MP3
GNU General Public License v3.0
27 stars 3 forks source link

S63 #2

Open ticoraph opened 4 years ago

ticoraph commented 4 years ago

Bonjour, Je souhaiterai faire communiquer/sonner 2 téléphones s63 a cadran. Existe-t-il un vieil intercom qui permettrait de le faire? Pensez-vous que je puisse le faire avec 1 arduino? Merci et bravo pour votre projet.

ThomasChappe commented 4 years ago

Bonjour, Un intercom, j'en sais rien, encore faut-il se le procurer et arriver à le faire fonctionner !

Le plus simple avec un "Arduino" c'est de les faire communiquer en wifi, avec des ESP8266, qui sont des petites cartes très proches des Arduino, avec moins de pattes d'entrée/sortie mais avec du Wifi intégré :)

Du coup, avec un bon petit programme en mode client/serveur, ca devrait pouvoir se faire.

Sinon, avec des vrais Arduino, il faudrait un fil entre les deux, et avec une communication en mode "série", c'est possible aussi de les faire sonner l'un / l'autre.

Par contre, c'est relativement loin de ce projet. Je veux dire : la partie MP3 n'a plus d'intérêt et toute la gestion de la communication entre 2 téléphones n'est pas prévue dans ce programme.

Bonne continuation dans votre projet !

jojo-monk commented 3 years ago

Bonjour, Il y a quelques temps j'avais réalisé un petit lecteur MP3 piloté par s63 : https://youtu.be/zMIlXWc8FFQ j'avais aussi utilisé le site revolunet pour m'aider. A l'époque j'avais utilisé un raspberry pi0 malheureusement, le rpi0 (sans doute à cause de la chaleur) s'éteignait tout seul au bout d'un certain temps, de plus il met du temps à démarrer. J'aimerais améliorer mon projet en utilisant un arduino et un lecteur mp3 série comme celui-ci : https://www.lextronic.fr/grove-lecteur-mp3-v3-107020069-56926.html pour avoir une sortie jack, car je ne compte pas utiliser le haut-parleur du tel, et inclure une alimentation par pile pour le rendre autonome. Pensez-vous que cela soit possible d'adapter votre code avec ce type de matériel ? J'avais programmé en python, à l'époque et je ne connais pas du tout la programmation arduino...

ThomasChappe commented 3 years ago

Bonjour,

je découvre ce shield MP3, mais à ce que je vois, il suffit de remplacer les appels à la librairie que j'utilise pour mon shiled MP3 par celle du shield, et j'ai bien l'impression que le mode de fonctionnement est assez proche.

Cele ma semble très jouable oui.

Concernant la programmation Arduino, rien de méchant, le code est assez lisible je pense, et c'est proche du C/C++ dans la syntaxe.

Bonne chance pour votre projet !

Clement-39 commented 3 years ago

Bonjour, Tout d'abord un grand bravo pour votre travail. Je trouve ça génial la façon dont vous avez créé cette machine.

Je rencontre cependant un petit souci, je ne sais pas trop d'où ça vient. Les musiques à l'intérieur des dossiers ne veulent pas se lancer donc cela me renvoi pour toute les années,directement à la sonnerie d'erreur.

Dans chaques dossiers les musiques sont bien nommés : 001.mp3 , 002.mp3 ect.. Savez d'où cela peut venir ?

J'ai remarqué que lorsque que j'introduisais le dossiers MP3 + tous les dossiers années (00,01,02 ect..) dans un même dossier, ça fonctionne et ça trouve la musique. Cependant le dfplayer ne reconnaît plus les pistes dans le dossier MP3.

Ça m'embête car tout le reste à l'air de bien fonctionner. Avez vous une idée ? Est-ce que cela vien de la carte SD, mes fichiers ne sont pas bien nommés ? Merci beaucoup.

ThomasChappe commented 3 years ago

Bonjour,

étrange, j'ai eu plusieurs difficultés avec les cartes SD et le player mais jamais celui-ci.

Cela ne peut pas être un défaut de la carte SD dans votre cas, car sinon, cela ne marcherait jamais.

J'aurais tendance à privilégier un problème de nommage ou d'arborescence.

Le contenu de la carte SD doit avoir une forme de ce type : / MP3 / 0001.mp3 0002.mp3 .... 00/ 001.mp3 002.mp3 .... 01/ 001.mp3 002.mp3 ....

Si c'est bien ainsi que vous avez mis en place vos dossiers, vérifiez-bien les noms (pas d'espace en trop ?) et si cela ne marche toujours pas, alors c'est que votre player doit avoir un fonctionnement différent et là... il va falloir aller chercher sur le net si vous trouvez de la doc ou des exemples avec votre module spécifique.

A la limite, postez une photo de votre module ?

Clement-39 commented 3 years ago

Merci pour votre réponse !

Effectivement les dossiers sont placés et nommés exactement comme cela. J'ai même tenté avec une alimentation 5V externe a l'ordinateur, rien n'y fait. C'est un dfplayer mini acheté sur Aliexpress, je vais essayé de chercher dans cette direction et trouver la doc. Je devrais peut-être essayer aussi avec un autre modèle. Voici la photo en pièce jointe.[Image]

Télécharger Outlook pour Androidhttps://aka.ms/AAb9ysg


From: Tom @.> Sent: Saturday, March 27, 2021 10:08:57 PM To: ThomasChappe/S63_Arduino @.> Cc: Clement-39 @.>; Comment @.> Subject: Re: [ThomasChappe/S63_Arduino] S63 (#2)

Bonjour,

étrange, j'ai eu plusieurs difficultés avec les cartes SD et le player mais jamais celui-ci.

Cela ne peut pas être un défaut de la carte SD dans votre cas, car sinon, cela ne marcherait jamais.

J'aurais tendance à privilégier un problème de nommage ou d'arborescence.

Le contenu de la carte SD doit avoir une forme de ce type : / MP3 / 0001.mp3 0002.mp3 .... 00/ 001.mp3 002.mp3 .... 01/ 001.mp3 002.mp3 ....

Si c'est bien ainsi que vous avez mis en place vos dossiers, vérifiez-bien les noms (pas d'espace en trop ?) et si cela ne marche toujours pas, alors c'est que votre player doit avoir un fonctionnement différent et là... il va falloir aller chercher sur le net si vous trouvez de la doc ou des exemples avec votre module spécifique.

A la limite, postez une photo de votre module ?

— You are receiving this because you commented. Reply to this email directly, view it on GitHubhttps://github.com/ThomasChappe/S63_Arduino/issues/2#issuecomment-808802654, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ARXDGVRVI6IHC6TBDOF2ZLLTFZCOTANCNFSM4NA62JKA.

ThomasChappe commented 3 years ago

La doc officielle est là : https://wiki.dfrobot.com/DFPlayer_Mini_SKU_DFR0299

il y a des exemples de code, et cela permet aussi de tester le module. Probablement un bon moyen d'avancer que de tester ces programmes avec votre module.

Une remarque dans la doc : si jamais vous êtes sur un mac, attention aux fichiers cachés ...

NOTE: If you are using Mac OS X to copy the mp3, the file system will automatically add hidden files like: "._0001.mp3" for index, which this module will handle as valid mp3 files. It is really annoying. So you can run following command in terminal to eliminate those files. dot_clean /Volumes/ Please replace the to the volume name of your SD card.

Clement-39 commented 1 year ago

Bonjour Thomas, j'espère que vous me lirez encore. Je me remets dans le code du Socotel et je cherche le moyen d'enchaîner les musiques une à une dans la même année, après qu'on ait écouté la piste en aléatoire de l'année choisie. Et dès qu'on raccroche, fonctionnement normal on recommence en choisissant une autre année. Je ne m'en sors pas avec le code et "g_MP3Player.next();" ou "g_MP3Player.loopFolder();" ne fonctionne pas là où je veux les mettre dans le code. Faut-il ajouter un "void" ou quelque chose de plus simple pourrais fonctionner ? Mon socotel fonctionne encore nickel et j'ai ajouter une prise casque. Seul problème récurant le DfPlayer est trop souvent paresseux. 1 fois sur 5 la musique ne se lance pas après avoir passé les deux sonneries, acheminement et attente. Merci d'avance pour ton retour.

ThomasChappe commented 1 year ago

Hello !

après un petit tour dans la doc (et surtout les exemples), je pense qu'on peut simplement utiliser la fonction "loopFolder"

cf : https://github.com/DFRobot/DFRobotDFPlayerMini/blob/master/examples/FullFunction/FullFunction.ino et la ligne : myDFPlayer.loopFolder(5); //loop all mp3 files in folder SD:/05.

A défaut, il faut traquer le code retour du player (readState) et lorsqu'il envoie DFPlayerPlayFinished, enchainer avec le morceau suivant, mais ca va être beaucoup plus compliqué à coder ;)

Pour le lecteur paresseux, j'ai ce problème aussi, de temps en temps mais plutôt lors de la phase de validation de l'année (donc avant l'acheminement et la sonnerie). Je suis en train de voir pour faire du retry sur la lecture, justement à base de lecture du code retour du player... je manque de temps, mais une mise à jour viendra :)

Clement-39 commented 1 year ago

Merci beaucoup pour ton retour, ravi que tu sois encore dans le game dans ce magnifique projet qui sera je pense, encore d'actualité pendant de nombreuses années, voir des décennies !!

Ok pour le "loopFolder" et l'enchaînement avec "readState". Je vais aller dans ce sens et tenter de faire quelque chose. Imaginer un "void PlaySongOneByOne" en incluant ce morceau de code, et en l'ajoutant au "void loop()".

Pour ma part, j'ai l'impression d'avoir rectifié le problème de lecture lors de la phase de validation de l'année, en modifiant dans le "setup", le déclenchement des interruptions "attachInterrupt". En changeant "RINSING" par "CHANGE" (déclenchement de l'interruption à chaque fois que la broche change de valeur). Depuis je n'ai plus de problème, à chaque année le DFPlayer trouve tout le temps le bon dossier, et je pense que le problème venait du calcul des interruptions du cadran. Je me trompe peut-être.

Je soupçonne que mon problème de lecture après "callAndPlaySong", cette à dire après avoir trouvé le dossier et avoir joué "acheminement" puis "sonnerie", vient de la qualité des MP3 téléchargé. J'ai remarqué que certains fichiers MP3, souvent les mêmes, avait du mal à ce lancer. Peut-être ajouter également un deuxième essaie sur le moment : lecture en aléatoire.

A+

dreamnev commented 5 months ago

Bonjour Thomas, Pas trouvé d'autre moyen que ce canal pour te remercier chaleureusement de ce partage, je prends mon pied grâce à toi ces dernières semaines et j'ai beaucoup de succès avec mon S63 customisé. Dans les améliorations apportées, voilà une petite liste :

dans les choses à étudier et à faire :

Bref, je m'éclate, merci encore pour tout

ThomasChappe commented 2 months ago

Hello @dreamnev ! (désolé pour le délai de réponse... :-/ )

Ravi que tu t'éclates et merci pour ton message :-)

Tes évolutions sont géniales ! Bravo pour ça ! Tu devrais les publier ! (fork !)

De mon coté, j'en ai un certain nombre dans les cartons, voire déjà réalisées, que j'ai toujours pas fini de tester, donc pas publiées :'(

Parmis elles :

Parmi celles que j'ai prévu de faire prochainement :

Certaines de tes autres idées ou réalisations sont incroyables ! Tu devrais clairement forker (ou m'envoyer une pull request !!) Typiquement, le coup du serveur FTP... ou tout autre système d'upload de sons, c'est un vrai point de blocage pour le moment, et je trouve pas de solution :'(

Au plaisir de te lire, et bonne continuation !

dreamnev commented 2 months ago

Merci pour ton retour, très sympa. Pour le fork, pourquoi pas, mais j'ai mis un gros bazar dans ton code, pas sûr qu'il soit diffusable en l'état. Mais je peux t'envoyer mon code sans problème.

Depuis mon message, j'ai avancé sur l'écran qui affiche le titre, l'interprète et l'année, ça en jette, merci MQTT. Et je pilote le téléphone grâce à l'appli iOt MQTT Panel sous Android, qui affiche les infos, permet de régler le volume, de changer de mode France/Inter... en passant par le broker Maqiatto. Ainsi, le S63 fonctionne partout dans le monde avec le partage de connexion de mon téléphone et un broker sur Internet. J'ai cherché pour le FTP et le SIP, pas trouvé grand chose pour le moment. J'ai commencé à regarder à brancher une enceinte Bluetooth, ça a l'air simple (trop simple), je testerai un de ces jours. Assez étonnamment, ChatGPT m'est plutôt d'une bonne aide pour trouver des fonctions ou des librairies ou corriger des morceaux de codes, même s'il faut faire le tri dans ce qu'il propose. Pour l'horloge parlante, j'ai trouvé des bouts de codes, mais je suis perfectionniste, je tiens à l'énoncé de l'heure toutes les 10 secondes, sauf à 50 secondes et à la fameuse phrase "Au 4e top, il sera exactement". Comme mentionné, j'ai déjà fait le code qui va chercher l'heure sur un serveur NTP grâce au Wifi et j'ai commencé à générer tous les sons nécessaires en Txt2Speech avec ttsmaker.com.

Côté chansons, à ce jour, j'ai une chanson française et une internationale pour toutes les années de 1923 à 2024, plus quelques années plus anciennes. Mais les copains souhaiteraient qu'il y en ait plusieurs par année, comme toi. Et pour stocker et jouer les chansons, j'ai utilisé la fonction playLargeFolder qui permet d'avoir 999 fichiers dans un dossier, ça me permet de mettre des chansons de plus d'années. J'ai un dossier France et un dossier International. Je retire le chiffre des milliers : 1983 correspond au fichier 983.mp3, 2018 correspond au 18.mp3. Seul problème pour l'année 2000, le fichier 0000.mp3 ne fonctionne pas avec playLargeFolder, j'ai choisi arbitrairement le 100. Mon code ne marchera plus pour l'année 2100 ;-)

Par rapport à ton projet, je maitrise un point l'électronique, donc je n'ai pas encore réussi à brancher les solénoïdes et je galère un peu avec le shield que je n'ai pas réussi à adapter à l'ESP32, j'ai bricolé une plaque d'essai mais j'ai parfois des faux contacts, je vais devoir m'y mettre.

Bref, je m'éclate toujours, j'épate les copains et j'ai déjà plusieurs commandes... tout ça grâce à toi. Merci encore PS : en cherchant un téléphone pas trop cher sur une brocante, je suis tombé sur un Minitel, y aussi quelque chose à faire de ce côté :-)

Raphaël

Clement-39 commented 2 months ago

Bonjour, Bravo Raphaël pour ce travail, ça a l'aire dingue ces améliorations ! Très intéressé aussi si tu décides de partager. Thomas, je me permets de te poser une question concernant le réglage de la rotation du cadran : anti-rebond sur 10ms et temps d'impulsion sur 20ms initialement. Effectivement le cadran tourne beaucoup mieux avec un peu de WD40 dans la cage, mais avec le temps, il ralentit quand même et ça galère de nouveau sur les impulsions (sonnerie occupée). J'aimerais faire le bon réglage pour ne plus avoir ce problème, mais j'avoue être un peu largué sur cette histoire d'anti rebond et de réglage de temps d'impulsion, saurais-tu m'en dire plus ? Merci beaucoup !

ThomasChappe commented 2 months ago

étrange que le cadran ralentisse régulièrement, sauf si tu en as un usage massif ! Peut-être mettre un lubrifiant plus spécifique à la mécanique que le WD-40 ?

Y'a un truc qui colle pas, en plus : sonnerie occupé ? Ca c'est lorsque tu mets trop longtemps à numéroter tes 4 chiffres. Si c'est un problème avec le cadran, tu devrais avoir la sonnerie "numéro non attribué".

Concernant le rebond et l'impulsion :

Voilà tu sais tout :)

Et pour t'aider : dans les dernières versions de mon code (après avoir testé plusieurs téléphones), j'ai changé ces deux paramètres.

Désormais je mets 10ms pour le temps d'impulsion bonus, et 20ms pour le debounce

essaie :)

Clement-39 commented 2 months ago

Merci beaucoup, c'est bien plus clair. Je parlais bien de la sonnerie "non attribuée". Je vais utiliser un lubrifiant plus spécifique alors, que le WD40, essayer avec 10ms de temps d'impulsion et 20ms d'anti-rebond et rechanger l'interruption "attachInterrupt(..) par "RISING" car pour ma part, je trouvais que ça fonctionnait mieux avec "CHANGE".

Je voulais vous partager aussi une petite amélioration dont je suis très content et qui fonctionne super : à la fin d'une musique, si l'on ne raccroche pas, le téléphone continue à rejouer une musique aléatoire dans le dossier, indéfiniment. J'ai utilisé la broche BUSY du DFPlayer, qui est à l'état "haut" quand une piste est en lecture, et à l'état "bas" quand le DFPlayer ne lit plus rien. Si "BUSY" est "bas" pendant plus de 3 sec, alors on recherche à nouveau dans le bon dossier et on lit une musique aléatoire. Cela corrige aussi le souci de lecture du DFPlayer paresseux, qui tu avais corrigé par un second essaie. Là, s'il est vraiment paresseux, ce qui m'arrivait de temps en temps, et que rien ne se passe pendant plus de 3 sec, ça recommence de cette manière.

++

Clément

Jacques-F commented 2 weeks ago

Bonjour, Dans les points restant ouverts, il a cette question, peut-être résolue à l'heure actuelle : "trouver à quoi sert le 4e fil du cadran" Son rôle est de shunter la sonnerie pour éviter les tintements de celle-ci lors de la numérotation. La sonnerie est alimentée normalement par du 80v alternatif envoyé par le central (c'était du 110v dans les premiers centraux). Le condensateur en entrée bloque le 48v continu fourni par la ligne et laisse passer le courant d'appel. Lors de la numérotation, l'ouverture/fermeture de la ligne par le cadran passe le condensateur et fait tinter la sonnerie. Le shunt permet d'éviter ça. Celui-ci est d'ailleurs déporté au niveau du conjoncteur par le fil rouge (borne 17 sur le S63 de mémoire) pour la sonnerie extérieure et via le câblage la sonnerie des autres postes montés en parallèle s'il y en a. Voilà un point de résolu. Jacques

ThomasChappe commented 2 weeks ago

whaaa !

Merci beaucoup ! Je mets à jour la page avec ces infos !