> Site STI de l’académie d’Orléans-Tours
site du ministere
site de l académie
Vous êtes ici : Accueil > Ressources pour STI2D > Spécialité SIN > [STI2D-SIN] - Microcontrôleur et programmation orienté objet POO [Partie (...)
Publié : 29 septembre 2014

[STI2D-SIN] - Microcontrôleur et programmation orienté objet POO [Partie 2]

Mise en oeuvre de cartes de prototypage rapide dans le cours de sciences de l’ingénieur du bac S et le cours de SIN du bac STI2D. [Article mis à jour le 27/10/2015]

C# et NETMF : la troisième voie du prototypage rapide. Les cartes de développement open source présentées dans cet article se positionnent entre une Arduino Uno et une Raspberry pi. La programmation de leur processeur 32 bits ne repose pas sur un système d’exploitation comme Linux ou Windows 10 IoT mais sur l’écosystème .NETMF. Il est possible de développer des applications "hybrides" capables de gérer simultanément les accès aux capteurs, actuateurs, bus de communication etc. et de mettre en œuvre des fonctionnalités de plus haut niveau ( gestionnaire de fichiers, services web, affichage graphique etc. avec une approche multithreads.

Cet article présente deux familles de produits ciblés par .NETMF et l’offre logicielle associée en 2015.

Les résultats obtenus dans les activités de projet et les fascicules d’exemples de code sont téléchargeables sur le site dédié .

- Qu’est-ce que .NETMF, pour quelles cartes à microcontrôleur  ?

.NET Micro Framework est une version libre du .NET adaptée au monde de l’embarqué et plus spécifiquement aux appareils ayant les ressources les plus restreintes. La véritable force de l’écosystème NETMF est le framework .NET, associé à l’IDE Visual Studio. Le Micro Framework .NET est un environnement de développement open source, complet et bien documenté. NETMF contient des fonctionnalités avancées telles que : les protocoles de communication, la gestion de fichiers, XML, des bibliothèques graphiques, le multithreading, le débogage in situ etc.

Plusieurs sociétés conçoivent des cartes de prototypage programmables en C# sous .NETMF. Parmi elles :

Secret Labs propose la carte NetDuino (distribuées par Gotronic, Mouser Electronics, etc).

GHI propose les modules Gadgeteer déclinées en plusieurs versions (distribuées par lextronic, Génération Robot, Mouser Electronics…).

- Qu’est-ce qu’une carte Netduino ?

Netduino plus 2

Netduino 3 Wifi

Processor and memory
microcontroller STMicro STM32F4 (32 bits)
speed 168 MHz (Cortex-M4)
Code storage 384KB or 2MB (Netduino3)
RAM 100KB or 164KB (Netduino3)
Operating system NET Micro Framework
Input and output
Netduino plus 2Netduino 3 Wifi
networking ethernet : 10 Mbit/s wi-fi : 802.11b/g/n including SSL/TLS 1.2 and WPA2
arduino shield compatibility works with most arduino shields (some require .net mf drivers) works with most arduino shields (some require .net mf drivers)
digital i/o 22 gpio, 6 pwm, 4 uart, i2c, spi 22 gpio, 6 pwm, 4 uart, i2c, spi
analog inputs 6 adc channels (12-bit) 6 adc channels (12-bit)
storage micro sd (up to 2 Gb) micro sd (up to 2 Gb)
gobus ports none 3 gobus ports

- Qu’est-ce que les Gadgeteers ?

Il s’agit d’un microframework .NET pilotant divers kits de périphériques au centre desquels se trouve une mini carte mère avec un processeur embarqué et une variété de connecteurs où peuvent être reliés différents modules. Selon le modèle de la carte mère, les processeurs ont une puissance équivalente ou supérieure à celle des cartes Netduino.

Exemple : le kit Fez Spider II de GHI Electronics comprend un écran tactile, une minicaméra, des boutons et des LED ainsi que des interfaces pour USB et pour cartes SD.

FEZ Spider

Designer

Une partie du code, notamment la déclaration des entrées sorties, est généré graphiquement à l’aide du "Designer" installé avec le SDK dans l’environnement de développement Microsoft Visual Studio. Les kits sont assez honéreux mais chaque module peut être acquis séparément.

- Comment programme-t-on ces différents matériels ?

En C# (syntaxe C, langage perçu comme une amélioration de Java) ou en Visual Basic dans l’environnement de développement (IDE) Microsoft Visual Studio Community ou professionnel enrichi du Micro Framework .NET et du SDK associé aux cartes ciblées.

Fonctionnalités particulièrement appréciables de l’IDE Microsoft Visual studio :

  • Environnement de développement intégré complet pour créer des applications Web, Windows Desktop et cross-plateforme iOS, Android et Windows
  • Coloration syntaxique,
  • Autocompletion (Intellisense),
  • Template de code,
  • Debugger in situ (exécution du programme en pas à pas dans la carte avec retour de la valeur des variables dans l’IDE)
  • Ajout d’autres langages : Python

Microsoft Visual Studio est GRATUIT dans sa version Community.

- Notre choix de carte de développement

Nous utilisons actuellement les cartes Netduino Plus 2 et Netduino 3 wifi (compatibles avec les shields Arduino) et les Gadgeteers.

- Exemples de code C# : Aide pour les projets !

  • Capteurs et actionneurs (Tome 1 et Code 1 à télécharger en bas de l’article)
    • Lecture d’une entrée analogique
    • Transmission d’une donnée ou accès à un afficheur LCD (ELCD-162) par une liaison RS232. Gestion de l’émission et de la réception d’une donnée avec un module XBEE.
    • Accès à une IHM (LCD Batron à PCF2119 + PCF874) ou à des capteurs (température TMP102, luminosité TSL2561, distance SRF08, direction HMC6352) par l’intermédiaire d’un bus I2C.
    • Accès à des capteurs 1 fil (température DS18B20).
    • Commande de deux motoréducteurs équipés de codeurs avec une carte MD25.
    • Commande d’actionneurs (servomoteur, moteur pas à pas avec un module EasyDriver 4.4, moteur CC en PWM).
  • Communication sur un réseau local (Tome 2 et Code 2 à télécharger en bas de l’article)
    • Monitoring sur la carte et sur un serveur Apache.
    • Consultation de ressources sur un serveur.
    • Contrôle des sorties de la carte.
  • Internet des objets (Tome 2 et Code 2 à télécharger en bas de l’article)
    • Monitoring.
    • Consultation de ressources sur un serveur.
    • Contrôle des sorties de la carte.

Remarque : Les liens ci-dessus (Ex:ELCD-162) accèdent au code source des classes maintenues sur Github. Les exemples de code mettant en oeuvre un réseau Ethernet ou l’internet des objets ont été adaptés de ceux présentés dans le livre Getting started with the Internet of Things. L’ensemble des documents et les répertoires des projets sont téléchargeables sur .

- Exemple de projet réalisé en SSI  : Robot solaire d’exploration

Objectif : Réaliser un robot autonome capable de se déplacer dans une zone de 4m x 4m, selon un parcours pré établi afin de détecter une zone colorée.

Vidéo du test de la tâche "Déplacer le robot"

Les bandes au sol matérialisent le trajet que le le robot doit effectuer (par odométrie). Elles permettent de mesurer l’erreur de position.

Autre projet en STI2D option SIN utilisant la tecnologie .NET La serre autonome

- Liens  : Site WebGe || Bases de C# en vidéo || WebGe sur google+ ||

- Conclusion

Les avantages de cet écosystème :

  1. le débogage in situ,
  2. l’autocompletion,
  3. la documentation de l’API .NET,
  4. la compatibilité avec les shields Arduino,
  5. la possibilité de faire du multithreading.

Les inconvénients (pas d’incidence sur les applications développées en SSI)

  1. non temps réel ,
  2. grande empreinte mémoire,
  3. petite communauté.

- Autres articles sur la technologie .NET

Voir en ligne : Projet STI2D : De SysML au prototype

Documents joints