lundi 21 août 2017

Drumulator : l'heure du remontage!


Cela fait un peu plus d'un an que je possède cette Drumulator. Je l'ai achetée en région parisienne pur un prix modique car elle présentait quelques défauts, notamment la présence du message 'bad' au démarrage. Ce message n'est pas bien grave puisqu'il indique juste que la batterie interne de sauvegarde des RAM statiques est arrivée en fin de vie. La réparation ne devait donc pas poser trop de problème.

J'ai déjà eu l'occasion de présenter cette boit à rythme. Il y a à peine plus d'un an, j'ai effectué quelques dépannages et expérimentations ici, et créé un outil de débogage basé sur l'émulation des bus d'un Z80 sous la forme d'un 'composant' compatible Arduino, avec la version définitive ici, en milieu d'article.

Version définitive à gauche, version de test à droite.
Je n'avais pas remonté cette machine parce qu'une personne rencontrée lors du MakerFaire de Nantes en juillet 2016 m'avait proposé de participer à une manifestation sur le thème du rétro et du hack. Bien évidemment, cette personne ne m'a jamais recontacté. J'ai donc décidé de terminer mon travail sur cette boîte.

Digression : Je n'ai pas participé au MakerFaire de Nantes 2017. Cela représente beaucoup de travail de préparation et des bénéfices quasiment nuls malgré un nombre incroyable de personnes passées me voir l'année dernière. En fait le principe est simple, il s'agit de travail offert aux organisateurs, seuls à tirer les bénéfices de votre présence. Et pour être plus clair, travail fourni pour la très grande cause du rayonnement de Nantes, dans le cas présent. Une fois ça va, pas deux! Fin de digression.

Le changement de pile a effectivement réglé le problème du message d'erreur au démarrage de cette Drumulator, après avoir toutefois effectué la procédure de RESET des mémoires. Tout s'est bien passé au remontage, sauf que le réel problème de cette machine est apparu lors des premières tentatives d'utilisation. Tout fonctionnait SAUF le potentiomètre de data. Les valeurs qu'il permettait d'obtenir allaient de 45 à 64 pour ce qui était du réglage du tempo, et ne permettaient pas de modifier les valeurs des volumes des différents sons!

Une petite étude du schéma de principe de la machine permet de cerner rapidement le problème :

Une façon possible de faire de la conversion analogique/numérique.
 Surtout quand on constates ce qui a été installé en guise de réparation :


Et oui, la réponse au problème est tout simplement écrite : 10K. Le potentiomètre utilisé certainement pour remplacer celui d'origine défaillant est un 10KOhms en lieu et place de ce qui devrait être un 100KOhms, comme indiqué sur le schéma de la machine. Et de suite il est possible de comprendre la façon dont la personne qui a (tenté d'effectuer) effectué la réparation s'y est prise.

Et pour commencer, tentons de trouver le même type de potentiomètre rectiligne en version 100KOhms. Si vous y arrivez, faites-moi signe. J'ai passé un temps suffisamment long sur Internet pour arriver à la conclusion que ce type de potentiomètre est introuvable aujourd'hui. Le temps passé à cette recherche, à lui seul, rend la réparation de cette Drumulator absolument pas rentable! En version 100KOhms, cela devait déjà être compliqué à trouver à l'époque, même si je ne sais pas quand à eu lieu cette réparation!

L'auteur de cette 'tentative' de réparation a du se dire que cela ne faisait rien et que ce 10KOhm fonctionnerait quand même. Après tout, ça n'est pas pour le courant consommé qui passe de 50µA à 500µA sous 5V. Certes, sauf que la méthode de mesure de la valeur de ce potentiomètre n'est pas effectuée par un convertisseur CAN 'habituel' qui relèverait la tension présente à son entrée, mais par le calcul du temps que met un condensateur à se charger. Et qui dit charge de condensateur dit quantité d'énergie, et donc courant de charge!

Pour faire simple, voici comme cela fonctionne : le circuit intégré 74ls221 est un monostable. C'est à dire qu'une impulsion sur une patte permet de changer l'état de sortie d'une autre patte pendant... un certain temps, puisque c'est un monostable et non pas un bistable. Le 'certain temps' est généré par
le condensateur chargé à travers une résistance. Il est possible de déterminer la durée de ce temps de basculement à partir du datasheet d'un des fabricants de ce type de circuit.

Le fonctionnement final se déduit donc très facilement : une impulsion négative sur la patte '1' du 74ls221 fait instantanément passer sa sortie Q (patte 13) à '1'. Cette sortie Q reste à '1' le temps de la prise en compte de la charge du condensateur, et revient toute seule à '0'.

