Relevé de temperature Arduino - NAS



Documents pareils
Prototypage électronique

Durée estimée :1 journée Date de la réalisation : Description Fournisseur Référence Nombre PU HT LM35CZ, LM35AZ LM35DZ

Boîtier pour disque dur externe 3,5" (8,89cm) USB 2.0

Sauvegarde et restauration d'un système d'exploitation Clonezilla

Installation du SLIS 4.1

1 sur 5 10/06/14 13:10

NAS 208 WebDAV Une alternative au protocole FTP pour le partage sécurisé des fichiers

Installation d'un FreeNAS (v0.684b du 30/03/2007) pour sauvegarder les données d'un ZEServer

Dispositions relatives à l'installation :

Manuel de l'utilisateur d'intego VirusBarrier Express et VirusBarrier Plus

OpenMediaVault installation

AOLbox. Partage de disque dur Guide d utilisation. Partage de disque dur Guide d utilisation 1

LECTEUR AUDIO COMELIT ART

Vous y trouverez notamment les dernières versions Windows, MAC OS X et Linux de Thunderbird.

Cloner nativement Windows 8.x (mode EFI)

JetClouding Installation

Itium XP. Guide Utilisateur

Guide d'utilisation du Serveur USB


Virtualisation de Windows dans Ubuntu Linux

Remplacer le disque dur d'un ordinateur portable par un SSD

Gestion d Active Directory à distance : MMC & Délégation

Sauvegarde. de données. Nos conseils de prise en main

GUIDE D INSTALLATION RAPIDE DEXH264

FreeNAS Shere. Par THOREZ Nicolas

PRESENTATION RESSOURCES. Christian Dupaty BTS Systèmes Numériques Lycée Fourcade Gardanne Académie d Aix Marseille

Sonde de surveillance environnementale gamma

CPLN 20/08/2009 MBO Service ICT et Pédagogie

GSM/GPRS/GPS Traceur Véhicule G-1000 PRO Manuel D utilisation

"! "#$ $ $ ""! %#& """! '& ( ")! )*+

Axel Remote Management

Guide de l'utilisateur

Bien commencer avec un LaunchPad MSP430G et un Breadboard

Sauvegarde des données du scribe sur disque USB

Présentation du SC101

Version Wraptor Laboratories. Installation de SpamWars 4.0 Édition Entreprise

Une carte pour vos projets

Retrospect 7.7 Addendum au Guide d'utilisation

Partie Agir : Défis du XXI ème siècle CHAP 20-ACT EXP Convertisseur Analogique Numérique (CAN)

LINUX REMPLAÇANT WINDOWS NT

Guide Utilisateur - Guide général d'utilisation du service via Zdesktop ou Webmail v.8. Powered by. - media-2001.communication &.

Outils de Communications Onduleurs pour PC, Serveurs & Réseaux. SOLUTIONS LOGICIELS ET MONITORING POUR ONDULEURS JUSQU'À 30 kva

COACH-II Manuel d utilisation

Date : NOM Prénom : TP n /5 ET ADMINISTRATION D'UN

Dispositif e-learning déployé sur les postes de travail

[Serveur de déploiement FOG]

Gérard Castagnoli OSU PYTHEAS 25/06/2013 VVT2013 1

HelpAndManual_unregistered_evaluation_copy GESTIONNAIRE D'ALARMES CENTRALISE OPTIM'ALARM. Manuel d'utilisation

Chapitre 2 Accès aux partages depuis votre système d'exploitation

Service Déposant: Procédure d installation. Page 1. Service déposant. Procédure d installation Version 2.3

FORMATION : Etudiante en deuxième année de BTS Informatique de Gestion. Du 1 er Mars au 16 Avril 2010

ALOHA Load Balancer Guide de démarrage

Documentation utilisateur, manuel utilisateur MagicSafe Linux. Vous pouvez télécharger la dernière version de ce document à l adresse suivante :

Product positioning. Caméra Cloud d'extérieur PoE HD DCS-2310L/ Caméra Cloud HD sans fil d'extérieur DCS-2332L

La sauvegarde (backup) de votre comptabilité a pour but de vous permettre de retrouver vos données si un incident est survenu.

ENREGISTREUR DE TEMPERATURE

Perl Console. Votre compagnon pour développer en Perl. Les Journées du Perl , 17 novembre, Lyon. Alexis Sukrieh

DÉMATÉRIALISATION DES MARCHÉS

Mise en service HORUS version HTTP

Capture Pro Software. Démarrage. A-61640_fr

Acer erecovery Management

