Single board computer KoteLyu
My old and favorite project of 2013. It was originally designed as a learning platform. Because at that time I hadn't worked for Raspberry Pi yet. And in the end I developed something similar, but without an operating system ))) The hardware has been reworked many times, invented along the way of development )
After a while I attached this computer to my bicycle, but in practice such a large color 3.5" TFT dispalay is not suitable for daytime driving. A large number of parameters can be displayed, though. I wrote about this at the end of the blog...
![]() |
| Device appearance |
The project includes the device itself for launching programs from SD-card using its own virtual machine LyuVM. A special editor KoteLyu IDE written in Delphi is used to develop the software interface. This IDE contains GUI editor, file manager, LyuC compiler (C languages), application installer with my downloader, image and font converter. The device firmware can be updated using the Microchip USB HID bootloader.
At first I tried to write my own interpreter for the Basic language, then the C language, but on such a slow device (48 MHz) the applications were slow ... After that I already decided to write my own compiler LyuC of programs that can work on my platform. Everything is simple there - the byte code is executed in the microcontroller based on the firmware logic, that is, it is not executed from flash memory. After compiling the program, you can select a global variable in the editor and bind to the widget. The user interface was difficult to design. I took Windows widgets as an example and watched how they work under a magnifying glass. It was then that I understood how the button works - it turns out that the color of the border line changes. This is how I worked the rest of the widgets.
All applications are installed on a memory card (SD card) and also run from it. More precisely, the program code is copied into RAM memory and executed from there. All images and icons are also stored on the memory card, but are not copied anywhere.
The idea was to run various applications without flashing the device's firmware. That is, first the application is developed in IDE, and then it is easily and quickly poured into the device. In this case, the previously running application does not close and continues to perform its task. This programming principle is used in programmable logic controllers when the logic of the device is changing "on the fly". The replacement is almost invisible to the end user. Also, the device had to have a wireless communication channel. For this I used the UART Bluetooth HC-06 module. And I wrote a test application for Android. On this platform, I learned how to work with USB (host/device; cdc, hid, mass storage) and connected my different devices.
Maybe someday I will post the source code. But I'm honestly ashamed of such source code. I would like to rewrite it a little.
Hardware
- Microchip PIC24FJ128GB106;
- 3.5’’ TFT LCD Display with Touch (16 bit parallel bus);
- Reader SD-card (SPI);
- EEPROM 24LC128 (I2C);
- Bluetooth HC-06 (UART);
- Dallas DS18B20 (1-wire);
- TP4056 Lithium Battery Charger and Protection Module;
- External discrete inputs-outputs;
Some more photos
![]() |
| If there is no memory card, a dialog is shown |
![]() |
| Desktop loaded from memory card |
![]() |
| Launched "SPD" application |
![]() |
| Launched "Test" application for showcasing widgets |
![]() |
| This is a different memory card with a different desktop |
After installing this computer on my bike, there was an accident during a bicycle race and eventually broke the display touch sensor.











Comments
Post a Comment