IMA5 2018/2019 P28
Présentation générale
Description
Construire un clone de la calculatrice open-source NumWorks. Effectuer quelques modifications sur le code source et sur le hardware.
Objectifs
Il y a plusieur Axes sur le projet en premier temps sur une calculatrice officiel Logiciel :
Préambule - compilation du firmware sur linux / windows - mettre a jour un calculatrice - compréhension du code dans sa généraliter
Réquis - Modification du mode examen pour garder les programme - Modification du calculateur pour rajouter des fonction - Ajout de memoire a python ( 13 ko disponnible)
Hardware
- Rajout de memoire vive (seulement 256kb) - Recherche ecran compatible
en un second temps modifier la calculatrice en rajoutant des fonction non utiliser comme lecture de carte sd et utilisation des entrée sortie
Préparation du projet
Cahier des charges
Choix techniques : matériel et logiciel
Liste des tâches à effectuer
Calendrier prévisionnel
Réalisation du Projet
Semaine 1
Pour éviter de me retrouver avec une seul version qui a tout les modification je travail par petit segment qui seront appeler buildx (x étant un chiffre croissant) les petit modification pourront comme sa ajouter dans une version futur et des modification juger non pertinent n'impacterons pas sur le peux de place qui a en mémoire flash
Installation :
Linux
Partant d'un linux vierge pourvoir installer l'environnent sdk pour qu'on puisse mettre a jour et modifier la numwork il faut quel que ressource seront nécessaire pour compiler
make gcc g++
utiliser par "os" de numwork
bison build-essential dfu-util flex gcc-arm-none-eabi libfltk1.3-dev libfreetype6-dev libpng12-dev
une fois tout sa installer linux et enfin prés a compiler et envoyer le code sur la calculatrice
Windows
Cette fois n'ayant pas de console il faut l'installer Numwork nous propose Msys2 une fois installer comme sur linux il faut installer pas mal de ressource
pacman -S mingw-w64-x86_64-gcc mingw-w64-x86_64-freetype mingw-w64-x86_64-pkg-config mingw-w64-x86_64-fltk git make bison python
Mac aucun mac pour les tests mais sa doit fonctionner correctement
Mise a jour : une fois l'ordinateur configurer on compiler et essayer soit le simulateur soit envoyer le code sur la calculatrice (sachant que le simulateur ne simule pas la led et d'autre fonction de la calculatrice) Pour compiler le code vers la calculatrice
make clean make make epsilon_flash
Pour compiler le code pour le simulateur
make PLATFORM=simulator clean make PLATFORM=simulator
sachant que le clean et très important on ne peux pas exporter un code qui a était a but du simulateur
Pour exécuter le simulateur
./epsilon.elf
Build 1 désactivation du mode examen
Le mode examen et obligatoire pour tout les calculatrice programmable a partir de la rentrée 2018 le but de se mode et de bloquer l'accès au programme qui on était dejai enregistré dans la calculatrice et de l'indiquer pour aider les surveillant a verifier que le mode et bien actif.
Pour se faire Numwork a choisir d'appliquer 3 action en activant le mode examen
- ajout d'une icone examen dans le menu
- clignotement d'une led en rouge
- effacement des programme python (et non dés-affichage des programme comme le font certain concurrent)
Pour sortir du mode d'examen il suffit soit de reset sa calculatrice ou d'alimenter la calculatrice
Cette dernier fonction et vraiment contraignante même pour une utilisation normal, une mauvaise manipulation et les programmes réaliser s'envole
Pour que la supercherie que le mode examen aie était truquer les indicateur visuel doivent rester il faut juste modifier la dernier fonction
Semaine 2
Ayant avancée sur la partie software et compris un partie du code je me lance sur la liste des materiel requis pour réaliser un clone. tout les composant sont disponible dans le commerce sauf l'ecran qui a réaliser sur mesure pour numwork
On peux voire que la schème donnée par numwork qu'il utiliser des fonction particulier du controleur qui sont:
-un bus de donnée de 16 bits
-4 led de retroéclairage
-Te : Tearing Effect
-EXTC : extended comande
connaisant les port qui sont requis je peux commencer a chercher un ecran compatible sachant qu'aprés une demande a numwork le ports EXTC n'ai pas encore utiliser et le ports TE peux être desactiver sans vraiment poser de problème
Il et dur de trouver d'un concepteur d'ecran utilisant le controleur ST7789V pour leurs ecran il faut donc se tourner vers la chine sur 8 fabricant seulment 4 réponse et sur les 4 réponse seulment 2 avec des produit correspondant a la demande l'un viens de szelida et l'autre de Youri Technology je choisi donc le ET024QV01 [[1]]
on peux voire a sa liste de PIN qui a certain PIN qui deveront être fixer a vcc ou gnd pour bloquer le mode d'affichage de la calculatrice mais il posséde les pin requis pour fonctionner avec la calculatice il et juste plus petit
En paralléle une recherche sur le hardware montre que la place pour la RAM et dejai prévu sur le PCB il faudrait juste modifier une partie software pour qu'il soit pris en compte l'ajout de la RAM boostera fortement les capacité de cette calculatrice et pourra permet normalment de faire des petit calcul formel Partie Software :
Vu que le recherche sur la ram a était effectuer je me concentre se coup si sur l'augmentation de la taille alouer a python en prévision de l'augmentation qui serra fait dans le futur !
De base python dispose de 16Kb de mémoire alouer pour fonctionner en peux le pousser a aller jusqu'a 128Kb sans augmentation matériel mais du a l'achirecture de la mémoire du procésseur une fois qu'on dépace les 64 Kb le temps de traitement deviens long tellement que les premier fois j'ai penser la calculatrice totalment planter !
Si on essaye d'alouer plus que 128Kb de mémoire a python la calculatrice bloque l'action et empêche d'ouvrire la console , il existe une petit sécuriter pour éviter de vraiment planter la calculatrice
cette modification permet d'avancer l'hypothése que le système epilson prend 128kb dans la mémoire vive actuel
Une autre modification mineur a était réaliser pour modifier la version de la numwork il n'ai possible que de rentrée un numéro de version ayant 7 char chose intéressant le site de numwork affiche bien notre version modifier
Semaine 3
Je commence cette semaine par étudier l'utiliter du port TearingEffect et ExtendedCommand on debute par tout commenter pour voir l'effet sur la calculatrice
(d'autre ligne on était commenter)
je charge donc cette modification dans la calculatrice pour voire le résultat grace a la fonction graphique je charge des fonction assez lourde graphiquement pour voire les changement ( un fonction de base comme f(x)=x n'ai aucun bug graphique)
je test donc tan(x²⁴) et sin(x⁴)
(pour les images de cette partie il n'aie pas possible d'utiliser le simulateur)
en effectuant quel que déplacement sur la courbe on obtiens des léger bug graphique comme celui la ,ou seulment un petit portion disparaît par a coup
en changent de fenêtre l'as on obtient des bug graphique plus important
même si les bug graphique sont présent il ne sont pas gênant car :
- sur des fonctions de base il ne sont pas présent donc pas contraignant pour un étudiant au collège/lycéen
- sur des fonction avancer les bug ne dure quel que seconde et ne sont donc pas gênant
il pourrai donc poser problème sur des fonction plus graphique et dynamique
En cherchant sur internet on peux découvrire un mode de test on y accédes viens le menus paramètres -> A propos on se place sur FCC ID puis on appuis sur la touche 6 on valide et nous voila dans le mode de test
sur simulateur on ne peux pas dépasser le test bouton car le bouton home n'est pas accessible via le clavier sinon il comporte en plus d'un test ecran pours les couleur primaire , test de led et de l'affichage d'un code (serie) de la calculatrice
Pour rajouter du calcul formel 2 option s'offre a moi crée un application dédier a sa ou l'ajouter a la fonction de math dejai existant la 2 éme option et étudier en se moment
en lisant le code on comprent certain chose : il font des arrondis pour éviter les erreur de la librairie qui peux renvoyer 4^-17
Semaine 4
Cette semaine je réalise le nouveaux schéma électronique
tout les fonction de base se répéter sans modification (pour le moment) je capable le nouveaux comme afficher sur la datasheet de l’écran (en laissant le TE et EXTC déconnecter)
fessant un version beta test je laisse quand même un emplacement pour que la calculatrice soit compatible avec les ancien ecran qui permettrais de valider le fonctionnement de correct de l'ecran et de la calculatrice
en réalisant le pcd de la "nouvelle" calculatrice je remarque que faire un adaptateur pour que les nouveaux ecran puisse être tester sur les calculatrice de base (qui validerai leurs fonctionnement )
Etude du clavier Numwork
Refaire le clavier de la numwork comprend refaire aussi sont clavier qui actuellement composer comme se si
Une premier partie électrique
Une Seconde partie de silicone et de carbone qui assure le contact
Une dernier partie de touche en plastique
en regardant la doc technique de numwork on remarque que le clavier et un clavier matrice
en fessant quel que recherche sur la création de clavier matrice on remarque une fonction que numwork n'ai pas pris en compte la fonction antighosting (anti touche fantôme ) (source [2])
la conception de la croix directionnel fait qu'on ne peux pas appuyer sur 2 touche en même temps ,en démontant la calculatrice et en appuyant sur 2 des touche cela n'as aucun influence donc la croix peux être remplacer par un D-pad
Semaine 5
du au nombre croissant d'étudiant dans la filière SC une matinée a était consacrée a l'installation d'ordinateur pour la réalisation du tp ASR
Etude WebUSB DFU
Numwork se sert de se petit addon disponible sur les navigateur web (seulement google chrome pour le moment )
La prise en main du petit script de base et simple et fonctionnel j'ai pu lancer la page d'un autre ordinateur
la réalisation d'un page comme https://zardam.github.io/webnofrendo/ pourrai être envisager pour héberger différente version modifier pour qu'un élève puisse changer de version au besoin du prof facilement sans devoir utiliser tout les fonction de compile etc
Sur le script de base on peux aussi récupéré les version firmware des calculatrice
Mais vu certain des version crée a se jour par m'as part la diffusion a grande échelle (un site web visible depuis n'importe quel pc ) poserai quel que problème (évitons de simplifier la tache des tricheur )
Création d'un boitier et impression du modèle l'original
Numwork propose un modèle pour réaliser leurs calculatrice en moulage plastique mais le modèle et le même pour réaliser une impression 3D ( https://github.com/numworks/dieter )
Dans une optic de democratiser le project au plus grand nombre et baisser les coûts de fabrication j'ai réaliser un modèle réalisable a la découpeuse laser
le produit fini
3 découpe on était réaliser sur 3 matériaux différent : bois (contreplaquer peuplier 3 mm ), plexiglas (3mm) et carton (1,5 mm) le modèle et optimal pour des matériaux de 1mm les touches réaliser grâce a l'impression 3D sont compatible avec les boîtiers découper .
Du au arrondit de la calculatrice certaine partie on du mal a être imprimer correctement il faut donc augmenter le précision de la calculatrice donc le prix du boîtier , la modification du modèle en enlevant les arrondis pourrai éviter se problème mais se n'ai pas un problème urgent.
Au niveau prix le boîtier en impression 3D donc en pla revient a 10€ , le modèle en bois étant a 14€/m² on arrive a moins de 0,50€ a le boîtier en bois et pour le modèle en carton on arrive a trouver du carton dans les 1,5€/m2 se qui fait que le boîtier arrive a moins de 0,05€
Ajout Flash externe
Dans le but de rajouter giac sur la calculatrice numwork il faut en premier temps rajouter de la flash pour avoir assez de place pour l'installer plusieu puce sont possible mais pour respecter la datasheet de la numwork j'utiliserai la AT25SF641 de adesto
premier etat mais pas la moindre le soudage de la puce il faut faire attention en manipuolant se genre de composant il sont sensible a l'electricité statique
Pour programmer la flash j'utilise qspi-loader qui se sert lui même de flashrom
en utilisant la puce de flash AT25SF641 il faut rajouter quel que ligne dans flashrom pour pouvoir l'utiliser (fichier flashchip.c et flashchip.h)
une fois installation de flashrom correctement fait on peux utiliser qspi de façon correct en suivant le procédure suivante
Reset la calculatrice Charger Qspi-loader (make run_qpsi_loader) Patcher la flash (excecuter le script python enable_qspi_AT25SF641.py cela permet de set les port QE correctement attention si cette etape n'ai pas respecter il a y des risquer pour la calculatrice)
après cette courte procédure qspi et fonctionnel et permet d'ecrire sur la flash externe
Installation de giac sur la calculatrice
Je me baserai pour le moment sur le travaux de zardam (version intérieure de la calculatrice )
il nous faut utiliser une version modifier de giac et tommath (alléger) pour pouvoir reussir a faire rentrer le programme dans la flash rajouter
une fois fait on compile le version puis on commence a installer dans la flash externe (qspi loader doit et charger dans ka flash interne)