Service de Virtualisation de la DSI UJF

Qu'est ce que le Cloud?

Version janvier Manuel d'utilisation. Adaptateur Ethernet rapide 10/100 USB 2.0

Android comme périphérique annexe.

Guide de démarrage rapide

Guide Utilisateur - Guide général d'utilisation du service via Zdesktop ou Webmail v.8. Powered by. Version EXOCA 1

Upgrade du Huawei U8230 : Android 2.1 et rom custom

TecLocal 4.0. Nouveautés de la version 4.0 (notes de mise à jour)

Clé Flash USB2.0 Acer

Note Technique : Sauvegarder un NAS ND16000 ou ND26000 sur un disque dur externe USB ou esata

Jean-Louis Cech descente des Princes des Baux Orange Orange : 20 juin 2014.

Manuel d installation Version Evolution réseau Ciel Compta Ciel Gestion commerciale Ciel Associations

Mise en oeuvre simple et rapide aucune expertise en informatique n est exigée. Authentification unique pour tous les sites installés

1. Introduction Création d'une requête...2

56K Performance Pro Modem

Installation de Windows 2003 Serveur

Sauvegarder et restaurer les données PMB

TRUECRYPT SUR CLEF USB ( Par Sébastien Maisse 09/12/2007 )

Sommaire. 1. Installation Configuration de la sauvegarde Le Panneau de contrôle L'interface en ligne...

Mise à jour de version

GenIP 30i : Passerelle intelligente dédiée aux applications industrielles les plus critiques

Manuel d'utilisation. Module " ing "

PORTAIL INTERNET DE LA GESTION PUBLIQUE Guide d'utilisation du Portail Internet de la Gestion Publique

Le Service de Télétransmission par Internet des banques du Réseau OCÉOR GUIDE UTILISATEURS. Version V1.0

Netissime. [Sous-titre du document] Charles

Maintenance de son PC

NOUVELLES FONCTIONNALITÉS DE MYQ 4.4

Laplink PCmover Express La façon la plus facile de transférer vers un nouveau PC Windows

Livre blanc Mesure des performances sous Windows Embedded Standard 7

Table des matières : 16 ASTUCES OUTLOOK

Configuration d'un GSM pour une transmission de données via une centrale de mesure de Campbell Scientific

JaZUp manuel de l'utilisateur v2.4

Protéger ses données dans le cloud

Thermotrack Webserve

Les mains dans la bête

!" #$$%& Disque dur 2.5 pouces Firewire Apple MacOS FR V2.4 - Page 1/17

Transcription:

Relevé de temperature Arduino - NAS Emmanuel Pottier - 2011-11-02 Objectifs du projet L'objectif de ce projet est de mettre en place une mesure de temperature à distance, avec enregistrement des valeurs en interne (data logger) et possibilité de lecture par internet. Description Du fait du matériel dont je disposai, j'ai choisi de mettre en place un système à base d'arduino et de recycler un serveur USB-NAS (modèle 652 WLXKJ), habituellement utilisé pour accèder par le réseau a un disque usb. Vue d'ensemble, la taille de la clef USB donne une indication de la taille réelle L'idée est donc que : 1. L'arduino effectue la lecture du capteur 2. Puis il renvoie la valeur de temperature sur le port usb du boitier NAS 3. Le boitier NAS recopie la valeur reçue dans un fichier, sur une clef USB 4. Le fichier est ensuite disponible sur le NAS, soit dans le voisinage réseau, soit en connection ssh/scp directement sur le NAS. Les avantages du serveur NAS sont les suivants : accès natif au réseau prise en charge deux ports USB (l'un servira pour l'arduino, l'autre pour une clef usb) firmware alternatif disponible (Snake OS), permettant un accès complet - ssh - au système Linux embarqué le NAS permet par ailleurs d'alimenter l'ardunio via le port usb, il n'y aura donc qu'une seule alimentation, alimentation qui sera par ailleurs économe (quelque watts). Pour ~30, le NAS réunit donc les fonctions de data logger, de shield ethernet et d'alimentation. Il dispose par ailleurs d'une grosse réserve de puissance pour de futures évolutions (cadencé à 200Mhz, 256Mo de memoire, possible de brancher des disques de plusieurs centaine de Go).

La mesure de temperature en elle même se fera par l'arduino, via des capteurs TMP36 branchés sur les entrées analogiques. Matériel nécessaire / prérequis Le matériel nécessaire est le suivant : Un boitier USB NAS, modèle 652WLXKJ, disponible notamment chez dealextreme (http://www.dealextreme.com/p/standalone-bittorrent-bt-client-upnp-usb-nas-ftp-sambaprinter-sharing-network-lan-server-20383) Une carte Arduino (Arduino Uno dans mon cas, mais n'importe quel clone devrait fonctionner) Un capteur TMP36, qui produit une tension proportionelle à la temperature Une clef USB, un vieux modèle de 128Mo sera largement suffisant Compter 30 pour le boitier nas, et a peu près autant pour l'arduino avec 2 ou 3 capteurs TMP36 et une vielle clef USB, soit un total de 60. On suppose dans ce descriptif que le lecteur est familier de l'arduino, sait se connecter en ssh sur une machine et mettre jour un firmware. Programmation Arduino Le programme de l'arduino est assez basique puisqu'il s'agit simplement d'effectuer la lecture du capteur, puis d'envoyer les valeurs sur le port série. Le montage est détaillé sur le site de "ladyada" : http://www.ladyada.net/learn/sensors/tmp36.html Le capteur TMP36 à pour avantage de permettre une mesure simple des temperatures usuelles en habitation, y compris pour les valeurs négatives. La formule qui donne la temperature est la suivante : T C = (V-500)/10 Dans lequel V est la tension à la borne du capteur, en mv. Il est intéressant de noter que 1v en sortie du capteur correspond en pratique à 50 C. On peut considérer que l'on ne dépassera jamais cette temperature. On peut en conséquence fixer la référence analogique de l'arduino sur "INTERNAL", soit 1.1 volts, pour obtenir une précision de lecture maximale. La formule devient alors : T C = (analogread(sensorpin)*1100/1024-500)/10 Remarque importante : du fait de la gestion des nombres a virgulle flottante sur l'arduino, il est préferable d'effectuer les multiplications avant les division, et plus généralement, de limiter le nombre d'opérations. Enfin, il est bon de toujours ajouter ".0" aux entiers pour s'assurer que l'opération est effectuée sur des flottants, et non convertie en entiers.

