wallart

8x8 pixel display firmware
git clone https://git.woozle.org/neale/wallart.git

  1Wall Art
  2========
  3
  4This project's primary home is
  5https://git.woozle.org/neale/wallart/
  6
  7This an art piece I have
  8hanging in the wall of my house, with
  9pixels crammed into a cardboard box.
 10Newer versions use an 8x8 grid,
 11in a 3D-printed enclosure.
 12
 13It doesn't display anything significant.
 14The idea is to have something to look at if you're idle,
 15without it being a distraction from more pressing issues.
 16If you're familiar with the album "music for airports",
 17it's that.
 18
 19Most people, after watching it for a bit,
 20form different ideas about what it's displaying.
 21That's cool.
 22
 23
 24Setup
 25-----
 26
 27When you first plug it in,
 28you will see a yellow pattern with blue or red bars around it.
 29The pattern is your mac address.
 30If the bars are red and a pixel is flashing,
 31that means you need to set up WiFi.
 32
 33You can also look at the back for a red LED.
 34If it's lit, you need to set up WiFi.
 35
 36Get your phone or computer to connect to an access point
 37called "WallArt".
 38The password is "artsy fartsy", unless you changed it in the source code.
 39Once connected,
 40you should get a browser window that lets you connect.
 41If not, try going to http://neverssl.com/.
 42
 43Please configure the clock before the WiFi.
 44This will set up your time zone,
 45so it doesn't blind you in the middle of the night.
 46
 47You can clear the wifi information with a reset.
 48
 49
 50Reset
 51------
 52
 53Plug the device in,
 54and connect GND to pin A0 (right next to GND).
 55The red LED on the Feather board should come on immediately,
 56indicating it needs the network set up again.
 57
 58
 59Network Server
 60--------------
 61
 62If you `#define` a wallart server,
 63the program will periodically fetch an image/animation from it,
 64and display that image/animation.
 65I added this so we could send little pictures to my daughter in college.
 66
 67Because the fetch takes some time,
 68one of the animation patterns actually shows progress of the fetch.
 69It's the one with the four lights of the same color.
 70After it's either succeeded or failed,
 71it stays on that color for a while,
 72so you can tell how everything is going.
 73Here's what the colors indicate:
 74
 75Color it stays on | Status
 76--- | ---
 77Blue | Unable to connect to access point
 78Aqua | Some sort of problem initiating the HTTPS request (DNS?)
 79Green | HTTPS server request failed (404 or similar)
 80Yellow | Image download failed
 81Orange | Everything worked!
 82
 83A happy setup will cycle through each color once,
 84and then display orange for a while.
 85
 86
 87Clock
 88-----
 89
 90At night, 
 91and sometimes during the day,
 92it displays something like a clock.
 93
 94* Each pixel in the top row is 1 hour (3600 seconds)
 95* Each pixel in the middle row is 5 minutes (300 seconds)
 96* Each pixel in the bottom row is 25 seconds
 97* There are four pixels around the bottom that move every 5 seconds
 98
 99Build Dependencies
100------------
101
102You'll need the following:
103
104* esp32 boards: Arduino ESP32 Feather
105* FastLED library
106* WifiManagerTZ library (and its dependencies)
107* ArduinoHttpClient library 
108
109
110Updating Firmware
111-----------------
112
113    python3 esptool.py --chip esp32 --port "/dev/ttyUSB0" --baud 921600  --before default_reset --after hard_reset write_flash  -z --flash_mode dio --flash_freq 80m --flash_size 4MB 0x1000 wallart.ino.bootloader.bin 0x8000 wallart.ino.partitions.bin 0xe000 boot_app0.bin 0x10000 wallart.ino.bin 
114
115
116
117Philosophy
118----------
119
120I was trying to make pixels fade in and out,
121and got the math wrong.
122But what I wound up with looked more interesting
123than what I was trying to make,
124so I kept it.
125
126After many trips to Meow Wolf's House of Eternal Return,
127I realized that the presentation of the piece
128is more important
129than how complicated the algorithm is.
130
131It's hard to encapsulate in a git repository,
132but if you want to make NeoPixel art,
133think hard about what the end result should look like.
134It's not enough to make a cool light show;
135it has to make people wonder "what is that for?"
136
137
138Apology
139----------
140
141I am no longer a C++ programmer.
142The structure of this code is awful.
143I'm sorry.
144I didn't feel like a 2-day refresher in a language I never use,
145for code nobody else is likely to ever compile.