Add support for OrangeClock PCB, add README
This commit is contained in:
parent
a2b6f234f1
commit
4b0a31a2ed
7 changed files with 124 additions and 4 deletions
5
.github/workflows/tagging.yml
vendored
5
.github/workflows/tagging.yml
vendored
|
@ -37,6 +37,11 @@ jobs:
|
||||||
version: esp32s2
|
version: esp32s2
|
||||||
- name: lolin_s3_mini
|
- name: lolin_s3_mini
|
||||||
version: esp32s3
|
version: esp32s3
|
||||||
|
- name: orangeclock
|
||||||
|
version: esp32s3
|
||||||
|
exclude:
|
||||||
|
- chip: orangeclock
|
||||||
|
epd_variant: 213epd
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
permissions:
|
permissions:
|
||||||
contents: write
|
contents: write
|
||||||
|
|
13
README.md
Normal file
13
README.md
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
# OrangeBTClock (working title)
|
||||||
|
|
||||||
|
[![BTClock CI](https://github.com/btclock/OrangeBTClock/actions/workflows/tagging.yml/badge.svg)](https://github.com/btclock/OrangeBTClock/actions/workflows/tagging.yml)
|
||||||
|
|
||||||
|
Firmware for cheap ESP32-S2/S3 hardware combined with a eInk display
|
||||||
|
|
||||||
|
See releases for prebuilt binaries, ready to flash (e.g. with the [esphome web flasher](https://web.esphome.io/))
|
||||||
|
|
||||||
|
## Development
|
||||||
|
|
||||||
|
- [PlatformIO](https://platformio.org/platformio-ide).
|
||||||
|
- [Node.js](https://nodejs.org/en) and [yarn](https://yarnpkg.com/).
|
||||||
|
|
62
boards/orangeclock.json
Normal file
62
boards/orangeclock.json
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
{
|
||||||
|
"build": {
|
||||||
|
"arduino":{
|
||||||
|
"ldscript": "esp32s3_out.ld",
|
||||||
|
"partitions": "default_8MB.csv",
|
||||||
|
"memory_type": "qio_opi"
|
||||||
|
},
|
||||||
|
"core": "esp32",
|
||||||
|
"extra_flags": [
|
||||||
|
"-DBOARD_HAS_PSRAM",
|
||||||
|
"-DARDUINO_ORANGECLOCK",
|
||||||
|
"-DARDUINO_ESP32S3_DEV",
|
||||||
|
"-DIS_ORANGECLOCK",
|
||||||
|
"-DARDUINO_USB_MODE=1",
|
||||||
|
"-DARDUINO_RUNNING_CORE=1",
|
||||||
|
"-DARDUINO_EVENT_RUNNING_CORE=1",
|
||||||
|
"-DARDUINO_USB_CDC_ON_BOOT=1"
|
||||||
|
],
|
||||||
|
"f_cpu": "240000000L",
|
||||||
|
"f_flash": "80000000L",
|
||||||
|
"flash_mode": "qio",
|
||||||
|
"psram_type": "opi",
|
||||||
|
"espidf": {
|
||||||
|
"sdkconfig_path": "boards"
|
||||||
|
},
|
||||||
|
"hwids": [
|
||||||
|
[
|
||||||
|
"0x303A",
|
||||||
|
"0x1001"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"mcu": "esp32s3",
|
||||||
|
"variant": "esp32s3"
|
||||||
|
},
|
||||||
|
"connectivity": [
|
||||||
|
"bluetooth",
|
||||||
|
"wifi"
|
||||||
|
],
|
||||||
|
"debug": {
|
||||||
|
"default_tool": "esp-builtin",
|
||||||
|
"onboard_tools": [
|
||||||
|
"esp-builtin"
|
||||||
|
],
|
||||||
|
"openocd_target": "esp32s3.cfg"
|
||||||
|
},
|
||||||
|
"frameworks": [
|
||||||
|
"arduino",
|
||||||
|
"espidf"
|
||||||
|
],
|
||||||
|
"name": "OrangeClock",
|
||||||
|
"upload": {
|
||||||
|
"flash_size": "8MB",
|
||||||
|
"maximum_ram_size": 327680,
|
||||||
|
"maximum_size": 16777216,
|
||||||
|
"use_1200bps_touch": true,
|
||||||
|
"wait_for_upload_port": true,
|
||||||
|
"require_upload_port": true,
|
||||||
|
"speed": 460800
|
||||||
|
},
|
||||||
|
"url": "http://github.com/btclock",
|
||||||
|
"vendor": "BTClock"
|
||||||
|
}
|
|
@ -10,7 +10,7 @@
|
||||||
|
|
||||||
[platformio]
|
[platformio]
|
||||||
data_dir = data/build_gz
|
data_dir = data/build_gz
|
||||||
default_envs = lolin_s2_mini_213epd, lolin_s2_mini_29epd, lolin_s3_mini_213epd, lolin_s3_mini_29epd
|
default_envs = lolin_s2_mini_213epd, lolin_s2_mini_29epd, lolin_s3_mini_213epd, lolin_s3_mini_29epd, orangeclock_29epd
|
||||||
|
|
||||||
[btclock_base]
|
[btclock_base]
|
||||||
platform = espressif32
|
platform = espressif32
|
||||||
|
@ -29,7 +29,7 @@ lib_deps =
|
||||||
bblanchon/ArduinoJson@^7.0.3
|
bblanchon/ArduinoJson@^7.0.3
|
||||||
mathieucarbou/ESP Async WebServer
|
mathieucarbou/ESP Async WebServer
|
||||||
gilmaimon/ArduinoWebsockets@^0.5.3
|
gilmaimon/ArduinoWebsockets@^0.5.3
|
||||||
|
fastled/FastLED@^3.6.0
|
||||||
[env:lolin_s2_mini]
|
[env:lolin_s2_mini]
|
||||||
extends = btclock_base
|
extends = btclock_base
|
||||||
board = lolin_s2_mini
|
board = lolin_s2_mini
|
||||||
|
@ -61,3 +61,12 @@ extends = env:lolin_s3_mini
|
||||||
build_flags =
|
build_flags =
|
||||||
${btclock_base.build_flags}
|
${btclock_base.build_flags}
|
||||||
-D VERSION_EPD_2_9
|
-D VERSION_EPD_2_9
|
||||||
|
|
||||||
|
|
||||||
|
[env:orangeclock_29epd]
|
||||||
|
extends = btclock_base
|
||||||
|
board = orangeclock
|
||||||
|
build_flags =
|
||||||
|
${btclock_base.build_flags}
|
||||||
|
-D VERSION_EPD_2_9
|
||||||
|
-D IS_ORANGECLOCK
|
|
@ -92,6 +92,7 @@ void setupWifi()
|
||||||
|
|
||||||
WiFiManager wm;
|
WiFiManager wm;
|
||||||
|
|
||||||
|
#ifndef ARDUINO_ORANGECLOCK
|
||||||
// Touch pin 14 to reset
|
// Touch pin 14 to reset
|
||||||
if (touchRead(14) > 9000)
|
if (touchRead(14) > 9000)
|
||||||
{
|
{
|
||||||
|
@ -108,6 +109,7 @@ void setupWifi()
|
||||||
wm.resetSettings();
|
wm.resetSettings();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
String softAP_SSID =
|
String softAP_SSID =
|
||||||
String("OrangeBTClock");
|
String("OrangeBTClock");
|
||||||
|
|
|
@ -51,7 +51,7 @@ void setupDisplay()
|
||||||
// display.fillRect(0, row1, display.width(), 54, GxEPD_BLACK);
|
// display.fillRect(0, row1, display.width(), 54, GxEPD_BLACK);
|
||||||
display.displayWindow(0, row1, display.width(), row2);
|
display.displayWindow(0, row1, display.width(), row2);
|
||||||
|
|
||||||
display.display(true);
|
display.display(false);
|
||||||
|
|
||||||
// display.fillRect(0, row2, display.width(), 54, GxEPD_BLACK);
|
// display.fillRect(0, row2, display.width(), 54, GxEPD_BLACK);
|
||||||
// display.displayWindow(0, row2, display.width(), 54);
|
// display.displayWindow(0, row2, display.width(), 54);
|
||||||
|
|
29
src/main.cpp
29
src/main.cpp
|
@ -8,6 +8,7 @@
|
||||||
#include "config.hpp"
|
#include "config.hpp"
|
||||||
#include "webserver.hpp"
|
#include "webserver.hpp"
|
||||||
#include <data.hpp>
|
#include <data.hpp>
|
||||||
|
#include <FastLED.h>
|
||||||
|
|
||||||
#define uS_TO_S_FACTOR 1000000 /* Conversion factor for micro seconds to seconds */
|
#define uS_TO_S_FACTOR 1000000 /* Conversion factor for micro seconds to seconds */
|
||||||
#define TIME_TO_SLEEP 5 /* Time ESP32 will go to sleep (in seconds) */
|
#define TIME_TO_SLEEP 5 /* Time ESP32 will go to sleep (in seconds) */
|
||||||
|
@ -21,6 +22,10 @@ GxEPD2_BW<EPD_CLASS, EPD_CLASS::HEIGHT> display = EPD_CLASS(4, 2, 3, 1);
|
||||||
GxEPD2_BW<EPD_CLASS, EPD_CLASS::HEIGHT> display = EPD_CLASS(5, 3, 2, 1);
|
GxEPD2_BW<EPD_CLASS, EPD_CLASS::HEIGHT> display = EPD_CLASS(5, 3, 2, 1);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef ARDUINO_ORANGECLOCK
|
||||||
|
GxEPD2_BW<EPD_CLASS, EPD_CLASS::HEIGHT> display = EPD_CLASS(5, 3, 1, 2);
|
||||||
|
#endif
|
||||||
|
|
||||||
typedef void (*MethodPtr)(String, char);
|
typedef void (*MethodPtr)(String, char);
|
||||||
|
|
||||||
MethodPtr methods[] = {nullptr, updateRow1, updateRow2, updateRow3};
|
MethodPtr methods[] = {nullptr, updateRow1, updateRow2, updateRow3};
|
||||||
|
@ -30,14 +35,25 @@ uint currentPrice = 0;
|
||||||
String currentBlock = "";
|
String currentBlock = "";
|
||||||
String currentFees = "";
|
String currentFees = "";
|
||||||
|
|
||||||
|
#define NUM_LEDS 2
|
||||||
|
CRGB leds[NUM_LEDS];
|
||||||
|
|
||||||
void setup()
|
void setup()
|
||||||
{
|
{
|
||||||
// setCpuFrequencyMhz(40);
|
// setCpuFrequencyMhz(40);
|
||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
|
|
||||||
|
#ifndef IS_ORANGECLOCK
|
||||||
pinMode(LED_BUILTIN, OUTPUT);
|
pinMode(LED_BUILTIN, OUTPUT);
|
||||||
|
|
||||||
digitalWrite(LED_BUILTIN, HIGH);
|
digitalWrite(LED_BUILTIN, HIGH);
|
||||||
|
#else
|
||||||
|
FastLED.addLeds<WS2812B, 48, GRB>(leds, NUM_LEDS);
|
||||||
|
leds[0] = CRGB::DarkOrange;
|
||||||
|
leds[1] = CRGB::OrangeRed;
|
||||||
|
|
||||||
|
FastLED.show();
|
||||||
|
#endif
|
||||||
|
|
||||||
setupPreferences();
|
setupPreferences();
|
||||||
setupDisplay();
|
setupDisplay();
|
||||||
|
@ -52,7 +68,20 @@ void setup()
|
||||||
}
|
}
|
||||||
client.setInsecure();
|
client.setInsecure();
|
||||||
|
|
||||||
|
#ifndef IS_ORANGECLOCK
|
||||||
digitalWrite(LED_BUILTIN, LOW);
|
digitalWrite(LED_BUILTIN, LOW);
|
||||||
|
#else
|
||||||
|
leds[0] = CRGB::Black;
|
||||||
|
leds[1] = CRGB::Black;
|
||||||
|
|
||||||
|
FastLED.show();
|
||||||
|
delay(100);
|
||||||
|
|
||||||
|
display.setFullWindow();
|
||||||
|
display.clearScreen(GxEPD_WHITE);
|
||||||
|
display.display(true);
|
||||||
|
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void loop()
|
void loop()
|
||||||
|
|
Loading…
Reference in a new issue