Funkční rozhraní GPIB-USB s rozpočtem 300 korun...

    Měřící přístroje používají komunikační rozhraní GPIB. A je potřeba si s nimi povídat. Nemyslím, že by to správné získávání dat bylo focení obrazovky přístroje, taktéž potřebuji získat data pro další zpracování.
Takto vypadá GPIB konektor v měřáku [1]

Abych se k tomuto rozhraní mohl připojit potřebuji kabel, který bude mít správný protikus, ideálně pro připojení do USB.

propojovací kabel 

Existuje i originální redukce pro připojení GBIP-USB, třeba tato [2]
GPIB-USB, žel stojí naprosto nesmyslné peníze

    Čínská kopie je dostupnější, vypadá stejně, opravdu funguje, cenově za desetinu výše uvedeného originálu, ale pořád – ač jen desetina ceny – vyjde přes dva tisíce korun.

Lze takový komunikační kabel postavit doma?

    Konektor je to Centronix 24 pin. Dá se koupit, ale víme, že staré tiskárny používaly konektor Centronix, který má 36pinů. Dá se najít na sběrném dvoře nebo se vám válí někde v kanceláři. Ano, dá se i koupit [3], ale překročil bych výše zmíněný rozpočet.
zkrácený konektor ze staré tiskárny

    A pak chybí už jen Arduino Nano, nejlevnjější klon... Arduino Pro Micro[3]. Funguje i originální Arduino UNO. Žel se mně to nepodařilo rozběhnout s klony, které mají převodník CH340. Netvrdím, že to nejde, ale mně se to nepodařilo rozběhnout. Arduino Pro Micro je jistota a je tak malé, že může být součástí konektoru.

Jak to zapojit? A kde vzít program pro Arduino?

    Projekt AR488 na [github] nabízí řešení v jednom balíčku a to nejen pro USB, ale třeba i pro Bluetooth komunikaci. Projekt je výborně zdokumentovaný a funguje. 

Nebyl jsem si jist orientací konektoru

Použil jsem toto zapojení podle [návodu] str. 47 pro Pro Micro.  
   Arduino GPIB
   pin     pin   function
   --------------------
   A2      7     NRFD
   A1      6     DAV
   A0      5     EOI
   D5      17    REN
   D7      10    SRQ
   D2      11    ATN
   A3      8     NDAC
   D4      9     IFC
   D3      1     DIO1
   D15     2     DIO2
   D16     3     DIO3
   D14     4     DIO4
   D8      13    DIO5
   D9      14    DIO6
   D10     15    DIO7
   D6      16    DIO8
   GND     12    Shield
   GND     18,19,20,21,22,23 GND
    Protože mám o svůj měřák obavy a drže se přísloví dvakrát měř a jednou řež, raději pořádně zkontroluju zapojení konektoru GPIB k Arduinu. Napsal jsem malinký program[4], který umožní ruční otestování správného zapojení pin po pinu.
test zadrátování byl úspěšný

    Teď už jen nahrát správný program pro komunikaci. Dá stáhnou buď už zkompilovaný jako [hex] nebo ve formě zdrojového kódu [tady]. Volím zdrojový kód a během chvilky mám nahráno v Arduino Pro Micro. Není potřeba nic nastavovat, podle nastavení cílové platformy zvolí sám veškeré nastavení.

Komunikace s počítačem a stažení dat

    Velmi záleží na tom, k jakému zařízení se chceme připojit. V každém GPIB manuálu najdeme příkaz *IDN? – na který nám má zařízení vrátit svoje jméno a používá se k testu spojení. Jenže, ne každé starší zařízení tohle umí. Pokud má pro ukládání dat třeba moderní 3.5" disketu, tak to umět bude. Starší spíš ne.
Na úplný test rozhraní AR488 postačí, když se připojím sériovým terminálem, třeba z Arduino IDE,
přes které jsem nahrával do Pro Micro komunikační software. Příkaz s prefixem ++ je určený pro kontroler, bez prefixu pro adresované zařízení
    ++ver vrátí např. AR488 GPIB controller, ver. 0.51.04, 27/01/2022
    ++addr XX kde XX je GPIB adresa mého zařízení, pro mě je to ++addr 11
pak už všechny příkazy bez ++ budou posílány zařízení na dané adrese, pro další příkazy už záleží na zařízeníl, např. posílání příkazu, které mají něco vykonat
    DS
    L1HELLO
    DG
ale příkaz, který má vrátit nějaká data
    D3T3 musí být následován příkazem ++read případně ++read eot aby se přečetla všechna vrácená data

Nějaké programové rozhraní ke komunikaci

    Mám rád jazyk Python, protože je přehledný a schůdný i pro začátečníky. Takový Pascal dvacátého prvního století. Naprosto jednoduché rozhraní pro AR488 v Pythonu a i když z Pythonem nejste kamarádi, stačí nainstalovat prostředí Thonny[5], které je pro Mac, Linux i Windows a pokud sedíte u Raspberry Pi, tak je pravděpodobně již součástí prvotní instalace.
    Je ke stažení kód viz [6], který stačí vložit do editoru a spustit. Jediné místo, které musíme změnit je port="XXX" na adresu portu, kde mám svoje AR488 připojené. Je to vidět v Arduino IDE, kde jsem vybíral port, pro nahrání software.
Řádek 51 def __init__(self, port="COM9", baudrate=115200, timeout=1):
a or řádku 122 jsou vkládány první příkazy, opět výše zmíněný a oblíbený *IDN?
    Jiný způsob komunikace pomocí rozhraní VISA je zmíněná v tomto [youtube] videu včetně odkazů a funčního kódu v C#.
    Jsou i zajímavější řešení pro kombinaci starých měřících zařízení s rozhraním GPIB s moderními s LAN/LXI [7]; strýc Anubis to používá pro komunikaci se smečkou multimetrů a jednou to své řešení zabloguje.

A co krabička? 

    Možná ani není potřeba, ale pro Arduino Nano je ke stažení [model] k tisku. Tudíž Pro Micro se tam vejde, protože je asi poloviční velikosti. Dobře zajištěné tavným lepidlem funguje.

Víc profi řešení 

   Velmi elegantní řešení by bylo použít konverzní plošný spoj, kde z jedné strany je konektor a z druhé strany Arduino Pro Micro. Tuhle krásnou destičku[8] mně věnoval strýc Anubis, žel jsem ji zničil při pokusu o připájení na svůj zbastlený zkrácený konektor. A teď se stydím.
takové pěkné jsem to mohl mít

S čím vlastně chci GPIB komunikovat?

  HP3585A – viz [jiný článek] na blogu.

Zdroje:

[9] bakalářská práce podrobně rozebírající problematiku GPIB 
[10] první verze základní komunikace pomocí Arduina z roku 2014
[11] aktuální a živý projekt AR488 s podrobnou dokumentací na github, který jsem použil
[12] manuál s příkazy Prologix, který AR488 emuluje
[13] dobré youtube video na téma „GPIB - jak stahuji data ze starších měřících přístrojů.“
[14] GPIB pomocí Raspberry Pi