Go Down

Topic: Arduino et les shields : demystification svp (Read 1 time) previous topic - next topic

delirii

Bonjour à tous,

je decouvre le monde des cartes arduino avec un interet grandissant.
j'ai un projet qui pourrait bien trouver reponse avec ce type de carte mais certaines choses sont encore un peu floue avant que je me lance.

Voici l'idée du projet et suivent ensuite les questions sans réponse pour le moment :

- l'idée est de faire une carte d'acquisition de données, qui echantillonerait principalement des données analogiques à une fréquence entre 5Hz et 50Hz selon la nature des choses à mesurer.

Jusque là, ça semble pas etre trop complexe.

Maintenant un peu de piment. Dans la premiere version, la carte doit etre en mesure de :
- collecter différentes mesures analogiques (5 tensions à priori, que je ferais ensorte d'etre dans la plage 0-5V)
- collecter des données provenant d'un accélérometre (le nunchuk de wii me plait bien car cheap)
- piloter un servo moteur
- envoyer les données collectées via bluetooth, à la fréquence de l'echantillonnage à un périphérique externe (qui traite/aggrège ensuite tout ce joli monde)

Dans une version ultime, full power, la carte évoluerait ainsi :
- plus besoin de bluetooth finalement : on fait tout en local
- besoin d'une unité pour stocker les données (genre SD card)
- besoin d'un module GPS 5Hz ou plus (1Hz redhibitoire)
- besoin d'un module d'affichage (matriciel retro eclairé taille 4" environ, c'est pas pour de la video hein, juste pour afficher des données de façon lisible)

Le but c'est déjà de construire la v1 avant de lancer le projet v2 un peu plus ambitieux :)

Maintenant, les questions sans réponse :

- il existe plein de jolis shields mais difficile de savoir précisement qui cohabite avec qui, dans quelle limite on peu fabriquer un empilement viable de tout ceci. => Quels conseils sur ce point ?
- Entre une Arduino Uno et une Mega, la compatibilité avec les shields est elle strictement identique ? Y a t'il des pieges ?
- Entre une Arduino Uno et une Mega, pour mon besoin, laquelle serait adaptée ?


Merci pour votre aide.

AlienArea51

Bonsoir
Ton projet dépasse de loin mes compétences ,mais ,une chose qui est sure ,est que j'ai utilisé pas mal de shields ,et pour le moment pas eu de problèmes de compatibilité entre une Duemilanove (sans doute identique avec uno) et la méga (1280 pour moi ) .
si ça peut te rassurer  ;)
bon courage pour tes projets avenir
@+
William
The truth is elsewhere !!

AlienArea51

Bonsoir encore moi
Pardon mais j'ai oublié un détail important à propos des shields
l'empilage des shields ,(mille feuilles) ,certaines shields utilisent les mèmes E/S ,là par contre ça pose probleme, tu peux te rabattre sur des platines breakout(moins chers) par contre investi dans une une Screwshield (2 platines équipées de borniers miniatures) du cable à souder je conçois mais te permet d'avoir accès aux E/S ,Tensions etc.. librement .
@+
William
The truth is elsewhere !!

skywodd

Bonjour,


- l'idée est de faire une carte d'acquisition de données, qui échantillonnerait principalement des données analogiques à une fréquence entre 5Hz et 50Hz selon la nature des choses à mesurer.

Dans une plage de 5Hz/50Hz ça doit être jouable, à voir comment doit ce comporter le reste du montage.


Maintenant un peu de piment. Dans la première version, la carte doit etre en mesure de :
- collecter différentes mesures analogiques (5 tensions à priori, que je ferais en sorte d'être dans la plage 0-5V)
- collecter des données provenant d'un accéléromètre (le nunchuk de wii me plait bien car cheap)
- piloter un servo moteur
- envoyer les données collectées via bluetooth, à la fréquence de l'échantillonnage à un périphérique externe (qui traite/aggrège ensuite tout ce joli monde)

Pour la collecte des 5 tensions entre 0-5v pas de probléme l'arduino sait faire ^^
Pour le nunchunk de wii, en I2C hardware avec les 5 tensions à mesurer ça va pas passer sur une arduino classique, par contre en software avec SoftI2CMaster ça passe sans probléme.
Pour le servomoteur, la aussi pas de probléme, avec la librairie officiel "servo" ce sera simple.
Pour l'envoi en bluetooth il y a deux solutions, la solution "low cost" à savoir un shield bluetooth @ebay pas chére mais qui marche nikel (les chinois, les taxes sur les normes bluetooth ils connaissent pas trop ^_^) ou la solution "gold" à savoir utiliser un bluesmirf/bluemodem de sparkfun.


Dans une version ultime, full power, la carte évoluerait ainsi :
- plus besoin de bluetooth finalement : on fait tout en local
- besoin d'une unité pour stocker les données (genre SD card)
- besoin d'un module GPS 5Hz ou plus (1Hz redhibitoire)
- besoin d'un module d'affichage (matriciel retro eclairé taille 4" environ, c'est pas pour de la video hein, juste pour afficher des données de façon lisible)

Pour le stockage sur carte SD, il existe de nombreuse shield qui marche trés bien avec la librairie SD (ou avec sdfatlib).
Pour le module GPS, si il marche avec un port série NewSoftSerial devrait faire l'affaire.
Pour le module d'affichage, un petit glcd mono-couleur ou un écran TFT + shield à voir.


- il existe plein de jolis shields mais difficile de savoir précisément qui cohabite avec qui, dans quelle limite on peu fabriquer un empilement viable de tout ceci. => Quels conseils sur ce point ?

Pour avoir une idée des possibles problémes entre shield il existe le site shieldlist.org qui regroupe les "pinout" de beaucoup de shield du commerce, aprés c'est surtout une question d'expérience, un shield fonctionnant en spi peut marcher avec une autre shield en spi si les broches SS ne sont pas les même, de même pour l'i2c, ... au final il y a toujours un moyen de faire cohabiter deux shield ensemble moyennant quelques bidouillages.


- Entre une Arduino Uno et une Mega, la compatibilité avec les shields est elle strictement identique ? Y a t'il des pieges ?
- Entre une Arduino Uno et une Mega, pour mon besoin, laquelle serait adaptée ?

La compatibilité arduino classique <> mega est relativement vicieuse, en faite tout est "identique", ou presque, le port spi n'est pas au même endroit, de même que le bus i2c, il n'y a pas de broche "comparateur/interruption", ... que des choses qui ne se vois pas quand on débute mais qui peuvent bloquer tout un projet des qu'en s'en rend compte.

Dans ton cas un board UNO semblerait suffire au niveau du nombre d'entrées / sorties, par contre pour la puissance de calcul derrière ça risque d'être limite niveau ram/timer, une carte chipkit pourrait être une solution envisageable mais pour un débutant passer directement sur une plateforme arduino PIC32 risque d'être un peu déstabilisant ...
Je pense que pour ta version 1 tu devrait prendre un carte UNO, de cette manière tu n'aura pas de probléme avec les shield SD (qui fonctionne en spi) et tu devrais pouvoir géré tout ce que tu cite dans la version 1, et avec un peu de temps pour optimiser le code la version 2 devrait pouvoir passer dessus.
Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

delirii

Good, merci pour les retours. Les choses s'eclaircissent un peu plus.

@skywodd : Je n'ai pas compris ce que tu voulais dire ici :
Quote
Pour le nunchunk de wii, en I2C hardware avec les 5 tensions à mesurer ça va pas passer sur une arduino classique, par contre en software avec SoftI2CMaster ça passe sans probléme.


Pour bien comprendre le but de ceci, je vais decrire un peu mieux ce qui je compte faire des données du nunchuck. Le but est de mesurer une inclinaison (à frequence 5Hz par ex.) et d'en faire ensuite 2 choses :
- ajouter ces valeurs à la trame envoyée en bluetooth (laquelle contient aussi les valeurs des 5 tensions analogiques
- utiliser ces valeurs pour ajuster le positionnement du servo moteur (but : support gyroscopique "stabilisé" : un petit truc asservi pour rester horizontal)

Et une question bonus :
- je souhaite mesurer une fréquence (fronts montants 0->5V), comment on s'y prend pour cela ?

En fait, plus je refléchis, plus j'entrevois des possibilités :) C'est grave Docteur ?  ;)

Go Up