☎ Téléphone Vintage 4G Proto
Do you like vintage objects, but you don't want to give up modernity? This project transforms an old rotary dial phone into a real 4G mobile phone thanks to an ATmega328 and a BK A7670E GSM module. Objective: Give a second life to a wired phone while keeping the experience of a good old rotary dial! A functional 4G phone, capable of dialing numbers, and making calls, while maintaining the aesthetics and pleasure of using a retro phone. For now, only to make calls, but I continue to move forward to offer the
- Microcontroller : ATmega328 (Arduino-UNO_NANO)
- 4G GSM module : BK A7670E, equipped with the interface seen here : https://www.elektormagazine.fr/labs/interface-pcb-pour-remplacer-le-sim800-par-un-bk-a7670e
- Pick-up and hang-up : Detection of the handset state via the handset switch.
-Dialing : Detection of the rotary dial pulses.
- Audio : Use of the original handset (replacement of speaker & microphone with a set from a "H.S. smartphone)
- Power supply : 5VDC or option :
-Transportable :12V equiped with Backup power supply seen here:. https://www.elektormagazine.fr/labs/backup-power-supply-project-for-sms-gps-alarm-4g-module
- Indicators : Debug LED (picked up/hung up), 4 LEDs displaying dialed numbers converted to binary
Advanced functions :
- Call to any authorized number (FR version allows 06 and 07 only)
- Abbreviated numbers for favorite contacts (set in 'hard' in the code), exemple avec le "22"
see in code line 173 and 174
// NUM EXEMPLE FAUX NUM!!!!!!! renseigner votre numéro assoccié au num Abrégé le '22'
String numMemo1 = "788888888"; // Num 1 en mémo sans le zéro
- Picking up and hanging up via the handset switch
Off-hook handset detection
A mechanical switch (in the phone) detects the handset being picked up/on-hook.
Connected to the PD3 input (D3) with interrupt (INT1) which is declared with an EXTERNAL pull_up. On-hook, switch open, pull_up D3, HIGH Off-hook, bring GND to D3, LOW
Activate PD5 (debug led)
Dialing the number Reading the rotary dial
A mechanical switch (in the dial) detects the rotation of the dial connected to D4 INTERNAL pull_up The dial generates a series of pulses corresponding to the number (e.g.: 1 → 1 pulse, 0 -> 10 pulses). These pulses are read on an input with interrupt PD2_INT0 if the handset is off-hook (PD3_INT1).
At rest, the pulse switch is at GND = LOW.
When pulses are generated, the state is changed to HIGH via the EXTERNAL pull_Up.
The duty cycle of the pulses is 64% HIGH, 36% LOW
A counter variable stores the number of pulses.
At the end of the rotation, the number is added to a char num[10] array
video test :
https://youtu.be/QJZoij7FI5M
//FR
Caractéristiques techniques
- Microcontrôleur : ATmega328 (Arduino-UNO_NANO)
- Module GSM 4G : BK A7670E, équipé de l'interface vue ici : https://www.elektormagazine.fr/labs/interface-pcb-pour-remplacer-le-sim800-par-un-bk-a7670e
- Décrochage et raccrochage : Détection de l'état du combiné via le commutateur du combiné.
- Numérotation : Détection des impulsions du cadran rotatif.
- Audio : Utilisation du combiné d'origine (remplacement du haut-parleur et du micro par un ensemble issu d'un smartphone "H.S.")
- Alimentation : 5VDC ou option :
-Transportable : 12V équipé d'une alimentation de secours vue ici : https://www.elektormagazine.fr/labs/backup-power-supply-project-for-sms-gps-alarm-4g-module
- Indicateurs : LED de débogage (décroché/raccroché), 4 LEDS affichant les numéros composés convertis en binaire
Fonctions avancées :
- Appel vers n'importe quel numéro autorisé (la version FR autorise uniquement le 06 et le 07)
- Numéros abrégés pour les contacts favoris (mis en 'hard' dans le code), exemple avec le "22" -
Voir dans le code line 173 and 174
// NUM EXEMPLE FAUX NUM!!!!!!! renseigner votre numéro associé au num Abrégé le '22'
String numMemo1 = "788888888"; // Num 1 en mémo sans le zéro
Décrochage et raccrochage via le commutateur du combiné
Détection du combiné décroché
Un switch mécanique (présent dans le téléphone) détecte le combine décroché/raccroché.
Raccordé sur l'entrée PD3 (D3) avec interruption (INT1) qui est déclarée avec un pull_up EXTERNE.
Raccroché, switch ouvert, pull_up D3, HIGH
Décroché, amène GND sur D3, LOW
Active PD5 (led debugg)
Composition du numéro
Lecture du cadran rotatif
Un switch mécanique (présent dans le cadran) détecte la rotation du cadran
raccordé sur D4 pull_up INTERNE
Le cadran génère une série d’impulsions correspondant au chiffre (ex: 1 → 1 impulsion, 0 -> 10 impulsions).
Ces impulsions sont lues sur une entrée avec interruption PD2_INT0 si le combiné est décroché (PD3_INT1).
Au repos, le switch impulsion est à GND = LOW.
Lorsque des impulsions sont générées, on passe à l'état HAUT via le pull_Up EXTERNE.
Le rapport cyclique des impulsions est de 64% HIGH, 36% LOW
Une variable compteur stocke le nombre d’impulsions.
À la fin de la rotation, le chiffre est ajouté dans un tableau char num[10]
L'objet est en phase d'achèvement pour la gestion des appels entrants et autres ajustements.
video test :
https://youtu.be/QJZoij7FI5M
Bruno Clerc
Le 28/02/2025
Discussion (0 commentaire(s))