Le .NET Microframework est une plateforme avec laquelle n'importe quel geek un peu développeur peut prendre son pied :-) Pas besoin d'OS, le .NET Microframework fonctionne directement sur des petites cartes électroniques pas cher, et il permet de faire plein de choses... très geeks : automatiser son arrosage automatique, éclairer sa ville Lego, renvoyer les images de sa Webcam, etc Cette session sera un aperçu technique du .NET Microframework, technologie que Microsoft a mis en Open Source, avec démonstration (en code) des cas réels d'utilisation, dont on peut voir une preview ici: http://blogs.msdn.com/laurelle Les aspects pédagogiques de cet environnement seront également démontrés, car le .NET Microframework est une plateforme idéale pour apprendre à programmer mais aussi pour de la robotique simple et efficace.
2. .NET Microframework, les
joies de l'électronique et
du code pour tous
(EMB105)
2010-02-07
Laurent Ellerbach
Audience Marketing Director
Microsoft Central and Eastern Europe
3. Agenda
.NET Microframework
Démo « Hello Led »
Démo « Mon premier serveur
HTTP »
Démo « Gérer mon arrosage
automatique »
Démo « Eclairer ma ville Lego »
4. .NET Micro Framework
.NET pour les processeurs à bas .NET Microframework pour
coûts
• Directement sur du métal
• Petite et configurable empreinte
• ARM7 @ 20-40 Mhz
• ARM9 @ 200 Mhz
• ~ 300 Ko de RAM
• 1 Mo de mémoire Flash/ROM
Compatibilité .NET
• Différentes versions
• Sélections des classes
clientes
• Support spécifique pour
l’embarqué
• Un jeu de classe limité mais
très riche
5. NETMF Modèle Open Source
Open Source collaboratif
Release History
V. 4.0 (Nov 2009) entièrement Microsoft
V. 4.1 (Juin 2010) petites contributions
communautaires
V 4.2 (Eté 2011) > 30% contributions
communautaires
Site hébergé sur un domaine non-Microsoft –
netmf.com
Partenaires communautaires
tinyclr.com, netduino.com
Portages de Atmel, NXP, Renasas, TI, ST Micro,
…
6. Partial implementation
Namespaces Same as .NET Fx
System.Windows System.Windows.Controls
Window Border ListView
System.Windows.Input Button RadioButton System.Data
Keyboard/GPIO CheckBox ScrollViewer
Mouse Panel StackPanel System.XML
Stylus Image TextBox Reader
ListBox UIElement Writer
System.Forms
System.Drawing System
Collections Globalization Diagnostics
System.Service.Model
Security Reflection Runtime
DPWS Discovery Remoting
Threading IO Serialization
DPWS Eventing
Resources NET/HTTP Compiler Svcs
DPWS Addressing
Managed Drivers
DPWS Transfer
SerialPort I2C/SPI A/D Power Mgmt
Proxy Discovery
USB GPIO PWM Watchdog
7. Par où commencer?
1 board tel que Netduino
Prendre la version
Netduino Plus avec suport
réseau et SD pour 50€
environ
Le SDK
Gratuit Processeur et mémoire
Visual Studio Express (C#) Atmel 32-bit microcontroller
Gratuit Vitesse : 48MHz, ARM7
Espace de stockage pour le
code: 64 KB, sans réseau: 128
…et surtout une bonne idée KB
pour construire quelque chose RAM: 28 KB, sans réseau: 60
de sympa KB
9. Un peu de Hard
Tout ce qu’il y a connaître : U = R x I
Utiliser une led sur un output pin (3,3V sur
Netduino)
1 led = 2 V environ, courant 0,02A
R = (3,3 – 2)/0,02 = 65 Ohms
10. Plus de Hard
Réutilisation d’un
capteur compte tour
sur un vieux disque
dur d’il y a 15 ans
Faire clignoter la led
quand le capteur de
lumière est obturé 2V (red) Digital IO (yellow)
Ground (black)
11. Example d’entrée analogique
Capteur de lumière agit
comme une résistance 1M Ω
(noir complet) à 100 Ω
(lumière intense)
R = √(1M x 100) = 10K Ω
Entrée analogique = +3.3V
3.3/(1+R/RL)
10KΩ R
Varie de 0.0323V (lumière
intense) à 3.23V (noir) Entrée
analogique
RL
Ground
13. Implémenté un serveur Web
Partir de l’exemple Web Server
Comment ça fonctionne
1 thread par protocole = 1 pour http
1 handler pour processer toutes les requêtes (GET et POST)
1 fonction pour processer GET
1 fonction pour processer POST
1 fonction pour retourner un fichier du stockage (par morceau car
la taille des buffers est limitée)
1 fonction d’upload de fichier vers le stockage (par morceau car
la taille des buffers est limitée)
Plein d’autres fonctions pour faire fonctionner le tout
Très bon exemple complet qui implémente beaucoup de bonnes
pratiques
14. Simplifier le serveur Web
Enlever le code lié à https
Enlever le code lié à POST si GET uniquement utilisé
Enlever le code lié au transfère de fichier si non utilisé
Enlever le code lié à la gestion des répertoires et stockage
si pas besoin d’accès aux fichiers
Enlever ce genre de choses
Ajouter une fonction qui permet de lire les paramètres
passer en URL
Ajouter du code pour gérer les pages en GET
Ajouter du code pour gérer vos propres pages
16. Comment ça marche?
Netduino
http
Client utilisant un
simple navigateur
2 Pages pour gérer le
calendrier et la
programmation
1 Page pour ouvrir/fermer
les arroseurs
1 Page pour gérer la
programmation
Timer pour lancer les arrosages
18. Comment ça marche ?
Web Server avec
Netduino
pages ASP.NET
http http
Pour allumer/éteindre
les led
Client utilisant
Page pour retourner le
un simple
paramrétrage et l’état
navigateur
19. Trucs et astuces
Try catch partout…
Les buffers sont limités (1024 in most small ARM)
System.Threading.Thread.Sleep(100);
Compromis entre joli code et code efficace: la taille, ça compte
La sécurité, c’est important, à prendre en compte dès le design
U=RI
if (Microsoft.SPOT.Hardware.SystemInfo.IsEmulator)
strDefaultDir = "WINFS";
else
strDefaultDir = "SD";
localhost:81 utilisé par l’émulateur pour un serveur web
22. Pour aller plus loin
Prochaines sessions des Dev Camps
Chaque semaine, les 10
Live Open Data - Développer des applications riches avec le
février
DevCamps 2012
16
Meeting protocole Open Data
ALM, Azure, Windows Phone, HTML5, OpenData février
Live
Meeting
Azure series - Développer des applications sociales sur
la plateforme Windows Azure
2012
http://msdn.microsoft.com/fr-fr/devcamp
17
Live Comprendre le canvas avec Galactic et la librairie
février
Meeting three.js
2012
Téléchargement, ressources 21
février
Live La production automatisée de code avec CodeFluent
Meeting Entities
et toolkits : RdV sur MSDN 2012
2 mars Live Comprendre et mettre en oeuvre le toolkit Azure pour
http://msdn.microsoft.com/fr-fr/ 2012 Meeting Windows Phone 7, iOS et Android
6 mars Live
Nuget et ALM
2012 Meeting
Les offres à connaître 9 mars
2012
Live
Meeting
Kinect - Bien gérer la vie de son capteur
90 jours d’essai gratuit de Windows 13 mars
2012
Live
Meeting
Sharepoint series - Automatisation des tests
Azure 14 mars Live TFS Health Check - vérifier la bonne santé de votre
www.windowsazure.fr 2012 Meeting plateforme de développement
15 mars Live Azure series - Développer pour les téléphones, les
2012 Meeting tablettes et le cloud avec Visual Studio 2010
Jusqu’à 35% de réduction sur Visual 16 mars Live Applications METRO design - Désossage en règle d'un
Studio Pro, avec l’abonnement MSDN 2012 Meeting template METRO javascript
20 mars Live Retour d'expérience LightSwitch, Optimisation de
www.visualstudio.fr 2012 Meeting l'accès aux données, Intégration Silverlight
23 mars Live OAuth - la clé de l'utilisation des réseaux sociaux dans
2012 Meeting votre application