- Upload pictures from any device in your network
- Incl. dithering: Preview & adjust images before uploading
- Image processing optimized for E Ink displays
- Histogram equalization increases the look on E Ink displays
- Exposure and contrast sliders can adjust any kind of suboptimal photos
- Soon: Image Gallery and slide show mode
- Picture frame webapp + server
- More IOT! Deploy this honeypot easily in your own network!
- Components
- Target: Waveshare's Esp32 driver board
- Display: Cheap 7.5" 800x480 E Ink display from waveshare
- Frameworks
- PlatformIO with wiring lib from Arduino.
- Angular
- Material design via Angular Material Components
- All files to be served are stored within the ESP32's SPIFFS
- This project allows easily building all frontend artifacts into pre-compressed files with just one command, see build angular
- Embed more E Ink displays: Currently for the 7.5" 800x480 Waveshare display only.
- Refactor hard coded parameters into system settings section
- Implement an image gallery and slide show mode
- Enable energy saving as well as self power off
This project is migrated to PlatformIo. It allows using better tools and still uses the Angular framework and libraries. To setup the "Arduino" part of this project, see Setup PlatformIO
- Install VSCode
- Install the PlatformIO Plugin for VSCode
- Install the ESP32 libs called
"Espressif 32"
in the PlatformIO Plugin sectionPlatforms
- No need to install other libs like driver, server etc. Platformio does it all. Awesome!
- If you wanna maintain these dependencies, look for
"lib_deps"
in theplatformio.ini
file.
- If you wanna maintain these dependencies, look for
- Change your ESP32's COM-Port in
platformio.ini
. You can't find a GUI menu for that settings unlike in the arduino ide.
- Install newest LTS Version of node.js from here
- Install VSCode or your preferred editor
- Cool VSCode extensions for angular:
- Angular Extension Pack - that's an all in one bundle
- i18n Ally for translation management
- Cool VSCode extensions for angular:
- Install Angular CLI: Open the
src/angular
folder with VSCode and go into a terminal withctrl + j
and enternpm install -g @angular/cli
- Install all dependencies for the angular project
npm install
- If commands are failing because
'ng.ps1 cannot be loaded because running scripts is disabled on this system'
, runSet-ExecutionPolicy Unrestricted -Scope CurrentUser
Create a file src/arduino/epd_server/local_dev_config.h
and fill with settings as follows.
#define wifiSettings
const char* ssid = "Your Wifi Name";
const char* password = "Your Wifi Password";
Make sure your terminal is on the angular root path - that is src/angular/picture-frame-frontend
- and run
npm run build-arduino
The following holds true using a FTDI2232HL "Minimodule", in this case a
cheap $10 breakout
with the device name Dual RS232-HS
.
Notice that debugging won't work with the display/spi being enabled.
-
Install the
platformio-ide
plugin in VSCode. -
Import the project into PlatformIO
-
Download & use Zadic to install the
Dual RS232-HS (Interface 0)
Device as WinUSB driver. -
Edit
platformio.ini
to contain[env:esp32dev] platform = espressif32 board = esp32dev framework = arduino upload_port = <YOUR COM PORT OF ESP32> monitor_speed = 115200 upload_speed = 921600 debug_tool = minimodule
-
Run Debugging once (
F5
) and let it fail. If it fails and does not find your debugger, change the debugger name inC:\Users\YOURNAME\.platformio\packages\tool-openocd-esp32\share\openocd\scripts\interface\ftdi\minimodule.cfg
to
ftdi_device_desc "Dual RS232-HS"
Although some docs indicate to only connect GND, debugging only works also connecting 3V3. Please check your own setup for this.
JTAG Name | FTDI 2232HL Pin | ESP32 Pin |
---|---|---|
TCK | FTDI AD0 | GPIO13 |
TDI | FTDI AD1 | GPIO12 |
TDO | FTDI AD2 | GPIO15 |
TMS | FTDI AD3 | GPIO14 |
RESET | FTDI AC2 | EN |
GND | FTDI GND | GND |
3V3 | 3V3 |
- Async TCP Library for ESP32
- GxEPD2 Waveshare lib for epd displays
- Adafruit GFX - can be found in lib manager to auto-install
See package.json and 3rdpartylicenses.txt for details on the angular dependencies.