
Controller
google/mozc-devices
Circuit diagrams and firmware source code for Gboard DIY keyboards

Never ending summer again. (Solar-powered AVI player based on ESP32/ULP)
Endless endless eight is an open-source printed circuit board by likeablob, from the likeablob/endless-endless-eight repository on GitHub, published under the MIT licence. It is a 2-layer board with 11 parts on 34 nets.
Its parts include 6 resistors, 2 transistors, 2 connectors and 1 IC. It belongs with the ESP32 boards of this library.
The clip played is from The Melancholy of Haruhi Suzumiya (2009).
A self-sustained AVI player to replay the summer days.
WIP
All the video files to be placed on the MicroSD must be MJPEG-encoded AVI.
# Transcode EP 12~19 to ee_%d.avi, with scaling and cropping
$ seq 12 19 | xargs -L 1 -P1 -I% bash -c 'ffmpeg -i ee_%.mp4 -r 24 -vf scale=160:-1,crop=160:80 -vcodec mjpeg -q:v 5 -an ee_%.avi -y'See sdcard/ for a set of sample vid files. These are converted from BigBuckBunny.mp4.
# The sample vid files were from
$ seq 12 19 | xargs -L 1 -P1 -I% bash -c 'ffmpeg -ss $(((% - 12)*2)) -to $(((% - 12 + 1) * 2)) -i BigBuckBunny.mp4 -r 24 -vf scale=160:-1,crop=160:80 -vcodec mjpeg -q:v 5 -an ee_%.avi -y'$ git clone https://github.com/likeablob/endless-endless-eight.git
$ cd endless-endless-eight
$ cp include/user_config.g.template cp include/user_config.h
$ code include/user_config.h
$ pio run || pio run # The very 1st run may fail due to ulptool-pio
$ pio run -t uploadSee ./enclosure.
Centering on the deep sleep mode, this application has several wake-up states as depicted in the following diagram.
stateDiagram-v2
Playing: Playing Video (Nominal)
[*] --> Playing
Playing --> DeepSleep: At low battery
DeepSleep --> Playing: At high battery
DeepSleep --> Emergency: At very low battery
Emergency --> DeepSleep: ASAP
DeepSleep --> PeriodicReporting: Every 30 minutes
PeriodicReporting --> DeepSleep: ASAPIt's quite simple; Wake the Main CPU up if the battery voltage (BAT_V) >= 3.9 V and put into sleep if BAT_V <= 3.75 V.
The ULP co-processor executes own routine every one second, but still is able to keep the deep sleep current consumption at uA-level.
flowchart TB
subgraph CPU["Main CPU"]
%% flow
power_boot(" ")
boot("Boot")
check_ulp_boot{"Wake by ULP?"}
init_ulp["Init ULP routine"]
%% flow
init_loop(" ")
check_batv_sleep{"BAT_V <= SLEEP_TH"}
sleep("Deep sleep")
power_boot --> boot --> check_ulp_boot
check_ulp_boot -->|"Yes"| init_loop
check_ulp_boot -->|"No"| init_ulp --> init_loop
init_loop --> check_batv_sleep
check_batv_sleep -->|"Yes"| sleep
check_batv_sleep -->|"No"| init_loop
sleep -.-> |"Wake by ULP"| boot
end
subgraph ULPThe play state such as a file playing, its position and loop count etc. are kept over deep sleep or even complete power outage, thanks to Nagato RTC SLOW MEM and Non-Volatile Storage. The former is volatile but survives deep sleep, and the latter is nothing but a reserved region in flash.
In short there are two pathways for each storage.
RTC_SLOW_MEM before entering deep sleep. Restore from RTC_SLOW_MEM after waking up from deep sleep.NVS at very-low battery voltage. Restore from NVS on boot.Note: About B., the ULP routine wakes the main CPU in the Emergency mode when BAT_V <= 3.55 V. This happens only once and the related flag will be cleared by the main CPU after normal wake up.
flowchart
%% nodes
init(" ")
check_ulp_boot{"Wake by ULP?"}
restore_from_nvs["Restore from Non-volatile storage"]
restore_from_rtc["Restore from RTC SLOW RAM\n(Volatile, Deep-sleep persistent)"]
check_ulp_flag_emergency{"Emergency Mode?\n(caused by very low battery)"}
save_to_nvs["Save to Non-volatile storage"]
sleep("Deep sleep")
init_loop("Main Loop")
check_low_bat{"Low battery?"}
save_to_rtc["Save to RTC SLOW MEM"]
init ---> check_ulp_boot
check_ulp_boot -->|"Yes"| check_ulp_flag_emergency
check_ulp_boot -->|"No"| restore_from_nvs --> init_loop
check_ulp_flag_emergency --> |"Yes"| save_to_nvs --> sleep
check_ulp_flag_emergency --> |"No"| restore_from_rtc --> init_loop
init_loop --> check_low_bat
check_low_bat --> |"Yes"| save_to_rtc --> sleep
check_low_bat --> |"No"| init_loop
sleep -.-> initMIT
This projects is here thanks to a lot of superb OSS libraries. See platformio.ini for details. Thank you to all the devs.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 4 | 10k | Resistor_SMD:R_0603_1608Metric | R2, R3, R4, R5 |
| 1 | 0.96in_80x160_st7735s_LCD_module | Connector_PinSocket_2.54mm:PinSocket_1x08_P2.54mm_Vertical | J1 |
| 1 | 100 | Resistor_SMD:R_0603_1608Metric | R1 |
| 1 | 2k | Resistor_SMD:R_0603_1608Metric | R6 |
| 1 | Micro_SD_Card_Det | Connector_Card:microSD_HC_Hirose_DM3BT-DSF-PEJS | J2 |
| 1 | Q_NMOS_GSD | Package_TO_SOT_SMD:SOT-23 | Q1 |
| 1 | Q_PMOS_GSD | Package_TO_SOT_SMD:SOT-23 | Q2 |
| 1 | esp32_wemos_lolin32_lite | wemos_lolin32_lite:esp32_wemos_lolin32_lite | U1 |

google/mozc-devices
Circuit diagrams and firmware source code for Gboard DIY keyboards


FrameworkComputer/ExpansionCards
Reference designs and documentation to create Expansion Cards for the Framework Laptop

hoglet67/RGBtoHDMI
Bare-metal Raspberry Pi project that provides pixel-perfect sampling of Retro Computer RGB/YUV video and conversion to HDMI

hackclub/OnBoard
💡 Join 1,000 teenagers and make your first PCB with a $100 grant!


tardate/LittleArduinoProjects
a collection of "Little Electronic & Arduino Projects", most involving electronics or an Arduino in one way or another!

basilfx/TRADFRI-Hacking
Hacking IKEA TRÅDFRI products, such as light bulbs, window blinds and other accessories.
11 parts. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
From the likeablob/endless-endless-eight repository on GitHub, at the commit this page was made from: the board is kicad/endless-endless-eight.kicad_pcb and its schematic kicad/endless-endless-eight.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).