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 En ligne Administrateur Points: 24228 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 En ligne Administrateur Points: 24228 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)
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

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


Je donne une autre idee, c'est mon côté rétro je pense: pourquoi ne pas faire un menu principal comme sur les ti 83: juste une liste de commandes.. Ça
Parisse Hors ligne Membre Points: 481 Défis: 0 Message

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


Question: en regardant les photos de critor, l'IDE permet de programmer en Python, en Casio ou en TI Basic, pourquoi ne pas proposer aussi en Xcas-Python (ce qui ne doit pas necessiter beaucoup de travail puisque la syntaxe est la meme qu'en Python) ? Ce serait un complement naturel a l'utilisation de giac comme moteur de calcul et permettrait d'utiliser des programmes dans Calculs (il suffit de les faire parser par giac). Un des gros defauts de toutes les calculatrices proposant de la programmation Python c'est que c'est completement isole du reste, et ca c'est extremement dommage.
Lephenixnoir En ligne Administrateur Points: 24228 Défis: 170 Message

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


Décidément tout le monde regrette le Python isolé ! Au moins on est d'accord sur ce point.

Jusqu'ici on pensait installer giacpy. Y a-t-il une grande différence avec le langage intégré de Xcas ? L'interpréteur fonctionne-t-il en ligne de commande ?
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: 3011 Défis: 11 Message

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


Selon cet article giacpy inclut les fonctionnalités de Xcas.
http://www-fourier.ujf-grenoble.fr/~parisse/giac_fr.html#python
ouais ouais
Parisse Hors ligne Membre Points: 481 Défis: 0 Message

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


L'utilisation de giacpy est interessante lorsqu'on programme en Python et qu'on a besoin de calcul formel, c'est assez different des besoins qu'on peut avoir dans une session de calcul. Par exemple dans giacpy il faudra faire
x=giac('x') avant de pouvoir faire factor(x**4-1), tous les resultats seront affiches dans le shell en mode 1-d.
Inversement dans une session de calcul, on peut avoir envie de definir une fonction pour l'utiliser avec acces facile aux commandes de giac et affichage 2d, par exemple factoriser le n-ieme nombre de fibonacci defini par

def fibo(n):
  f=[1,1]
  for j in range(1,n):
     f=[f[1],f[0]+f[1]]
  return f[1]

puis ifactor(fibo(10)) ou apply(ifactor@fibo,range(5,20))
L'interpreteur de Giac accepte des programmes en ligne de commande sans problemes, mais ce n'est pas tres convivial, surtout en syntaxe Python a cause de l'indentation et des sauts de lignes (en syntaxe native on peut ecrire un oneliner
fibo(n):={ local j,f; f:=[1,1]; pour j de 2 jusque n faire f:=[f[1],f[0]+f[1]]; fpour; return f[1]; } mais ca reste lourd a saisir, c'est beaucoup plus agreable d'avoir un editeur de script avec des menus helpers et de la coloration syntaxique). Comme Giac accepte la syntaxe Python, en tout cas au niveau lycee, le plus simple serait d'utiliser l'IDE que vous utilisez pour Python (avec acces aux commandes Giac par le meme menu que dans Calc), puis de parser comme une ligne de commande de l'application Calculs et comme ca le programme est disponible dans Calculs. Et aussi Graphiques si vous utilisez giac comme evaluateur, ca peut etre tres utile pour representer par exemple des sommes partielles de series de Fourier.
Critor Hors ligne Administrateur Points: 2606 Défis: 18 Message

Citer : Posté le 04/04/2019 18:19 | #


La communauté HP anglophone s'intéresse au projet Symbolibre, bravo :
http://www.hpmuseum.org/forum/thread-12726.html

Ajouté le 05/04/2019 à 00:41 :
Deux autres relais anglophones, par Lionel cette fois-ci :
https://codewalr.us/index.php?topic=2506.msg61574#msg61574
https://www.cemetech.net/forum/viewtopic.php?p=278380#278380
Mactul Hors ligne Membre Points: 699 Défis: 0 Message

Citer : Posté le 05/04/2019 17:28 | #


Waah
Je découvre seulement le projet et il me fait penser à un vieux topic sans réponse (et très vieux) sur lequel je suis tombé et que je n'ai pas déterré
Le type demandai ce que serai la meilleure calculatrice (plusieurs M de RAM, écran couleur avec une bonne résolution, haut-parleur, compatibilité sans limite...)

