communication entre deux arduinos par ultrason

Bonjour à tous,

Je viens au prés de vous pour savoir si c'est possible de transférer des informations entre deux arduinos par ultrason (émetteur - récepteur).

Merci,

Tout est possible. Le débit sera plutôt faible enfin cela va dépendre de la fréquence des ultrasons.
Le problème va être de trouver le matériel pour assurer la transmission/réception.

Pouvez vous préciser
a) quels sont vos émetteurs/récepteurs (ils ont bien un nom, un lien internet)
b) si vous avez déjà tenté quelque chose (si vous n'avez rien tenté, je crains que la réponse la plus gentille sera "osez")
edité: fdufnews a fait une réponse plus "gentille" et très raisonnable
fin de édité
c) qu'est ce que vous avez tenté (essayer de transmettre "U" -si vous avez un oscilloscope, est facile à reconnaître une fois démodulé? essayé de transmettre n'importe quel caractère? le recevez vous?)

fdufnews:
Tout est possible. Le débit sera plutôt faible enfin cela va dépendre de la fréquence des ultrasons.
Le problème va être de trouver le matériel pour assurer la transmission/réception.

Pour l'instant le débit n'est pas trop important, je vais travailler avec 30Khz ou 40 kHz.
le matériel aussi j'y pense mais vu que c'est pour des essais (environ 5m ou plus) ça ne devrait pas être trop difficile.

30 ou 40 khz, c'est la porteuse (ça pourrait être une télécommande IR aussi).

Le débit est le nombre de bits par seconde que vous espèrez recevoir (il faut bien trouver une façon de différencier les un des zeros). Ce n'est pas la même chose que la fréquence de la porteuse..

Il y a aussi un point qui posera problème, à therme: souhaitez vous une fiabilité médiocre, ou une certaine résistance aux erreurs de transmission? (il faut y penser peut être dès maintenant)

dbrion06:
Pouvez vous préciser
a) quels sont vos émetteurs/récepteurs (ils ont bien un nom, un lien internet)
b) si vous avez déjà tenté quelque chose (si vous n'avez rien tenté, je crains que la réponse la plus gentille sera "osez")
edité: fdufnews a fait une réponse plus "gentille" et très raisonnable
fin de édité
c) qu'est ce que vous avez tenté (essayer de transmettre "U" -si vous avez un oscilloscope, est facile à reconnaître une fois démodulé? essayé de transmettre n'importe quel caractère? le recevez vous?)

j'ai rien essayé pour l'instant car j'aimerai savoir si c'est possible avant de commencer.
Emetteur = arduino + ultrason.
Recepteur = arduino + ultrason.

L'objectif c'est de transférer des données d'un capteur MPU sur l'autre arduino.

Je veux le maximum de débit possible avec ce technologie car je veux recevoir des données d'un MPU toutes les secondes.

c'est à dire que vous avez un émetteur et un récepteur (pas deux émetteurs récepteurs).
D'un point de vue logiciel, ça me semble très faisable (mais plutôt lent) avec une bibliothèque comme virtualWire
; il faut que l'émetteur soit modulable par des 0 et des 1 -ce qui n'est pas très compliqué- et que le récepteur reçoive des impulsions (des niveaux logiques- ce qui est plus compliqué si c'est purement matériel. (les radios ont un recepteur avec un contrôleur de gain, qui permet de s'adapter à des éloignements variables)

L'autre solution (utiliser le CAN (voltmètre) de l'arduino pour démoduler implique d'echantillonner très vite (le maximum à 10 bits est de ca 100 us: l'échantillonnage analogique pour les ultra sons est au plus de 20 us...)
Une troisième solution consisterait à tricher en regardant comment marchent les capteurs de distance à US ... ont certainement, a priori, une forme de contrôleur de gain...)

dbrion06:
c'est à dire que vous avez un émetteur et un récepteur (pas deux émetteurs récepteurs).
D'un point de vue logiciel, ça me semble très faisable (mais plutôt lent) avec une bibliothèque comme virtualWire
; il faut que l'émetteur soit modulable par des 0 et des 1 -ce qui n'est pas très compliqué- et que le récepteur reçoive des impulsions (des niveaux logiques- ce qui est plus compliqué si c'est purement matériel. (les radios ont un recepteur avec un contrôleur de gain, qui permet de s'adapter à des éloignements variables)