Comme l'entrée de déclenchement /A du 74ls221 est générée par le programme de la Drumulator, le programme sait exactement le moment du début du déclenchement (remise à zéro du registre de comptage du CTC, voir plus bas). Pour trouver la fin du déclenchement, il suffit de surveiller le passage à '0' de la sortie Q du 74ls221. C'est le rôle dévolu au Z80 CTC qui est un timer/compteur. Ce composant est capable de compter des impulsions arrivant sur sa patte 21 et de tenir à jour un registre interne dont la valeur sera le reflet du nombre d'impulsions d'horloge comptées pendant tout le temps que le condensateur aura mis à se charger, et donc sera le reflet de la position du potentiomètre, qui conditionne le temps de chargement du condensateur. A noter que la sortie Q du 74ls221 ne fournit pas les signaux d'horloge à mème de faire compter le CTC, mais valide le passage de l'horloge système vers le CTC via la porte NON-ET 74ls00.

Voilà, ça n'est pas compliqué. Encore faut-il se donner la peine de comprendre un peu le fonctionnement avant de se lancer dans une modification hasardeuse!

Que m'a-t-il fallu faire pour 'rattraper' le coup? C'est assez simple en fait. Puisque je ne pouvais pas augmenter la résistance de potentiomètre de 10KOhms à 100KOhms, il suffisait de multiplier la valeur de condensateur C77 par 10. J'ai donc placé deux condensateurs de 3200pF en parallèle entre les pattes 14 et 15 du 74ls221, pour une valeur finale de 6400pF + les 680pF d'origine.


Je triche un peu, ça n'est pas si simple que cela parce qu'il faut vérifier que les valeurs des composants restent dans les possibilités du 74ls221. Chance, c'était le cas!

Pour compléter, j'ai aussi du changer la résistance en parallèle sur le potentiomètre. Elle est censée diviser la valeur finale du potentiomètre de façon non linéaire. De 500KOhms à l'origine, je l'ai fait passer à 50KOhms (valeur divisée par 10 par rapport à l'origine, comme celle du potentiomètre). Dans les faits, j'ai placé deux résistances en série pour un total de 55KOhms. Les 10% supplémentaires me permettent d'atteindre la pleine échelle à coup sûr. A noter que la progression résultante du potentiomètre avec cette résistance en parallèle n'est donc pas linéaire. L'idée étant de linéariser la progression "apparente" de la charge du condensateur, sachant que la courbe de charge d'un condensateur, justement, est exponentielle et non pas linéaire. J'ai aussi du rajouter une résistance ajustable en parallèle de celle de 2KOhms d'origine pour régler plus facilement le zéro du potentiomètre. Une fois ces opérations réalisés, j'obtiens des créneaux de charge de 2,5% à 18,5% par période me permettant d'atteindre la valeur 0 pour le réglage du volume, et la valeur maximale de 240 pour le tempo par exemple.

Potentiomètre en butée à gauche.

Potentiomètre en butée à droite.
Les modifications effectuées, j'ai remonté la machine et ai procédé aux tests finaux en écoutant pour la première fois cette boite à rythmes :



J'ai passé l'OS de cette Drumulator à la version 3, avec la prise en charge de la liaison M.I.D.I. entrante. Il ne me reste plus qu'à mettre en place la petite interface M.I.D.I. standard d'entrée. A moins que j'en profite pour y implémenter un module de conversion de ma nouvelle interface M.I.D.I.

Mais pour l'heure, je remonte l'Emulator I que j'ai acquis il y a aussi un an. Fonctionnel, mais qui m'a généré une superbe fumée âcre de condensateurs quelques minutes après sa mise en marche. Je me dis que cet Emu 1 sera le parfait compagnon de cette Drumulator!

mercredi 26 juillet 2017

Micromite la boite à outils....

Est-il possible d'effectuer des tests sur différents composants, qu'ils soient équipés de bus série I2c ou SPI, encore plus facilement qu'avec une carte Arduino?

La réponse est oui et tient en deux mots : Micromite et Basic.

Étonnamment, alors que l'environnement de développement Arduino à connu un succès énorme auprès des 'bricoleurs' divers et variés, des solutions alternatives comme Micromite ne sont jamais mentionnées. Est-ce du au fait que le langage de programmation utilisé est le Basic?

