4/2/2021

Led-badge of mini-lichtkrant: alleen voor windows?

Filed under: — cybrarian @ 2:28 pm

LED-badge
Mono-kleur scherm (blauw, rood, oranje, wit,..). Draagbaar als badge met speld, of bruikbaar als mini-lichtkrant met magneet. Er zijn een paar verschillende uitvoeringen met dezelfde kenmerken binnenin, bv conrad (witte doosjes met sticker/barcode en kleuraanduiding), ALLNET met standaard aziatische foto op doosje (Badge is verschillend: heeft aan-uit schuifschakelaar wat handig kan zijn), …

  • Type: M1-8; 44×11 pixels
  • aansluiting: micro-usb. Handigste zou een usb kabel of tussenzetkabel zijn met schakelaar; je moet immers telkens de verbinding verbreken om de tekst te bekijken. Maar de meeste kabels met schakelaar hebben alleen de laadfunctie-draden verbonden, dus daar ben je hier niets mee.
  • software: git clone https://github.com/jnweiger/led-badge-44x11 en de python3-usb lib
  • python programma: sudo python3 ./led-badge-11x44.py -s 3 "Mijn Tekst"

USB
linuxblue:~ # lsusb

Bus 002 Device 005: ID 0416:5020 Winbond Electronics Corp.

dmesg
Uitgetrokken usb kabel:
[ 6326.524334] usb 2-1.3: USB disconnect, device number 6
Verbonden usb kabel:
usb 2-1.3: new full-speed USB device number 7 using ehci-pci
[ 6334.052734] usb 2-1.3: New USB device found, idVendor=0416, idProduct=5020, bcdDevice= 0.00
[ 6334.052738] usb 2-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 6334.052740] usb 2-1.3: Product: LS32 Custm HID
[ 6334.052742] usb 2-1.3: Manufacturer: LSicroelectronics
[ 6334.054294] input: LSicroelectronics LS32 Custm HID as /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3:1.0/0003:0416:5020.0005/input/input29
[ 6334.054468] hid-generic 0003:0416:5020.0005: input,hidraw0: USB HID v1.10 Device [LSicroelectronics LS32 Custm HID] on usb-0000:00:1d.0-1.3/input0

In KInfoCenter:
Device information, USB devices, EHCI Host controller (2); Unknown:

LS32 Custm HID
Manufacturer: LSicroelectronics
Class: 0 ((Defined at Interface level))
Subclass: 0
Protocol: 0
USB Version: 1.01
Vendor ID: 0x416 (Winbond Electronics Corp.)
Product ID: 0x5020
Revision: 0.00
Speed: 12 Mbit/s
Channels: 0
Max. Packet Size: 64

Software
Er is enkel een witte mini cd (zonder label) bijgevoegd, met 80 Gb Windows software:

webgang@OptiPlex380:/media/webgang/2019-06-05-17-13-00-0$ tree
.
├── [ 2048] Help
│   ├── [ 469504] Instruction(Chinese).doc
│   ├── [ 963584] Instruction(English).doc
│   ├── [ 1015296] Instruction(Spanish).doc
│   ├── [ 188] Read Me.txt
│   └── [ 647575] User Manual-Korean.docx
├── [ 24576] Install.exe
├── [ 2048] LED Display Profession Program
│   ├── [ 10029568] BMPBadgeSetup.msi
│   ├── [ 2048] DotNetFX40
│   │   └── [ 50449456] dotNetFx40_Full_x86_x64.exe
│   ├── [ 427520] setup.exe
│   └── [ 2048] WindowsInstaller3_1
│   └── [ 2585872] WindowsInstaller-KB893803-v2-x86.exe
├── [ 2048] LED Display Program
│   └── [ 12186818] LED Badge.exe
├── [ 228] Read Me.txt
├── [ 174889] User Manual-English.docx
└── [ 952933] User Manual-Korean.pdf
5 directories, 14 files

Linux alternatieven

1. Hack
Gelukkig zijn er ook Linux hackers aan de slag gegaan; bv Dave Akerman:
http://www.daveakerman.com/?p=1440
Die uitlegt hoe je het protocol (tussen pc en led-badge – over usb) kan doorgronden met behulp van een serial port sniffer.
Kort samengevat (moest de pagina verdwijnen):

Eerst een 6-byte start pakket “Ahello”
Gevolgd door een korte pauze (10ms bv)
Dan 48 bytes met de parameters en het aantal bitmap paketten.
Gevolgd door een pauze van minstens 800ms
Dan volgen de bitmap paketten, 11 bytes ieder, met een pauze van minstens 100ms tussen de opeenvolgende.
.
De parameters:
.
Byte 0 (eerste byte van het parameter pakket) heeft de helderheidswaarde in bits 2-0. Waarde 0 is het helderst en 3 het donkerst.
Byte 2 wordt zo geïnterpreteerd:
– Bit 7 is de schakelaar voor het marquee effect (rondlopende rand van 1 puntje groot)
– Bits 6-4 bevatten de snelheid van 0 (traag) to 7 (snel)
– Bits 2-0 geven de richting aan (0 is “naar links”)
Byte 14 bevat het aantal bitmap paketten. Om een of andere vreemde reden wordt deze waarde herhaald in bytes 16, 18, 20, 22, 24, 26 en 28.

Met die informatie kan je je eigen programma maken om de led-badge aan te spreken.
Hij beschrijft verder hoe hij dat doet met een Raspberry Pi, en hoe hij het probleem aanpakt dat de display pas zijn functie krijgt als hij uitgetrokken wordt uit de usb poort (anders toont hij eenmalig de veranderde tekst maar daarna terug het oplaadsymbool).

