net microframework: du code, de l’électronique, de la robotique

40
Donnez votre avis ! Depuis votre smartphone, sur : http://notes.mstechdays.fr De nombreux lots à gagner toutes les heures !!! Claviers, souris et jeux Microsoft… Merci de nous aider à améliorer les TechDays http://notes.mstechdays.fr

Upload: microsoft

Post on 25-May-2015

148 views

Category:

Documents


2 download

DESCRIPTION

Envie de se faire plaisir le soir ? Envie de faire vibrer des canards ? Envie de développer quelque chose de WAF et super Geek ? Alors, cette session est pour toi :-) .NET Microframework est une technologie open source permettant de réaliser des robots, des modules intelligents, le tout sans aucun OS. Cette session montra par des exemples concerts comment réaliser des automates et les piloter à travers des interfaces web. Exemple concret avec un arrosage automatique entièrement pilotable depuis l'autre bout du monde.

TRANSCRIPT

Page 1: NET Microframework: du code, de l’électronique, de la robotique

Donnez votre avis !Depuis votre smartphone, sur : http://notes.mstechdays.fr

De nombreux lots à gagner toutes les heures !!!

Claviers, souris et jeux Microsoft…

Merci de nous aider à améliorer les TechDays

http://notes.mstechdays.fr

Page 2: NET Microframework: du code, de l’électronique, de la robotique

2013-02-12Laurent EllerbachAudience Marketing Director Microsoft Central and Eastern Europe

.NET Microframework : du code, de l'électronique, de la robotique

Page 3: NET Microframework: du code, de l’électronique, de la robotique

• .NET Microframework

• Démo « Hello Led »

• Démo « Mon premier serveur HTTP »

• Démo « Gérer mon arrosage automatique »

• Démo « Piloter un train Lego en infrarouge et gérer des servos moteurs »

Agenda

Page 4: NET Microframework: du code, de l’électronique, de la robotique

.NET Micro Framework.NET pour les processeurs à bas 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/ROMCompatibilité .NET• Différentes versions• Sélections des classes clientes• Support spécifique pour

l’embarqué• Un jeu de classe limité mais très

riche

.NET Microframework pour

Page 5: NET Microframework: du code, de l’électronique, de la robotique

• 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…

NETMF Modèle Open Source

Page 6: NET Microframework: du code, de l’électronique, de la robotique

NamespacesSystem.Windows System.Windows.Controls

Window Border

Image

Panel

CheckBox

Button

ListBox

ListView

RadioButton

ScrollViewer

UIElement

TextBox

StackPanel

System.Windows.Input

Stylus

Mouse

Keyboard/GPIO

System.Forms

System.Data

System.XML

Writer

Reader

System.Drawing System

Collections

IO

Resources

Threading

Security

Globalization

Reflection

NET/HTTP

Diagnostics

Compiler Svcs

RuntimeRemoting

Serialization

System.Service.Model

DPWS Addressing

DPWS Eventing

DPWS Discovery

Proxy Discovery

DPWS TransferManaged Drivers

I2C/SPI

USB

SerialPort

GPIO Watchdog

Power MgmtA/D

PWM

Partial implementationSame as .NET Fx

Page 7: NET Microframework: du code, de l’électronique, de la robotique

• 1 board tel que Netduino– Prendre la version Netduino Plus avec

suport réseau et SD pour 50€ environ

• Le SDK– Gratuit

