Skip to content

implémentation du protocole Apple Desktop Bus (ADB) 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.

License

Notifications You must be signed in to change notification settings

electron-rare/ADB-pour-Framework-Arduino

Repository files navigation

Bibliothèque ADB pour Framework Arduino

Version Licence État Framework

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.

Vue d'ensemble

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.

Fonctionnalités clés

  • 🔌 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

Plateformes Arduino supportées

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é

Installation

Pour l'IDE Arduino

  1. Téléchargez la bibliothèque depuis le dépôt
  2. Extrayez les fichiers dans le dossier libraries de votre IDE Arduino
  3. Redémarrez l'IDE Arduino
  4. La bibliothèque est maintenant disponible dans "Croquis > Inclure une bibliothèque"

Pour PlatformIO

  1. Ajoutez la dépendance dans votre platformio.ini:
    lib_deps = 
      electronrare/ADB-pour-Framework-Arduino
  2. Ou installez-la manuellement dans le dossier lib/ de votre projet

Configuration exemple pour STM32 (platformio.ini)

[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"

Configuration exemple pour ESP32 (platformio.ini)

[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
lib_deps = 
    electronrare/ADB-pour-Framework-Arduino
monitor_speed = 115200

Utilisation basique dans le framework Arduino

#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
}

Exemples Arduino inclus

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

Structure du projet

Crédits et contributions

Auteurs

  • Clément SAILLANT - L'électron rare - Développeur principal
  • Szymon Łopaciuk - Travail initial et inspiration - stm32-adb2usb

Remerciements particuliers

  • Projet TMK - Pour la documentation et le travail sur la conversion ADB-USB
  • Apple Developer Archives - Pour la documentation technique sur le protocole ADB

Historique des versions

  • 1.0.0-beta (Janvier 2025)
    • Version initiale de la bibliothèque
    • Support complet pour STM32, ESP32
    • Support préliminaire pour d'autres plateformes

À venir

  • Support complet pour Arduino, et Teensy
  • Meilleure gestion de l'alimentation
  • Support pour des périphériques ADB plus exotiques

Licence

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.

About

implémentation du protocole Apple Desktop Bus (ADB) 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.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published