Étiquettes

, ,

LimiFrog

Aujourd’hui je laisse la plume numérique à Xavier pour vous parler de la LimiFrog, un microcontrôleur révolutionnaire et assez étonnant dont la campagne, à laquelle j’ai personnellement contribué, vient de démarrer sur Kickstarter. Je suis le projet depuis un bon moment et j’ai hâte de voir ce bel objet se concrétiser. Xavier vous l’expliquera mieux que moi mais notez d’ores et déjà que la LimiFrog peut être programmé en Micro Python, langage tout ce qu’il y a de plus accessible aux enfants et aux débutants. Partagez, soutenez le projet ! Merci d’avance !

LimiFrog - Exemples

Jean-François me propose gentiment un espace sur son blog pour présenter LimiFrog. Voici donc, après une rapide description de ce qu’est LimiFrog, quelques mots sur l’histoire de ce projet avant de vous inviter à jeter un oeil à l’objet lui-même.

(Mais si vous êtes très très pressé – les autres, ne lisez pas — je vous raconte la fin : https://www.kickstarter.com/projects/765344573/limifrog-ultra-compact-prototyping-for-iot-and-muc)

LimiFrog, c’est un module programmable ultra-compact mais très complet pour inventer et prototyper des objets “intelligents”– entre autres. Il se situe, si l’on veut, quelque part entre l’Arduino (LimiFrog est beaucoup plus puissante et pré-intègre de nombreuses possibilités) et le RaspberryPi et assimilés. On n’y fera pas tourner Linux, en revanche elle combine une puissance de calcul respectable avec une efficacité énergétique remarquable, ainsi qu’une large gamme d’interactions avec son environnement – le tout sans ajout de matériel et dans quelques cm3.

LimiFrog - Fonctionnalités

Elle contient tout ce qu’il faut – écran et batterie compris – pour en faire, par exemple, une boussole, un détecteur de mouvement, un afficheur de motifs configurables, un détecteur de niveau sonore ou de lumière ambiante.

Ce qui, pris séparément, n’a pas forcément grand intérêt. Mais une fois combinées ces fonctions permettent toutes sortes d’applications. Le gros avantage de LimiFrog est que tout cela tient dans quelques cm3, ce qui est essentiel pour des projets orientés “wearables”, Internet des Objets ou petits robots par exemple – où le poids, l’encombrement et le niveau d’intégration sont des critères essentiels.

Tel ‘maker’ me parlait par exemple de s’en servir pour stabiliser et contrôler une nacelle type mini-parapente sur laquelle il fixe son appareil pour faire de la photographie aérienne. Tel entrepreneur s’en sert pour faire une preuve de concept d’un nouveau dispositif de mesures de performances à vélo. Un prof d’IUT imagine l’utiliser pour d’une part, introduire “en douceur” la programmation de micro-contrôleurs 32 bit, d’autre part proposer aux étudiants une large gamme de projets attractifs avec cette unique plate-forme “tout inclus”.

Il y a aussi quelques démos filmées ici : http://LimiFrog.io/blog

LimiFrog Display

LimiFrog est née de l’évolution d’une autre idée sur laquelle je travaillais. Sans rentrer dans les détails, il s’agissait à l’origine d’un accessoire connecté, pour lequel j’avais besoin d’un démonstrateur crédible. Cela signifiait, entre autres: de l’électronique, une batterie, un écran, le tout suffisamment puissant pour montrer les fonctionnalités principales et, surtout, suffisamment compact et présentable pour convaincre les gens que cela pourrait un jour finir sur leur poignet ou dans leur poche. Comme les plate-formes existantes ne me convenaient pas (trop limitées, trop encombrantes ou trop consommatrices d’énergie), je me suis dit “qu’à cela ne tienne, je vais développer ma propre solution”.

Le projet a évolué et n’a pas continué comme je l’imaginais au départ. Cependant, j’y travaillais avec un étudiant (plus plongé dans la culture “maker” que moi à l’époque) qui m’a dit : “eh, avec tout ce qu’on case là-dedans, ce serait une plate-forme sympa pour plein d’autres projets, tu devrais l’ouvrir !”.

J’ai réfléchi, j’ai montré la plate-forme à d’autres gens avec de bons retours et me suis dit “pourquoi pas ?”. J’ai donc enrichi le concept dans cette direction et travaillé sur le logiciel pour rendre les multiples ressources embarquées facilement exploitables.

A vrai dire, même si j’avais des compétences pour développer ce concept, il m’en manquait – par exemple, pour bâtir un site web “présentable” ou router une carte électronique. Du coup, j’ai appris ! C’est quelque chose qui me fascine : comment il est devenu facile, via le web et avec un peu de motivation, de se former à (presque !) n’importe quoi.

L’un des objectifs du projet est que toute personne ayant quelques connaissances de programmation puisse commencer à utiliser LimiFrog de façon plaisante. Mais cela n’empêche pas des usages plus avancés: les développeurs expérimentés gardent tout contrôle pour exploiter au mieux le micro-contrôleur (si cela vous parle : un Cortex-M4, quand même!) et les autres ressources embarquées.

LimiFrog se programme en langage “C” et, bientôt, supportera aussi MicroPython (une implémentation du langage Python optimisée pour micro-contrôleurs).

Des librairies sont fournies pour pouvoir utiliser les ressources de la carte très facilement, avec juste quelques connaissances basiques de C.

Par exemple, le programme suivant, avec juste quelques lignes de code :

– initialise complètement le module LimiFrog,

– demande à LimiFrog de se comporter en “mémoire de masse USB” (autrement dit, de se comporter comme une clé USB pour permettre à n’importe quel PC d’y stocker ou récupérer des fichiers) – et s’arrête et fait clignoter une LED (en bordure de carte) en cas d’échec

– puis allume ou éteint cette LED lorsqu’on presse un interrupteur accessible en bord de carte :


/*******************************************************************/

#include “LF_Global.h”

#include “User_Configuration.h”

int main(void)

{

 boolean_t Success = TRUE;

 //type déclaré dans un fichier inclus par LF_Global.h

 

/* =========================================================== */
// Board Initializations and Configurations <Standard Template>
// (clocks, I/Os, on-chip peripherals, on-board ICs)
/* =========================================================== */

 

 LF_Board_Inits(); 
// effectue des initialisations “fixeset “sélectives”, ces
// dernières sont définies par des directives données dans
// User_Configuration.h

 

 LF_Led_ON(); // on allume la LED


/* ========================================================== */
// Initialisation de librairies haut niveau (“middleware”)
// Dans cet exemple: le driver USB
/* ========================================================== */

 // … Pour lancer LimiFrog en: USB Mass Storage:
Success &= LF_LaunchUSB_MassStorage();

 

 // c'est ici qu'on initialiserait d'autres librairies haut niveau

 

 // Gestion d'un éventuel échec
LF_Led_StopNBlinkOnFalse (Success);
// s'arrêter avec LED clignotante si échec

/* ========================================================== */
// Ici commence l'application proprement dite
/* ========================================================== */

 

 /* — Boucle avec surveillance du bouton-poussoir –------ */

 while (1)
{

 if ( LF_State_Switch1_IsOn() )
{

 LF_Led_TOGGLE();

 while ( LF_State_Switch1_IsOn() ) ;
 // attendre relâche du bouton pour continuer

 }

} }

Finalement, je suis arrivé au point de me décider à lancer LimiFrog sur Kickstarter (donc essayer de lui donner suffisamment de visibilité) … et voir ce qui se passe !

Je vous laisse découvrir la campagne Kickstarter ici :

https://www.kickstarter.com/projects/765344573/limifrog-ultra-compact-prototyping-for-iot-and-muc

J’espère que cela vous plaira et, pourquoi pas, vous décidera à soutenir LimiFrog. 🙂

Quoi qu’il en soit, ce serait très sympa de partager cet article ou le lien vers la campagne avec toutes vos relations susceptibles d’êtres intéressées.

En plus de l’URL Kickstarter ci-dessus, voici des liens utiles:

http://LimiFrog.io/home-fr

– twitter: @LimiFrog

facebook.com/LimiFrog

A bientôt sur Kickstarter !

Publicités