• Visual Studio Express (C#)– Gratuit

• …et surtout une bonne idée pour construire quelque chose de sympa

Par où commencer?

Processeur et mémoireAtmel 32-bit microcontrollerVitesse : 48MHz, ARM7Espace de stockage pour le code: 64 KB, sans réseau: 128 KBRAM: 28 KB, sans réseau: 60 KB

Page 8: NET Microframework: du code, de l’électronique, de la robotique

Mon premier projetHello Led

Page 9: NET Microframework: du code, de l’électronique, de la robotique

• 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

Un peu de Hard

Page 10: NET Microframework: du code, de l’électronique, de la robotique

demoBen oui, on va la faire clignoter cette led…

Page 11: NET Microframework: du code, de l’électronique, de la robotique

• 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é

Plus de Hard

Ground (black)

2V (red) Digital IO (yellow)

Page 12: NET Microframework: du code, de l’électronique, de la robotique

• 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.3/(1+R/RL)• Varie de 0.0323V

(lumière intense) à 3.23V (noir)

Example d’entrée analogique

Ground

+3.3V

Entrée analogique

10KΩ

R

RL

Page 13: NET Microframework: du code, de l’électronique, de la robotique

demoInterruptions, débuggage et analogique

Page 14: NET Microframework: du code, de l’électronique, de la robotique

Mon premier serveur Web

Page 15: NET Microframework: du code, de l’électronique, de la robotique

• 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

Implémenté un serveur Web

Page 16: NET Microframework: du code, de l’électronique, de la robotique

demoEmulateur

Page 17: NET Microframework: du code, de l’électronique, de la robotique

• 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

Simplifier le serveur Web

Page 18: NET Microframework: du code, de l’électronique, de la robotique

• Ecouter ce qu’il se passe sur un port (80 par défaut) avec des Socket

• Lire les données quand il y a quand il y a quelque chose à lire• Interpréter les headers du protocole HTTP• Créer une réponse• Renvoyer le tout• Le code minimum = 10 lignes

• Quelques try, catch, événement et 2 trois trucs pour faire joli• Une trentaine de lignes de code pour un serveur web robuste

Finalement, je réécris mon serveur web

Page 19: NET Microframework: du code, de l’électronique, de la robotique

demoAller, je vous montre les 10 lignes nécessaire au serveur Web

Page 20: NET Microframework: du code, de l’électronique, de la robotique

Gérer mon arrosage automatique

Page 21: NET Microframework: du code, de l’électronique, de la robotique

Un boitier propre avec arrivée réseau. Automate Crouzet

Page 22: NET Microframework: du code, de l’électronique, de la robotique

Des électrovannes 24V courant continue

Page 23: NET Microframework: du code, de l’électronique, de la robotique

Comment ça marche?Netduino

http

1 Page pour gérer la programmation

1 Page pour ouvrir/fermer les arroseurs

Client utilisant un simple navigateur

2 Pages pour gérer le calendrier et la programmation

Timer pour lancer les arrosages

Utilisation en production tout l’été

Page 24: NET Microframework: du code, de l’électronique, de la robotique

Capteur d’humidité

Page 25: NET Microframework: du code, de l’électronique, de la robotique

Données…

Comment faire pour avoir un signal propre? 1 acquisition par minute

Page 26: NET Microframework: du code, de l’électronique, de la robotique

Hard• Bon capteur = bonne

donnée• Coût de production plus

élevé• Complexité matérielle

Soft• Donnée non exacte• Temps de développement• Complexité logicielle,

temps de traitement

Les 2 options

Quoi choisir ???

Page 27: NET Microframework: du code, de l’électronique, de la robotique

Filtre logiciel (1/4)

Période de 15 points

Page 28: NET Microframework: du code, de l’électronique, de la robotique

Filtre logiciel (2/4)

Période de 60 points

Page 29: NET Microframework: du code, de l’électronique, de la robotique

Filtre logiciel (3/4)

Période de 60 points

Vert = arrosage, rouge = pluie

Page 30: NET Microframework: du code, de l’électronique, de la robotique

Filtre logiciel (4/4)

Période de 600 points

Vert = arrosage, rouge = pluie

Page 31: NET Microframework: du code, de l’électronique, de la robotique

Piloter des éléments infrarouge Lego

Page 32: NET Microframework: du code, de l’électronique, de la robotique

• Remplacer ça… …par ça

Pourquoi?

Page 33: NET Microframework: du code, de l’électronique, de la robotique

• Les protocoles infrarouge sont compliqués

• Utilisation d’un « hack » avec SPI pour créer l’onde et l’envoyer telle quelle

Envoyer des infos en infrarouge

Page 34: NET Microframework: du code, de l’électronique, de la robotique

Le hard

Page 35: NET Microframework: du code, de l’électronique, de la robotique

• Servo moteur se pilotent en envoyant des trains d’onde pour atteindre un angle spécifique

• Utilisation de PWM pour créer les bons trains d’onde

• Multiplexage pour en piloter plein

Piloter des servo moteur

Page 36: NET Microframework: du code, de l’électronique, de la robotique

demoPiloter mon train Lego

Page 37: NET Microframework: du code, de l’électronique, de la robotique

• 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

Trucs et astuces

Page 38: NET Microframework: du code, de l’électronique, de la robotique

• SDK download: http://netmf.codeplex.com/releases/view/52341 • .NET Microframework sources: http://netmf.codeplex.com/ • Visual Studio Express: http://

www.microsoft.com/visualstudio/en-us/products/2010-editions/express • Netduino: http://www.netduino.com/

• Blogs et liens utiles:– http://blogs.msdn.com/laurelle²– http://www.netmf.com – http://blogs.msdn.com/netmf – http://blogs.msdn.com/netmfteam– http://www.tinyclr.com/ – http://nerduino.wordpress.com/ – http://www.ghielectronics.com/downloads/FEZ/Beginners%20guide%20to%20NETMF.pdf – http://www.ghielectronics.com/catalog/category/265/

Resources

Page 39: NET Microframework: du code, de l’électronique, de la robotique

Questions ?

Laurent [email protected]

http://blogs.msdn.com/laurelle

Page 40: NET Microframework: du code, de l’électronique, de la robotique

Formez-vous en ligne

Retrouvez nos évènements

Faites-vous accompagner gratuitement

Essayer gratuitement nos solutions IT

Retrouver nos experts Microsoft

Pros de l’ITDéveloppeurs

www.microsoftvirtualacademy.com

http://aka.ms/generation-app

http://aka.ms/evenements-developpeurs

http://aka.ms/itcamps-france

Les accélérateursWindows Azure, Windows Phone,

Windows 8

http://aka.ms/telechargements

La Dev’Team sur MSDNhttp://aka.ms/devteam

L’IT Team sur TechNethttp://aka.ms/itteam