From 0e674fe5f80242f48fab185831e601cc02e24804 Mon Sep 17 00:00:00 2001 From: s3lph Date: Mon, 20 Nov 2023 01:26:48 +0100 Subject: [PATCH] feat: initial commit --- .forgejo/workflows/build.yml | 26 ++++++++++ README.md | 92 +++++++++++++++++++++++++++++++++++ case/clock.scad | 88 +++++++++++++++++++++++++++++++++ case/clock.stl | Bin 0 -> 346684 bytes esp/.gitignore | 1 + esp/include/README | 39 +++++++++++++++ esp/lib/README | 46 ++++++++++++++++++ esp/platformio.ini | 20 ++++++++ esp/src/main.cpp | 51 +++++++++++++++++++ esp/test/README | 11 +++++ 10 files changed, 374 insertions(+) create mode 100644 .forgejo/workflows/build.yml create mode 100644 README.md create mode 100644 case/clock.scad create mode 100644 case/clock.stl create mode 100644 esp/.gitignore create mode 100644 esp/include/README create mode 100644 esp/lib/README create mode 100644 esp/platformio.ini create mode 100644 esp/src/main.cpp create mode 100644 esp/test/README diff --git a/.forgejo/workflows/build.yml b/.forgejo/workflows/build.yml new file mode 100644 index 0000000..02a0b8a --- /dev/null +++ b/.forgejo/workflows/build.yml @@ -0,0 +1,26 @@ +--- + +on: push + +jobs: + + platformio: + runs-on: docker + steps: + - uses: https://code.forgejo.org/actions/checkout@v4 + - run: | + apt update; apt install --yes python3-pip + pip3 install platformio + cd esp + sed -re 's/put your ssid here/"ssid"' -i src/main.cpp + sed -re 's/put your psk here/"psk"' -i src/main.cpp + pio run + + openscad: + runs-on: docker + steps: + - uses: https://code.forgejo.org/actions/checkout@v4 + - run: | + apt update; apt install --yes openscad + cd case + openscad -o pipeline.stl clock.scad diff --git a/README.md b/README.md new file mode 100644 index 0000000..307df74 --- /dev/null +++ b/README.md @@ -0,0 +1,92 @@ +# Ambient Lighting Clock + +3D model and ESP8266 code for a clock that projects colorful rays of light against the wall: + +* **Hours**: Wide red +* **Minutes**: Blueish green +* **Seconds**: Blue + +## Enclosure + +The directory `case` contains the [OpenSCAD](https://en.wikibooks.org/wiki/OpenSCAD_User_Manual) project and rendered STL file of the clock's enclosure. + +The enclosure is designed to be 3D-printed, and fits an 60x WS2812 LEDs strip with 144 LEDs per meter, such as [this one (AliExpress link)](https://de.aliexpress.com/item/32682015405.html) + +The enclosure also contains mounting holes to which a front plate can be attached (such as in the photo above). + +## ESP8266 + +At the heart of the clock sits an ESP8266, which connects to a WiFi network and fetches the current time of day via NTP. + +To build the code and program the ESP, you need to install the [PlatformIO](https://platformio.org/) framework. + +```shell-session +$ git clone https://git.kabelsalat.ch/s3lph/ambient-lighting-clock.git +$ cd ambient-lighting-clock/esp +$ vim src/main.cpp # Insert the WiFi SSID and PSK +$ pio run # To download dependencies and build without programming the ESP +Processing main (platform: espressif8266; board: nodemcu; framework: arduino) +-------------------------------------------------------------------------------------------------------------------------------------- +Verbose mode can be enabled via `-v, --verbose` option +CONFIGURATION: https://docs.platformio.org/page/boards/espressif8266/nodemcu.html +PLATFORM: Espressif 8266 (2023.4.0) > NodeMCU 0.9 (ESP-12 Module) +HARDWARE: ESP8266 80MHz, 80KB RAM, 4MB Flash +PACKAGES: + - framework-arduinoespressif8266 @ 2.7.4+9 + - tool-esptoolpy @ 1.40501.0 (4.5.1) + - toolchain-xtensa @ 2.40802.200502 (4.8.2) +LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf +LDF Modes: Finder ~ chain, Compatibility ~ soft +Found 31 compatible libraries +Scanning dependencies... +Dependency Graph +|-- Adafruit NeoPixel @ 1.11.0 +|-- NTP @ 1.6.0 +|-- ESP8266WiFi @ 1.0 +Building in release mode +Retrieving maximum program size .pio/build/main/firmware.elf +Checking size .pio/build/main/firmware.elf +Advanced Memory Usage is available via "PlatformIO Home > Project Inspect" +RAM: [==== ] 35.4% (used 28984 bytes from 81920 bytes) +Flash: [=== ] 26.8% (used 279396 bytes from 1044464 bytes) +==================================================== [SUCCESS] Took 1.58 seconds ==================================================== +$ pio run -t upload # To build the code and program it to the ESP8266 +Configuring upload protocol... +AVAILABLE: espota, esptool +CURRENT: upload_protocol = esptool +Looking for upload port... +Auto-detected: /dev/ttyUSB0 +Uploading .pio/build/main/firmware.bin +esptool.py v4.6-dev +Serial port /dev/ttyUSB0 +Connecting.... +Chip is ESP8266EX +Features: WiFi +Crystal is 26MHz +MAC: 2c:3a:e8:01:23:45 +Uploading stub... +Running stub... +Stub running... +Configuring flash size... +Flash will be erased from 0x00000000 to 0x00045fff... +Compressed 283552 bytes to 208462... +Writing at 0x00000000... (7 %) +Writing at 0x00005b34... (15 %) +Writing at 0x0000b2c4... (23 %) +Writing at 0x00010670... (30 %) +Writing at 0x00015f2e... (38 %) +Writing at 0x0001b0d0... (46 %) +Writing at 0x000200a6... (53 %) +Writing at 0x0002523e... (61 %) +Writing at 0x0002a761... (69 %) +Writing at 0x0002fcd8... (76 %) +Writing at 0x00035551... (84 %) +Writing at 0x0003ac1f... (92 %) +Writing at 0x00041169... (100 %) +Wrote 283552 bytes (208462 compressed) at 0x00000000 in 18.3 seconds (effective 124.1 kbit/s)... +Hash of data verified. + +Leaving... +Hard resetting via RTS pin... +=================================================== [SUCCESS] Took 23.76 seconds ==================================================== +``` diff --git a/case/clock.scad b/case/clock.scad new file mode 100644 index 0000000..8ff3f81 --- /dev/null +++ b/case/clock.scad @@ -0,0 +1,88 @@ +$fn=60; + +U=411; +R=U/(2*PI); +H=20; + +module frame() { + rotate([0,0,3]) { + difference() { + union() { + // fins + for (i=[0:59]) { + rotate([0,0,6*i]) { + translate([0,R+2,1]) { + cube([1,13,H]); + } + } + } + // base plate + cylinder(h=2, r=R+15); + // back plate + translate([0,0,H-2]) { + cylinder(h=2, r=R); + } + // outer back plate + translate([0,0,H-1]) { + difference() { + cylinder(h=2, r=R+15); + translate([0,0,-1]) { + cylinder(h=4, r=R+10); + } + } + } + // led mounting cylinder + translate([0,0,1]) { + cylinder(h=H, r=R); + } + } + // middle cutout + translate([0,0,-1]) { + cylinder(h=H+1, r=R-3); + } + // frontplate mounting hole + for (i=[0:30:359]) { + rotate([0,0,i-3]) { + translate([0,R+7,-1]) { + cylinder(h=4, r=2); + } + } + } + // cable feed hole + rotate([0,0,-3]) { + translate([0,-R-1.9,2]) { + rotate([0,0,25]) { + cube([20,2,H-2]); + } + } + } + rotate([0,0,-3]) { + // back plate mounting hole + translate([0,R-10,H-3]) { + hull() { + cylinder(h=4, r=2.5); + translate([0,-10,0]) { + cylinder(h=5, r=7.5); + } + } + } + // back plate button holes + translate([20,0,H-1]) { + cylinder(h=4, r=2.5); + } + translate([-20,0,H-1]) { + cylinder(h=4, r=2.5); + } + // cabling holes + translate([0,R+1, H-2]) { + rotate([90,0,0]) { + cylinder(h=5, r=2); + } + } + } + } + } +} + + +frame(); \ No newline at end of file diff --git a/case/clock.stl b/case/clock.stl new file mode 100644 index 0000000000000000000000000000000000000000..26178b9c9465a8f752c681ef570a40dc9e71db9e GIT binary patch literal 346684 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

