Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Lecteur de disquettes Amiga basé sur Arduino : Récupération de données open-source et abordable

Composants et fournitures

Composant Quantité Notes
Résistance 1 kΩ 1
Plaque d'essai (breadboard) 1
Fils de connexion 1 jeu
Alimentation breadboard 5V/3,3V (SparkFun) 1
Arduino UNO (ou Pro Mini) 1 Pro Mini fonctionnel également

Applications et services en ligne

À propos de ce projet

Objectif

Créer une solution simple, peu coûteuse et open-source pour récupérer les données de disquettes Amiga double densité (DD) depuis Windows 10 et autres systèmes d'exploitation.

Solution

Un Arduino + une application Windows.

Pourquoi ?

Pour préserver les données de ces disquettes pour l'avenir. Un PC standard ne peut pas lire les disquettes Amiga en raison de leur format d'écriture spécifique.

Site du projet : https://amiga.robsmithdev.co.uk/

Note : La version 2 (V2) offre une lecture et une écriture améliorées !

Expériences Amiga

L'auteur doit sa carrière à l'Amiga, notamment l'A500+ reçu à 10 ans. Après les jeux, il a découvert Deluxe Paint III, Workbench, et a remporté un concours de programmation AMOS avec le jeu « In The Pipe Line ».

Contexte

Avec des boîtes de disquettes et un A500+ défectueux, l'auteur a cherché à sauvegarder ses données. Les solutions existantes (KryoFlux, Catweasel) étaient trop chères et souvent closed-source. Inspiré par GreatScott, il a exploré la piste Arduino.

Recherche

Ressources clés :

Hypothèses de départ

Disque DD : 300 tr/min, 80 pistes, 11 secteurs/piste, 512 octets/secteur, encodage MFM. Échantillonnage requis : 500 kHz – un défi pour un Arduino à 16 MHz.

Tentatives successives

Tentative 1 : Registres à décalage (shift registers)

Utilisation de deux 74HC594 pour réduire la fréquence d'échantillonnage par 8. Transmission série à 2 Mbaud via FTDI. Fonctionnait mais données non exploitables – besoin d'analyser le signal réel.

Tentative 2 : Interruption (ISR) à 500 kHz

Trop lent : l'ISR prenait plus de temps que l'intervalle entre impulsions (2 µs). Abandon de digitalRead pour accès direct aux registres – encore insuffisant.

Tentative 3 : Compteur matériel (Hardware Counter)

Utilisation du Timer/Counter0 de l'ATmega328 pour compter les impulsions externes. Vitesse plus un problème. Détection d'une impulsion dans une fenêtre de 2 µs.

Tentative 4 : Boucle à verrouillage de phase (PLL) logicielle

Réinitialisation du compteur timer à chaque impulsion détectée pour se resynchroniser. Fonctionne ! Lecture quasi parfaite, avec quelques erreurs de checksum résolues par relecture multiple.

Tentative 5 : ISR optimisée (ISR_NAKED)

Routage de l'impulsion vers INT0 (haute priorité). ISR minimaliste en assembleur inline : 5 instructions seulement (~0,3 µs). Amélioration notable.

Tentative 6 : Trigger Schmitt et résistance de tirage

Ajout d'un 74HCT14 (trigger Schmitt) et résistance 1 kΩ. Pas de différence significative.

Tentative 7 : Validation MFM

Règles MFM : pas deux « 1 » consécutifs, pas plus de trois « 0 » consécutifs. Détection d'erreurs mineures, mais certains disques restent illisibles sans erreur détectée – piste pour investigation future.

Décodage

Le lecteur émet une impulsion à chaque transition de phase (données MFM brutes). Recherche du mot de synchronisation 0x4489 (ou 0x2AAAAAAA44894489 masqué). Décodage des en-têtes et données secteurs. Écriture en format ADF (raw 512 octets/secteur). Vérification checksums et relecture jusqu'à 11 secteurs valides par piste.

Perspectives (V2 et au-delà)

Code source complet : GitHub Repository

Schématiques

Voir les schémas de câblage et le montage final sur breadboard dans les images du projet.

Processus de fabrication

  1. L'Évolution et l'Art de l'Animation
  2. L'Évolution des Disquettes : Du Support Magnétique au Stockage Optique
  3. Construire un Spybot Arduino piloté par Bluetooth
  4. FlickMote : Télécommande IR à gestes pour maison connectée
  5. TV-B-Gone DIY Arduino : Télécommande universelle pour toutes les TV
  6. Construire une horloge maître LED personnalisée avec alarme – Visible à 12 mètres
  7. Find Me : Localisateur d'objets intelligent avec Arduino et Bluetooth
  8. Solutions d'alimentation optimisées pour projets Arduino
  9. Lecteur de disquettes Amiga basé sur Arduino : Récupération de données open-source et abordable