Pages: 1 ... 6 7 [8] 9   Go Down
Author Topic: WR703N + VinciDuino  (Read 19966 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Un sacré travail. Bravo !
Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Et ben il fait pas les choses à moitié Squonk42 smiley-mr-green
smiley-eek ça laisse sans voix ...
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
Faraday Member
**
Karma: 33
Posts: 4964
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

bonsoir
ha oui quand meme !
clap-clap  smiley-mr-green

Juste par curiosité squonk42, tu a utilisé quel soft pour "reproduire" le PCB ?
Logged

Bordeaux, France
Offline Offline
Jr. Member
**
Karma: 3
Posts: 81
L'espoir fait vivre / tant qu'il y a de la vie, il y a de l'espoir
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonsoir à tous !

Je pensais peut-être rajouter une section "How?"  smiley-mr-green

J'ai utilisé les images en haute résolution du PCB nu prises par Kean.

Les photos ont été prises avec un APN 8 Mpx, soit 2.8 Mpx en X ou en Y. Sachant que le PCB fait 4,7 cm x 4,7 cm ou un peu moins de 2 pouces x 2 pouces, cela fait pas loin de 1.5 Mpx/pouce, bien mieux que ce que l'on peut espérer avec on scanner à plat à 1200 x 2400 dpi...

Bon, après, le problème, c'est que l'image n'est pas parfaite : il y a un effet de perspective (les bords du PCB ne sont pas // entre eux et encore moins // avec les bords de l'image), il faut donc corriger les 2 images (dessus/dessous du PCB) avec un programme genre PS ou Gimp avec la fonction idoine.

Ensuite, l'image n'a pas forcément des pixels "carrés", et son échelle en X et Y est a priori inconnue... Il faut donc trouver un repère de dimensions connues en X et Y, ici le circuit U1 (AR9331) ou U2 (SDRAM). Avoir un composants avec beaucoup de pattes et plutôt gros est important, car l'image n'est peut-être pas non plus avec une échelle constante partout (phénomène de type "barrique" lié à la lentille en mode macro). Il faut donc mettre à l'échelle séparément en X et en Y pour retrouver des pixels "carrés" et contrôler que c'est le cas dans un maximum d'endroits dans l'image, toujours en se basant sur des dimensions de composants connus.

Une fois ceci réalisé, il faut aligner le dessus/dessous pour que les trous, vias et le contour du PCB coïncident. J'utilise le mode "déformation de la marionnette" de PS avec les 2 images placées sur 2 couches avec de la transparence. Ce mode permet de placer des aiguilles et de les déplacer pour déformer localement une couche/l'autre. On commence par les 4 coins, puis on rajoute des aiguilles entre lorsqu'il y en a besoin, jusqu'à obtenir la superposition parfaite.

Il faut ensuite lancer EagleCAD (le logiciel de CAO électronique utilisé) et créer un fichier de PCB contenant un des composants présents sur la carte (de préférence un gros...), que l'on prend dans une bibliothèque existante ou que l'on crée à demeure. La création des composants est une opération longue et pénible si on n'a pas trop l'habitude. Avec un peu d'entraînement, cela devient presque facile  smiley-sweat

Il faut alors mettre le PCB EagleCAD en plein écran et en transparence pour mettre à l'échelle les images pour que cela corresponde parfaitement avec les composants EagleCAD. Pour cela, j'utilise sous XP l'utilitaire Glass2K pour rendre les fenêtres plus ou moins transparentes. Il faut s'arranger pour que que la taille de l'image bitmap à une échelle simple (comme 25%), corresponde à la taille du PCB EagleCAD en plein écran. Si on règle le facteur de zoom d'EaglCAD sur 2, on peut alors zoomer l'image à 50%/100%/200% et le PCB EagleCAD presque simultanément pour voir les détails.

Enfin, il faut créer, puis placer tous les composants précisément, puis recréer toutes les pistes entre... Dernière touche, créer les plans de masse et d'alimentation, en créant au passage des "classes" de pistes qui ont des tolérances d'espacement/plans plus ou moins importantes (les pistes "RF" sons plus éloignées des plans de masses que les simples pistes) : c'est alors automatiquement géré par EagleCAD.

