{{tag> tricot-machine ftdi fabrication brother-KH940 em}} ====== Fabrication d'un cable USB Série pour machine à tricoter ====== Pour envoyer des motifs à une machine à tricoter Brother Electroknit KH940, on utilise une communication série sur USB, afin de simuler un lecteur de disquette. Ce câble doit respecter un certain protocole de communication série. Pour le fabriquer on part d'un câble USB série FTDI. Ce type de câble intégre un circuit intégré programmable dans le connecteur USB, il sera nécessaire de modifier la configuration de ce circuit en le reprogrammant avec le logiciel adapté. Pour fabriquer ce câble, nous nous sommes largement basés sur le tutoriel de Daviworks (lien ci-dessous). [{{:recherche:tricot_machine:cable_ftdi_sub_serie.png?direct&600|Cable FTDI USB-Série. Photo de [[https://www.ftdichip.com/|FTDI]], DR}}] ===== Matériel nécessaire ===== **Composants** * Cable FTDI 5V USB série : https://fr.rs-online.com/web/p/products/6877770/ * Connecteur Molex C-GRID III 2x4 : https://fr.rs-online.com/web/p/products/3606235/ * gaine thermorétractable (c'est mieux, mais pas fondamental) * scotch d'électricien **Outils** * brucelles fines (//tweezers// pour les anglophones) * ordinateur pour la programmation du câble ===== Fabrication du connecteur ===== Il faut défaire le connecteur existant, sans endommager le sertissage des fils, et les réinsérer dans le connecteur C-GRID adapté à la prise de la machine. {{:recherche:tricot_machine:sequence_sertissage_connecteur.jpg?direct&800|}} {{ :recherche:tricot_machine:sequence_sertissage_connecteur.pdf|télécharger en pdf}} === 1. défaire le connecteur === En s'aidant des brucelles, soulever chaque picot de plastique pour libérer l'extrémité sertie du câble. === 2. insérer les fils dans le nouveau connecteur === On insère 4 fils aux bonnes positions : jaune, orange, vert, noir. Les fils rouge et marron sont repliés le long du câble et scotchés **sans se toucher**! (Attention il faut absolument que ces deux fils soient isolés l'un de l'autre.) {{:recherche:tricot_machine:connecteur_c-grid_et_fils.png?direct&200|}} C'est assez délicat, il faut que les fils soient enfoncés à la bonne profondeur pour rester bloqué. ===== Programmation du câble FTDI avec Linux ===== **ATTENTION LA PROGRAMMATION DU CABLE FTDI AVEC LINUX NE FONCTIONNE PAS ! Pour l'instant nous n'avons pas encore réussi à programmer le cable FTDI sur linux. Par contre, la procédure avec FT_PROG sur windows fonctionne très bien...** Pour utiliser le cable, il est nécessaire de l'adapter au protocole de communication de la machine à tricoter. Pour cela, il faut inverser les niveaux logiques sur les broches RXD, TXD et RTS. Pour le programmer, on peut utiliser un logiciel fourni par FTDI, fabricant du câble, malheureusement il ne fonctionne que sur windows. Nous avons cherché des moyens de le faire sur Linux, c'est complexe mais possible! D'abord, nous avons testé [[https://github.com/richardeoin/ftx-prog|ftx-prog]] de Richard Meadows et [[http://rtr.ca/ft232r/|FT232R]] de Mark Lord, sans succès. Finalement, la solution consiste à utiliser la [[https://www.intra2net.com/en/developer/libftdi/index.php|libFTDI]] ==== Installation de la libFTDI ==== # Debian Stretch 9.5 64bits @ Kirin / 20200317 # télécharger depuis le site # décompresser dans un répertoire cd /home/emoc/libftdi1-1.4 sudo apt-get install build-essential gcc make libftdi-dev libusb-dev libconfuse-dev sudo apt-get install git-core cmake doxygen swig python-dev libboost-all-dev libusb-1.0-0-dev cd libftdi mkdir build cd build cmake -DCMAKE_INSTALL_PREFIX="/usr" ../ make sudo make install ==== Utilisation ==== cd /home/emoc/libftdi1-1.4/examples # pour tester la lecture ./eeprom Je teste avec deux câbles différents (et la commande ''./eeprom''), le premier a déjà été programmé (sur windows), les informations renvoyées sont correctes (= les bits TXD, RXD et RTS sont bien inversés) : Chip type 3 ftdi_eeprom_size: 128 0x000: 00 40 03 04 01 60 00 06 a0 2d 08 07 00 00 98 0a .@...`.. .-...... 0x010: a2 02 a2 12 23 10 05 00 0a 03 46 00 54 00 44 00 ....#... ..F.T.D. 0x020: 49 00 12 03 46 00 54 00 32 00 4a 00 53 00 57 00 I...F.T. 2.J.S.W. 0x030: 59 00 4b 00 00 00 00 00 00 00 00 00 00 00 00 00 Y.K..... ........ 0x040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........ 0x050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........ 0x060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........ 0x070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f0 32 ........ .......2 0x080: 17 04 e8 fb 00 00 cf f8 9c 58 42 00 00 00 00 00 ........ .XB..... 0x090: 00 00 00 00 00 00 00 00 4c 41 35 59 42 4b 5a 42 ........ LA5YBKZB VID: 0x0403 PID: 0x6001 Release: 0x0600 Bus Powered: 90 mA USB Remote Wake Up Manufacturer: FTDI Product: Serial: FT2JSWYK Checksum : 32f0 Internal EEPROM Oscillator: Internal Enable Remote Wake Up PNP: 1 Channel A has Mode UART VCP Inverted bits: TXD RXD RTS C0 Function: TXLED C1 Function: RXLED C2 Function: TXDEN C3 Function: PWREN C4 Function: SLEEP Pour le second, dans son état tout frais du fournisseur, les bits TXD, RXD, RTS ne sont pas inversés! C'est la modification à effectuer pour que le câble soit utilisable avec la machine à tricoter. Chip type 3 ftdi_eeprom_size: 128 0x000: 00 40 03 04 01 60 00 06 a0 2d 08 00 00 00 98 0a .@...`.. .-...... 0x010: a2 12 b4 12 23 10 05 00 0a 03 46 00 54 00 44 00 ....#... ..F.T.D. 0x020: 49 00 12 03 46 00 54 00 34 00 5a 00 33 00 4f 00 I...F.T. 4.Z.3.O. 0x030: 43 00 4e 00 12 03 46 00 54 00 35 00 46 00 54 00 C.N...F. T.5.F.T. 0x040: 56 00 33 00 4a 00 00 00 00 00 00 00 00 00 00 00 V.3.J... ........ 0x050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........ 0x060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........ 0x070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 86 77 ........ .......w 0x080: 21 04 de fb 00 00 8d fa c4 38 42 00 00 00 00 00 !....... .8B..... 0x090: 00 00 00 00 00 00 00 00 4a 41 49 59 42 33 4e 30 ........ JAIYB3N0 VID: 0x0403 PID: 0x6001 Release: 0x0600 Bus Powered: 90 mA USB Remote Wake Up Manufacturer: FTDI Product: FT4Z3OCN Serial: FT5FTV3J Checksum : 7786 Internal EEPROM Oscillator: Internal Enable Remote Wake Up PNP: 1 Channel A has Mode UART VCP C0 Function: TXLED C1 Function: RXLED C2 Function: TXDEN C3 Function: PWREN C4 Function: SLEEP ==== Flasher le câble FTDI pour machine à tricoter ==== En deux temps : d'abord, il faut créer le fichier de configuration : # Version modifiée de https://waterpigs.co.uk/articles/ftdi-configure-mac-linux/ # Vendor ID et Product ID permettent d'identifier le chipset # sur linux on peut les trouver avec lsusb # ex: Bus 001 Device 010: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC # on peut trouver toutes les options de configuration dans le fichier libftdi1-1.4/ftdi_eeprom/main.c à partir de la ligne 430 vendor_id=0x403 product_id=0x6001 # The rest of the fields are settings which can be written to the # FT2xx with the --flash-eeprom option. # Max. power consumption: value * 2 mA. Use 0 if self_powered = true. max_power=500 ########### # Strings # ########### manufacturer="FTDI" product="FT2JSWYK" serial="" ########### # Options # ########### self_powered=false # Turn this off for bus powered remote_wakeup=false # Turn this on for remote wakeup feature use_serial=true # Use the serial number string # Normally out don't have to change one of these flags in_is_isochronous=false # In Endpoint is Isochronous out_is_isochronous=false # Out Endpoint is Isochronous suspend_pull_downs=false # Enable suspend pull downs for lower power change_usb_version=false # Change USB Version usb_version=0x0200 # Only used when change_usb_version is enabled invert_rxd=true invert_txd=true invert_rts=true cha_vcp=false cha_type=FIFO chb_type=UART eeprom_type=0x46 ######## # Misc # ######## # This is the relative filename that EEPROM contents will either be # read from or written to, depending on whether ftdi_eeprom is run # with the --read-eeprom or --flash-eeprom option. filename="eeprom.bin" Puis le flasher avec ftdi_eeprom ftdi_eeprom --flash-eeprom ./ftdi.conf Cela crée aussi un fichier binaire du contenu de l'EEPROM, qu'on peut afficher avec hd eeprom.bin On peut vérifier que cela a bien fonctionné avec ./eeprom # (eeprom est une application du dossier libftdi1-1.4/examples ) ===== Programmation du câble FTDI avec Windows ===== Testé sur Windows 8. \\ Télécharger et installer l'application depuis de site de FTDI : https://www.ftdichip.com/Support/Utilities.htm#FT_PROG \\ Puis, brancher le câble et * démarrer FT_PROG * dans le menu devices : Scan & Parse (F5) * dans le device tree à gauche, choisir "Hardware Specific / Invert RS232 Signals" * cocher "Invert TXD", "Invert RXD", "Invert RTS#' (image de droite) * dans le menu devices : Program * cliquer Program {{:recherche:tricot_machine:parametrage_cable_ftdi_1.png?direct&400|}} {{:recherche:tricot_machine:parametrage_cable_ftdi_2.png?direct&400|}} ===== Sources & ressources ===== * datasheets du câble FTDI USB-Série : [[http://lesporteslogiques.net/materiel/__MODULES/cable_usb-serie_FTDI/|doc cable USB Série FTDI]] * tutoriel pour le câble que l'on a suivi https://daviworks.com/knitting/cable_tutorial.html * câbles pour Brother KH930 https://learn.adafruit.com/electroknit/cable * doc de la commande ftdi_eeprom https://manpages.debian.org/testing/ftdi-eeprom/ftdi_eeprom.1.en.html * puces FTDI "brickés" : https://tech.scargill.net/ftdi-bricked-chips-fix/ * https://waterpigs.co.uk/articles/ftdi-configure-mac-linux/ * https://github.com/mozilla-sensorweb/sensorweb-wiki/wiki/Flashing-the-FTDI-EEPROM-under-linux * bibliothèque python pour puces FTDI (pas grand chose pour l'EEPROM, mais en dev.) : https://github.com/eblot/pyftdi * exemple de fichier de config pour ftdi_eeprom : https://github.com/RandomReaper/ft2tcp/blob/master/eeprom-config/ft232h.conf