IMA5 2018/2019 P28

De Wiki de Projets IMA
Révision datée du 27 novembre 2018 à 14:11 par Adorian (discussion | contributions) (Semaine 5)


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 :

source

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

Connecteur ecran.png

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

RAM numwork.png

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 Version.png

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

TE exc.png (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)

Original.png

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

Petit bug.png

en changent de fenêtre l'as on obtient des bug graphique plus important

Gros bug.png

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

Test usine.png Test bouton.png

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)

NEW ECRAN.png

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 

Ancien ecran.png

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

C elec.jpg

Une Seconde partie de silicone et de carbone qui assure le contact

C sili.jpg

Une dernier partie de touche en plastique

C plastique.jpg

en regardant la doc technique de numwork on remarque que le clavier et un clavier matrice

Num matrice.png

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

Calc decou.png

le produit fini

Découpe bois plexi.jpg

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

Flash souder.jpg

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)

Flashchip.png

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

Qpsi loader.png

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)

Flash ext.png

Documents Rendus