Où qu'en soit le projet, et peux importe le prix de cette nouvelle calto, je l'achèterai illico à sa sortie
Mes programmes
Cliquer pour enrouler

Venez me rejoindre sur mon nouveau serveur Discord dédié a la programmation sur toutes les plateformes
https://discord.gg/bzfymHQ

Venez vous instruire, dans ce magnifique cours sur les Intelligences Artificielles que j'ai créé:
http://reseaux-neurones-a--z.ml/
Faites apprendre des choses à une machine, faites reconnaître à un ordi des images...
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 05/04/2019 17:32 | #


Moi aussi (enfin si j'en ai l'occasion ).
@Lephenixnoir: L'idée apportée par Mactul au sujet d'un haut-parleur serait plutôt sympa.. Regarde si vous avez la possibilité d'en ajouter un
Mactul Hors ligne Membre Points: 699 Défis: 0 Message

Citer : Posté le 05/04/2019 17:34 | #


Eh ho
C'est pas de moi attention!
Mes programmes
Cliquer pour enrouler

Venez me rejoindre sur mon nouveau serveur Discord dédié a la programmation sur toutes les plateformes
https://discord.gg/bzfymHQ

Venez vous instruire, dans ce magnifique cours sur les Intelligences Artificielles que j'ai créé:
http://reseaux-neurones-a--z.ml/
Faites apprendre des choses à une machine, faites reconnaître à un ordi des images...
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 05/04/2019 17:35 | #


Oui mais c'est toi qui en à parlé le premier ici il me semble
Yatis En ligne Membre Points: 580 Défis: 0 Message

Citer : Posté le 05/04/2019 17:51 | #


