Clément SAILLANT f1604cc7cc CV GATE FM
2025-08-06 23:25:38 +02:00
2025-03-25 22:46:37 +01:00
2025-03-26 17:13:02 +01:00
2025-08-06 20:58:27 +02:00
2025-03-27 19:51:27 +01:00
2025-08-06 23:25:38 +02:00
2021-03-08 21:48:22 +00:00
2025-08-06 20:58:27 +02:00
2025-08-06 20:58:27 +02:00
2025-08-06 20:58:27 +02:00
2021-01-31 00:23:37 +00:00
2025-08-06 23:25:38 +02:00
2025-08-06 20:58:27 +02:00
2025-08-06 23:25:38 +02:00

🍏 Apple ADB Ressurector

PlatformIO Licence Status

Apple ADB Ressurector : Donnez une seconde vie à vos trésors vintage ! 🕰️

Transformez vos claviers et souris Apple Desktop Bus (ADB) des années 80 et 90 en périphériques USB modernes avec ce projet passionnant ! 🎉 Compatible même avec les légendaires souris à un seul bouton, ce projet utilise PlatformIO pour donner une nouvelle vie à vos reliques de la pomme arc en ciel. 🖱️


🔗 Basé sur le travail de

Ce projet est basé sur le travail initial de Szymon Łopaciuk. Vous pouvez consulter son dépôt ici : stm32-adb2usb. Merci à lui pour son incroyable contribution à la communauté open source ! 🙌


🌐 Mon dépôt

Le code source de ce projet est disponible sur mon dépôt GitHub : Apple ADB Ressurector. N'hésitez pas à y jeter un œil, à contribuer ou à poser des questions ! 😊

Setup du projet *Un aperçu de mon setup avec un clavier Apple d'époque et une souris ADB.*

