SynkinoLC started as a fork of fwachsmuth/Synkino with the following changes:
- While the original Synkino utilized two 8-bit ATmega328P microcontrollers (one for the frontend and one for the backend) SynkinoLC incorporates a single, more powerful 32-bit ARM processor through the use of a Teensy microcontroller board.
- Assembly of SynkinoLC is made simple with only a few off-the-shelf components and no SMD soldering required.
- The firmware has been optimized to fit the 62K flash of the Teensy LC microcontroller board (with some limitations), but Teensy 3.2 is also supported and allows for full functionality.
- Unlike the original Synkino, SynkinoLC is not designed for battery operation. Use any micro-USB phone charger as a power supply unit.
- When connected to a host via USB, SynkinoLC provides direct access to its SD card through MTP (Teensy 3.2 only).
- SD cards can be formatted directly from SynkinoLC as either FAT16, FAT32, or ExFAT (Teensy 3.2 only).
- Storing a track numbered 999 (e.g. "999-24.ogg") to the SD card will cause SynkinoLC to automatically start playing it after startup.
Most parts of Friedemann's manual for the original Synkino apply for SynkinoLC as well.
When building SynkinoLC, you have the option to use either a Teensy LC or Teensy 3.2 microcontroller board. However, as of the time of writing, Teensy 3.2 microcontrollers are unavailable for purchase due to the current global chip shortage. Although the Teensy LC provides ample processing power for SynkinoLC, it has a few minor limitations related to its smaller flash memory of only 62K (compared to 256K on the Teensy 3.2):
- The binary patch file for the VS1053b audio decoder (
patches.053
) cannot be included with the firmware and needs to be supplied by means of the microSD-card. - You can store settings for "only" 7 projectors (vs 15 on Teensy 3.2).
- The USB stack has been omitted - you can't use debugging by means of USBSerial. You can, however, use the Teensy's HW serial interface (TX on pin 1, 31250 baud).
- SdFat is running in low-mem mode (no support for exFAT, limited to 32GB cards and 64 character filenames).
- No MTP access to the SD card.
- No option for formatting the SD card.
Neither of these limitations should have a significant impact on the usability of SynkinoLC.
SynkinoLC was created with PlatformIO for VSCode. To install PlatformIO:
- Download and install official Microsoft Visual Studio Code. PlatformIO IDE is built on top of it.
- Open VSCode Package Manager.
- Search for the official PlatformIO IDE extension.
- Install PlatformIO IDE.
See the official guide for more details on the VSCode integration.
To build SynkinoLC:
- open
Synkino.code-workspace
, - select the respective project environment (
env:teensyLC
orenc:teensy31
), and - start the build
The firmware won't fit TeensyLC unless SD.h
is modified as outlined here. A pre-build script will attempt to patch this file automatically.
SynkinoLC has been designed to work with two types of 1.3" OLED display, based on either SH1106 or SSD1306 driver chips:
- An SH1106 display module (as used in the original Synkino) can be obtained for little money on aliexpress.com (go for the one that says
1.30"OLED 4-SPI
on the back). Other SH1106 modules should work as well, as long as they have identical pin-out (the foot-print for the retaining screws might not be an exact fit though). - Alternatively, you can go for Adafruit #938 which is based on an SSD1306 driver (you'll have to cut two traces on the back of the module to enable SPI as demonstrated here)
Just connect the display module to the respective slot on the SynkinoLC PCB - the firmware will automatically detect the type of display used.
You'll need the following components to assemble SynkinoLC:
Qty | Part | Description / Comment |
---|---|---|
1 | SynkinoLC PCB | |
1 | 1.3" 128x64 monochrome OLED display, SPI | see separate comments above |
1 | Teensy-LC | microcontroller board |
1 | Adafruit VS1053 Codec + MicroSD Breakout | audio processing board |
1 | Texas Instruments SN74AHC14N | inverted Schmitt-trigger |
2 | SparkFun ROB-09453 | line sensor breakout (analog) |
1 | Bourns PEC11L-4215F-S0015 | rotary encoder |
1 | Cliff CL170842CR (or similar) | knob for rotary encoder |
1 | TDK PS1240P02BT | piezo buzzer |
2 | CUI Devices SJ1-2503A | 2.5mm audio jack |
2 | Tensility CA-2203 (or similar) | 2.5mm audio cable, stereo |
2 | Sullins PPPC071LFBN-RC (or similar) | 7 pos female header (for SH1106 display) |
1 | Sullins PPPC081LFBN-RC (or similar) | 8 pos female header (for SSD1306 display) |
2 | Sullins PPPC141LFBN-RC (or similar) | 14 pos female header |
2 | Sullins PPPC181LFBN-RC (or similar) | 18 pos female header |
1 | Adam Tech PH1-07-UA (or similar) | 7 pos male header (for SH1106 display) |
1 | Adam Tech PH1-08-UA (or similar) | 8 pos male header (for SSD1306 display) |
2 | Adam Tech PH1-14-UA (or similar) | 14 pos male header |
Click here for a full BOM on octopart.com (with SSD1306 display and not including the PCB). All necessary components should be obtainable for about USD/EUR 80-100 including shipping - depending on your choice of display and PCB service.