2. Python script
En er is iemand die ook gewoon software ter beschikking stelt:

De download van github geeft een mapje led-badge-44×11:

git clone https://github.com/jnweiger/led-badge-44x11

~/IOT-SBC-PCB>
Cloning into ‘led-badge-44×11’…
remote: Enumerating objects: 303, done.
remote: Total 303 (delta 0), reused 0 (delta 0), pack-reused 303
Receiving objects: 100% (303/303), 10.06 MiB | 3.47 MiB/s, done.
Resolving deltas: 100% (156/156), done.

En dan heb je daarin volgende bestanden en directories:
(waarvan niet alle nuttig voor ons)

99-led-badge-44×11.rules
.gitignore
.git/
led-badge-12×48.py@
led-badge-11×44.py*
LICENSE
research.md
README.md
RUN.sh
usb-power.sh*
gfx/
photos/
doc/
win/

Voor het succesvol uitvoeren van het python script moet je toegang hebben tot de usb-poort.

Een foutmelding die je anders kan krijgen is:


usb.core.USBError: [Errno 13] Access denied (insufficient permissions)

Voeg de gebruiker toe aan de groep die daarvoor rechten geeft, bv opensuse: UUCP.

CLI:
usermod -a -G UUCP webgang

Yast:
Security and users, user and group management/administration, kies gebruiker, Edit.
“Existing local user”, Tab-blad “Details”:
vink de groep UUCP aan, Ok.
(en mogelijk uitloggen om aktief te maken?).

Indien dat niet werkt, of je dit slechts tijdelijk/eenmalig wil gebruiken, of je nog geen toegang tot de usb-poort hebt ingesteld: hier wordt sudo gebruikt om dat als root uit te voeren:

sudo python3 ./led-badge-11x44.py -s 3 "Copyleft ;-)"

ERROR: Need the pyhidapi or usb.core module.
Please try
sudo pip3 install pyhidapi
sudo pip install pyhidapi
sudo apt-get install libhidapi-hidraw0
sudo ln -s /usr/lib/x86_64-linux-gnu/libhidapi-hidraw.so.0 /usr/local/lib/
or
sudo apt-get install python3-usb

Of voor bv openSUSE: https://software.opensuse.org/package/python3-usb

# zypper install python3-usb

Loading repository data…
Reading installed packages…
Resolving package dependencies…

The following NEW package is going to be installed:
python3-usb

1 new package to install.
Overall download size: 98.8 KiB. Already cached: 0 B. After the operation, additional 539.1 KiB will be used.
Continue? [y/n/v/…? shows all options] (y):

y

Retrieving package python3-usb-1.0.2-lp152.3.3.noarch (1/1), 98.8 KiB (539.1 KiB unpacked)
Retrieving: python3-usb-1.0.2-lp152.3.3.noarch.rpm ……………………………………………………………..[done]

Checking for file conflicts: …………………………………………………………………………………[done]
(1/1) Installing: python3-usb-1.0.2-lp152.3.3.noarch ……………………………………………………………[done]

De help geeft aan wat in principe kan:

python3 ./led-badge-11x44.py --help

usage: led-badge-11x44.py [-h] [-t TYPE] [-s SPEED] [-B BRIGHTNESS] [-m MODE]
                          [-b BLINK] [-a ANTS] [-l]
                          MESSAGE [MESSAGE ...]

Upload messages or graphics to a 11x44 led badge via USB HID.
Version 0.12 from https://github.com/jnweiger/led-badge-ls32
 -- see there for more examples and for updates.

positional arguments:
  MESSAGE               Up to 8 message texts with embedded builtin icons or
                        loaded images within colons(:) -- See -l for a list of
                        builtins

optional arguments:
  -h, --help            show this help message and exit
  -t TYPE, --type TYPE  Type of display: supported values are 12x48 or
                        (default) 11x44. Rename the program to led-
                        badge-12x48, to switch the default.
  -s SPEED, --speed SPEED
                        Scroll speed (Range 1..8). Up to 8 comma-separated
                        values
  -B BRIGHTNESS, --brightness BRIGHTNESS
                        Brightness for the display in percent: 25, 50, 75, or
                        100
  -m MODE, --mode MODE  Up to 8 mode values: Scroll-left(0) -right(1) -up(2)
                        -down(3); still-centered(4); animation(5); drop-
                        down(6); curtain(7); laser(8); See '--mode-help' for
                        more details.
  -b BLINK, --blink BLINK
                        1: blinking, 0: normal. Up to 8 comma-separated values
  -a ANTS, --ants ANTS  1: animated border, 0: normal. Up to 8 comma-separated
                        values
  -l, --list-names      list named icons to be embedded in messages and exit

Example combining image and text:
 sudo ./led-badge-11x44.py "I:HEART2:you"

Mapje met beelden:

bicycle3.png    fablab_logo_11x11.png     falafue_logo_44x11.png  heart8.png      owncloud_logo_24x11.png
bicycle_l2.png  fablab_logo_16x11.png     happy2.png              heart_full.png  starfield
bicycle_r2.png  fablabnbg_logo_44x11.png  happy.png               heart.png

Maar de enige echt werkende beeld-parameters zijn die in de broncode voorkomen:

happy
happy2
heart
HEART
heart2
HEART2
fablab
bicycle
bicycle_r
owncloud

Reacties zijn gesloten.

Powered by WordPress