@Disperseur: le projet est encore un prototype, le plus gros du travail reste la simplification du hardware (car la calculatrice a pour vocation d'être construite par les étudiants et les enseignants n'ont pas le droit de faire souder les élèves, ce qui pose des problèmes (puis il y a presque une centaine de soudure à faire (à la main) pour le clavier et l'écran )).
Le software a encore quelques problèmes (ex: si on appuie sûr [MENU] quand on est dans le menu d'accueil ce dernier se ferme et attend un reset manuel. Le boot est lent, etc...), l'ergonomie des applications reste encore à fignoler, etc, etc, etc... (il me semble ?)
Une fois le proto stable et les problèmes hardware fixés, là ils pourront commencer à ajouter des features (?).
Pour l'instant ils ont encore beaucoup de boulot... (bon courage à vous <3 (et merci pour ce projet ))
Lephenixnoir En ligne Administrateur Points: 24228 Défis: 170 Message

Citer : Posté le 07/04/2019 11:17 | #


Un haut-parleur ? Voilà une idée assez spécifique.

Yatis a raison, pour l'instant il y a besoin de raffiner la composition matérielle et simplifier le processus de montage. La soudure sera probablement difficile à éviter, mais on peut chercher.

Niveau logiciel, on maîtrise déjà beaucoup plus de facteurs, donc il y a moins de points bloquants. Comme ce ne sont pas forcément les mêmes personnes qui travaillent sur le matériel et le logiciel, les deux vont probablement évoluer en parallèle.

C'est nous qui vous remercions pour votre intérêt ! N'hésitez pas à surveiller les news sur notre site web !
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Ne0tux Hors ligne Membre d'honneur Points: 3524 Défis: 265 Message

Citer : Posté le 07/04/2019 11:22 | #


Au sujet du site web, est-ce que c'est compliqué/long d'ajouter un p'tit flux RSS, pour être sûr de ne rien rater des news (Ou bien il n'y a plus assez de dinosaures pour que ça en vaille la peine ?) ?
Mes principaux jeux : Ice Slider - CloneLab - Arkenstone

La Planète Casio est accueillante : n'hésite pas à t'inscrire pour laisser un message ou partager tes créations !
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 07/04/2019 11:27 | #


@Lephenixnoir: Oui j'en suis conscient. Je me doute qu'il y a encore beaucoup de travail avant de s'intéresser aux ajouts matériels mais je préfère mentionner les idées qui viennent directement, pour que vous puissiez avoir un perçu de ce qu'attendent les utilisateurs tels que nous
Lephenixnoir En ligne Administrateur Points: 24228 Défis: 170 Message

Citer : Posté le 07/04/2019 11:28 | #


Ne0tux a écrit :
Au sujet du site web, est-ce que c'est compliqué/long d'ajouter un p'tit flux RSS, pour être sûr de ne rien rater des news (Ou bien il n'y a plus assez de dinosaures pour que ça en vaille la peine ?) ?

J'y pensais tout à l'heure en plus ! Oui, il y en a un, que tu peux trouver à cette adresse : https://symbolibre.org/fr/category/news/feed/rss2/ pour les articles en français, et https://symbolibre.org/en/category/news/feed/rss2/ pour les articles en anglais.

Je vais ajouter un lien sur la page pour qu'il soit visible.

Disperseur a écrit :
Je me doute qu'il y a encore beaucoup de travail avant de s'intéresser aux ajouts matériels mais je préfère mentionner les idées qui viennent directement, pour que vous puissiez avoir un perçu de ce qu'attendent les utilisateurs tels que nous

Ce serait plus facile à brancher comme module externe qu'à mettre dans la calculatrice par contre !
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Ne0tux Hors ligne Membre d'honneur Points: 3524 Défis: 265 Message

Citer : Posté le 07/04/2019 11:34 | #


Excellent, merci ; un abonné de plus !
Mes principaux jeux : Ice Slider - CloneLab - Arkenstone

La Planète Casio est accueillante : n'hésite pas à t'inscrire pour laisser un message ou partager tes créations !
Lephenixnoir En ligne Administrateur Points: 24228 Défis: 170 Message

Citer : Posté le 07/04/2019 12:27 | #


J'ai donné sans faire attention le lien du flux avec les articles en anglais, donc j'ai modifié mon message ci-dessus.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Ne0tux Hors ligne Membre d'honneur Points: 3524 Défis: 265 Message

Citer : Posté le 24/04/2019 14:31 | #


Coucou,

Est-ce qu'il existe déjà une liste plus ou moins exhaustive du matériel à se procurer dans l'optique de monter soit-même une calculatrice, ou est-ce encore trop tôt ?
Mes principaux jeux : Ice Slider - CloneLab - Arkenstone

La Planète Casio est accueillante : n'hésite pas à t'inscrire pour laisser un message ou partager tes créations !
Lephenixnoir En ligne Administrateur Points: 24228 Défis: 170 Message

Citer : Posté le 24/04/2019 14:53 | #


Alors le premier prototype est encore très manuel (patafix tout ça), on changera déjà les fixations avant de sortir le deuxième, qui me semble être le meilleur plan si tu veux t'en monter une. On changera peut-être aussi l'écran en faveur d'un proche mais plus grand, mais le reste ne sera pas très différent.

Ce dont tu auras besoin à coup sûr pour l'instant, c'est un Raspberry Pi Zero et un PowerBoost d'Adafruit. Ce qui risque du changer c'est l'écran et le PCB du clavier, notamment si on essaie de passer l'écran en DPI. Ensuite il n'y a plus que des boutons classiques (45 actuellement), des fils, un switch On/Off pour l'alimentation et la coque imprimée en 3D, tout ça ne changera pas beaucoup.

On est actuellement en période d'examens jusqu'à la semaine prochaine, et ensuite on doit rendre le rapport de fin de projet. Quand ce sera fini (d'ici une grosse semaine je pense), on prendra le temps de publier les specs' du premier prototype pour vous donner une meilleur idée. Mais je ne vous conseillerais pas de le monter maintenant parce que je pense qu'il y a encore des améliorations faciles que l'on peut faire.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Ne0tux Hors ligne Membre d'honneur Points: 3524 Défis: 265 Message

Citer : Posté le 25/04/2019 19:36 | #


Merci pour ces précisions, je commence à monter une "wishlist" sur mon site de fournitures électroniques favoris !

Rien ne presse, je vais attendre que vous aillez tranquillement fini vos examens et eu le temps de boucler le premier proto.

Je reviendrai aux nouvelles d'ici là, ce projet est tellement prometteur ! En attendant bon courage pour les exams' !
Mes principaux jeux : Ice Slider - CloneLab - Arkenstone

La Planète Casio est accueillante : n'hésite pas à t'inscrire pour laisser un message ou partager tes créations !
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 91 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