Réseau fibre optique minimal

De fablabo



Résumé

Le sujet de la semaine à la fabacademy est Le réseau : il faut réaliser une liaison réseau entre deux microcontrôleurs.

Je vais essayer, en partant de l'exemple "serial asynchronous" de faire un réseau minimaliste avec de la fibre optique de récupération que nous a donné un adhérent.

Autrement dit, transformer les signaux RX et TX de la liaison série en signaux lumineux à l'aide d'une led infrarouge et d'une photorésistance.


Conception du circuit

je vais reprendre la majeure partie du circuit de communication série, mais en remplaçant les connections électriques par

  • une led infrarouge pour émettre datasheet
  • un phototransistor infrarouge pour recevoir optek OP580

Comme je n'ai pas encore de prisme pour envoyer et recevoir dans la même fibre. je vais donc fixer deux fibres (une aller, une retour)


résistance pour la led infrarouge

selon son datasheet, sa tension nominale est de 1.55v avec un courant de 50mA

donc, en 5V :

R = (5-1.55) / 0.05 = 69 Ohm

la valeur la plus proche dans le fabinventory est 100Ohms

principe de fonctionnement

Par rapport à l'exemple de base, les communications série sont simplement répliquées optiquement à l'aide la led et de de la photorésistance.

je reprendrais le code de la communication série (en inversant les entrées et sorties sur le noeud)


Fibernetwork sketch.png

si j'avais à ma disposition des prismes, j'aurais put faire transiter les communications dans les deux sens dans la même fibre, mais pour le moment, je vais me contenter de deux fibres unidirectionnelles.

Le bridge

c'est le noeud connecté à l'ordinateur avec une liaison FTDI

Fiber.bus.45.bridge.board.png

Fiber.bus.45.bridge.traces.pngFiber.bus.45.bridge.interior.png

Fichier:Fiber.bus.45.bridge.cad

Le noeud

c'est le noeud distant.

Pour l'instant, en l'état, le réseau n'est pas extensible, car les noeuds devraient répliquer le signal pour les suivants, avec une autre paire de led/phototransistor.

Pour ce premier essai, je ne fait dialoguer que deux unités.

Fiber.bus.45.node.board.png

Fiber.bus.45.node.traces.png Fiber.bus.45.node.interior.png


Fichier:Fiber.bus.45.node.cad

support de fibres

pour tenir les fibres devant les composants, je vais tailler une plaque de plexi noire à la découpe laser :

Fiber.bus.cache.svg


fabrication

fraisage

Après avoir fraisé le premier circuit, lors de la découpe, la plaque a bougé car j'avais utilisé un scotch de mauvaise qualité.

Pour rattraper l'erreur, j'ai fait une découpe légèrement plus large pour éviter de détruire le circuit en cas de défaut d'alignement.

Le résultat est un peu moins joli, mais est fonctionnel.

Fiber.milled.pcbs.jpg


soudure

je suis maintenant plus à l'aise avec les CMS

Fiber.components.jpg

j'ai du rajouter des fils pour alimenter le noeud.


connection fibre

j'ai réalisé de petits connecteurs en plexiglass noir pour enficher les fibres

Fiber.connector.jpg

le connecteur est fixé à la colle chaude : ça suffira pour les tests

Fiber.connection.jpg

code

j'ai simplement repris le code de l'exemple serial.

à l'identique pour le bridge, j'ai inversé les entrées et sorties pour le noeud


tests

j'ai utilisé le terminal python de neil : term.py

  1. python term.py /dev/ttyUSB0 9600


le bridge

Le bridge ne répond pas du tout comme je l'aurais souhaité : quand j'envoie "0" dans le terminal, la led s'allume mais reste allumée, et je n'ai pas de message en retour.

je suppose que les composants que j'ai rajouté sur la ligne de communication interfèrent

le noeud

Lui par contre réagit correctement

du moins la led s'allume-t-elle lorsqu'on envoie un 0 ou ...un 8 (alors que le code implémente que jusquà 7...)

c'est bizarre car j'ai indexé le noeud à "1" : je suppose que le temps de réponse du phototransistor n'y est pas pour rien : "rise and fall time = 15us"

dans le code le bit_delay_time=100us

pas de réponse dans le terminal .

J'ai mesuré à l'oscillo la tension du pin d'entrée , en fonction des nombres envoyés par le port série :

Fiber.rx.5.vs.serial.png

Le signal reçu supperposé au signal série envoyé confirme mes soupçons : le temps de réaction du transistor et/ou de la led sont trop longs