qD8J$973ik|50k@3g}MIZLq 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 F{(tqM_I3aO literal 0 HcmV?d00001 diff --git a/esp/.gitignore b/esp/.gitignore new file mode 100644 index 0000000..03f4a3c --- /dev/null +++ b/esp/.gitignore @@ -0,0 +1 @@ +.pio diff --git a/esp/include/README b/esp/include/README new file mode 100644 index 0000000..194dcd4 --- /dev/null +++ b/esp/include/README @@ -0,0 +1,39 @@ + +This directory is intended for project header files. + +A header file is a file containing C declarations and macro definitions +to be shared between several project source files. You request the use of a +header file in your project source file (C, C++, etc) located in `src` folder +by including it, with the C preprocessing directive `#include'. + +```src/main.c + +#include "header.h" + +int main (void) +{ + ... +} +``` + +Including a header file produces the same results as copying the header file +into each source file that needs it. Such copying would be time-consuming +and error-prone. With a header file, the related declarations appear +in only one place. If they need to be changed, they can be changed in one +place, and programs that include the header file will automatically use the +new version when next recompiled. The header file eliminates the labor of +finding and changing all the copies as well as the risk that a failure to +find one copy will result in inconsistencies within a program. + +In C, the usual convention is to give header files names that end with `.h'. +It is most portable to use only letters, digits, dashes, and underscores in +header file names, and at most one dot. + +Read more about using header files in official GCC documentation: + +* Include Syntax +* Include Operation +* Once-Only Headers +* Computed Includes + +https://gcc.gnu.org/onlinedocs/cpp/Header-Files.html diff --git a/esp/lib/README b/esp/lib/README new file mode 100644 index 0000000..6debab1 --- /dev/null +++ b/esp/lib/README @@ -0,0 +1,46 @@ + +This directory is intended for project specific (private) libraries. +PlatformIO will compile them to static libraries and link into executable file. + +The source code of each library should be placed in a an own separate directory +("lib/your_library_name/[here are source files]"). + +For example, see a structure of the following two libraries `Foo` and `Bar`: + +|--lib +| | +| |--Bar +| | |--docs +| | |--examples +| | |--src +| | |- Bar.c +| | |- Bar.h +| | |- library.json (optional, custom build options, etc) https://docs.platformio.org/page/librarymanager/config.html +| | +| |--Foo +| | |- Foo.c +| | |- Foo.h +| | +| |- README --> THIS FILE +| +|- platformio.ini +|--src + |- main.c + +and a contents of `src/main.c`: +``` +#include +#include + +int main (void) +{ + ... +} + +``` + +PlatformIO Library Dependency Finder will find automatically dependent +libraries scanning project source files. + +More information about PlatformIO Library Dependency Finder +- https://docs.platformio.org/page/librarymanager/ldf.html diff --git a/esp/platformio.ini b/esp/platformio.ini new file mode 100644 index 0000000..39bbc1a --- /dev/null +++ b/esp/platformio.ini @@ -0,0 +1,20 @@ +; PlatformIO Project Configuration File +; +; Build options: build flags, source filter +; Upload options: custom upload port, speed and extra flags +; Library options: dependencies, extra library storages +; Advanced options: extra scripting +; +; Please visit documentation for the other options and examples +; https://docs.platformio.org/page/projectconf.html + +[env:main] +platform = espressif8266 +board = nodemcu +framework = arduino +upload_protocol = esptool +lib_deps = + adafruit/Adafruit NeoPixel@^1.11.0 + sstaub/NTP@^1.6 +;board_build.mcu = esp8266 +;board_build.f_cpu = 80000000L \ No newline at end of file diff --git a/esp/src/main.cpp b/esp/src/main.cpp new file mode 100644 index 0000000..f3ec916 --- /dev/null +++ b/esp/src/main.cpp @@ -0,0 +1,51 @@ + +#include +#include +#include +#include + +Adafruit_NeoPixel pixels(60, 5, NEO_GRB + NEO_KHZ800); + + +const char *ssid = put your ssid here; +const char *password = put your psk here; + +WiFiUDP wifiUdp; +NTP ntp(wifiUdp); + +void setup() { + Serial.begin(115200); + WiFi.begin(ssid, password); + while (WiFi.status() != WL_CONNECTED) { + Serial.println("Connecting ..."); + delay(500); + } + Serial.println("Connected"); + ntp.ruleDST("CEST", Last, Sun, Mar, 2, 120); // last sunday in march 2:00, timetone +120min (+1 GMT + 1h summertime offset) + ntp.ruleSTD("CET", Last, Sun, Oct, 3, 60); // last sunday in october 3:00, timezone +60min (+1 GMT) + ntp.begin(); + Serial.println("start NTP"); + pixels.begin(); +} + +uint8_t sixtyToPixel(int8_t sixty) { + return (60 - ((sixty+30) % 60)) % 60; +} + +void loop() { + delay(1000); + ntp.update(); + Serial.println(ntp.formattedTime("%T")); + uint8_t h = sixtyToPixel((ntp.hours() % 12) * 5 + (ntp.minutes() / 12)); + uint8_t hl = sixtyToPixel((ntp.hours() % 12) * 5 + (ntp.minutes() / 12) - 1); + uint8_t hr = sixtyToPixel((ntp.hours() % 12) * 5 + (ntp.minutes() / 12) + 1); + uint8_t m = sixtyToPixel(ntp.minutes()); + uint8_t s = sixtyToPixel(ntp.seconds()); + pixels.clear(); + pixels.setPixelColor(hl, pixels.getPixelColor(hl) | 0x00ff0000); + pixels.setPixelColor(h, pixels.getPixelColor(h) | 0x00ff0000); + pixels.setPixelColor(hr, pixels.getPixelColor(hr) | 0x00ff0000); + pixels.setPixelColor(m, pixels.getPixelColor(m) | 0x0000ff60); + pixels.setPixelColor(s, pixels.getPixelColor(s) | 0x000000ff); + pixels.show(); +} diff --git a/esp/test/README b/esp/test/README new file mode 100644 index 0000000..9b1e87b --- /dev/null +++ b/esp/test/README @@ -0,0 +1,11 @@ + +This directory is intended for PlatformIO Test Runner and project tests. + +Unit Testing is a software testing method by which individual units of +source code, sets of one or more MCU program modules together with associated +control data, usage procedures, and operating procedures, are tested to +determine whether they are fit for use. Unit testing finds problems early +in the development cycle. + +More information about PlatformIO Unit Testing: +- https://docs.platformio.org/en/latest/advanced/unit-testing/index.html