Micromite est basé sur des processeurs puissants de chez Microchip, en l’occurrence des circuits PI32MX. Un des circuits couramment utilisé est le PIC32MX170F256. Il s'agit d'un processeur en boîtier de type DIP qui permet la réalisation de cartes de développement très compactes et faciles à réaliser :


Quand même, ce 'petit' processeur fonctionne à 40MHz, possède 256Ko de flash et 64Ko de RAM. Micromite se sert de la Flash pour enregistrer de façon pérenne le programme en basic et propose plus de 50Ko restant en RAM pour le stockage de données 'volatiles'. Inutile de dire que cela permet de faire déjà beaucoup de choses.

Le Basic développé par Geoff Graham est compatible MMBasic, est très rapide et en est à la version 5.04.05 :

J'ai effectué la mise à jour en version 5.04.04 il y a à peine quelques semaines, je pourrais donc recommencer l'opération pour passer en version 4.04.05, disponible depuis quelques jours sur le site de Geoff : http://geoffg.net/micromite.html. Preuve que le suivi du projet est correctement effectué!

La carte que j'ai développé pour ce système permet d'y raccorder le programmateur PicKIT 3 :


Et donc d'effectuer très simplement la mise à jour du firware de l'interpréteur Basic.

Pourquoi évoquer ce type de système aujourd'hui? Tout simplement parce qu'avec l'engouement actuel pour le rétro-computing, il me semblait opportun de rappeler que nombre de micro-ordinateurs de la belle époque n'étaient programmable qu'en Basic. Avec des puissance qui n'avaient rien à voir avec ce que propose Micromite. Evidemment, ici il n'y a pas d'écran ou faire défiler de jolies animations. Non, ce type de système est plutôt prévu pour du contrôle/commande, et il le fait particulièrement bien. Noter que l'interpréteur connaît une instruction pour démarrer directement le programme Basic à la mise sous tension.

Si cela vous interpelle, je vous invite à aller sur le site de Geoff consulter le manuel de son Micromite. Les possibilités de cet interpréteur sont tout bonnement stupéfiantes! Toutes les ressources sont libres...

Enjoy!

mardi 25 juillet 2017

Intel Arduino 101

"Les emmerdes, ça vole toujours en escadrille", comme disait ce 'cher' Chirac. Tout dépend pour qui. Pour Intel, sans doute. Après avoir annoncé il y a à peine un mois la fin des cartes de développement Joule, Galileo et Edison, voici qu'arrive le tour de la carte au format Arduino, la 101 :


Comme l'indique cette annonce du site Hackaday, il semble que ce soit le clap de fin en ce qui concerne la tentative d'intrusion d'Intel dans le domaine des 'faiseurs', après avoir abandonné le petit mode prometteur des jeunes diplômés, avec les cartes Joule, Galileo et Edison. Charmant comme appellations, d'ailleurs. Mais que ce soit avec ces jeunes diplômés 'néo-nouveaux' (barbe de 15cm et mac-book pro chevillés au corps) ou les makers de tout poils, il semblerait que le loup ce soit fait éjecter de la bergerie. Ce n'est pas un mal.

Pourquoi en effet perdre son temps sur des architectures ultra propriétaires, absolument pas performantes et obsolètes car largement dépassées par d'autres solutions du marché.

Comme j'ai déjà eu l'occasion de le signaler, l'objectif d'Intel n'était pas de proposer quelque chose de viable, mais de détourner l'attention des développeurs de tous poils des solutions concurrentes suffisamment longtemps pour étouffer le phénomène. Pour être complet, il me semble important de signaler qu'il n'aura pas fallu attendre le débarquement d'Intel pour que le phénomène 'Makers' s’essouffle. De lui-même d'ailleurs. Mode des années 2010, le sujet est ailleurs aujourd'hui...

Et cela n'est pas un mal non plus. Un certain assainissement pourrait être le bienvenu, qui devrait permettre l'émergence d'une suite au phénomène, et notamment à Arduino. Pour l'instant je ne vois pas vraiment quoi que ce soit poindre le bout du nez, mais sait-on jamais...

jeudi 20 juillet 2017

Le projet Arbalet, suite...

Pour faire écho au billet précédent, voici un des sujets en cours qui progresse maintenant de façon plus'dynamique'. Petit rappel : Yoan Mollard m'a demandé de lui créer une carte Arduino adaptable directement sur une Raspberry Pi3. Cette carte joue le rôle d'interface entre la carte Pi3 et la série de LEDs installées dans la table Arbalet, voir cet article.


