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

station meteo e-paper

img_2263

une fois n’est pas coutume, voici un petit article sur un projet sans Arduino… oui c’est possible 😉
En l’occurence cette station météo n’est composée que d’un raspberry pi zero et d’un afficher E-paper de chez waveshare.
Pour mémoire le E-paper, c’est ça: https://fr.wikipedia.org/wiki/Papier_électronique

Le gros avantage est la consommation électrique: nulle entre deux rafraichissements de l’écran (qui ne nécessite aucun rétro-éclairage).  Et dans le cas de cette station météo, la fréquence de maj est fixée à 15 minutes…

Mon choix s’est porté sur un modèle monochrome de 4.2 pouces de diagonale. La gestion de l’afficheur se fait via un port SPI à 3 fils. Le fabricant (waveshare) fournit une bibliothèque python relativement simple à utiliser: https://github.com/waveshare/e-Paper/tree/master/RaspberryPi_JetsonNano/python

Concernant les données affichées (données temps réel et prévisions), je me suis appuyé sur ce que j’avais à disposition à la maison… c’est à dire ma domotique ! Comme évoqué dans un article précédent, j’ai mis en place un capteur extérieur (luminosité et température) que j’exploite avec ma domotique. Donc, rien de plus simple qu’une petite requête http pour récupérer les bonnes informations…

img_2156Pour la partie « prévisions » je me suis appuyé sur openweathermap.og qui fourni une api json qui fournit des prévisions par tranche de 3h jusqu’à 5 jours à l’avance.
Avec Python rien de plus simple que de stocker le résultat d’une requête http retournant du json dans une variable du type dictionnaire.

 

la code est disponible sur github:

https://github.com/Chnalex/arduino/blob/master/station_meteo.py

img_2157