C'est quand même beaucoup de boulot  smiley


* Reverse-with-EagleCad-and-Photoshop.jpg (1027.88 KB, 1683x1050 - viewed 57 times.)

* Reverse-with-EagleCad-and-Photoshop2.jpg (997.47 KB, 1677x1050 - viewed 57 times.)
Logged

France
Offline Offline
God Member
*****
Karma: 4
Posts: 971
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
C'est quand même beaucoup de boulot  smiley
beaucoup de boulot astucieux et efficace ..... ça fait la différence !!
Logged

Offline Offline
Faraday Member
**
Karma: 33
Posts: 4964
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

...
C'est quand même beaucoup de boulot  smiley
Merci pour avoir détaillé ta manip
J'imagine facilement le temps passé sur les "points de détails"

en tous cas et pour ce qui me concerne , respect pour le "boulot"  smiley-cool
« Last Edit: October 15, 2012, 01:37:42 am by Jean-François » Logged

Bordeaux, France
Offline Offline
Jr. Member
**
Karma: 3
Posts: 81
L'espoir fait vivre / tant qu'il y a de la vie, il y a de l'espoir
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci Jean-François!

Je disais donc: voici enfin le schéma du TL-WR703N reconstitué presque intégralement :



 smiley-sweat

Le schéma n'est pas complet, car il est basé uniquement sur l'observation des couches externes. Les marqueurs 0-9/A-Q encerclés dans le schéma sont des vias qui vont vers les couches internes, et ils correspondent aux étiquettes sur les routages PCBs dessus/dessous. Si quelqu'un veux participer, c'est possible smiley-wink

