Esp8266-Laser
Wifi Host for the Arduino-Laser-Spirograph
HTTP endpoints:
-
/spirograph
- GET returns laser and motor values (0 at startup)
- POST sets new value(s)
- laser=1-128 (1:permanent, 2-127 pulse, 128 off)
- motor1=1-128
- motor2=1-128
- motor3=1-128
-
/preset
- POST sets new value(s) to Preset
- nr=presetNr (1-128)
- laser=1-128 (1:permanent, 2-127 pulse, 128 off)
- motor1=1-128
- motor2=1-128
- motor3=1-128
- apply=true -> run preset
- POST sets new value(s) to Preset
-
/presetMode
- GET returns current mode
- POST sets mode 0: presetsOff 1: cycle (not completed feature)
-
/presets
- GET returns /presets.json
-
/wificonfig
- GET returns wifi settings
- POST sets new wifi setting{s}
- apMode=0: will try to connect to SSID first, 1: will directly start the AP
- SSID=ssid
- password=password
- save=true will save config to spiffs, false will only change RAM variable (useful for onetime ap joins)
- apply=true will reset wifi and try to connect with new param (buggy atm)
-
/heap
- GET returns free heap of the ESP8266
-
/files
- GET returns list of files
Install
-
install arduino ide (1.8.5) or PlatformIO (see Development section for further instructions)
-
follow this instruction https://github.com/esp8266/Arduino#installing-with-boards-manager
-
clone/exctract repo to sketchbook
-
install this libaries https://github.com/plerup/espsoftwareserial https://github.com/bblanchon/ArduinoJson/
-
follow this instruction: set wifi parameters in data/wifi.json before upload
http://esp8266.github.io/Arduino/versions/2.0.0/doc/filesystem.html#uploading-files-to-file-system
You may also need to:
- get and install driver for nodemcu https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers
Development
PlatformIO
The project is intended to run on PlatformIO and the build environment is configured for NodeMCU 1.0 (ESP-12E Module).
More informations: http://docs.platformio.org/en/latest/platforms/espressif8266.html
Following libraries need to be installed via PIO Home / Libraries:
- SoftwareSerial
- ArduinoJson
Use following commands to build and upload the firmware and filesystem:
# clean the build directory
pio run -t clean
# run default build job / build the formware
pio run
# upload the firmware
pio run -e nodemcu -t upload
# build the filesystem
pio run -t buildfs
# upload the filesystem
pio run -t uploadfs
PlatformIO tasks can also be triggered with following npm run commands (pio / platformio executable needs to be in $PATH):
build:fs
upload:fs
build:firmware
upload:firmware
Frontend
Frontend development requires NodeJS / npm.
The development server watches all files in the frontend directory and automatically builds and copies the frontend code to the data folder.
### install dependencies
npm install
### run development server on port 8080
npm run dev
### build distribution source to data folder
npm run build