Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1383 connectés 

 



Dernière réponse
Sujet : [arduino] Topic Unique blabla @ Arduino
Natopsi Sinon une W25Q128, là t'as même la place pour le Jingle Bells en MP3 [:yobou:5]

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
Natopsi Sinon une W25Q128, là t'as même la place pour le Jingle Bells en MP3 [:yobou:5]
crazytiti Ou mettre une eeprom en I2C.
Il existe des 512ko je crois, ça fait de quoi rentrer 20 pages de texte A4 brut.
rat de combat Un nom qui sonne très "euh" pour quelqu'un qui parle allemand. :o

Spoiler :

vixen->wichsen (très familier!) (pas sur pour l'orthographe je dois dire) -> branler :o :o

 

Je ne connais pas ce logiciel, mais en théorie oui bien sûr, on peut stocker une séquence dans l'EEPROM de l'Arduino (EEPROM pas très grand) ou la "téléverser" dans la RAM (jusqu'à la prochaine coupure d'alim, RAM pas très grande non plus) ou stocker sur une carte SD. Après, comme toujours, il faut que le code supporte ça. :o

calagan57 Hello!
 
Je viens de découvrir le soft "vixenlights" qui fonctionne à base d'arduino pour animer des guirlande etc... :love:  
http://www.vixenlights.com/
http://www.vixenlights.com/wp-cont [...] 3-Logo.png  
 
Moi je voudrais m'en servir pour des animation sur modèle réduit donc des LED SMD  :jap:  
 
Par contre on a besin d'avoir le PC constamment connecté? On ne peut pas "injecter" la séquence dans l'arduino pour qu'il soit autonome?  
 
merci à vous!   :hello:  
 
Sebwap

rat de combat a écrit :

Le Pico se programme avec l'environnement Arduino?


Aucune idée, par goût je vais partir sur du micropython, et donc via Thonny.
C'est pour ça que ça s'éloigne p-e un peu du sujet :D
 
Mais il me semble qu'on peut utiliser l'environnement Arduino si on fait du C.

rat de combat Le Pico se programme avec l'environnement Arduino?
Sebwap

SuperSic a écrit :


Tu me fais pas confiance ?  [:-noemie-]


je veux pas déranger, on est pas vraiment sur la même chose :)

SuperSic

Sebwap a écrit :

ça parle de Raspberry Pico par ici ? :)


Tu me fais pas confiance ?  [:-noemie-]

Sebwap ça parle de Raspberry Pico par ici ? :)
rat de combat Ah oui, de sérieuses recherches. :jap:

 

L'I2C commun n'est possible de toute façon que si chaque capteur à une adresse différente ce dont je suppose que ce n'est pas le cas. Sinon on pourrait brancher chaque capteur/cylindre sur des broches différentes d'un µC et faire du I2C en software, en master c'est vraiment pas sorcier, sans dire que pour Arduino il doit y avoir tout prêt à l'emploi.

 

Donc des câbles entre chaque cylindre et un Arduino ou similaire qui lui sera relié en sans fil à un autre module branché sur le PC dans l'autre pièce. On pourrait partir sur des nRF24L01+ pour la liaison sans fil, contrairement au BT il n'y a pas de connection/déconnection à faire, les latences peuvent être très faibles. Perso je partirais sur un truc comme ça, car je pense toujours que mettre un ESP par cylindre c'est chercher les ennuis (et puis y'a les histoires de latence dont tu parles).

 

EDIT: Y'a des multiplexeurs de bus I2C aussi, PCF-quelque chose je crois :o , si ça peut servir...

blacksad

rat de combat a écrit :

MQTT = usine à gaz à mon avis. :o
 
Curieuse demande par ailleurs, c'est quoi comme recherche si c'est pas indiscrèt? :o
 
I2C à toute petite vitesse (quelque kHz) ça marche sur pas mal de distance, perso j'ai environ 20m de câbles (non blindés, non torsadés en plus) avec je crois 5kHz (projet perso!!). Mais en effet ça peut merder et si le bus est bloqué il faut tout réinitialiser... Par contre est-ce que les capteurs sont tous identiques / ont la même adresse ou pas?
 
Perso je dirais, avec les éléments que tu donnes et ma faible expérience perso, I2C depuis les capteurs jusqu'à un seul ESP32/Arduino/RaPI ou similaire ou une combinaison de tout ça et puis un truc similaire dans l'autre pièce branché au PC. Par contre tes capteurs il faudra les interroger systématiquement, à moins que ce soit des capteurs qui font maître I2C mais je ne pense pas que ça existe?? Après la partie I2C se fera au niveau du bidule (ESP ou autre) dans la pièce humide qui lui pourra envoyer les données quand bon lui semble / quand nécessaire.
 
