the

good

wire

La science (libre) sur smartphone : Unit Converter Ultimate

2019-08-12 par Rémi

Si il y a bien une chose que je déteste c'est tomber dans une publication ou la datasheet d'un composant sur des données en système impérial (le système d'unités de mesure anglo-saxon) ! Généralement ça se termine par une recherche sur internet du facteur de conversion vers le système international (ou SI). Alors c'est parti pour ce deuxième billet sur les applications libres pour se simplifier la vie quand on fait des sciences avec un convertisseur d'unité ! (pour retrouver le billet précédent c'est ici)

Unit Converter Ultimate

L'application de cette semaine est d'utilité publique: avec son nom de jeu de combat, Unit Converter Ultimate (que j'abrègerai UCU) nous propose un outil de conversion d'unités simple et puissant. Comme d'habitude ce n'est pas l'unique application capable d'effectuer cette tâche mais j'ai un gros problème avec ses concurrentes: elles sont très peu ergonomique. Phil Shadlyn, le développeur à l'origine de UCU, avait visiblement le même soucis que moi comme il le souligne dans la description de son application sur GitHub.

UCU se compose simplement d'un champ d'écriture où l'on entrera la valeur à convertir, dessous deux listes permettent de sélectionner l'unité de départ et celle d'arrivé de la conversion, finalement la valeur de sortie est affichée à droite de l'écran. Simple, ergonomique, efficace ! Les unités sont classées par grandeur physique dans le volet latéral gauche de l'interface, je ne vais pas en faire toute une liste mais juste souligner celles qui sont originales.

Interface de l'application UCU
L'interface de UCU: simple, ergonomique, efficace ! (apparement les pintes sont plus grosses aux US qu'au Royaume-Uni, je ne sais pas ce qu'il faut en tirer comme conclusion...)

Tout d'abord nous avons l'onglet cuisine qui donne accès aux "unités" généralement utilisées dans les recettes comme la cuillière à soupe ou celle à café. Pour les adeptes des bars on y trouvera même la pinte ! Après la cuisine, les finances: comme beaucoup d'applications similaires un convertisseur de devises est présent et se mettra à jour avec les valeurs actuelles du marché si vous êtes connecté à internet. Sont également présentes les unités stockage numérique (bit, octets et leurs dérivés), très pratique quand on sait que dans ce domaine les préfixes multiplicatifs comme kilo, méga, giga, etc. correspondent à des puissances de 2 et non de 10.

Et puis bien sûr UCU se propose de résoudre tous nos cauchemars! Toutes les unités du système anglo-saxon (livres, pouces, pieds et autres) seront facilement traduites dans ces bonnes vielles unités internationales que nous pourrons alors aisément appliquer dans notre monde civilisé ! (ça va, je blague je vous aime quand même les anglo-saxons ;p)

conversion de vitesses avec UCU
Autre exemple d'utilisation: la bonne vitesse pour une DeLorean ;)

D'autre part l'application est traduite dans 12 langues différentes dont le français et dispose de quelques fonctions supplémentaires: possibilité de choisir le séparateur des décimales (. ou ,), le séparateur de groupe (la virgule est souvent utilisée outre manche pour séparer les groupes de trois chiffres par exemple) ou encore de modifier le nombre de décimales qui seront calculées (ben oui parce que ces conversions sont rarement entières...). Enfin un thème sombre contentera celles et ceux qui ne veulent pas se brûler les yeux quand ils l'utiliseront dans leurs sombres labos au sous-sol !

Bon l'applications n'est évidemment pas parfaite et je soulignerai notamment le manque de certaines unités. Premièrement il manque clairement les unités lumineuses (lux, candela, etc.) ce que je trouve un peu dommage. Plus anecdotique, j'aurai bien aimé trouver l'électron-volt et l'angström même si, pour ce dernier, il ne s'agit que d'un ordre de grandeur. Heureusement le développeur de l'application nous permet de demander des unités qui ne sont pas disponibles par mail ou directement sur son GitHub ! Je lui ai donc envoyé un mail, nous verrons bien s'il intégrera ces quelques suppléments !

Comme pour l'application précédente, Unit Converter Ultimate est disponible sur f-droid.org, un super market d'applications libres ! J'espère que ces billets vous plaises, on se retrouve au prochain pour parler d'une application qui dévoilera (enfin!) tout le potentiel de votre smartphone !

La science (libre) sur smartphone : Elementary

2019-08-02 par Rémi

Je démarre une petite série d'articles sur quelques applications pour smartphones en lien avec les sciences ou les techniques. Elles seront tantôt dédiées à la curiosité en permettant à tout un chacun de découvrir un domaine, tantôt ce seront des outils utiles au chercheur, à l'ingénieur ou à n'importe qui voulant pratiquer les sciences. Dans tous les cas ce seront des applications libres et open source disponibles sur l'excellent market F-Droid. Celui-ci ne propose que des applications vérifiants ces conditions et ce dans tous les domaines pour les plateformes android (ou assimilées). Vous pouvez le télécharger en suivant ce lien: f-droid.org.

Elementary

Ecran principal de l'application Elementary
L'écran d'acceuil de l'application Elementary avec les éléments du tableau périodique classés par familles.

On commence avec un classique, Elementary est une application permettant de visualiser les éléments sur le tableau péridodique de Mendeleïev et leurs propriétés (un peu comme l'application inclue dans certaines calculatrices de lycée, vous vous souvenez ? ^^). \'Evidemment il existe quantité d'autres applications ou de sites web sur lesquels visualiser ces données, alors quel intérêt présente celle-ci me diriez-vous ?

Tout d'abord la source des informations. Comme beaucoup d'autres, Elementary présente un nombre conséquent d'informations sur chaque élément (masse, configuration électronique, point de fusion, etc.) mais elle ne se contente pas de copier ce que l'on trouve sur Wikipédia. Ici les données proviennent d'une base de données publiée par le National Institute of Standards and Technology (NIST) qui est spécialisé dans la métrologie. On a donc une source direct fiable scientifiquement pour ces informations.

La grande quantité d'informations est également un point important, si l'on y trouve les incontournables comme la masse atomique de l'élément, Elementary nous propose également des données tout à fait utiles lorsque l'on fait de la chimie ou que l'on étudie les matériaux. On aura par exemple accès à l'électronégativité de l'atome (utile pour déduire son potentiel de réaction chimique), à sa chaleur spécifique (requise pour quasiement tout calcul de thermodynamique) ou encore à la liste de ses isotopes. C'est donc un outil de travail intéressant.

Mais Elementary n'est pas que dédiée aux initiés, en effet l'application propose pour chaque élément d'accéder facilement à sa page Wikipédia et surtout à une vidéo de présentation vulguarisée! Ces vidéos sont issues d'un autre projet de l'université de Nottingham et sont accessibles sur YouTube, elles font généralement entre 10 et 20 minutes et sont facilement accessibles pour qui comprend l'anglais (c'est là le seul point faible, si l'application est entièrement traduite ce n'est pas le cas des vidéos).

Les détails sur l'élément carbone
Le détail des données sur le carbone avec en haut à droite les liens vers la page Wikipédia de l'élément et sa vidéo de présentation.

Pour finir Elementary possède encore d'autres qualités comme une interface simple et ergonomique, disponible en thème sombre ou clair, un moteur de recherche par nom (si vous connaissez le nom d'un élément mais pas son symbole qui est parfois issu du terme le désignant dans une autre langue) ou encore le fait d'être libre et open source (sous licence MIT). Ça change des applications pour lycéens du Google Play Store pleines de pubs et demandant l'accès à tous vos contacts pour vous afficher des informations librement accessibles dans une interface buguée...

C'est tout pour cette fois, j'espère que vous apprécierez cette série. Le prochain billet parlera d'un autre problème courant de laboratoire: convertir les unités ! (Surtout quand elles sont en système impérial...)

API & ESP32 - Station météo connectée part.2

2018-09-04 par Rémi

Le projet de station météo connecté avance et voici donc une seconde partie où je vais m'intéresser à la récupération des prévisions météorologiques. Celles-ci sont évidemment diffusées sur internet mais nous ne voulons pas une page web telle que celle de météo France avec sa mise en page, ses liens, ses images, etc. Mais les données prévisionnelles brutes que nous pourrons ensuite manipuler comme bon nous semble.

L'API

L'outil qui va nous servir à récupérer ces données est appelé API (pour "application programming interface") et il s'agit plus particulièrement d'une API web. Cela se présente comme une page internet accesible via n'importe quel navigateur mais ne contenant que des informations, généralement au format json, destinées à d'autres porgrammes. Les APIs sont des outils très utilisés dans le monde des objets connectés et rien que pour la météo ils sont nombreux.

Cependant ils sont loin d'être tous gratuits et accesibles facilement, j'en ai testé plusieurs et mon choix s'est finalement porté sur Open Weather Map qui a l'avantage d'être simple d'utilisation et gratuit pour des prévisions jusqu'à cinq jours, ce qui est plus que raisonnable.

exemple de page API en Json
Exemple de page envoyée par l'API de Open Weather Map, Firefox détecte tout seul le format json et formate la page en conséquence mais vous pouvez également lire les données brut au format html standard. Voici le lien de l'exemple diffusé sur le site de l'API: api.openweathermap.org/data/2.5/weather?lat=35&lon=139

Pour disposer d'une clé permettant d'accéder aux prévisions il faut s'inscrire sur le site. On pourra alors envoyer des requêtes à l'API en spécifiant notre clé et nos coordonnées géogrphiques dans l'url de la page. En principe on peut également trouver les prévisions pour un lieu donné en spécifiant le nom d'une ville ou un code postal mais après quelques essais il s'avère que, en dehors des grandes villes, l'API ne connais pas beaucoup de lieux et repère très mal les codes postaux me situant par exemple en Allemagne alors que je cherche un lieu en France près de la frontière.

Intégration sur l'esp32

Une fois votre clé d'API récupérée et un test de vos coordonnées géographiques concluant, il est tant de passer à l'exploitation des données depuis le micro-controleur. Ici j'utilise un esp32 disposant nativement d'une connectique Wi-Fi et programmé via le logiciel arduino et une extension fournit par Espressif le fabriquant du micro-controleur sur son GitHub. Cette dernière contient un compilateur pour la carte en question, des bibliothèques pour gérer certaines de ses fonctionnalités (comme l'interface Wi-Fi) et les exemples qui vont avec.

intérieur de l'esp32
Une photo de l'intérieur de la coque métallique de l'esp32, la bande noire tout à gauche est l'antenne permettant les connections Wi-Fi et Bluetooth. Source: Wikipédia

Je ne vais pas détailler tout le programme que j'ai écrit (vous le trouverez en pièce jointe à la fin de ce billet avec ses commentaires) mais il est constitué globalement de deux parties: en premier lieu on établie une connection Wi-Fi avec notre réseau local (exactement comme le ferait n'importe quel ordinateur ou téléphone portable) puis on se connecte sur la page de l'API que l'on récupère via une bibliothèque gérant la lecture de pages html et toujours fournit avec le soft de Espressif. Enfin il s'agit de lire cette page pour en tirer les informations qui nous intéresse, c'est la partie la plus compliquée. On pourrait utiliser une bibliothèque telle que arduinoJson qui permet, entre autre, de lire des données au format json. Mais non seulement l'utilisation de la bibliothèque rend le programme bien plus lourd mais de plus je n'ai pas réussi à la faire fonctionner... Mon Esp32 plantait en boucle avec le programme donné en exemple sur internet. Donc si vous arrivez à faire fonctionner cette bibliothèque pour vous simplifier la vie sur le code tant mieux, personnelement j'utilise ma méthode plus archaïque mais qui fonctionne!

Il s'agira de parcourir le fichier caractère par caractère et de trouver les mots clés précédent une donnée avant de lire celle-ci. Je ne doute pas que arduinoJson fonctionne de manière similaire mais probablement plus optimisée. On pourra modifier ce programme pour récupérer seulement les données qui nous intéressent et afficher un nombre limité de prévisions (l'API envoie les prévisions pour 5 jours à raison d'une toutes les 3 heures). Une fois le programme lancé, ouvrez l'interface série du logiciel arduino, vous devriez voir l'esp32 se connecter au réseau puis envoyer 3 prévisions toutes les minutes.

le port serie recevant les prévisions météo de l'esp32
Voilà ce que l'on obtient après avoir compilé et téléversé le programme dans l'esp32.

Je vous laisse avec le programme ci-joint et reviendrais bientôt avec une nouvelle étape du projet à vous présenter. N'hésitez pas à m'envoyer un message via le formulaire de contact si vous rencontrez un problème avec le code.

À télécharger: API_meteo_esp32.ino