Par rapport à une carte Arduino de base, le projet utilise ici un processeur plus complet puisqu’il s'agit d'un ATmega328pb. Les périphériques supplémentaires de ce processeur par rapport a l'ATmega328p sont intéressants en ce sens qu'il devient possible de conserver la liaison série entre la carte Arduino et le PC de développement sans être obligé de déconnecter la carte compatible Arduino de la Pi3 à chaque besoin de téléversement. Le deuxième port série de ce 328pb est utilisé pour communiquer avec la Pi3. Faire autrement eût été extrêmement fastidieux en manipulations, à la longue.

Une Pi3 équipée de la carte compatible Arduino nommée ARPI.

Une autre différence concerne la bibliothèque de commande des LEDs. A la base, il s'agit de la bibliothèque Adafruit. Elle fonctionne très bien mais est visiblement quelque peu gourmande en mémoire RAM. Pour rappel, le 328p ou 328pb ne contiennent 'que' 2Ko de RAM. J'ai donc choisi la bibliothèque FastLED, qui fait référence en la matière. Par contre, j'ai du l'adapter aux nouvelles ressources utilisées sur ce projet. Comme toute bibliothèque pour Arduino, elle ne prend en compte que les cartes Arduino Uno de base. Le processeur 328pb n'étant pas reconnu, il m'a fallu 'agrémenter' cette bibliothèque des déclarations nécessaires.

Site fastled.io inaccessible le 20 juillet 2017!

Autre grosse différence, cette étude va être industrialisée. Jusqu’alors, je ne me souciais pas vraiment de ce type de situation car je gérais absolument toute la chaîne de fabrication et de montage des cartes. Devoir faire réaliser le projet par une entreprise extérieur demande donc quelques ressources complémentaires, et une certaine adaptation aux processus 'extérieurs'.

Il me restait à développer le logiciel de ce nouveau matériel, et donc à gérer la communication avec la Pi3 et les strips LEDs. Voilà qui est fait : 


J'ose une petite satisfaction personnelle ;-)

Update 25/07/2017 : Le premier jet de la version industrielle.


Les éléments semblent correctement réalisés. Sauf le connecteur de la Pi, sur la carte ARPI qui est placé du mauvais côté du circuit imprimé. Encore quelques précisions à fournir au sous-traitant, et un peu de travail 'manuel' pour extraire ce connecteur et le placer sur l'autre face.

Ça se précise :-)

mardi 18 juillet 2017

Travaux de vacances...

La période estivale à commencé, comme d'aucun aura pu le constater. Les fortes chaleurs ne favorisent pas l'extrême dynamisme. Néanmoins, et même si je ne publie pas très souvent ces derniers temps, les projets avancent à leur rythme.

Dont celui consistant à trouver une place adéquate au Korg T1, remis en état de fonctionnement complet en avril de cette années, et remisé depuis. Première action, faire de la place :

Je n'ai pas pris la photo quand les étagères étaient toutes occupées!
Non, parce que c'est bien joli tout ça mais il n'y a absolument rien de fonctionnel pour utiliser le matériel que je possède. Du coup, je me 'contente' d'étudier sur le Kurzweil K250 et son superbe clavier en bois. La place est faite pour le T1 :


Voilà, je peux maintenant me servir de ce très agréable clavier haut de gamme de l'époque (toujours d'ailleurs, vu la qualité du son qui en sort). Le petit Juno 2 a pris place sur le dessus, en attendant mieux. Parce que le but consiste à se construire un meuble apte à remplacer le pied RTX pour le T1, et possédant quelques étagères supplémentaires pour y poser d'autre claviers ou boites à ryhtmes. A suivre.....

lundi 3 juillet 2017

Apple ][e...

Pour ceux qui souhaiteraient trouver des informations fraîches de la scène rétro Apple, le groupe d'utilisateur Call-A.P.P.L.E. peut s'avérer très intéressant :


Ce groupe est constitué de bénévoles et possède la particularité de proposer en téléchargement l'envronnement GEOS pour Apple ][e notamment :


Alors jusqu'à aujourd'hui, faire tourner un tel environnement sur un Apple ][e 'de base' pouvait prêter à vraiment sourire, avec les cartes d'extensions proposant un cœur de processeur rapide, telle que la carte FASTChip //e, cela devient tout à fait crédible.

Tant qu'à se faire casser les pieds au quotidien par un windows 10 devenu régie publicitaire imposant ses vues, autant se prendre la tête sur un sujet 'amusant'. Au moins, vous n'aurez pas l'impression de faire du néo-minitel avec des processeurs de 8 cœurs à 3Ghz et 32Go de RAM!
Moi, ce que j'en dis ;-)

mardi 20 juin 2017

Intel Joule, Galileo & Edison :-)

