dotMorten/SideKick

★ 8Forks 0C#GitHub ↗Compare

README

SideKick

SideKick is a Windows worker application that renders a configurable dashboard to a Waveshare e-paper display through an FT232H USB adapter. The dashboard can show calendar events, tasks, Home Assistant data, stocks, and system status. Calendar and task data can come from classic Outlook, Microsoft Graph, Todoist, GitHub, and web calendars. A WinUI settings window is available from the system tray.

image

Display wiring

The tables below show the default pin mappings used by EPaper. FT232H pin numbers in the source map to the common signal names shown here. D2/MISO is not used because the display connection is write-only apart from its dedicated BUSY line.

Hardware List

Good Display GDEM1085T41 10.85-inch display

The 10.85-inch panel uses Good Display's DESPI-C1085 controller, with two chip-select lines and 3-wire SPI. Command/data selection is encoded on SDI; there is no separate DC connection.

FT232H connection FT232H pin Display pin Purpose
SCK D0 (0) SCLK Shared SPI clock
MOSI D1 (1) SDI Shared SPI data to display
First chip select D3 (3) CS First display controller
Second chip select D4 (4) CS2 Second display controller
GPIO D5 (5) RES Shared display reset
GPIO D6 (6) BUSY Display busy status
3.3 V supply 3.3V 3.3V Display power
Ground GND GND Common ground

There is code in place for a set of other Waveshare E-Paper displays, but not that they do not provide a lot of space for content. The connection for these would be:

FT232H connection FT232H pin Display pin Purpose
SCK D0 (0) CLK SPI clock
MOSI D1 (1) DIN SPI data to display
Chip select D3 (3) CS Display selection
GPIO D4 (4) DC Data/command selection
GPIO D5 (5) RST Display reset
GPIO D6 (6) BUSY Display busy status
Compatible supply rail — VCC Display power
Ground GND GND Common ground

TTP223 touch buttons

SideKick reads two TTP223 capacitive-touch modules on the FT232H high GPIO bank. These are independent of the display signals above and use C0 and C1 (GPIO pins 8 and 9).

Button FT232H connection FT232H pin TTP223 pin
First C0 8 OUT
Second C1 9 OUT
Both 3.3V — VCC
Both GND — GND

Power each TTP223 at 3.3 V so its OUT signal never exceeds the FT232H's 3.3 V GPIO level. The app recognizes press (Down), release (Up), single tap, double tap, and hold gestures; the button events are intentionally not assigned to actions yet.

MSIX packaging

Worker remains a .NET worker project and uses WinUI single-project MSIX packaging. Generate an unsigned architecture-specific package with Visual Studio MSBuild:

& "C:\Program Files\Microsoft Visual Studio\18\Enterprise\MSBuild\Current\Bin\MSBuild.exe" `
  Worker\Worker.csproj /restore /t:Build `
  "/p:Configuration=Release;Platform=x64;GenerateAppxPackageOnBuild=true;AppxBundle=Never"

Use Platform=ARM64 for an ARM64 package. Packages are written under Worker\AppPackages.

Before distributing the package, replace the Publisher in Worker\Package.appxmanifest with the subject of the production signing certificate, then sign through Visual Studio's Package and Publish workflow or provide the corresponding package-signing properties to MSBuild. The certificate subject must exactly match the manifest publisher.

The installed MSIX uses the manifest SideKickStartup task for the System setting that launches SideKick at sign-in. Unpackaged development builds continue to use the current-user Run registry entry. If a user disables the packaged task in Windows Settings or Task Manager, Windows requires the user to re-enable it under Settings > Apps > Startup.

image

Contributors

dotMorten

Issues