All Projects → CWempe → SuperLEDstrip

CWempe / SuperLEDstrip

Licence: other
No description or website provided.

Programming Languages

C++
36643 projects - #6 most used programming language
c
50402 projects - #5 most used programming language
Batchfile
5799 projects
XSLT
1337 projects
python
139335 projects - #7 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to SuperLEDstrip

Ailight
AiLight is a custom firmware for the esp8266 based Ai-Thinker (or equivalent) RGBW WiFi light bulbs
Stars: ✭ 248 (+1807.69%)
Mutual labels:  mqtt, esp8266, firmware, led
Heatpump
Arduino library to control Mitsubishi Heat Pumps via connector cn105
Stars: ✭ 327 (+2415.38%)
Mutual labels:  mqtt, esp8266, openhab
ComfoAirQ-Homie
Homie4 for Zehnder ComfoAirQ
Stars: ✭ 14 (+7.69%)
Mutual labels:  mqtt, homie, openhab
Mqtt Ir Transceiver
ESP8266 based bidirectional bridge between MQTT and IR (change MQTT message to IR signal and change received IR signal to MQTT message)
Stars: ✭ 130 (+900%)
Mutual labels:  mqtt, esp8266, openhab
Esphome
ESPHome is a system to control your ESP8266/ESP32 by simple yet powerful configuration files and control them remotely through Home Automation systems.
Stars: ✭ 4,324 (+33161.54%)
Mutual labels:  mqtt, esp8266, platformio
Esp Mqtt Json Multisensor
(OBSOLETE) ESP MQTT JSON Multisensor for Home Assistant. Supported sensors include the TEMT6000 light, AM312 PIR, DHT22 temperature/humidity sensors. RGB led supports flash, fade, and transition. Over-The-Air (OTA) uploading, too!
Stars: ✭ 323 (+2384.62%)
Mutual labels:  mqtt, esp8266, led
Esp Mqtt Json Digital Leds
(OBSOLETE) ESP8266 MQTT JSON Digital LEDs for Home Assistant
Stars: ✭ 503 (+3769.23%)
Mutual labels:  mqtt, esp8266, led
Sonoff Homeassistant
Firmware for ESP8266 based itead Sonoff switches for use with HomeAssistant
Stars: ✭ 354 (+2623.08%)
Mutual labels:  mqtt, esp8266, firmware
Tasmota
Alternative firmware for ESP8266 with easy configuration using webUI, OTA updates, automation using timers or rules, expandability and entirely local control over MQTT, HTTP, Serial or KNX. Full documentation at
Stars: ✭ 16,624 (+127776.92%)
Mutual labels:  mqtt, esp8266, firmware
Esp8266 React
A framework for ESP8266 & ESP32 microcontrollers with a React UI
Stars: ✭ 193 (+1384.62%)
Mutual labels:  mqtt, esp8266, platformio
Platform Espressif8266
Espressif 8266: development platform for PlatformIO
Stars: ✭ 206 (+1484.62%)
Mutual labels:  esp8266, firmware, platformio
ESP8266 mqtts
Arduino IDE project: send data from DS18B20 temperature sensor to mqtt.flespi.io via MQTT over SSL.
Stars: ✭ 16 (+23.08%)
Mutual labels:  mqtt, esp8266, firmware
Desk Lamp Alternative Firmware
An alternative firmware for the Mijia Xiaomi Desk Lamp
Stars: ✭ 54 (+315.38%)
Mutual labels:  esp8266, firmware, led
swifitch-software
Software for SWIFITCH HW
Stars: ✭ 12 (-7.69%)
Mutual labels:  mqtt, esp8266, platformio
Openmqttgateway
MQTT gateway for ESP8266, ESP32, Sonoff RF Bridge or Arduino with bidirectional 433mhz/315mhz/868mhz, Infrared communications, BLE, Bluetooth, beacons detection, mi flora, mi jia, LYWSD02, LYWSD03MMC, Mi Scale, TPMS, BBQ thermometer compatibility, SMS & LORA.
Stars: ✭ 2,413 (+18461.54%)
Mutual labels:  mqtt, esp8266, platformio
ADEM
Mobile device for distributed measurements of particulate matter (fine dust)
Stars: ✭ 12 (-7.69%)
Mutual labels:  esp8266, firmware, platformio
thinx-device-api
Remote IoT Device Management Platform
Stars: ✭ 19 (+46.15%)
Mutual labels:  mqtt, esp8266, firmware
vscode-iot-utility
IoT Utility for Visual Studio Code: Arduino, Espressif, Raspberry Pi, mbed and more
Stars: ✭ 61 (+369.23%)
Mutual labels:  esp8266, platformio
platform-atmelavr
Atmel AVR: development platform for PlatformIO
Stars: ✭ 97 (+646.15%)
Mutual labels:  firmware, platformio
server
MyController 2.x server
Stars: ✭ 14 (+7.69%)
Mutual labels:  mqtt, esp8266

SuperLEDstrip

