Clone DIY d’un sharp CE-125

Mon fils, pour qui j’avais construit un petit tank lorsqu’il avait 5 ans pour apprendre à programmer des séquences de déplacement, a bien grandi 😉 Maintenant du haut des ses 11 ans, il souhaite apprendre à programmer en BASIC sur mes vieux pocket-pc Sharp des années 80. Pour éviter de tripoter mes précieuses vieilleries, je lui ai trouvé sur ebay un pc-1262 ainsi que son périphérique « tout en un » un superbe ce-125 qui à l’époque était une sorte de mini rolls-royce avec son lecteur/enregistreur de microcassettes pour charger/sauvegarder les programmes et cerise sur le gâteau: son imprimante thermique non graphique affichant 24 caractères par ligne (la classe !!).
Toutefois, si le CE-125 est une belle petite bête qui vieilli bien, il souffre de plusieurs petits soucis: la sauvegarde magnétique peut rapidement devenir inopérante (courroies des vieux lecteurs de cassette, encrassement,) et surtout aucune conversion vers un format textuel quelconque pour modifier (sur un mac ou un pc) puis pour ré-injecter dans la pocket pc. Idem pour l’imprimante dont il est quasi impossible de trouver des pièces, sauf à en vampiriser une autre… mais bon les prix commencent à grimper….

L’idée a donc germé de pouvoir réaliser un clone maison pour a minima imprimer et sauvegarder les programmes en wave ou mp3.
Après de longues recherches, car il y a peu de prose sur le sujet,  j’ai pu trouver de concevoir et mettre en oeuvre mon projet. En l’occurence il s’agit du site http://pocket.free.fr qui m’a permis de découvrir la suite d’outils PocketTools (avec les sources) qui sont désormais maintenu sur une site allemand https://www.peil-partner.de/ifhe.de/sharp/. Cette suite est totalement bluffante, puisque qu’elle permet via un ensemble de binaires et de scripts d’enregistrer via le port Sharp pour magneto-cassette en format wav puis de convertir le fichier en texte. Elle permet également de faire l’inverse et de diffuser toujours via ce port d’interface sharp un fichier texte convertit en wav. Donc bien au delà de mes espérances !!! Et comme les sources sont en C Ansi, il est possible de tout compiler sous linux, donc sur un raspberry PI,en y ajoutant une carte carte son usb à pas cher 😉
En ajoutant un petit shield LCD 2×16 caractères comme celui-ci, il y a de quoi réfléchir une IHM minimaliste en python ….
La partie sauvegarde/chargement des programmes étant faite, il ne restait plus qu’à trouver comment imprimer….. J’ai pu trouver mon bonheur sur le site de Walter Fischer et en l’occurence de quoi connecter un Arduino, toujours à ce même port Sharp à 11 pins, afin sortir le le port USB/série de l’arduino. A partir de là rien de plus simple que d’utiliser une petite imprimante thermique comme celle d’adafruit qui fournit une bibliothèque simple d’emploi.

donc si l’on résume voila ce que cela donne sur le papier:

 

 

 

 

 

 

 

Pour l’arduino, je suis reparti du code de Walter Fischer en l’adaptant à mes besoins. C’est à dire, de faire en sorte que quelque soit le modele le pocket pc (hors série PC-1500 et hors série 1211) l’arduino puisque interpréter correctement la trame de synchro d’avant impression (de plus les pin utilisés diffèrent selon le modèle de pocket-pc) puis celle d’impression (qui utilise toujours les deux mêmes pin Dout pour la réception et ACK qui acquitte chaque bit reçu)

le code est dispo sur github comme à l’accoutumée:
https://github.com/Chnalex/arduino/blob/master/sharp_imp.ino

voici un premier test sans imprimante avec un script python coté raspberry pour écouter la sortie série de l’arduino:

Pour réaliser quelque chose de correct, j’ai fait l’acquisition d’un câble Sharp EA-129C (câble avec deux connecteur mâle 11-pin Sharp) et j’ai bricolé une plaque de test pour à la  fois sortir vers la carte son du raspberry (mic et ligne) et vers les pins de l’arduino. Pour la partie son je me suis inspiré de ce schéma

Voici l’ensemble, dans un boitier que j’ai fait découper au laser dans de l’acrylique comme j’en ai l’habitude chez formulor.de.
On y retrouve donc, la plaque « à trous », l’imprimante, l’arduino et le rasberry pi muni de son shield lcd (mais que l’on ne voit pas, car il est face contre terre

Le programme en python est plutôt simple, il ne sert qu’à gérer la sauvegarde et le chargement via le truchement de deux scripts mis en oeuvre lors de la compilation de PicketTools (csave et cload -> à l’identique des commendes lancées sur le pocket pc) et qui sont appelés par la commande python os.system(commande).
L’ihm permet de naviguer entre les menu, choisir le modèle de pocket pc, saisir un nom pour le fichier au sauvegardé ou lister les fichiers présents sur la clé usb montée sur /media/usb0. Afin d’éviter d’avoir à gérer le montage démontage des clés depuis le scripts python, j’ai installé usbmount qui gère cela très et de manière automatique

le code du script:
https://github.com/Chnalex/arduino/blob/master/sharp_lcd.py

et hop, une petite video de sauvegarde

une autre d’un chargement

et une petite dernière de l’impression