Note de développement : Cette bibliothèque est implémentée pour le framework Arduino et actuellement optimisée principalement pour la plateforme ESP32 et STM32. Le support pour d'autres plateformes Arduino est en cours de développement.
La bibliothèque ADB est une implémentation complète du protocole Apple Desktop Bus (ADB) en C++ pour le framework Arduino, fonctionnant sur diverses cartes comme STM32, ESP32, Arduino AVR et Teensy. Elle permet d'interfacer facilement des périphériques Apple vintage (claviers, souris) avec des systèmes modernes.
- 🔌 Compatible avec plusieurs plateformes : STM32, Arduino, ESP32, Teensy (en cours de développement)
- 🧩 API unifiée : même interface de programmation quelle que soit la plateforme
- ⌨️ Support complet des claviers ADB : lecture des touches, gestion des modificateurs, contrôle des LEDs
- 🖱️ Support complet des souris ADB : lecture des mouvements et des boutons
- 🔄 Conversion ADB vers HID : mappage des codes de touches ADB vers les codes HID standard
- 📊 Détection automatique des périphériques : avec gestion des erreurs robuste
- 🛠️ Utilitaires avancés : fonctions d'aide au développement et débogage
- 📝 Documentation complète : commentaires explicites et exemples documentés
Plateforme | Pin par défaut | Testé sur | Statut |
---|---|---|---|
STM32 (Arduino Core) | PB4 | STM32F103, Bluepill, STM32F401, STM32F411 | ✅ Testé et stable |
ESP32 (Arduino Core) | 21 | ESP32-WROOM, ESP32-WROVER | ✅ Testé et stable |
Arduino AVR | 2 | Uno, Mega | ⛔ Non testé |
Teensy (Arduino Core) | 3 | Teensy 3.2, 4.0 | ⛔ Non testé |
Autres cartes Arduino | 2 | Diverses | ⛔ Non testé |
- Téléchargez la bibliothèque depuis le dépôt
- Extrayez les fichiers dans le dossier
libraries
de votre IDE Arduino - Redémarrez l'IDE Arduino
- La bibliothèque est maintenant disponible dans "Croquis > Inclure une bibliothèque"
- Ajoutez la dépendance dans votre
platformio.ini
:lib_deps = electronrare/ADB-pour-Framework-Arduino
- Ou installez-la manuellement dans le dossier
lib/
de votre projet
[env:bluepill_f103c8]
platform = ststm32
board = bluepill_f103c8
framework = arduino
lib_deps =
electronrare/ADB @ ^1.0.0
upload_protocol = stlink
monitor_speed = 115200
build_flags =
-D PIO_FRAMEWORK_ARDUINO_ENABLE_CDC
-D USBCON
-D USB_MANUFACTURER="electron_rare"
-D USB_PRODUCT="ADB2USB HID"
[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
lib_deps =
electronrare/ADB-pour-Framework-Arduino
monitor_speed = 115200
#include <Arduino.h>
#include "adb.h"
// Configuration selon la carte Arduino
#if defined(ARDUINO_ARCH_STM32)
#define ADB_PIN PB4
#else
#define ADB_PIN 2 // Arduino, ESP32, etc.
#endif
// Initialisation des objets
ADB adb(ADB_PIN);
ADBDevices devices(adb);
void setup() {
Serial.begin(115200);
adb.init();
Serial.println("ADB Initialized");
}
void loop() {
// Lecture du clavier via Arduino
bool error = false;
auto keyPress = devices.keyboardReadKeyPress(&error);
if (!error && keyPress.data.key0 != 0) {
Serial.print("Key: 0x");
Serial.println(keyPress.data.key0, HEX);
}
// Lecture de la souris
error = false;
auto mouseData = devices.mouseReadData(&error);
if (!error) {
int8_t xMove = adbMouseConvertAxis(mouseData.data.x_offset);
int8_t yMove = adbMouseConvertAxis(mouseData.data.y_offset);
// Traiter les données de mouvement...
}
delay(20); // Intervalle de polling typique pour Arduino
}
La bibliothèque est fournie avec plusieurs exemples pratiques pour Arduino IDE et PlatformIO :
- basic_keyboard : Utilisation simple d'un clavier ADB
- basic_mouse : Utilisation simple d'une souris ADB
- multiplatform_basic : Exemple multiplateforme (avec détection automatique)
- keyboard_mouse_example : Utilisation simultanée d'un clavier et d'une souris
- multiplatform_event_handler : Gestionnaire d'événements avancé
- usb_hid_stm32 : Conversion ADB vers USB HID (STM32 uniquement)
- multiplatform_device_info : Scanner de périphériques ADB
- platformio_stm32_example : Exemple complet pour PlatformIO avec STM32
- platformio_esp32_example : Exemple pour PlatformIO avec ESP32
- Clément SAILLANT - L'électron rare - Développeur principal
- Szymon Łopaciuk - Travail initial et inspiration - stm32-adb2usb
- Projet TMK - Pour la documentation et le travail sur la conversion ADB-USB
- Apple Developer Archives - Pour la documentation technique sur le protocole ADB
- 1.0.0-beta (Janvier 2025)
- Version initiale de la bibliothèque
- Support complet pour STM32, ESP32
- Support préliminaire pour d'autres plateformes
- Support complet pour Arduino, et Teensy
- Meilleure gestion de l'alimentation
- Support pour des périphériques ADB plus exotiques
Ce projet est sous licence GNU GPL v3. Voir le fichier LICENSE pour plus de détails.
Conçu avec ❤️ pour donner une nouvelle vie aux périphériques Apple vintage.