I started this project as a gift for my little cousin. The goal was to create an LED strip that could be controlled by a kid via touchscreen. The graphical layout is based on Googles Material Design Guidelines.

display animation

SuperLEDstrip v1.0

Requirements

Hardware

  • Wemos D1 mini
    An ESP8266 device is nice, because it is litte, cheap and we can add Wifi features later.
    But any other Arduino compatible device should do.
  • WS2812B LED strip
    or any other LED strip that is suported by FastLED
    • It is recommended to use a capacitor to smooth out the power supply.
      I used one with 1000 µF and 16 V.
    • SK6812 is also supported since v2.7.0.
      Define FASTLED_RGBW in custom_values.h.
      • the white channel is irgnored for now
  • level shifter from 3.3V to 5V
    like Texas Instruments SN74HCT245N
    • a 20 pin IC socket for this chip is a good idea, too
  • DHT22 to get current temperture and humidity
    This is not necessary, but it is very cheap. So why not?
  • Nextion HMI touch screen
    I used the 3.2" basic model (NX4024T032) You cannot simply use another size without putting much effort into resizing all graphics!
    • a few connectors to make it easier to (dis-)connect the display
      XHP-4
    • a microSD card to flash the firmware to the display
  • Power supply like this
    • a suitable male adapter like these (not tested)
  • 470Ω resistor
  • some more tools, cables and connectors
    • I used Phoenix Contact MC 1,5/ 3-ST-3,5 and MCV 1,5/ 3-G-3,5 to connect the LED cables, because they are small and are specified to work with the expected current..
      But they are not good looking.
    • adding a fuse is a good idea for security, too

Software

Using VisualStudio Code and the PlatformIO Extension the necessary libraries are installed automatically vis platformio.ini.

Here is the Dependency Graph with the latest successfully tested versions.

Dependency Graph
|-- <Homie> 3.0.1
|   |-- <ArduinoJson> 6.11.5
|   |-- <AsyncMqttClient> 0.8.2
|   |   |-- <ESPAsyncTCP> 1.2.0
|   |   |   |-- <ESP8266WiFi> 1.0
|   |-- <Bounce2> 2.55.0
|   |-- <ESP Async WebServer> 1.2.3
|   |   |-- <ESPAsyncTCP> 1.2.0
|   |   |   |-- <ESP8266WiFi> 1.0
|   |   |-- <Hash> 1.0
|   |   |-- <ESP8266WiFi> 1.0
|   |   |-- <ArduinoJson> 6.11.5
|   |-- <Ticker> 1.0
|   |-- <ESP8266WiFi> 1.0
|   |-- <DNSServer> 1.1.1
|   |   |-- <ESP8266WiFi> 1.0
|   |-- <ESP8266HTTPClient> 1.2
|   |   |-- <ESP8266WiFi> 1.0
|   |-- <ESPAsyncTCP> 1.2.0
|   |   |-- <ESP8266WiFi> 1.0
|   |-- <ESP8266mDNS> 1.2
|   |   |-- <ESP8266WiFi> 1.0
|-- <ArduinoJson> 6.11.5
|-- <ESPAsyncTCP> 1.2.0
|   |-- <ESP8266WiFi> 1.0
|-- <DHT sensor library> 1.4.0
|   |-- <Adafruit Unified Sensor> 1.1.4
|-- <DallasTemperature> 3.9.1
|   |-- <OneWire> 2.3.5
|-- <OneWire> 2.3.5
|-- <Nextion> 0.0.0+20201108223110.sha.b8e2a3b
|   |-- <EspSoftwareSerial> 6.8.5
|-- <Embedis> 1.2.0
|-- <Adafruit Unified Sensor> 1.1.4
|-- <elapsedMillis> 1.0.6
|-- <FastLED> 3.3.3
|   |-- <SPI> 1.0
|   |-- <EspSoftwareSerial> 6.8.5
|-- <EEPROM> 1.0
|-- <EspSoftwareSerial> 6.8.5

In case you want to edit the content of the display to use other theme colors or add/replace some LED patterns, you also need the following programs.
Only tested and used with Windows 10.

  • Nextion Editor
    This software is needed if you want to change the content of the display
  • Inkscape
    to edit the graphics
  • inkmake
    to automatically create and export the necessary png files from the svg file
  • msxml
    to automatically replace colors in the svg file before exporting to png

Preparation

Nextion

Before you can start to compile the project you need to make some changes to the Nextion library.

This is already done in the branch linked in the platformio.ini.

Open the following file with a text editor.
C:\Users\<username>\Documents\Arduino\libraries\ITEADLIB_Arduino_Nextion\NexConfig.h

Disable debug by commenting it.

//#define DEBUG_SERIAL_ENABLE  

And replace

//#define nexSerial Serial

with

#include <SoftwareSerial.h>
extern SoftwareSerial HMISerial;
#define nexSerial HMISerial

see:

You also might want to change some custom values in custom_values.h.
Like DISPLAY_TITLE, DATA_PIN, NUM_LEDS, LEDS_PER_METER, LED_TYPE or COLOR_ORDER.