L'autre solution (utiliser le CAN (voltmètre) de l'arduino pour démoduler implique d'echantillonner très vite (le maximum à 10 bits est de ca 100 us: l'échantillonnage analogique pour les ultra sons est au plus de 20 us...)
Une troisième solution consisterait à tricher en regardant comment marchent les capteurs de distance à US ... ont certainement, a priori, une forme de contrôleur de gain...)

Après la modulation dans l'émetteur on aura pas besoin d'un CNA avant de l'envoyer dans le transducteur car je ne sais pas si ces capteurs sont alimentés en fonctionnent en numérique ou analogique.
Le capteur ( RS PRO 237-0799).

kht_bbt:
Pour l'instant le débit n'est pas trop important, je vais travailler avec 30Khz ou 40 kHz.

30kHz c'est la porteuse. Compter au moins un rapport 10 entre la porteuse et la modulation. Donc ne pas espérer un débit supérieur à 2400baud/s (ce sera peut-être même trop rapide).
La puissance varie avec le carré de la distance donc 5m c'est déjà pas mal pour les petits émetteurs/récepteurs que l'on trouve dans le commerce.
Il va falloir faire le circuit de modulation. Il faut éviter de moduler en tout ou rien car les émetteurs ultrason fonctionnent à leur fréquence de résonance et ils ont donc tendance à auto-osciller à leur fréquence propre lorsqu'on coupe la modulation.

[edit] là tu es complètement dans le monde analogique

Je veux le maximum de débit possible avec ce technologie car je veux recevoir des données d'un MPU toutes les secondes.

Je vais faire un calcul ultra optimiste (au point de risquer le ridicule):
um MPU ayant 10 degrés de liberté necessitera de transmettre 12 valeurs (une pour signaler le début d'un tas de mesures -une valeur que le MPU ne sort jamais-, 10 autres valeurs, une pour signaler qu'on a fini les valeurs)
Chaque valeur peut être codée sur 4 octets (des floats ou des données brutes de certains). Chaque seconde, il vous faut transmettre 412 48 caractères, soit du 488, ca 400 bauds : ce n'est pas énorme, et assez loin de la fréquence de la porteuse. RFlink, pour des raisons de fiabilité et pour faire fonctionner le CAG, double pratiquement le nombre de bits (ce qui devient ennuyeux).

Le problème, avec cette transmission telle que je l'ai décrite, c'est qu'elle est très peu fiable, et difficile à dépanner (j'ai évoqué un oscilloscope parce que ça ne gâcherait rien si vous en aviez et sachiez vous en servir)

Bon fdufnews vient de doucher mon enthousiasme concernant l'émission (j'espèrais que au moins l'émission pourrait être en tout ou rien).
Pour la réception, votre capteur est un micro tout nu, donné pour au maximum 4 mètres; il vous faudra donc faire tout le traitement du signal, soit en analogique, soit avec un processeur ayant un CAN/ADC/voltmètre meilleur (plus rapide et ayant peut être plus de bits) qu'un avr-arduino ....
edité: le fait que ces capteurs soient directionnels (légèrement) est plutôt, dans ce cas, un handicap : aucun des protagonistes ne sait où est son interlocuteur, et n'a les moyens d'orienter son oreille/ sa bouche, ...

fdufnews:
30kHz c'est la porteuse. Compter au moins un rapport 10 entre la porteuse et la modulation. Donc ne pas espérer un débit supérieur à 2400baud/s (ce sera peut-être même trop rapide).
La puissance varie avec le carré de la distance donc 5m c'est déjà pas mal pour les petits émetteurs/récepteurs que l'on trouve dans le commerce.
Il va falloir faire le circuit de modulation. Il faut éviter de moduler en tout ou rien car les émetteurs ultrason fonctionnent à leur fréquence de résonance et ils ont donc tendance à auto-osciller à leur fréquence propre lorsqu'on coupe la modulation.

[edit] là tu es complètement dans le monde analogique

" La puissance varie avec le carré de la distance donc 5m " Je n'ai pas compris ça.
Pour la modulation, je suis entrain de chercher un circuit intégré pour gagner en taille. :o :o :confused:

Mais la lecture des données du MPU peut être fait avec l'arduino puis on utilise 2 circuits intégrés, l'un pour la modulation et l'autre pour l'ampli de puissance.

