A minimalist firmware for the Pixo Pixel that will expose an HTTP API
The goal for this firmware is to expose a RESTful API, available on http(s). This API will perform functions such as
- Saving, Loading, and Deleting images from internal storage and RAM
- Displaying chosen image (or animation)
- Reading the state of the accelerometer
- Adding, Reading and Removing configuration options (wifi, brightness, toggles, etc)
- Ability to save TLS/SSL certificate+key to internal storage
- Signed OTA Updating
- More to come!
Pixo Pixel is a 16x16 REB LED display, using an ESP32 microcontroller and a 3-axis Accelerometer + Gyro.
Originally created by Sean Hodgens as a Make 100, the hardware is interesting but no general purpose firmware has been created publically. I've contributed to the project a bit in the past here, in the form of updating the readme and also some expansion/rewriting of example display functions.
- You need to have the current version of the Arduino IDE installed
- Ensure that you have the Arduino ESP32 Boards installed
- Various other libraries are required for the example firmware; they are listed below under "Libraries used in Example Firmware"
- Connect your pixo pixel to your computer and start Arduino
- Under the "Tools" menu, select "Board->Adafruit ESP32 Feather"; Leave Flash frequency and Upload speed the default
- Under Port, select the device your pixo is communicating over
- Compile and upload
- When the Arduino console says "Connecting....", press and hold both the boot and reset buttons simultaniously for 1 second; then release both buttons
- You should start to see output about flashing
- When the flash is complete, press the reset button on the pixo to start your new firmware
Install these to your sketchbook's libraries
folder, usually located in YOUR HOME/Documents/Arduino
Note Arduino IDE was complaining about i2cdevlib being invalid as the installation instructions are a bit unclear. It seems that the ESP32 is not officially supported for use with these libraries, and I had to apply a patch (#367) to get no compile errors.
- Download i2cdevlib and extract the zip file
- Inside the i2cdevlib/Arduino folder, copy
I2Cdev
andMPU6050
folders to yourlibraries
folder - Edit
libraries/I2Cdev/I2Cdev.cpp
, and right under#include "I2Cdev.h"
, add the following
#ifdef ARDUINO_ARCH_ESP32
#define BUFFER_LENGTH I2C_BUFFER_LENGTH
#endif
- Edit
libraries/MPU6050/MPU6050_6Axis_MotionApps20.h
and add the following right above theDEBUG
section
#ifndef ARDUINO_ARCH_ESP32
typedef void prog_void;
typedef char prog_char;
typedef unsigned char prog_uchar;
typedef int8_t prog_int8_t;
typedef uint8_t prog_uint8_t;
typedef int16_t prog_int16_t;
typedef uint16_t prog_uint16_t;
typedef int32_t prog_int32_t;
typedef uint32_t prog_uint32_t;
#endif
- Restart Arduino
There's a whole bunch of other commits in here, but this seems mostly to be a mix of: feature adding, bug fixing, and various other changes that may or may not be related. Feel free to experiment with these at your own discretion.