🚀 Installation

  1. Clonez ce magnifique dépôt :

    git clone https://github.com/electron-rare/Apple-ADB-Ressurector.git
    cd apple-adb-ressurector
    
  2. Installez PlatformIO (si ce n'est pas déjà fait) :

    pip install platformio
    
  3. Compilez et téléversez le firmware sur votre STM32 :

    platformio run --target upload
    

🎮 Utilisation

  1. Téléversez le firmware sur votre carte STM32 ou ESP32.
  2. Branchez votre périphérique ADB à la carte STM32 ou ESP32 (selon votre configuration).
  3. Ajoutez une résistance de pull-up entre la broche de données (ADB_PIN) et l'alimentation (+V). Voici un schéma de connexion :
                             +5V
                             |
                             R (4.7kΩ ou 10kΩ)
                             |
Périphérique ADB data <------+------------------+---> ADB_PIN (ESP32: GPIO2, STM32: PB4)
                             |
                             |
                            GND
  1. Connectez la carte STM32 ou ESP32 à votre ordinateur via USB ou Bluetooth.

  2. Utilisation de connecteurs et câbles S-Video :
    Le connecteur ADB est identique au connecteur S-Video. Vous pouvez donc utiliser des câbles S-Video standard pour connecter vos périphériques ADB.

  3. Admirez la magie : votre périphérique ADB fonctionne maintenant comme un périphérique USB ou Bluetooth !

Note

: Grâce à l'environnement PlatformIO et à la configuration du firmware, tout le travail complexe est automatisé. Vous n'avez qu'à choisir la plateforme (STM32 ou ESP32) et à téléverser le firmware.


🌟 Fonctionnalités actuelles

  • Clavier USB HID : Conversion des touches ADB en rapports HID USB, avec gestion des modificateurs (Shift, Ctrl, etc.) et des touches spéciales (Caps Lock, Num Lock).
  • Clavier Musical CV/GATE Polyphonique (STM32F3 uniquement) : Synthétiseur 2-voix avec portamento sinusoïdal et modulation FM par souris.
  • Souris USB HID : Conversion des mouvements et clics ADB en rapports HID USB.
  • Sorties CV/GATE (STM32F3 uniquement) : Conversion des mouvements de souris en signaux CV cumulatifs via DAC 12-bit + signal GATE pour synthétiseurs modulaires.
  • Gestion des LEDs : Les LEDs Caps Lock et Num Lock fonctionnent comme par magie.
  • Compatibilité HID : Utilisation de HID_Composite pour gérer les rapports HID.

📚 Bibliothèque ADB-pour-Framework-Arduino

Ce projet repose sur la bibliothèque ADB-pour-Framework-Arduino, créée pour améliorer la portabilité et permettre une utilisation sur plusieurs plateformes (STM32, ESP32, Arduino AVR, Teensy).

Pourquoi cette bibliothèque ?

Parce que je m'ennuyais, et que je voulais explorer les possibilités de GitHub Copilot pour compenser mes modestes compétences en programmation. Résultat : une bibliothèque qui fonctionne (presque) parfaitement et qui me fait passer pour un génie du code. Merci Copilot ! 🤖

  • Portabilité : Compatible avec plusieurs plateformes.
  • Modularité : Réutilisable dans d'autres projets.
  • Facilité de maintenance : Centralisation des mises à jour.

🤔 Pourquoi ce projet ?

Parce que je voulais retrouver le plaisir d'utiliser un ancien clavier Apple (et que j'avais ça qui traînait parmi tout mon bazar). Mais évidemment, il fallait bien le rendre compatible avec nos machines modernes. Alors, sur mon temps libre, j'ai fouillé sur le net pour voir ce que d'autres avaient déjà fait (parce qu'on est rarement le premier, soyons honnêtes !).

Mais voilà, je ne trouvais pas exactement ce que je voulais, et comme j'avais des devkits qui prenaient la poussière, je me suis dit : "Pourquoi pas ?" Résultat : ce projet est né, réalisé et partagé pendant mes moments de libre. Parce que, après tout, c'est toujours plus sympa de redonner vie à ces vieux périphériques d'époque que de les laisser dormir dans un carton. 😄


⌨️ Claviers compatibles

  • Apple Keyboard (1987) : Le clavier standard avec pavé numérique intégré. Simple, efficace, rétro.
  • Apple Extended Keyboard (19871990) : Le Saint Graal des claviers mécaniques Apple.
  • Apple Extended Keyboard II (19901994) : Une version améliorée, élégante et toujours aussi robuste.
  • Apple Adjustable Keyboard (1993) : Le clavier ergonomique avant-gardiste... mais un peu encombrant.

🖱️ Souris compatibles

  • Original ADB Mouse (1986) : La souris rectangulaire avec un seul bouton. Minimalisme à son apogée.
  • ADB Mouse II (1993) : Une version plus ergonomique, avec un bouton plus grand et une meilleure résolution.

🛠️ Autres périphériques compatibles

  • Tablettes graphiques : Wacom ADB, Kurta ADB.
  • Trackballs : Kensington Turbo Mouse, Microspeed MacTRAC.
  • Joysticks : Advanced Gravis MouseStick II.
  • Lecteurs de codes-barres : Datalogic Heron D130.
  • Claviers alternatifs : IntelliKeys.

⚙️ Configuration des pins et paramètres

Le projet utilise des définitions spécifiques pour configurer les pins en fonction de la plateforme utilisée (ESP32 ou STM32) :

  • #define POLL_DELAY 5 : Définit un délai de 5 ms entre chaque cycle de polling pour interroger les périphériques ADB.
  • #define ADB_PIN : Configure la pin utilisée pour la communication ADB :
    • ESP32 : Pin 2.
    • STM32 : Pin PB4.
  • #define LED_PIN : Configure la pin utilisée pour la LED d'état :
    • ESP32 : Pin 4 (Devkit Wemos).
    • STM32 : Pin PC13.

Configuration CV/GATE (STM32F3 Discovery uniquement)

  • #define DAC_CV1_CHANNEL : Canal DAC pour CV1 (axe X) - PA4
  • #define DAC_CV2_CHANNEL : Canal DAC pour CV2 (axe Y) - PA5
  • #define GATE_PIN : Pin pour signal GATE (bouton souris) - PA0
  • #define CV_STEP_SIZE 8 : Sensibilité des mouvements CV (modifiable)

Ces définitions permettent une compatibilité multi-plateforme en adaptant automatiquement les pins selon la carte utilisée.


📖 Documentation supplémentaire


🛑 État du projet

Ce projet est actuellement en beta.

  • ESP32 : Le support du clavier Bluetooth est désormais fonctionnel. Prochain objectif : ajouter le support Bluetooth pour la souris.
  • STM32 : Le support du clavier et de la souris comme périphériques USB est entièrement fonctionnel.

🔮 Plans futurs

  • Concevoir un PCB pour une alimentation par batterie et un boîtier adapté.
  • Ajouter le support Bluetooth pour la souris.
  • Intégrer un écran OLED pour afficher des informations sur l'état de la connexion.
  • Ajouter un mode de veille pour économiser la batterie.

📖 Ressources utiles


📝 TODO

  • Faire fonctionner le clavier.
  • Faire fonctionner la souris.
  • Gérer plusieurs périphériques ADB simultanément.
  • Ajouter le support Bluetooth pour le clavier.
  • Implémenter les sorties CV/GATE pour STM32F3.
  • Ajouter un bouton de reset CV/GATE.
  • Implémenter des modes CV alternatifs (LFO, séquences).
  • Ajouter le support Bluetooth pour la souris.
  • Ajouter le support d'autres périphériques ADB (tablettes graphiques, trackballs, etc.).
  • Ajouter le support d'un écran OLED pour afficher des informations sur l'état de la connexion.
  • Ajouter un mode de veille pour économiser la batterie.
  • Concevoir un PCB pour une alimentation par batterie et un boîtier adapté.
  • Améliorer le support de la LED Num Lock.
  • Améliorer le support de la LED Caps Lock.
  • Améliorer le support de la LED Scroll Lock.

💡 Remerciements

Un grand merci à GitHub Copilot pour son aide précieuse et ses suggestions parfois hilarantes. 🤖
Et bien sûr, surtout merci à Szymon Łopaciuk pour l'inspiration initiale.


📜 Licence

Ce projet est sous licence GNU GPL v3. Voir le fichier LICENSE pour plus de détails.


S
Description
Apple Desktop Bus converter, adb to usb with stm32 or adb to Bluetooth with esp32
Readme GPL-3.0 441 KiB
Languages
C++ 99.3%
C 0.7%