Attendez, on n'en est pas encore là: j'ai l'impression que votre problème est assez compliqué (et original) et il ne faut peut être pas sauter tout de suite sur votre carte de crédit: sachant que ça peut vous prendre un mois ou deux de soucis (alors que des radio à base de nrF sont bien documentées, pas chères et fiables), ne serait il pas utile d'attendre d'autres (in)validations?

dbrion06:
Attendez, on n'en est pas encore là: j'ai l'impression que votre problème est assez compliqué (et original) et il ne faut peut être pas sauter tout de suite sur votre carte de crédit: sachant que ça peut vous prendre un mois ou deux de soucis (alors que des radio à base de nrF sont bien documentées, pas chères et fiables), ne serait il pas utile d'attendre d'autres (in)validations?

Et une autre question est ce possible de modifier le programme de la bibliothèque virtualwire pour l'adapter à mon projet ?

La réponse à cette question est triviale: oui (c'est faisable; est ce souhaitable).
Il faut que vous soyez conscient que cette bibliothèque est conçue pour travailler avec des radios en modulation d'amplitude munies, côté récepteur, d'un contrôleur de gain (il faut recodes des caractères pour transmettre des suites de bits garantissant une puissance à peu près constante; sinon, le contrîleur de gain, qui augmente le gain quand le signal est faible, génèrerait des bizarreies ex : que se passe-t-il quand vous ne transmettez que \0 en environnement parasité?).
€dité: je rajoute un lien définissant un contrôleur automatique de gain Automatic gain control - Wikipedia

A la différence des radios -qui ne sont déjà pas simples- , votre emetteur a tendance à surosciller (fdufnews) , ce qui peut encore compliquer les choses: peut être qu'il faudrait envisager un codage, non en modulation d'amplitude par tout ou rien, mais regénérant l'horloge (mettons au moins 20 tops à 40 khz pour démarrer -20 pour 0, 40 pour 1- et un silence ; s'il y a 5 tops parasites, vous pouvez encore tenter de discriminer le 0 du 1). Mais ceci va vous demander des experimentations très longues... (c'est pour ça que je vous ai demandé si vous avierz un oscilloscope, si vous savez vous en servir, et si vous avez du temps)

dbrion06:
La réponse à cette question est triviale: oui (c'est faisable; est ce souhaitable).
Il faut que vous soyez conscient que cette bibliothèque est conçue pour travailler avec des radios en modulation d'amplitude munies, côté récepteur, d'un contrôleur de gain (il faut recodes des caractères pour transmettre des suites de bits garantissant une puissance à peu près constante; sinon, le contrîleur de gain, qui augmente le gain quand le signal est faible, génèrerait des bizarreies ex : que se passe-t-il quand vous ne transmettez que \0 en environnement parasité?).
€dité: je rajoute un lien définissant un contrôleur automatique de gain Automatic gain control - Wikipedia

A la différence des radios -qui ne sont déjà pas simples- , votre emetteur a tendance à surosciller (fdufnews) , ce qui peut encore compliquer les choses: peut être qu'il faudrait envisager un codage, non en modulation d'amplitude par tout ou rien, mais regénérant l'horloge (mettons au moins 20 tops à 40 khz pour démarrer -20 pour 0, 40 pour 1- et un silence ; s'il y a 5 tops parasites, vous pouvez encore tenter de discriminer le 0 du 1). Mais ceci va vous demander des experimentations très longues... (c'est pour ça que je vous ai demandé si vous avierz un oscilloscope, si vous savez vous en servir, et si vous avez du temps)

Désolé j'étais un peu pris ce temps ci. Pour la partie soft j'ai l'idée de crée un autre port série pour envoyer les données reçues du MPU déja traité par l'arduino. Je ne sais pas si c'est faisable ou pas.

On peut savoir pourquoi UltraSon versus un classique 433Mhz ?

Un classique 433 Mhz implique de recoder les caractères pour que le CAG... qui est fourni avec les récepteurs soit en mesure de fonctionner (puissance radio en 1/(d**2); comme la puissance décroît de la même façon avec les ultrasons, j'ai bien peur qu'il faille aussi un CAG dans la partie analogique (ou un autre processeur, rapide, pour faire -entre autres- un CAG numérique).