Réseau fibre optique minimal : Différence entre versions
(→Le bridge) |
|||
(23 révisions intermédiaires par un autre utilisateur non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
{{Projet | {{Projet | ||
− | |status= | + | |status=Experimental |
− | + | |image=Fiber.connector.jpg | |
|name=Réseau fibre optique minimal | |name=Réseau fibre optique minimal | ||
|description=un mini réseau avec de la fibre de récupération | |description=un mini réseau avec de la fibre de récupération | ||
− | |license= CC-by-sa-3.0 | + | |license=CC-by-sa-3.0 |
− | |||
|contributeurs=Cedric | |contributeurs=Cedric | ||
|inspiration=http://academy.cba.mit.edu/classes/networking_communications/index.html | |inspiration=http://academy.cba.mit.edu/classes/networking_communications/index.html | ||
+ | |ingrédients=electronique, fibre optique | ||
}} | }} | ||
− | |||
− | |||
==Résumé== | ==Résumé== | ||
Ligne 69 : | Ligne 67 : | ||
Pour ce premier essai, je ne fait dialoguer que deux unités. | Pour ce premier essai, je ne fait dialoguer que deux unités. | ||
+ | [[image:Fiber.bus.45.node.board.png|500px]] | ||
+ | |||
+ | [[image:Fiber.bus.45.node.traces.png|250px]] | ||
+ | [[image:Fiber.bus.45.node.interior.png|250px]] | ||
+ | |||
+ | |||
+ | [[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 : | ||
+ | |||
+ | [[Fichier: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. | ||
+ | |||
+ | [[image:Fiber.milled.pcbs.jpg|700px]] | ||
+ | |||
+ | |||
+ | ===soudure=== | ||
+ | |||
+ | je suis maintenant plus à l'aise avec les CMS | ||
+ | |||
+ | [[image:Fiber.components.jpg|500px]] | ||
+ | |||
+ | 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 | ||
+ | |||
+ | [[image:Fiber.connector.jpg|700px]] | ||
+ | |||
+ | le connecteur est fixé à la colle chaude : ça suffira pour les tests | ||
+ | |||
+ | [[image:Fiber.connection.jpg|700px]] | ||
+ | |||
+ | ==code== | ||
+ | |||
+ | j'ai simplement repris le code de [http://academy.cba.mit.edu/classes/networking_communications/bus/hello.bus.45.c 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 : [http://academy.cba.mit.edu/classes/embedded_programming/term.py term.py] | ||
+ | |||
+ | <code lang=bash>python term.py /dev/ttyUSB0 9600</code> | ||
+ | |||
+ | |||
+ | ===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 | ||
+ | |||
+ | {{#Widget:Vimeo|id=93264367}} | ||
+ | |||
+ | 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 : | ||
+ | |||
+ | <gallery> | ||
+ | Fiber.rx.0.png|0 : 00000000 | ||
+ | Fiber.rx.1.png|1 : 00000001 | ||
+ | Fiber.rx.2.png|2 : 00000010 | ||
+ | Fiber.rx.3.png|3 : 00000011 | ||
+ | Fiber.rx.4.png|4 : 00000100 | ||
+ | Fiber.rx.5.png|5 : 00000101 | ||
+ | Fiber.rx.6.png|6 : 00000110 | ||
+ | Fiber.rx.7.png|7 : 00000111 | ||
+ | Fiber.rx.8.png|8 : 00001000 | ||
+ | </gallery> | ||
+ | |||
+ | [[image:Fiber.rx.5.vs.serial.png|300px]] | ||
+ | |||
+ | 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 | ||
[[Catégorie:FabAcademy]] | [[Catégorie:FabAcademy]] |
Version actuelle en date du 19 juin 2014 à 10:01
un mini réseau avec de la fibre de récupération
Contributeur·ice·s
Statut du projet
Experimental
Statut de la publication
License
CC-by-sa-3.0
Fichiers source
Machines
Matériaux
Lien
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)
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
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.
support de fibres
pour tenir les fibres devant les composants, je vais tailler une plaque de plexi noire à la découpe laser :
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.
soudure
je suis maintenant plus à l'aise avec les CMS
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
le connecteur est fixé à la colle chaude : ça suffira pour les tests
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
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 :
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