Partir sur un truc avec un ESP32 par capteur, soit un "mesh" sans fil c'est chercher les ennuis je pense car il faut voir l'arbitrage, les collisions "on air" etc. EDIT: En fait non, pas pour le Wifi en tout cas, c'est géré par la norme/le protocole. :o  
 
Sinon il y a aussi les fameux nRF24L01+, mais c'est pas si évident que ça à utiliser et surtout les modules sur Ali etc c'est pas toujours gagné, au contraire (déviations au niveau de la fréquence donc pas de liaison ou liaison instable).

[HS]
Le projet c'est d'étudier le fractionnement isotopique du dioxygène atmosphérique. En gros on regarde comment la respiration des plantes (projet où le RS485 m'a fait chier)
ou des algues (ce projet ; les cylindres sont remplis d'eau avec des algues dedans, et il sont plongés dans une cuve avec de l'eau maintenue à la température désirée, l'idée étant d'avoir un environnement contrôlé avec tous les paramètres connus, pour pouvoir savoir qu'est qui a une influence sur quoi).
Le but final étant de mieux comprendre les phénomènes en jeu et de pouvoir relier ce qu'on mesure aujourd'hui avec ce qui est mesuré dans les carottes de glace antarctiques.
En (très) gros, si en labo on a [conditions A] -> [mesures X] et [conditions B] -> [mesures Y] et que dans les carottes qui ont x milliers/millions d'années on a [mesures X], ben on peut supposer que la biosphère à l'époque était dans un mode de fonctionnement proche de [conditions A].
[/HS]
 
L'I2C commun je le sens mal franchement, déjà que j'ai eu des soucis avec le RS485 alors que normalement j'étais dans le bon cas d'usage, là jouer avec les limites ça va me péter à la gueule  :sweat:  
 
Pour la gestion de la collision, je pensais gérer ça comme ça :
- Les modules cylindres sont en "serveur", le module sur le PC est en client.
- Le module PC se connecte au cylindre1, envoie un message [donne-moi tes données], le cylindre1 reçoit le message et renvoie le contenu de son buffer, module PC se déconnecte de cylindre1
- Le module PC se connecte au cylindre2, envoie un message [donne-moi tes données], le cylindre2 reçoit le message et renvoie le contenu de son buffer, module PC se déconnecte de cylindre2
- Etc.
Le problème c'est qu'un cycle prend quelques centaines de ms, donc pour faire le tour de quelque cylindres on est sur un rafraichissement toutes les de 1 à 2s.
En vrai ça va pour cette application là parce que le module PC ne donne pas d'ordre "physique" aux modules cylindres (genre activer un relai) qui doivent être exécutés en temps réel. Faut pas qu'il y ait trop de communications quoi.
 
C'est pour ça que sur des application futures, je ferai plutôt du Wifi avec un petit routeur, comme ça pas besoin d'ouvrir la communication à chaque message (en tous cas ce sera plus rapide que de rechercher le device bluetooth à chaque fois).
 
Pour MQTT, c'est bien sur le principe mais pour la partie traitement des messages de données reçus, j'ai déjà des moulinettes que j'utilise pour d'autres projets et qui sont aussi adaptées à des communications RS232/RS485/USB voire pin IO de Raspberry Pi.
 

M600 Le soucis c’est l’implémentation, pas MQTT dans ce cas la. Ton consommateur final n’a pas à traiter une connexion MQTT mais doit servir de terminal de consultation.
 
L’ingestion, le traitement et la visualisation est a faire sur un serveur ou ton telephone va seulement prendre une page web.
 
Si tu tiens a avoir le traitement sur le telephone, pourquoi pas. Mais c’est pas un soucis MQTT que d’avoir des interruptions réseau. :)
Lermite Ben, chez moi, c'est quand même un peu tordu:
 
Le serveur est géré par Mosquitto tournant sur le PC qui me fait office de serveur.
 
Sur téléphone tourne MQTT Client avec Automate qui gère l'interface, mais aussi teste régulièrement le MQTT et kille puis relance MQTT Client si besoin, een l'occurrence s'il échoue à se reconnecter aaprès un changement de réseau (Wifi -> 4G par exemple, ou en sortie du mode avion).
 
Rien que le flow qui maintient le MQTT opérationel:
 
https://i.ibb.co/LdWskPd/MQTT-maint [...] nnel-2.png
M600 MQTT une usine? N’essayez jamais Kafka et autres MQ style RabbitMQ/IBM MQ [:tinostar]
 
MQTT c’est le niveau zéro des Pub/Sub qui existe et c’est conçu pour cette tache (iot) :D
Lermite J'ai opté pour le MQTT sur mon Shelly Uni.
C'est effectivement une usine à gaz mais qui permet que les données ne quittent pas mon LAN, alors que par défaut, le Shelly Uni fonctionne avec le cloud, ce qui impliquait que mes données transitent par un datacenter de Google à Bruxelles  :heink:  :pfff:
rat de combat MQTT = usine à gaz à mon avis. :o

 

Curieuse demande par ailleurs, c'est quoi comme recherche si c'est pas indiscrèt? :o

 

I2C à toute petite vitesse (quelque kHz) ça marche sur pas mal de distance, perso j'ai environ 20m de câbles (non blindés, non torsadés en plus) avec je crois 5kHz (projet perso!!). Mais en effet ça peut merder et si le bus est bloqué il faut tout réinitialiser... Par contre est-ce que les capteurs sont tous identiques / ont la même adresse ou pas?

 

Perso je dirais, avec les éléments que tu donnes et ma faible expérience perso, I2C depuis les capteurs jusqu'à un seul ESP32/Arduino/RaPI ou similaire ou une combinaison de tout ça et puis un truc similaire dans l'autre pièce branché au PC. Par contre tes capteurs il faudra les interroger systématiquement, à moins que ce soit des capteurs qui font maître I2C mais je ne pense pas que ça existe?? Après la partie I2C se fera au niveau du bidule (ESP ou autre) dans la pièce humide qui lui pourra envoyer les données quand bon lui semble / quand nécessaire.

 

Partir sur un truc avec un ESP32 par capteur, soit un "mesh" sans fil c'est chercher les ennuis je pense car il faut voir l'arbitrage, les collisions "on air" etc. EDIT: En fait non, pas pour le Wifi en tout cas, c'est géré par la norme/le protocole. :o

 

Sinon il y a aussi les fameux nRF24L01+, mais c'est pas si évident que ça à utiliser et surtout les modules sur Ali etc c'est pas toujours gagné, au contraire (déviations au niveau de la fréquence donc pas de liaison ou liaison instable).

Turkleton Ha oui effectivement, j'ai oublié de dire que mon serveur NodeJS et mes ESP utilisent le protocole MQTT pour communiquer, et c'est très bien comme ça :jap:
blacksad Dans cette configuration, on est d'accord qu'il faut que j'ajoute un routeur Wifi ?
Je ne peux pas faire ça avec juste mon PC et mes modules ESP32 ?
M600 MQTT et/ou InfluxDB en wifi.

 

eg:
https://w2.influxdata.com/wp-conten [...] iagram.png

blacksad En fait :  
- j'ai 6 cylindres placés dans une cuve de ~2m de diam, remplie d'eau.  
- les cylindres sont répartis dans la cuve
- chaque cylindre est fermé hermétiquement, il y a un passe-cloison pour l'alimentation electrique.
- il n'y a pas beaucoup de place dans les cylindres.
- on veut pouvoir ajouter/enlever des cylindres facilement
- dans chaque cylindre, il y a un capteur de CO2 et un capteur Humidité/Température qui communiquent tous les deux en I2C, et dont je veux récupérer les données.
- la cuve est dans une pièce hermétique thermostatée, très humide
- le PC qui centralise les données des capteurs est dans une pièce attenante (~5-10m à vol d'oiseau).  
- la cloison entre les deux pièces est perméable aux ondes a priori, pas d'effet de cage de Faraday (je vérifie ça in situ la semaine pro)
 
Partant de là, j'avais envisagé au départ un Arduino par cylindre, reliés au PC central en RS485, mais :
- Arduino + module MAX485 ça prend pas mal de place
- Faut faire passer le fil RS485 partout, y compris traverser la cloison, possible (il y a un passe cloison) mais chiant.
- J'ai déjà fait un truc similaire et j'ai eu des galères, certains modules MAX485 étaient daubés, l'adaptateur USB-RS485 me faisait des erreurs aléatoires (matos chinois apachèr, budget limité, recherche frônçaise môssieur), et de manière générale je ne maîtrise pas assez les histoires de câbles (impédance, résistances à mettre en bout de ligne, effet antenne, etc.) pour être capable de faire un truc vraiment correct.
 
J'ai aussi envisagé un seul arduino qui communiquerait avec tous les capteurs, connecté en RS232 au PC, mais le fil I2C serait trop long, je sens que ça va merder aussi.
Pis ya le pb de passer les cloisons des cylindres.
 
Donc j'ai fini par me dire que le sans fil c'est ptet pas si mal. Le module ESP32 fait tout (communication et lecture capteurs), n'est pas cher, le nombre de cylindre est facilement adaptable, pas de fils à faire passer (ni à travers la paroi des cylindres, ni celle de la pièce thermostatée)
 
Pour l'instant je n'ai pas vraiment besoin de remontée spontanée des modules des cylindres, ni même d'envoyer des commandes d'action PC->cylindre, mais si l'architecture marche bien pour ce projet, je l'utiliserai sans doute pour d'autres projets qui auront peut-être ce type de besoin.
 
Voilà voilà vous savez tout :o
rat de combat Attention, le Wifi est gourmand en énergie. Tes clients sont alimentés par batterie ou par câble? Dans le dernier cas et vu que tu dis "quelque mètres", pourquoi pas tirer des câbles? :o C'est beaucoup plus fiable... Si tu veux que tout le monde puisse parler spontanément on pourrait p.ex. partir sur une solution CAN, ça fait un minimum pro aussi. :o
 
Après tout dépend de l'usage exact (perso/pro, "critique" ou pas, ...) et si tu veux bricoler ou un truc tout fait.
blacksad C'est un peu mon plan B, acheter un routeur wifi à pas cher.
Il n'y a actuellement pas de LAN (ni box, ni routeur, ni ethernet, ni Wifi) là où je veux mettre mes ESP32.
 
Mais vu le peu de données à faire transiter, le Wifi me semblait un peu overkill, et je me disais qu'on devait pouvoir faire quelque chose avec du Bluetooth.
Turkleton Perso j'utilise des ESP8266 en wifi, relié à un serveur NodeJS, j'ai jamais eu de souci pour recevoir des messages "spontanés" ;)
blacksad Salut et bonne année au topic !
 
J'ai acheté plusieurs modules ESP32 (FireBeetle) pour faire de la connexion Bluetooth.
Dans mon idée ça devait marcher comme ça :
- 1 module est connecté à un PC et sert de "passerelle". Sur le PC tourne un programme Python qui communique avec le module via la liaison série.
- Les autres modules sont connectés chacun à des capteurs/actionneurs (température, pression, relais, LED, etc.), chaque module étant alimenté séparément ; ils sont distants de quelques mètres les uns des autres et du module "passerelle".
- Le but est de pouvoir, depuis le programme Python, récupérer les valeurs des capteurs et de déclencher des actions en fonction.
 
Dans mes premiers tests, j'ai mis le module [passerelle] en Client et les modules [capteurs/actionneurs] en Server.
Pour interagir avec un module [capteurs/actionneurs] je dois d'abord m'y connecter, lui envoyer un message, attendre la réponse et m'en déconnecter, mais ça veut dire que :
1. je ne peux pas recevoir de message "spontané" d'un module [capteurs/actionneurs]
2. il faut que j'attende le temps qu'il se connecte à chaque fois (~200ms, c'est trop long pour mon application).
 
Ce que je veux faire me semble somme toute assez classique, mais je n'arrive pas à une solution satisfaisante avec ce que j'ai sous la main (à la fois connaissances et matériel).
J'aimerai pouvoir établir une connexion avec tous mes modules [capteurs/actionneurs] simultanément et une bonne fois pour toutes.
J'ai l'impression que je ne suis pas parti dans la bonne direction  [:gratgrat]
rat de combat

Lermite a écrit :

L'interruption était de toute façon superflue pour détecter une action humaine très lente par rapport à la fréquence de scrutation de l'Arduino.

Tout à fait. La méthode du debounce en software est la bonne je pense.

Lermite Merci pour ces précisions instructives mais si mes capas se sont finalement avérées pas assez efficaces dans le sens où j'avais encore des déclenchements intempestifs, j'ai résolu le problème via le code.
 
Au lieu de détecter l'appui par une interruption détectant le front montant, j'ai laissé tombé l'interruption pour tout gérer dans la boucle loop qui ne prend en compte un appui supposé que s'il est maintenu au moins 200 ms.
Cette bidouille-ci semble fonctionner parfaitement et au pire je peux toujours ajuster la durée minimale de l'appui.
 
L'interruption était de toute façon superflue pour détecter une action humaine très lente par rapport à la fréquence de scrutation de l'Arduino.
rat de combat Il est beau ton sapin den Noel. :lol:  
 
Concernant ces condos: En effet ça aide, mais il faut être prudent:
-Pour des signaux rapides un condensateur va plus ou moins pourir le signal, à voir selon la capacité et la fréquence (en gardant en tête les séries de Fourier, autrement dit un signal rectangulaire de fréquence f a une bande passante en théorie infinie, en pratique on peut compter 10*f). J'avais posté un tracé d'oscillo il y a quelque jours sur blabla où une capa de seulement 2,x nF pourrissait complètement une liaison série.
-Un câble long fait antenne ce qui peut aussi créer des pics de tension, si on veut être prudent (selon la longeur et l'environnement, ...) il vaut mieux mettre une résistance et des diodes de protection supplémentaires (il existe des diodes doubles à faible capacité prévues pour ça) et éventuellement un condo (voir 1er point).

Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR