Hiking Environmental Data Logger [arduino] - Electronique, domotique, DIY
Marsh Posté le 10-01-2016 à 18:57:22
- C'est quoi ces #include tout vide en ligne 30/31 ?
- Pense à faire des .h et splitter ton code dans quelques fichiers. L'indentation aussi ça peut servir .
Marsh Posté le 10-01-2016 à 23:07:38
- Une erreur de copier/coller sauvage
- .h c'est pas des librairies ? Pour les indentations ça ne passe pas avec les balises code.
Edith : Bon, j'ai défini les pins, si mes souvenirs sont bons faut mettre les SDA et SCL des capteurs sur les pins Analog In.
Marsh Posté le 11-01-2016 à 09:12:31
.h : je veux dire créer le/les tiens, juste pour y déporter les déclarations genre bool feedgps();, void getGPS();
Pour l'instant y aura presque rien dedans mais si tu t'inquiètes de la bordélisation de ton code tu verras rapidement l'intérêt d'avoir découpé ton programme.
Pour les inclure tu mets des guillemets "" au lieu de chevrons <> autour, je te laisse chercher.
Pour SDA/SCL ce sont les fils de l'I2C, donc il faut les connecter aux pins qui supportent ce protocole. Sur du Mega2560 ce sont 20 (SDA), 21 (SCL). Sauf si tu fais de l'I2C software (ce qui n'est pas une bonne idée sauf réelle nécessité, c'est déjà assez lent comme ça l'I2C )
Marsh Posté le 11-01-2016 à 13:49:26
Ouais mais attend, j'ai plusieurs SDA/SCL, je peux tous les balancer sur les pinz 20 et 21 ?
Pour la lenteur je m'en tamponne un peu a priori, vu que je veux les valeurs toutes les minutes (voir toutes les 2 ou 5 minutes, j'affinerai au besoin ).
Marsh Posté le 11-01-2016 à 13:59:03
Ouais, si tes capteurs ont tous une adresse différente tu peux tous les balancer ensemble, c'est le but de l'i2c.
Dans le meilleur des cas y a qu'à relier ensemble les fils identiques.
Il faut parfois aussi mettre des pull up de 10k.
Si ils ont la même adresse faut bidouiller un peu plus et utiliser par exemple un multiplexeur i2c (ex : TCA9548A)
Certains gros arduino ont plusieurs bus i2c (le due par exemple il me semble, j'ai pas vérifié)
Marsh Posté le 11-01-2016 à 14:24:39
Et comment puis-je connaitre l'adresse ? Parce que si c'est le boxon, autant utiliser les ports analog puisque j'en ai pléthore
(bon je vais quand même commander un ou deux moultiplexeur en shenzennie, si t'as des ref qui sont mieux que ce TCA9548A, laisse savoir frère).
Marsh Posté le 11-01-2016 à 14:38:25
Ca dépend des devices .
Si tu utilises une lib commune à plusieurs marques, tu peux avoir à fourguer l'info explicitement lors de ton setup ou tous déclarations (une adresse hexa genre 0x34 par exemple), ou si c'est une lib spécifique là c'est sans doute à l'intérieur de son code que se trouve l'info et là le constructeur doit par ailleurs la communiquer s'il est sympa.
Pas de suggestion pour les refs, mais on doit trouver des tas de pages d'infos là dessus, l'i2c c'est très courant...
Marsh Posté le 11-01-2016 à 15:00:32
Mes capteurs viennent de chez Aliexpress, donc pour les renseignements, on repassera
Du coup c'est sans doutes plus simples de les laisser sur des pins analogues, vu que j'en manque pas (il m'en faut 8 sur les 15 que comprend le MEGA 2560)
Ok, c'est loin d'être élégant, mais c'est moins contraignant.
Marsh Posté le 11-01-2016 à 15:07:18
Bah tant que t'as des pins dispo et si tu sais les driver c'est pas si mal, aucun souci c'est comme tu veux .
Mais ça pourrait te compliquer la vie de ne pas les connecter tout bêtement au port fait pour ça.
Pour l'instant j'ai l'impression qu'à part les déclarer tu ne fais absolument rien de tes capteurs ?
Avec les références que tu donnes, les adresses I2C pourraient être 0x23 (BH1750), 0x77 (BMP180), 0x40 (HTU21D). Donc toutes différentes.
Généralement c'est quand tu as plusieurs capteurs identiques que le multiplexage s'impose pour ne pas qu'ils se marchent dessus.
Marsh Posté le 11-01-2016 à 16:23:09
Ouais ouais pour l'instant ils ne font rien, vu que j'y connais rien j'y vais étape par étape
Sur mon précédent bricolage, je n'avais qu'un capteur (BMP180) du coup il était branché sur des Analog d'un Arduino Pro Mini.
Bon du coup je vais voir pour un multiplexeur, ça permettra peut-être d'utiliser un Arduino R3 si ça suit au niveau de la quantité de mémoire. Problème : c'est pas donné : le TCA9548A est vendu près de 7 euros, soit quasiment le prix d'un clone Arduino MEGA 2560, et plus cher que n'importe quel capteur utilisé ici (voir plus que la totalité des capteurs d'ailleurs).
Du coup j'ai un peu fouillé et trouvé ça (enfin un clone à 1.12 euro) => https://www.sparkfun.com/products/9056
Ça te semble ok ?
Marsh Posté le 11-01-2016 à 17:03:12
Les 74xx4067 c'est des multiplexeurs 16 canaux normaux, rien à voir avec un mux orienté protocole. Donc non.
Mais je t'ai dit plus qu'apparemment dans ton cas y a a priori pas besoin du tout de mux vu que tes capteurs ont chacun leur adresse.
Marsh Posté le 14-03-2016 à 18:15:32
Deux mois plus tard ( [tinostar] ) il fait beau et je me souviens que j'ai ce truc qui traine.
Du coup je peux brancher l'intégralité de mes SDA sur A4 et de la même manière tous mes SCL sur A5 si je comprend bien (ou 20 et 21 si faut prendre un MEGA).
C'est vachement intéressant en utilisant une veroboard dont on ferait partir les 4 fils nécessaires pour l'ensemble des capteurs, à savoir 3.3V, GND, SCL et SDA. Et surtout ça permet d'en empiler une infinité tant qu'ils sont tous différents (ce qui est le cas dans le bricolage en question).
J'ai bon ?
Marsh Posté le 10-01-2016 à 17:49:30
J'ouvre un topic qui va me servir à demander à l'aide régulièrement
Objectif : avoir un arduino avec quelques capteurs utiles en rando (humidité, température, intensité lumineuse, UV, pression atmosphérique) avec le GPS et écrire tout ça sur un fichier dans une carte SD, histoire de balancer ça sur un logiciel de carto style QGIS.
Évidemment, je nage complètement, donc le code est un ignoble monstre de Frankenstein avec des bouts de trucs récupérés à droite à gauche, et va devoir évoluer vers un truc fonctionnel
Toute aide bienvenue
NB : A partir de "//GPS part" c'est du pompage pur et dur, j'ai juste modifié la fréquence de write sur la SD pour passer à 1 minute au lieu de 1 seconde.
Message édité par Kyjja le 11-01-2016 à 00:18:29
---------------
HWBot | Conso GPU | Who's who PSU | Mes BD \o/ | GReads | MSpaint