KanoComputing / community-sdk

Scripts, tools and libraries to help you to interact with your Kano Devices in your favourite programming language.
MIT License
32 stars 10 forks source link

Kano LED Lightshow OS v2.1.0 #22

Open darryllee opened 4 years ago

darryllee commented 4 years ago

Hi, are the specs or any of the code for the original Kickstarter "Powerup Kit" available?

I'm happy I can still download the OS, but I'm curious about hacking on the board. I took my old Pi 1 and made it into a Pi-Hole, and it'd be neat if I could plugin in the LED board and have it light up as ads get blocked.

Thanks!

Ealdwulf commented 4 years ago

We never published it. However basically it takes pixels via the serial port at 38400 baud, one pixel per byte. There is a start flag 0x55 to align the start of a frame. If instead you send 0x54, you should get a message back from the board on the serial port telling you it is alive.

Ealdwulf commented 4 years ago

Note that the start flag doesn't reset the middle of a frame, the board will always consume 9*14 bytes before checking for the flag. It just won't start the next frame until it sees the flag. There are only 8 light levels, but if I recall correctly they are spread across the range 0..255

darryllee commented 4 years ago

Ah thanks! So no dependencies on Kanux then, cool.

Are there existing scripts somewhere in the LED Lightshow OS image (or wait, isn't it supposed to be programmable from Kano itself?) that might be worth poking at? I'm bad at coding. :-}

darryllee commented 4 years ago

Oh! I found the powerup-kit_1.0-1.20150713_armhf.deb file, with the powerup Python modules. Nice! :-}

Hrm. The powerup-code-all.py sample script scrolls HELLO WORLD in reverse. I guess I will have to do some hacking on this after all.

2 Questions -

  1. Was the final LCD panel actually just white LEDs? There's code to specify color, but it doesn't seem to work.
  2. As I recall, there were Kano blocks so that the new Pi 2 could talk to the LED Lightshow in the old Pi. So then... there must be some kind of daemon code somewhere to enable that? Not seeing that in the package. I don't need to implement it, was just curious how the magic worked. :-}