Parfois, de bonnes nouvelles finissent par arriver, à force de patience.
Et cette fois, c'est Intel qui me donne un réel motif de satisfaction. Notez la photo de début du billet paru sur Hackaday le 19 juin :


Petite pensée à ceux qui n'auraient pas lu avec attention mes conseils postés il y a tout juste trois ans sur ce blog. Je vous suggère de (re)lire ma petite digression sur "Le côté sombre de la force." ou il est question justement de la tentative d'entrisme d'Intel chez les Makers.

Dans le billet dont il est question sur le site de Hackaday, l'auteur se pose des questions sur les raisons de l'abandon de ces plateformes par Intel. Raison philosophiques propres à Intel ou alors mauvais support tant matériel que logiciel de ces matériels? Si je puis me permettre, un site un tant soit peu sérieux comme Hackaday devrait au moins émettre une autre hypothèse :

Celle toute simple de mines déposées par Intel, destinée UNIQUEMENT à exploser la concurrence naissante dans le domaine de l'ULE  (Ultra Light Embedded). Le but du jeu ayant été tout simplement de tenter de détourner le flux des 'inventeurs' (de préférence diplômés) vers autre chose que la concurrence, quitte à les envoyer avec un billet de non retour, directement sur Mars!

Visiblement ça n'a pas fonctionné, et c'est une très bonne nouvelle pour le monde des développeurs talentueux. Et d'ailleurs, cela ne rejoindrai-t-il pas ce à quoi faisait allusion Steve Wozniak à la Silicon Valley Comic Con 2017? (voir billet juste en dessous...)

Et pour ceux qui y ont cru, un petit rappel : une nouvelle agence pour l'emploi spécialement dédiée vient d'ouvrir ses portes Hall Freyssinet. C'est dans dans le 13ième!

24 juin 2017 Bon, évidemment Intel ne cherche pas qu'à plomber la concurrence,  mais cherche aussi de nouveaux débouchés. Parce que le PC, ça s'essouffle grave, et les tablettes n'existent déjà presque plus, et de toute façon sont développées avec des multicœurs ARM.

Image personnelle prise le 23 juin 2017
Sur cet emplacement d'une grande enseigne, trônaient il y a moins de deux ans, des PC portables à plus de 1000€, bien présentés sur un 'comptoir'. Et puis les machines proposées sont progressivement descendues en gamme jusqu'à ne plus présenter que des ordinateurs sans intérêt, puisque quoi faire d'une machine entre 350 et 500€ ? Cher, pour juste relever ses mails! Et puis aujourd'hui, plus rien, ou quasi si ce n'est quelques boîtes HP et Leonovo. Il est vrai que la manne commerciale se situe maintenant dans le Big Data :

Wikipedia
Pour ceux qui auraient raté le cours de l'histoire!

Enjoy!

Histoire d'enfoncer le clou, en voilà un exemple de petite carte qu'il est bien plus judicieux d'étudier  :


Un exemplaire de la famile Nucleo de chez ST que je viens de recevoir. Je suis actuellement en train d'étudier un switch M.I.D.I. équipé d'un processeur ARM de chez ST. J'ai déjà eu l'occasion d'évoquer la facilité de mise en œuvre de ces composants tant au niveau matériel que logiciel grâce à la suite logicielle libre d'AC6 : un vrai bonheur! Cette carte Nucleo possède un processeur encore plus musclé que j'ai hâte de découvrir...

Les raisons d'utilisation de ce type de processeur ne sont bien évidemment pas que techniques. Bien d'autres aspects doivent être pris en compte si l'on veut conserver sa liberté d'expression. Chez Intel, et autres entreprises du même type, l'investissement dans une plateforme hautement propriétaire impose des contraintes inacceptables aujourd'hui dans le monde du 'vrai' développement, but, it is an other story!

Bon, et puis au passage, publicité gratuite pour STMicroelectronics qui est, rappelons-le, une entreprise franco-italienne. Vous avez même la référence du produit chez Farnell! (la encore, publicité gratuite).

Enjoy (bis)

22 juin 2017 : Petite publicité rencontrée ce jour, soit au moins trois jours après l'annonce de l'arrêt du support de cette plateforme par Intel : 



 'Funny', n'est-ce pas! Allez, l'important, c'est d'y coire ;-)