When using the custom FastLED library you are also able to use RGBW SK6812 strips and DMA mode by defining these features.

Usage

First you need to combine the hardware components.

breadboard view

There is also a pcb view when you are done testing. (not tested!)

Next you need to compile and upload the Arduino sketch to your device. After you installed the libraries you define the parameters of your device before you can hit the upload button.

Be aware to not connect the LED stripe while the system is only powered by usb via the Arduino, because this will put to much power through the Arduino. I recomment to disconnect the LED strip and the display while programming the Arduino.

configure serial parameters for Wemos in Arduino

After this you copy the compiled HMI file (will be uploaded to the release page) to an FAT32 formatted microSD card, plug it into the display, and connect power to the display. This will automatically start the flashing of the firmware.

Customizing

WLED

Since version 3.1.0 SuperLEDstrip supports controlling a WLED device.

  • Configure WLED_JSON_URL in custom_values.h befor compiling
  • Tested with wled version 0.12.0.
  • Not all scenes look identical to SuperLEDstrip.
  • Arcade scenes are not supported.

Buttons

You can configure the purpose of your buttons in custom_values.h. Like changing tha state of one or multiple output pins or switching between pre-defined scenes. Just change the values of button01_do[].

Outputs

You can also define some output pins in custom_values.h. They can be inverted and you can define the initial state at start up.

Arduino Code

Let's say you want to add an LED pattern you developed as the function mynewpattern().

First you need to add the pattern in SuperLEDstripe.ino if you create a new animation. If your are only ading a new color pattern for an existing animation (like runningPalette) you can skip this part.

//     Pattern IDs              0          1      2         3        4    5     6               7              8     9        10  
SimplePatternList gPatterns = { oneColor, stars, confetti, rainbow, bpm, kitt, flashingLights, runningPalette, xmas, Fire2012,  mynewpattern};

Add the new secen to the setScene() function in led_functions.h.

    case 304:   // swedish flag
      setupPaletteSweden();
      break;

While you are developing you might want to change the default scene to be your new one.

#define DEFAULT_SCENE      304

To start the pattern from a cell (virtual button) from the display, you add the pattern to the according callback function in nextion_callback_functions.h.
Here it is p01c07PopCallback (p01 = page 1; c07 = cell 7).

void p01c07PopCallback(void *ptr) { gCurrentPatternNumber = 10; }

Display Graphics

You also need to change the graphics of the display, if you add a new pattern. First you need to download some pictures from the internet that are not includes in this project.

./Display/exported/get_images.sh

Now you can open the Display\exported\display_matarial_design.svg with Inkscape and enable the object manger. Next you insert or create your new graphic (we will call it "tile" on top of the cell and group this with the object manager under the tile group of your choice (e.g. "tiles specials"). This is necessary, because the export script will automatically mark the different tile groups as (in-)visible.

add tile to graphics

In case you manually export the graphics you might want to change the theme colors and make the individual groups (in-)visible before each export. For each tile group (settings, flags, ...) you need two exports. One with the pressed group disabled and one with it enabled.

The export script Display\exported\create_colored_svg_custom.bat will do all this automatically. To use other theme colors you can change these in line 20.

call:SetColor  dark, white

If you run create_colored_svg.bat the script will create all possible color combinations according to Googles material design color palette. It took my computer about 24 hours to do this!

After the graphics are exported you need to replace the old ones in the Nextion file.
Open Display\400x240_black_white_light.HMI with the Nextion Editor.

Each tabulator of the interface has two pictures within the Nextion file. One with and one without 'pressed' objects. So for the first tab you need to replace pictures 1 and 2. Then you select the page (top right corner) and the tile you want the new pattern to be displayed at (here: p01c07) and change the attributes (bottem right) picc to 1 and picc2 to 2.

add tile to display

Now you can see the result by clicking Debug or hit Compile to create a binary file. Put this file (File | Open build folder) in the root directory of your microSD card , put it into the display, connect power and wait while the new firmware is flashed.

OTA-Update

With the integration of homie-esp8266 there comes the ability to flash the firmware via wifi.

  • make sure the device is connected to your mqtt broker
  • install and configure the homie-ota server
  • download the latest binary firmware release or compile it yourself with the Arduino IDE and select Sketch | Export compiled Binary
  • Upload the firmware via the web interface of homie-ota or with the upload_firmware.sh script
  • select firmware and device in the web interface and start the process

Upload config.json (SPIFFS)

Instead of configuriong your device via the Config-Mode of Homie, you can define your Homie-Configuration in `Data/config.json'. To upload the file via Seriel (USB) connection use the following command:

pio run -t uploadfs

If you use a d1_mini_pro board you still need to define board = d1_mini in your platformio.ini. Otherwise you get an std::bad_alloc error.

openHAB

Once you got your device connected to your mqtt broker you can configure your smart home (in this case openHAB) to control SuperLEDstrip.

openhab_sitemap

You can find configuration examples in the openhab folder.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].