Projet de détournement d'un ancien téléphone ☎ à cadran. De la musique (ou autre fichier mp3) est diffusée dans le combiné lorsqu'il est décroché. Le cadran permet de choisir la piste à lire.
- ESP8266-12F (Nodemcu) flashée avec MicroPython
- DFPlayer mini + carte Micro SD
- esptools pour flasher la carte (
esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash --flash_size=detect 0 ESP8266_GENERIC-20231005-v1.21.0.bin
) - ampy pour uploader le code (
ampy --port /dev/ttyUSB0 put pyphone/main.py
) - picocom pour accéder au REPL via le port série (
picocom /dev/ttyUSB0 -b 115200
)
NodeMCU D1 : Combiné (0V si décroché, PULLUP si raccroché)
NodeMCU D2 : BUSY DFPlayer (Low si lecture en cours)
NodeMCU D4 : RX DFPlayer (Transmission de commande lecture/stop)
NodeMCU D5 : Cadran fil bleu (cf. infra) - Indique si on touche le cadran
NodeMCU D6 : Cadran fil rouge (cf. infra) - Renvoi les impulsions quand le cadran est relaché
DFPlayer SPK_2 : Haut-parleur du combiné, fil bleu clair (ajouter une resistance de 4,7k pour atténuer le volume (parasites possibles si resistance trop faible)). Tester également avec DAC_L.
Ne pas oublier la masse pour le nodeMCU, DFPlayer, Haut-parleur (fil rouge (!)) et cadran (fils bleu-blanc et rouge-blanc).
Arborescence :
Les répertoires 001 à 010 correspondent au numéro choisi sur le cadran (010
pour le zéro).
Le répartoire 099
est lu en boucle lorsque le combiné est décroché (tonalité d'attente).
Seul le canal gauche est envoyé au combiné.
.
├── 001/
│ ├── 001_title.mp3
│ ├── 002_title.mp3
│ └── 003_title.mp3
├── 002/
│ ├── 001_title.mp3
│ ├── 002_title.mp3
│ └── 003_title.mp3
├── ...
├── 010/
│ ├── 001_title.mp3
│ ├── 002_title.mp3
│ └── 003_title.mp3
├── 098/
│ └── 001_nouveau_message.mp3
└── 099/
└── 001_waiting_tone.mp3
La lecture du signal des fils rouge et bleu du cadran permet de récuperer la valeur (1-10) choisie par l'utilisateur.
Le signal bleu (channel 0) est TRUE
en temps normal, il passe à FALSE
dès que l'utilisateur
actionne le cadran.
Le signal rouge (channel 1) est FALSE
. Il emet n impulsion TRUE
lorsque le cadran est relaché.
La durée d'une impulsion est d'environ 75ms, mais elle est dépendante de la vitesse
à laquelle le cadran tourne après avoir été relaché. Si l'utilisateur freine le cadran,
la durée des impulsions peut être fortement rallongée (cf. capture). Le temps entre 2 impulsions est
plus stable (~30ms).
Les contributeurs de micropython-dfplayer