La formule devient alors T C = (analogread(sensorpin)*1.074-500.0)/10.0 En pratique, la réference interne n'est pas exactement de 1.1v. Dans mon cas, après étalonage, la formule correcte sera : T C = (analogref(sensorpin)*1.06157-500.0)/10.0 Le script final est donc : void setup(){ // Declaration entrees analogiques analogreference(internal); } // Declaration de la liaison serie Serial.begin(9600); float ReadTemp(int analogpin){ // Lecture d'une temperature sur la pin specifiee float sensortemp = (analogread(analogpin)*1.06157-500)/10.0; return sensortemp; } void loop(){ float TmpInt = ReadTemp(0); // Le capteur Interieur est connecté sur le port analog 0 float TmpExt = ReadTemp(1); // Le capteur exterieur est connecté sur le port analog 1 // Ecriture des valeurs sur le port série Serial.print(TmpInt); Serial.print(";"); Serial.print(TmpExt); } // Attente avant de refaire une mesure delay(10000); USB-NAS Mise a jour du firmware : par défaut, le NAS est livré avec un firmware qui ne permet pas vraiment la personalisation. Il convient donc de commencer par flasher le firmware pour installer "snake os", disponible sur google code (http://code.google.com/p/snake-os/). La procèdure de mise a jour est détaillée sur le site du projet, et ne devrait pas poser de problème particulier. Il faut ensuite s'assurer que le NAS reconnait l'arduino, et est capable de dialoguer avec lui. Pour les arduino équipés d'un chip usb ftdi (la plupart, sauf arduino Uno), la reconnaissance devrait être automatique. Pour l'arduino Uno, le chip USB a changé, ce qui impose d'utiliser un module spécifique, "cdc-acm" (voir plus loin la procédure de chargement du module). Une fois l'arduino branché, il suffit de se connecter en ssh sur le nas, puis de taper "dmesg" pour voir si le système est bien reconnu, il devrait alors s'afficher quelque chose de semblable : usb 2-2: new full speed USB device using str8100-ohci and address 2 usb 2-2: configuration #1 chosen from 1 choice cdc_acm 2-2:1.0: ttyacm0: USB ACM device Ici, l'arduino est reconnu comme ttyacm0 (la valeur peut être differente pour les autres version d'arduino). Il sera donc accessible par /dev/ttyacm0. S'il manque la denière ligne (ou un équivalent), c'est que l'arduino n'est pas reconnu. On peut alors voir ce que l'arduino envoie en tapant : cat /dev/ttyacm0

On devrait alors voir apparaitre à chaque seconde les temperatures, sous un format comme : 21.45;16.39 Comme on souhaite envoyer le résultat directement dans un fichier, on va faire une redirection, couplée a un "nohup", pour que la redirection soit toujours active lorsque l'on se déconnecte : nohup cat /dev/ttyacm0 >> /usb/sda1/data.log & On peut voir en tapant "top" que le script continue de tourner en arrière plan. Il suffit maintenant de lire le fichier "data.log" de la clef usb pour accéder aux données. On peut notamment le faire en se connectant en ssh, puis en tapant cat /usb/sda1/data.log, ou encore en configurant dans snake-os un partage de fichier sur la clef usb. On accède alors directement au fichier par le partage réseau. A noter qu'il est intéressant d'insérer dans le fichier la date/heure a interface régulier. Cela peut se faire assez simplement, en allant sur le NAS, puis éditer le fichier /etc/cron.d/root, et ajouter : 0 * * * * date +%F_%T >> /usb/sda1/data.log Remarque : il est nécessaire de sauvegarder le fichier cron, puis la configuration sur le NAS (par l'interface web), puis de le relancer pour que la tache soit prise en compte. Cas de l'arduino Uno L'arduino Uno utilise un chip usb différent des arduino précédents. De ce fait, il requiert un module supplémentaire pour être reconnu par le NAS. Le module cdc-acm.ko est disponible en téléchargement (je l'ai généré à l'aide du SDK de snake-os : http://pottier.emmanuel.free.fr/cdc-acm.ko). il suffit de le placer sur la clef usb, puis de le lancer a l'aide de la commande : insmod /usb/sda1 /cdc-acm.ko (si tout se passe bien, la commande ne renvoie rien). En pratique / par ou commencer Si vous êtes perdus parmis les choses a faire, voici le mode opératoire qui me semble le plus simple. 1. Commencer par l'arduino a. Faire le montage sur l'arduino, avec le capteur TMP36 b. Faire le programme, et vérifier avec le moniteur série que vous recevez bien les valeurs à intervalle régulier 2. Sur le boitier NAS a. Flasher le firmware pour snake-os b. Se connecter en ssh sur le NAS pour s'assurer que tout fonctionne correctement 3. Connecter l'arduino au NAS a. Vérifier avec dmesg que l'arduino est bien reconnu b. Vérifier avec cat /dev/ttyacm0 que vous pouvez lire les valeurs c. Mettre en place le "nohup" pour que les valeurs soient automatiquement recopiées dans la clef USB d. Mettre en place la tache "cron" pour avoir des timestamp dans le fichier de log

Aller plus loin Ce projet est mon premier système "complet" réellement utilisable a base d'arduino. Il me sert a visualiser la température dans une maison que je n'occupe pas à l'année. Résultat des mesures sur 3 jours, début novembre (post traitement des données sous Excel) Il y a encore beaucoup de potentiel inexploité. Parmi les évolutions possibles, on pourrait citer : l'utilisation du serveur web intégré au NAS pour afficher la température, voire des graphiques, sur une page web le déclenchement d'actions a distance vers l'arduino, ce qui supposerait de pouvoir envoyer des données sur NAS vers l'arduino. C'est probablement possible, mais il faudrait le tester plus en détail l'envoi automatique d'email depuis le NAS (par exemple une "alerte gel"), c'est théoriquement possible, mais il semble que le NAS ne dispose pas par défaut d'une fonction d'envoi d'email. Par ailleurs, il faut pour l'instant relancer le "nohup..." (et le insmod le cas échéant) à chaque reboot du NAS. Il serait bon d'automatiser cette tâche Liens Montage a base de TMP36 : http://www.ladyada.net/learn/sensors/tmp36.html Firmware snake os : http://code.google.com/p/snake-os/ Boitier NAS chez dealextreme (des boitiers compatibles existent probablement) : http://www.dealextreme.com/p/standalone-bittorrent-bt-client-upnp-usb-nas-ftp-samba-printersharing-network-lan-server-20383 Module arduino : chez n'importe quel revendeur Arduino. J'ai utilisé ce module plutot pratique pour débuter : http://www.oomlout.co.uk/prototyping-bundle-for-arduino-ardp-p-186.html Le fichier cdc-acm.ko : http://pottier.emmanuel.free.fr/cdc-acm.ko Remerciements

A Ricardo Gomes da Silva, pour m'avoir expliqué comment compiler le module cdc-acm A Douglas Gazineu, pour avoir créer le firmware Snake-OS et le SDK Et bien sur a toute l'équipe Arduino pour avoir crée ce merveilleux outil. Copie, modification et diffusion autorisées