The ESP8266 is a cheap WiFi SoC that is getting a growing interest within Makers and many people have asked them-self if this extremely low price (is sold at 5$ for a single piece) is hitting the market of cheap products.
Andreas looking inside an RGBWW (5 channels, 3 for RGB and 2 for White) controller has found an ESP8266 and even the connector to program it with the Arduino cores.
This device sells at 10$ for a single piece and can be used with any custom Arduino sketch, like this one below
/**************************************************************************
Souliss - RGB LED Strip Hack
Control and RGB LED or a Strip using the PWM, fade in/out and flash
effects are available as the Android interface or openHAB.
Run this code on one of the following boards:
- RGBW Led Strip Driver based on ESP8266
***************************************************************************/
// Configure the framework
#include "bconf/MCU_ESP8266.h" // Load the code directly on the ESP8266
#include "conf/Gateway.h" // The main node is the Gateway, we have just one node
// **** Define the WiFi name and password ****
#define WIFICONF_INSKETCH
#define WiFi_SSID "mywifi"
#define WiFi_Password "mypassword"
// Include framework code and libraries
#include <ESP8266WiFi.h>
#include <EEPROM.h>
#include "Souliss.h"
#define LEDCONTROL 0
#define LEDRED 1
#define LEDGREEN 2
#define LEDBLUE 3
#define LEDSTRIP1 4
#define LEDWHITE1 5
#define LEDSTRIP2 6
#define LEDWHITE2 7
void setup()
{
Initialize();
analogWriteFreq(500);
analogWriteRange(255);
// Get the IP address from DHCP
GetIPAddress();
SetAsGateway(myvNet_dhcp); // Set this node as gateway for SoulissApp
Set_LED_Strip(LEDCONTROL); // Set a logic to control a LED strip
Set_DimmableLight(LEDSTRIP1);
Set_DimmableLight(LEDSTRIP2);
// Define inputs, outputs pins
pinMode(12, OUTPUT); // Power the LED
pinMode(13, OUTPUT); // Power the LED
pinMode(15, OUTPUT); // Power the LED
pinMode(14, OUTPUT); // Power the LED
pinMode(4, OUTPUT); // Power the LED
}
void loop()
{
// Here we start to play
EXECUTEFAST() {
UPDATEFAST();
// Execute the code every 1 time_base_fast
FAST_10ms() {
// Execute the logic that handle the LED
Logic_LED_Strip(LEDCONTROL);
Logic_DimmableLight(LEDSTRIP1);
Logic_DimmableLight(LEDSTRIP2);
// Use the output values to control the PWM
analogWrite(15, mOutput(LEDRED);
analogWrite(13, mOutput(LEDGREEN);
analogWrite(12, mOutput(LEDBLUE);
analogWrite(14, mOutput(LEDWHITE1);
analogWrite(4, mOutput(LEDWHITE2));
// Just process communication as fast as the logics
ProcessCommunication();
}
// Process the other Gateway stuffs
FAST_GatewayComms();
}
EXECUTESLOW()
{
UPDATESLOW();
SLOW_10s() {
// The timer handle timed-on states
Timer_LED_Strip(LEDCONTROL);
Timer_DimmableLight(LEDSTRIP1);
Timer_DimmableLight(LEDSTRIP2);
}
}
}
A couple of friends are just getting a sample to use it with Souliss, stay tuned!