derkalle4 / python3-idotmatrix-client Goto Github PK
View Code? Open in Web Editor NEWreverse engineered python3 client to control all your 16x16 or 32x32 pixel displays (experimental)
License: GNU General Public License v3.0
reverse engineered python3 client to control all your 16x16 or 32x32 pixel displays (experimental)
License: GNU General Public License v3.0
Some findings for text for a 16x16 display.
The app code is not that clear what to set for other sizes.
I've got some code which works, but needs some more work.
Text generally displays some bitmap data with some text color and background color.
Following is for a 16x16 display, the app code is not very clear what to set in bitmap_header and header for other display sizes, see below.
Need to compare the data, which is sent over bluetooth.
Bitmap data needs to be 8 pixel wide, 16 pixel high (for 16x16 display)
The app generates bitmap data from painting on a canvas. Font size is fixed to 8x12 (???)
The app code also contains data for a 5x8 pixel font (which is not used???).
Font 5x8 bitmap for character 'A' and 'B' (upper 3 bits always 0)
| b0| b1| b2| b3| b4| b5| b6| b7|
-+-------------------------------+
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | Byte0
| 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | Byte1
| 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | Byte2
| 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | Byte3
A | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | Byte4
| 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | Byte5
| 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | Byte6
| 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | Byte7
+-------------------------------+
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | Byte8
| 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | Byte9
| 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | Byte10
B | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | Byte11
| 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | Byte12
| 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | Byte13
| 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | Byte14
| 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | Byte15
+-------------------------------+
Bitmap data for 16x16 display
One character: bitmap height 16 pixel, width 8 pixel
2 lines of characters with 5x8 pixel font possible
Data per character
bitmap_header per character + bitmap data
bitmap_header = bytearray(
[
0x02, # bitmap height 16 pixel -> 16 bytes per character (not clear for other sizes)
0xff, 0xff, 0xff, # fixed
]
)
Header for complete bitmap
text_header = bytearray(
[
1, # text length lobyte, number of 8 pixel blocks
0, # text length hibyte
0, # fixed
1, # fixed
0, # mode (0=fixed, 1=left scrolling, ...) as per App
50, # speed
1, # color mode
255, # color red
255, # color green
0, # color blue
8, # background mode
0, # background color red
0, # background color green
0, # background color blue
]
)
Chunking like in GIF code
header = bytearray(
[
255, # chunk length
255, #
3, # fixed
0, # fixed
0, # 0 if first chunk, else 2
255, # length payload
255,
255,
255,
255, # CRC
255,
255,
255,
0, # works for 16x16, not clear for other sizes
0, # works for 16x16, not clear for other sizes
12, # works for 16x16, not clear for other sizes
]
)
Cannot have it working for Windows 7. Is that possbile?
Hi there,
thanks for the effort. Much appreciated.
I got one of these 16x16 screens recently. Happy to test and contribute to this project.
The roadmap does not list the alarm and buzzer support...
Is this planned or to be added ?
The buzzer particularly is key to notify about incoming messages, or alarms etc.
Cheers,
Greg
Hello,
on the 16x16 display, this worked for me
Display on 5, 0, 7, 1, 1
Display off 5, 0, 7, 1, 0
Hi team,
I've got one of these devices too, it's quite fun!
I've worked out how to send my own text and GIFs to it and have a very rudimentary Python script to help.
Your project looks much tidier than mine, so I thought I point you at this in case it's useful:
Hi,
I just received an iPixelColor Display (smaler pitch). The Android app called "iPixelColor" shares some Items with the one from iDotMatrix like the picture and animation editor.
Just out of curiosity I tested the py client on this display and right now I can tell:
Set Screen on/ off works
Send static Image works
Set to clock don't work
Set animation / gif don't work
Other differences are, the iDotMatrix has a power button and a switch button also when switched on you can hear a beep.
Is anyone patient enough to do some reverse engineering on this display. I'm sorry I'm far to impatient.
Just a note.
It works on Windows 11 using the Terminal, python installed from Microsoft marketplace (pip is included).
I do not use venv, I just use "pip install ." in the cloned repository. After that I could use the app.py without any problems.
may not the best way to have it run (no venv) but it works inluding vonversion of svg / gif animations.
Thanks !
See comments:
Hello,
I'm currently using a MacBook Pro M1 Max with the BCM_4387 Bluetooth chip and I'm trying to connect to an iDotMatrix Display via Bluetooth. However, I'm having difficulty discovering the device's Bluetooth address.
Could you please provide guidance or instructions on how to find the Bluetooth address of the iDotMatrix Display using this specific hardware setup? Is there a common method or a specific procedure I should follow on macOS to ensure the device is correctly identified and paired?
Any help or tips regarding this would be greatly appreciated, as I'm unable to pair the device due to this issue.
Thank you for your help!
Just noticed that
./run_in_venv.sh --address 00:11:22:33:44:ff --set-gif ./demo.gif
does not result in the display of the GIF image, only
./run_in_venv.sh --address 00:11:22:33:44:ff --set-gif ./demo.gif --process-gif 32
works.
But because the first command line is part of the documentation, I thought it would work.
Hello guys.
First, thank you for your work! AWESOME!
But my problem is, after a successful command i cannot send a second command to the Pixel Display.
i must restart my bluetooth daemon (systemctl restart bluetooth) then i can send the second command.
My System:
SYS: ArchLinux
Kernel: 6.6.8-arch1
HW: Asrock x300
Greetz Hera
Could you write some documentation on how to acuire the device's address needed to run the tool?
I received device today and used iphone app and was connected right away....but have no idea where to find the address (the device doen not show up on my laptop either)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.