Mais tel quel, le schéma est déjà très intéressant. En se servant du cadre de localisation externe du schéma, on voit :
  • qu'il y a de nombreuses broches inutilisées sur l'AR9331, mais que toutes ne sont pas des GPIOs. Certaines on une fonction dédiée, comme la seconde interface RF connectée à GND dans la zone G4, ou les ports Ethernet additionnels dans la zone D4
  • qu'il y a des GPIOs inutilisées qui le sont sur d'autres modèles TP-Link (MR3020) dans la zone D5, mais qu'elles ne sont pas accessibles car localisées sous le chip AR9331
  • que les seules GPIOs disponibles sont celles que nous connaissons déjà: celles en E3 : GPIO11 (RESET_SW), GPIO7, GPIO6 (LDO, qui est en fait !USB_OC pour l'indicateur de sur-courant USB), GPIO29, GPIO8 (USB_POWER) et GPIO27 (LED3); celles localisées en G4-5: GPIO28, GPIO13 to GPIO17, GPIO0, GPIO1 et bien sûr les pads de l'UART LVTTL TP_IN/TP_OUT
  • que la plupart de ces GPIOs sont connectées à GND ou VCC par des résistances de pull-up/pull-down, et qu'elles sont utilisées au démarrage comme switch de configuration, et qu'on ne peut donc les mettre dans l'état opposé, au moins pendant cette phase initiale. C'est pourquoi j'ai tenté de le faire et regardé si le WR703N bootait toujours smiley-razz

C'est le deuxième endroit où on peut encore découvrir des choses intéressantes : en lisant les sources du noyau modifié par Atheros, on trouve des indications qui laissent à penser qu'il est possible :
  • de booter sur le bus MDIO, peut-être aussi depuis l'USB... Le démarrage en USB en mode DFU permettrait de récupérer un WR703N "brické", par exemple
  • d'overclocker le quartz 25 MHz à 40 MHz
  • de mettre l'USB en mode host ou device
  • de booter soit normalement depuis le SPI, soit depuis une ROM interne (boot USB ?)
  • de choisir une SDRAM SDR/DDR1/DDR2

Mais en regardant attentivement le schéma, il y a des choses qui sont d'ores et déjà possibles :
  • on peut souder une antenne en enlevant J1 et en soudant l'antenne côté chip avec le gros pad de masse juste à côté pour le blindage
  • en mettant un gros pâté de soudure à la place de R113 qui n'est pas montée, on court-circuite le switch d'alimentation et de protection en sur-courant USB, permettant ainsi d'alimenter le WR703N par le port USB hôte
  • en enlevant R65/R68, on accède aux paires Ethernet 1/2 et 4/5 pour alimenter le WR703N en PoE
  • en désactivant l'USB dans le noyau et en pilotant le signal USB_POWER en tant que GPIO, on peut alimenter qqchose connecté sur le port USB hôte avec VBUS/GND, comme un relais "solid state" pour piloter une charge alimentée par le 220 V...

Bref, il y a de quoi s'amuser !
Logged

Bordeaux, France
Offline Offline
Jr. Member
**
Karma: 3
Posts: 81
L'espoir fait vivre / tant qu'il y a de la vie, il y a de l'espoir
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Petites corrections dans le schéma et le PCB, comme expliqué ici.

J'ai surtout pris le multimètre et testé les vias internes pour savoir où ils allaient : résultat, il n'yen a plus qu'un seul qui résiste, et le schéma est pratiquement complet !

Bon, maintenant je vais pouvoir me remettre sérieusement sur la partie Arduino  smiley-mr-green
Logged

Forum Moderator
Geneva
Offline Offline
Faraday Member
*****
Karma: 30
Posts: 3227
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Topic réparé... j'essaye de récupérer les messages en vadrouille  smiley-lol
« Last Edit: October 15, 2012, 01:48:03 am by Jean-François » Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Bordeaux, France
Offline Offline
Jr. Member
**
Karma: 3
Posts: 81
L'espoir fait vivre / tant qu'il y a de la vie, il y a de l'espoir
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Youpie !
Logged

Bordeaux, France
Offline Offline
Jr. Member
**
Karma: 3
Posts: 81
L'espoir fait vivre / tant qu'il y a de la vie, il y a de l'espoir
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bon, voici l'idée de base :



En l’occurrence, le schéma de la VinciDuino dans le contour du capot bleu du WR703N  smiley-eek

Non, les coins ne sont pas en arcs de cercle, mais en arcs d'ellipse ! C'est un peu au chausse-pied, mais les connecteurs pour les shields rentrent à peu près  smiley-roll-sweat

Je voudrais aussi intégrer un GL850G (chip Hub USB 4 ports), comme sur la carte d'extension de Kean.

Côté design, j'ai envie de cacher les composants à l'intérieur du boîtier du WR703N et de faire un joli dessin en "dithering" sur le dessus, un peu comme cela :

Logged

Bordeaux, France
Offline Offline
Jr. Member
**
Karma: 3
Posts: 81
L'espoir fait vivre / tant qu'il y a de la vie, il y a de l'espoir
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Je retranscris en Français, le message que j'ai posté dans le forum OpenWrt:

Il y a définitivement un bug dans le bloc hardware USB de l'AR9331.

J'ai effectué un simple test avec une Arduino Duemilanove ou une Vinciduino en faisant tourner bitlash avec le simple script suivant sur l'Arduino:

Code:
function toggle13 {d13 = !d13;print i;i = i + 1;}
function startup {pinmode(13,1); run toggle13,1000;}

...c'est-à-dire, faire clignoter la LED toutes les secondes, en affichant un compteur monotonique incrémenté à la même cadence sur l'UART à travers l'USB.

Côté TP-LINK TL-WR703N, j'ai juste mis le module driver correspondant au chip USB de l'Arduino (ftdi_sio + usbserial en tant que /dev/ttyUSB0 pour la Duemilanove, cdc_acm en tant que /dev/ttyACM0 pour la Vinciduino), et l'émulateur de terminal simple de BusyBox "microcom" ("microcom -s 57600 /dev/ttyUSB0" pour la Duemilanove, "microcom -s 57600 /dev/ttyACM0" pour la Vinciduino).

La communication plante après un temps variable (allant de quelques minutes à quelques heures), mis en évidence par la LED TX de l'Arduino restant allumée en permanence. L'Arduino continue de fonctionner, car la LED d13 continue de flasher tranquillement toutes les seconds.

Même si vous sortez de microcom, de votre session, ou supprimez/réinsérez le module driver, la communication avec la carte Arduino ne redémarre pas. La seule solution pour remettre les choses en état de marche est de couper le jus de l'Arduino. Si celle-ci est alimentée par l'USB, cela se fait simplement en tapant les commandes :

Code:
echo 0 > /sys/classes/gpio/gpio8/value
echo 1 > /sys/classes/gpio/gpio8/value

J'ai constaté que si vous insérez un hub USB passif comme celui décrit dans ce topic, vous pouvez effectuer le même test pendant plus de 10 heures sans problème... Vous pouvez même faire tourner LES DEUX cartes Arduino en même temps sans problème !

De tout ceci, nous pouvons tirer les conclusions suivantes :
  • l'Arduino tourne comme un coucou suisse smiley
  • ce n'est pas un problème d'alimentation, car j'ai pu faire tourner le hub passif USB + les 2 cartes Arduino en même temps
  • ce n'est pas un problème logiciel applicatif du côté du TP-LINK TL-WR703N, car le logiciel est exactement le même dans les deux cas
  • si c'est un problème logiciel, c'est un problème de très bas niveau lié aux différences de timing/protocole entre les configurations directe/à travers le hub, mais pas dans le driver USB lui-même, car cela se produit de la même façon dans le driver ftdi_sio + usbserial et le driver  cdc_acm, donc cela se passe danas les accès bas-niveau interruptions/accès aux registres/DMA, etc.
  • plus probablement, il s'agit d'un bug dans le bloc hardware USB smiley-sad

Cette dernière conclusion confirme seulement que le bloc USB à l'intérieur de l'AR9331 n'est pas très bon, car j'avais déjà constaté que l'AR9331 n'était pas capable de gérer les périphériques USB low-speed comme un simple clavier ou une souris, mais que cela fonctionne à travers un hub USB passif.

La solution: TOUJOURS insérer un hub passif, comme la "Pieuvre", qui intègre un chip hub USB GL850G en boîtier SSOP28. Notez que certains modèles semblables extérieurement, contiennent une puce directement soudée sur le PCB et noyée dans le silicone au lieu du boîtier SSOP28. Ce n'est pas important si vous utilisez le hub tel quel, mais c'est un problème si vous voulez dés-souder le chip pour un  hack... Le hub complet est à peu près au même prix que le chip seul, mais vous avez des câbles et des connecteurs USB, un boîtier plastique réutilisable et un PCB avec un quartz en rab smiley

Le fait que le son USB marche et pas les ports série USB n'est pas lié aux endpoints différents, mais est peut-être lié aux types de transactions USB : pour les communications série, des transactions "bulk" sans erreurs sont utilisées avec détection d'erreurs et ré-essais, car une transmission fiable est requise, alors que les données de son (ou de vidéo) utilisent des transactions "isochronous" qui ne garantissent pas une transmissions sans erreur, car normalement ce type de données peut contenir quelques glitches sans que cela ne soit perçu.

C'est juste une supposition, mais étant donnée la nature aléatoire du bug, il semble qu'il y ait un problème lorsqu'une erreur de transmission survient dans le mécanisme de ré-essais, présent seulement dans les transactions "bulk". Cela pourrait être confirmé en insérant de manière TRANSPARENTE un analyseur de protocole USB entre la carte Arduino et le routeur TP-LINK TL-WR703N .
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 45
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Lorsque je lance upgrade firmware et aprés un chargement j'ai le message "upgrade failed"

je précise que mon wr703n v1.6 a un firmware dd-wrt de pré-installé.

Comment faire, merci.
Logged

Bordeaux, France
Offline Offline
Jr. Member
**
Karma: 3
Posts: 81
L'espoir fait vivre / tant qu'il y a de la vie, il y a de l'espoir
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

De ce que je sais, dd-wrt utilise un partitionnement de la Flash spécifique, alors qu'OpenWrt utilise le même que le firmware d'origine.

Il faut donc remettre le firmware d'origine sur le routeur avant de pouvoir installer OpenWrt dessus.

Je crois que la  procédure pour revenir au firmware d'origine est documentée sur le site dd-wrt.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 45
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

d'accord , donc repassé a un firmware TP-link si possible en anglais (sera plus lisible que le chinois )  puis installé openwrt..
Logged

Pages: 1 ... 6 7 [8] 9   Go Up
Jump to: