USB BLE adaptér pro ANENG AN9002
Potřeboval jsem něco k propojení multimetru s BLE k PC, ideálně s SCPI ovládáním. I stalo se a ani to moc nebolelo.
Abych mohl začlenit multimetr Aneng AN9002 do měřicího systému, kde jsem potřeboval snímat a zaznamenávat teplotu (neměl jsem jiný bezdrátový teploměr s PC interfacem) přes SCPI příkazy, naprogramoval a vyrobil jsem si USB adaptér.
Práce měla celkem dvě zásadní úskalí: Najít ve "skladu" vhodný ESP32 Devkit, a pak přesvědčit 3D tiskárnu, že pro něj má vytisknout krabičku. Onen adaptér totiž neobsahuje nic jiného.
Chvíli zabralo studium toho, jak ESP32 vlastně komunikuje přes BLE, vyzkoušení několika Arduino knihoven, pochopení, co se v nich děje, no a pak už stačilo jen napsat ten zbytek :) Pro práci s SCPI používám jednoduchý parser, takže to umím naroubovat na ledacos.
Nakonec mi z toho vzniklo zařízení, které umí pár základních příkazů:
*IDN? | System Identify |
*HLP? | Help |
*SAV? | Display All Saved System Settings |
*SAV | Save All System Settings |
SYSTem:ADDRess? | GET Client MAC address |
SYSTem:ADDRess [00:00:00:00:00:00] | SET Client MAC address |
SYSTem:ID? | GET System ID |
SYSTem:ID [0..31] | SET System ID |
SYSTem:BAUD? | GET Communication Baud rate |
SYSTem:BAUD [0..9] | SET Communication Baud rate |
SYSTem:AUTOsend? | GET autosend [0 none | 1 RAW] |
SYSTem:AUTOsend [0..1] | SET autosend [0 none | 1 RAW] |
SYSTem:UNIT? | GET Displaying Unit [0 none | 1 display] |
SYSTem:UNIT [0..1] | SET Displaying Unit [0 none | 1 display] |
SYSTem:SEParator? | GET Separator [ 0 ";" | 1 "," | 2 "; " | 3 ", " ] |
SYSTem:SEParator [0..3] | SET Separator [ 0 ";" | 1 "," | 2 "; " | 3 ", " ] |
MEASure:VOLTage:DC? | GET Measured DC Voltage [V] |
MEASure:VOLTage:AC? | GET Measured AC Voltage [V] |
MEASure:CURRent:DC? | GET Measured DC Current [A] |
MEASure:CURRent:AC? | GET Measured AC Current [A] |
MEASure:RESistance? | GET Measured Resistance [Ohm] |
MEASure:CAPacitance? | GET Measured Capacitance [F] |
MEASure:TEMPerature:C? | GET Measured Temperature [°C] |
MEASure:TEMPerature:F? | GET Measured Temperature [°F] |
MEASure:DIODe? | GET Measured Diode [V] |
MEASure:FREQuency? | GET Measured Frequency [Hz] |
MEASure:DUTYcycle? | GET Measured Duty cycle [%] |
To je prozatím všechno - nevylučuji, že se ještě něco nezmění, ale teď mi to takhle vyhovuje.
Celý Arduino projekt je ke stažení zde: ESP32 BLE Client Aneng AN9002
Stačí rozbalit do stejně pojmenovaného adresáře, otevřít v Arduino IDE a doinstalovat knihovnu https://github.com/Vrekrer/Vrekrer_scpi_parser. Knihovna pro BLE by měla být součástí aktuálního ESP32 Arduino core, takže už jen to zkusit přeložit (a divit se, jaké čuně ten kód psalo - je to jednak šité trochu horkou jehlou a druhak jsem fakt mizerný programátor. Ale když musíš, tak musíš :)