Comment connecter deux Arduino sans blindages?

14

Je prévois un système Arduino qui se compose de plusieurs cartes Arduino. La distance maximale entre les planches est d'environ 50 mètres. Je veux envoyer des données de base entre celles-ci, comme des chaînes courtes ou des entiers. Je sais que je pourrais envoyer des données via des câbles Ethernet, mais cela nécessite un blindage Ethernet ou la carte Ethernet Arduino qui double les coûts. Existe-t-il un moyen à petit budget de connecter les cartes en utilisant uniquement les cartes les plus élémentaires (comme Uno) et certains autres composants, mais pas un bouclier complet?

totymedli
la source
Si le budget n'était pas un problème, vous pouvez utiliser des puces Bluetooth ou xbee. Ils ne sont pas trop mauvais, mais
coûteront
@ Steven10172 Les appareils Bluetooth sont pratiques, mais il semble que l'OP veuille une solution bon marché sans boucliers (profil bas peut-être?)
Pingouin anonyme
3
Assurez- vous de connecter le terrain si votre moyen de transfert est l'électricité !!!
Anonymous Penguin

Réponses:

9

Pour une communication filaire longue distance, regardez RS-485 .

Puisqu'il utilise une ligne équilibrée différentielle sur une paire torsadée (comme RS-422), il peut couvrir des distances relativement grandes (jusqu'à 4 000 pieds (1 200 m)). En règle générale, la vitesse en bit / s multipliée par la longueur en mètres ne doit pas dépasser 108. Ainsi, un câble de 50 mètres ne doit pas signaler plus vite que 2 Mbit / s

Vous pouvez utiliser la puce MAX485. C'est assez facile à utiliser, mais il y a aussi une bonne bibliothèque:

https://github.com/Protoneer/RS485-Arduino-Library

sachleen
la source
Ne pourrait-il pas simplement dénuder les fils en RS-485 ou similaire et simplement l'utiliser pour la série pour économiser de l'argent? 9600 bauds ne fonctionne pas presque aussi vite que 2 MBPS. Y a-t-il quelque chose de spécial dans le protocole / les tensions / etc. qui le rend approprié pour de longues distances? Cela pourrait économiser de l'argent ...
Anonymous Penguin
C'est un signal différentiel envoyé sur une paire torsadée. Réduit le bruit. en.wikipedia.org/wiki/Differential_signaling
sachleen
Cette page est une excellente ressource sur RS485 avec Arduino gammon.com.au/forum/?id=11428
DaveP
7

Il y a deux catégories auxquelles je peux penser pour classer les fonctionnalités de communication des cartes Arduino:

Entre 2 appareils:

  • Série: facile à utiliser et ne nécessite que 2 lignes de données.
  • OneWire: plus difficile à utiliser et lent, mais utilise une seule ligne de données

Entre plus de 2 appareils

  • I2C: Vous pouvez avoir jusqu'à 128 appareils sur un réseau, adressables individuellement, mais nécessite un appareil maître, utilise 2 lignes de données. c'est aussi connu comme fil.
  • SPI: difficile à utiliser, mais sélection d'appareil très rapide et facile. utilise beaucoup de lignes de données (3 + nombre d'appareils)
  • OneWire: l'utilisation de oneWire adressé est encore plus lente que oneWire ordinaire, toujours une seule ligne de données
  • SoftwareSerial: Vous pouvez avoir plusieurs appareils connectés par différentes lignes série, mais c'est plus lent.
  • CAN: uniquement disponible sur l'échéance et adressable

Il existe d'autres méthodes disponibles, mais celles répertoriées ne nécessitent qu'un minimum de matériel externe.

Pour les cotes de distance, voir http://forum.arduino.cc/index.php?topic=82937.0 et http://www.tldp.org/HOWTO/Remote-Serial-Console-HOWTO/serial-distance.html

Ces débits de données sont directement contrôlés en série et peuvent être modifiés dans de nombreux autres.

Le docteur
la source
5

Freakduino fabrique des cartes Arduino avec sans fil intégré. Leur longue portée sans fil est de 900 MHz et leur courte portée est de 2,4 GHz. Je pense que ce sont en fait des radios XBee et pour la programmation, vous utiliseriez une bibliothèque appelée chibiArduino, qui est disponible (et documentée) sur le site Web de Freakduino. Lorsque vous communiquez sans fil avec une autre radio, vous pouvez utiliser Broadcast ou spécifier une radio par son ID, une valeur que vous devez définir dans l'EEPROM du Freakduino.

Tiré directement du site Freakduino:

L'ajout d'une radio sans fil intégrée basée sur le protocole IEEE 802.15.4 (même protocole radio que le XBee) permet le contrôle sans fil des appareils ou la collecte de données de capteurs sans fil. Un circuit de batterie en option a été ajouté afin qu'il puisse fonctionner comme un véritable nœud sans fil sans aucun câble d'alimentation externe. La carte est également conçue pour s'adapter à un boîtier robuste afin que la conception puisse être transportée en toute sécurité ou déployée dans un scénario d'utilisation réel sans se soucier d'endommager les circuits.

Cette radio à 900 MHz est une de mes préférées. Je l'utilise tout le temps car 900 MHz offre une bien meilleure portée que 2,4 GHz. La radio peut émettre jusqu'à 10 mW de puissance d'émission, ce qui peut obtenir une portée surprenante. En vue directe, quelques centaines de mètres ne seraient pas surprenants. Si une plage supplémentaire est nécessaire, le mode de modulation peut également être modifié de OQPSK à BPSK. Il en résulte une portée supplémentaire au détriment du débit de données, le maximum passant de 250 kbps à 40 kbps en mode standard.

HK1
la source
0

Comme vous l'avez dit, les blindages Ethernet sont chers, mais vous n'avez pas besoin d'utiliser le blindage. Consultez l' enc28j60 pour la mise en réseau filaire, ou l' ESP8266 si vous préférez le sans fil. Les deux coûtent environ 4 USD. J'utilise l'ESP8266 maintenant et j'ai environ 8 appareils qui se parlent et un Raspberry Pi. C'est vraiment une super petite puce! Je ne peux pas parler personnellement à l'ENC28j60, car ils sont toujours assis dans le paquet sur mon bureau.

Beurres
la source
0

Vous pouvez utiliser une carte de dérivation Ethernet (2 $ chez Sparkfun). Cela vous permet d'utiliser les câbles Ethernet, mais vous n'avez pas besoin d'utiliser un protocole TCP / IP complet, au lieu de cela, vous pouvez simplement connecter des broches de données à la carte de dérivation, utiliser Ethernet pour les connecter, puis les faire parler en série. J'utilise beaucoup cela pour placer des capteurs à un fil plus loin de l'Arduino pour une connexion solide mais pas cher.

Nathan
la source