Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » Symbolibre : une calculatrice graphique formelle et libre
Lephenixnoir Hors ligne Administrateur Points: 24621 Défis: 170 Message

Symbolibre : une calculatrice graphique formelle et libre

Posté le 31/03/2019 21:55

Ceux d'entre vous qui connaissent feu le projet LibreCalc connaîtront aussi le principe. Force est de reconnaître que les calculatrices graphiques d'aujourd'hui se ressemblent d'année en année, et le matériel a du retard technologique sur, par exemple, les smartphones. En plus les logiciels ne sont pas libres (vous savez qu'on aime le libre sur Planète Casio). Alors peut-on faire mieux ? La réponse est oui !

Dans le cadre d'un projet de master à l'ENS de Lyon, un ancien utilisateur d'Omnimaga et moi avons lancé l'idée de construire une calculatrice graphique formelle libre. C'est ainsi que notre projet Symbolibre a fait travailler 25 élèves de Master pendant un an. L'année touche à sa fin mais le projet continue en-dehors des cours pour mener la conception à terme. Voyons ensemble ce qu'on a réussi à accomplir en un an !


À quelques broutilles près ça donne ça.


Matériel

À une ère moderne sied du matériel moderne ! Oublions les 512k de RAM que l'on a l'habitude d'utiliser pour les add-ins, notre ordinateur de bord est un Raspberry Pi Zero avec un processeur ARM à 1 GHz et 512M de RAM. Autant dire qu'il y a de la puissance de calcul sous le capot ! Ce Raspberry Pi n'a pas de fonctionnalités réseau, ce que le rend utilisable même en mode examen.

À cela nous joignons un écran couleur 320×240 connecté en SPI (pour économiser les pins pour le clavier), un clavier personnalisé imprimé sur un PCB agencé de façon hiérarchique à la Numworks, une batterie de 2000 mAh pour environ 20 heures d'autonomie écran allumé, et une coque imprimée en 3D. Les boutons sont aussi imprimés en 3D


Écran, Raspberry Pi Zero, batterie, et l'on aperçoit l'interface d'alimentation.


Système d'exploitation

Pas question d'en réécrire un de zéro, on tourne donc sous un bon vieux GNU/Linux, Gentoo pour être précis. On l'accompagne de Wayland avec pour l'instant Sway comme compositeur, même si ce n'est pas définitif ; et les applications sont développées avec Qt. Tout cela s'installe aisément sur une carte SD de 8 Go tout en laissant la majorité de l'espace disponible pour d'autres données. Beaucoup d'autres données.

L'idée est que l'environnement doit être le plus léger possible pour que la calculatrice soit très réactive. Linux nous aide beaucoup à monter le logiciel (notamment avec les drivers de l'écran et du clavier), mais il y a tout une suite qui vient avec et qu'il faut contrôler. Actuellement la calculatrice met 25 secondes environ à démarrer, un poil plus que les toutes nouvelles TI-Nspire II CX et CX CAS. Le système se lance sur un écran Plymouth suivi d'une connexion automatique à l'environnement graphique et l'affichage du menu principal.

Applications

Les applications sont donc développées en C++ avec Qt, et embarquent Giac comme moteur de calcul formel (le même que sur la HP Prime !). Les programmes servent surtout d'interfaces graphiques pour accéder aux fonctionnalités mathématiques, que l'on ne recode pas. Giac le fait déjà et très bien ! On peut voir ça dans cette capture de la feuille de calcul prise sur un PC.


Feuille de calcul avec clavier simulé ; jusque-là, pas d'erreur de maths.

On a également une application de tracé de fonctions (un indispensable du lycée), qui exploite allègrement l'écran couleur et les performances du Raspberry Pi Zero. Elle affiche sans pression plusieurs courbes en résolution complète et en couleur, de façon parfaitement fluide !


Tracé de trois fonctions sur la calculatrice.

Enfin, et pas des moindres, il y a un IDE supportant Python 3 et tous ses modules, ainsi que des restrictions du Basic Casio et TI-Basic ! L'interface minimale cache une coloration syntaxique, insertion automatique de snippets et exécution dans un terminal. Tout est fait pour programmer aisément.


Alors où est-ce qu'on va ?

Le prototype que je vous ai montré au début de cet article n'est que le début du projet. Comme vous pouvez le voir, la calculatrice n'est pas encore complète. Les défis ont cependant été relevés, et après un an, nous espérons bien concrétiser ce projet et diffuser la calculatrice !

Comme le veut la tradition des projets d'informatique à l'ENS de Lyon, la calculatrice sera présentée lors de la deuxième partie des présentations de projets à l'ENS de Lyon, le Jeudi 4 Avril de 9 heures à 10 heures (il y a deux groupes, nous passons sur la deuxième moitié). Divers professeurs, chercheurs de l'ENS, étudiants ou lycéens seront présents ; si vous vous embêtez un Jeudi matin n'hésitez pas à passer nous voir !

Vous retrouverez tous les détails (et plus, comme notre sondage posé à des lycéens !) sur notre site web symbolibre.org. Stay tuned!


Précédente 1, 2, 3, 4, 5, 6, 7 Suivante
Lephenixnoir Hors ligne Administrateur Points: 24621 Défis: 170 Message

Citer : Posté le 01/04/2019 10:38 | #


Rader a écrit :
Y'aura un moyens d'y mettre un mot de passe? (Au cas ou des gens mal intentionnés veulent tout supprimer)

Oui, c'est totalement dans le domaine du possible ; à la connexion, par exemple.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Parisse Hors ligne Membre Points: 516 Défis: 0 Message

Citer : Posté le 01/04/2019 11:03 | #


Cote pedagogique, je pense que l'equipe de l'IREM de Grenoble a laquelle je participe serait interessee. Je ne sais pas ce qu'il en est de l'IREM de Lyon vu que le projet est base a l'ENS Lyon, mais Lyon-Grenoble ce n'est pas tres loin.
Lephenixnoir Hors ligne Administrateur Points: 24621 Défis: 170 Message

Citer : Posté le 01/04/2019 11:06 | #


Voilà qui est intéressant ! On pourra tenter l'expérience même à Grenoble, je pense que les autres membres du projet seront partants.

Merci pour l'aide sur Giac au passage, l'intégration dans les applications se passe bien. On a quand même quelques difficultés pour traverser les structures des gen pour générer du pretty print. S'il y a quelque chose dont on peut s'inspirer, je suis preneur !
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Parisse Hors ligne Membre Points: 516 Défis: 0 Message

Citer : Posté le 01/04/2019 12:56 | #


Ok, je vais leur en parler.
Je n'ai pas trop regarde le site, ou se trouvent les ressources qui me permettraient de compiler facilement un emulateur?

Ajouté le 01/04/2019 à 13:42 :
Pour le pretty print, un point de depart pourrait etre l'editeur d'expression de KhiCAS sur la graph 90, cf. le fichier kdisplay.cc du source
Lephenixnoir Hors ligne Administrateur Points: 24621 Défis: 170 Message

Citer : Posté le 01/04/2019 15:06 | #


Ok, je vais leur en parler.
Je n'ai pas trop regarde le site, ou se trouvent les ressources qui me permettraient de compiler facilement un emulateur?

C'est gentil !

La bonne nouvelle est qu'il n'y a pas besoin d'émulateur puisque tout tourne sous Linux, il suffit de compiler les programmes normalement. En revanche les sources sur le dépôt de l'ENS ne sont pas encore publiques car il faut régler d'abord la question des licenses. En gros on n'a que le choix de la GPL à cause de divers outils qu'on utilise dont Giac, mais il nous faut encore obtenir l'accord de l'ENS et quelques procédures administratives.

Pour le pretty print, un point de depart pourrait etre l'editeur d'expression de KhiCAS sur la graph 90, cf. le fichier kdisplay.cc du source

On va regarder par ici, je vois déjà quelques parties intéressantes (pour tester les différents types de noeuds).
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 01/04/2019 18:20 | #


Question bête mais elle est épaisse comment cette machine ? Parce que la on la voit que de dessus ..?
Lephenixnoir Hors ligne Administrateur Points: 24621 Défis: 170 Message

Citer : Posté le 01/04/2019 18:51 | #


Sur la photo le dessous n'est pas monté, mais en tout elle fait 3 cm - pas beaucoup plus qu'une Graph fermée.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 01/04/2019 20:06 | #


Ok.. ça commence déjà à faire une taille mais en comparaison aux fonctionnalités proposées je pense que l'on peut faire abstraction
Shadow15510 Hors ligne Administrateur Points: 5504 Défis: 18 Message

Citer : Posté le 01/04/2019 20:07 | #


Casio aussi à un modèle épais, c'est l'inconvénient de l'usage des piles...
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 01/04/2019 20:09 | #


Après je ne m'y connais pas mais si ils trouvent un moyen d'utiliser une Lithium-ion je pense que l'on peut grappiller des mm
Lephenixnoir Hors ligne Administrateur Points: 24621 Défis: 170 Message

Citer : Posté le 01/04/2019 20:10 | #


Des piles ! Mais on utilise une batterie enfin.

Non, on peut certainement gagner dans l'agencement 3D, mais pour l'instant on utilise du matériel un peu exotique (plusieurs PCBs les uns avec les autres), alors forcément ça prend de la place.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 01/04/2019 20:22 | #


Oui, une fois le firmware terminé vous pourrez vous occuper de l'esthétique de la bête !
Kikoodx Hors ligne Ancien labélisateur Points: 3039 Défis: 11 Message

Citer : Posté le 01/04/2019 21:33 | #


Ah oui, je ne crois pas l'avoir lu, mais une fois le projet terminé est-ce que vous proposerez la calculatrice à la vente sous n'importe quelle forme ou est-ce l'utilisateur devra se débrouiller ?
ouais ouais
Lephenixnoir Hors ligne Administrateur Points: 24621 Défis: 170 Message

Citer : Posté le 01/04/2019 21:36 | #


On va faire de notre mieux pour industrialiser la machine... la suite, c'est l'avenir qui la verra !
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Parisse Hors ligne Membre Points: 516 Défis: 0 Message

Citer : Posté le 02/04/2019 08:08 | #


Lephenixnoir a écrit :
Pour le pretty print, un point de depart pourrait etre l'editeur d'expression de KhiCAS sur la graph 90, cf. le fichier kdisplay.cc du source

On va regarder par ici, je vois déjà quelques parties intéressantes (pour tester les différents types de noeuds).

A ce propos, il y a la plus que du prettyprint, il s'agit d'un editeur d'expressions qui permet de selectionner une sous-expression (on se deplace dans l'arborescence avec les fleches de direction) et de lui appliquer une commande, par exemple factoriser juste le denominateur d'une expression, ou lineariser une partie d'une expression trigo, etc. C'est une fonctionnalite tres utile pour faire du postprocessing de maniere interactive sur un resultat de calcul formel pour le mettre sous la forme souhaitee (creee pour la premiere fois sur les HP49, elle existe sur les HP40, 50, mais pas sur les HP Prime, elle n'existe a ma connaissance chez aucun autre constructeur, sauf avec KhiCAS sur la Graph 90+e), ca a un cote un peu ludique, ca pourrait vous donner des idees.
Lephenixnoir Hors ligne Administrateur Points: 24621 Défis: 170 Message

Citer : Posté le 02/04/2019 08:41 | #


Oui effectivement, j'avais découvert ça sur les anciennes HP. Ça a l'air diablement pratique à utiliser, c'est quelque chose qu'on devra essayer à un moment !
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Kikoodx Hors ligne Ancien labélisateur Points: 3039 Défis: 11 Message

Citer : Posté le 03/04/2019 21:59 | #


Bon, d'autres questions pour aujourd'hui (j'adore l'idée) :

Que possède la calculatrice niveau connectiques ?

Sera-t-il possible de brancher un adaptateur Ethernet sur celles-ci ?

La calculatrice chauffe-t-elle beaucoup ?

Combien de temps selon vous avant que la calculatrice soit terminée ?

Ce sera tout, merci d'avance et superbe projet encore.
ouais ouais
Lephenixnoir Hors ligne Administrateur Points: 24621 Défis: 170 Message

Citer : Posté le 03/04/2019 22:08 | #


Kikoodx a écrit :
Que possède la calculatrice niveau connectiques ?

Un ou deux ports mini-USB pour la charge ou les périphériques (on arrivera peut-être à en avoir un seul pour faire les deux), essentiellement c'est tout ce qu'il y a. Il y a un mini-HDMI qui marche bien sur le RPi mais je ne sais pas s'il sera exposé sur le bord.

Sera-t-il possible de brancher un adaptateur Ethernet sur celles-ci ?

Ça m'étonnerait beaucoup !

La calculatrice chauffe-t-elle beaucoup ?

Pas le moins du monde.

Combien de temps selon vous avant que la calculatrice soit terminée ?

Euh... on va partir sur une rolling release!

Merci de votre intérêt pour ce projet, on reviendra demain avec des détails sur la démo !
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Lephenixnoir Hors ligne Administrateur Points: 24621 Défis: 170 Message

Citer : Posté le 03/04/2019 23:22 | # | Fichier joint


Et ci-dessous une photo de la calculatrice avec son clavier.


Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Parisse Hors ligne Membre Points: 516 Défis: 0 Message

Citer : Posté le 04/04/2019 07:05 | #


On remarque par rapport a toutes les autres calculatrices, la presence de touches pour les structures de controle en programmation, sauf pour la definition de fonction, peut-etre a mettre sur la touche E (entre D E F, avec return?).
Lephenixnoir Hors ligne Administrateur Points: 24621 Défis: 170 Message

Citer : Posté le 04/04/2019 07:16 | #


En effet, c'est le petit côté Python de la chose.

On a hésité à mettre une touche de plus pour def/return. C'est une possibilité s'il nous reste de la place, mais pas une priorité pour les lycéens je pense (intuition appuyée par les profs de l'IFÉ). Le choix de la touche E n'est pas optimal parce qu'on a tenté de structurer par lignes (de haut en bas : contrôle ×2, programmation, maths ×2, saisie ×4), mais déplacer des fonctions n'est pas un problème.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Précédente 1, 2, 3, 4, 5, 6, 7 Suivante

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 81 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd