Cheating at 5V WS2812 Control to Use 3.3V Data

If you’re looking to control WS2812 (or Neopixel) LEDs using a microcontroller running at 3.3 volts, you might run into some issues. The datasheet tells us that a logic high input will be detected at a minimum voltage of 0.7 * Vcc. If you’re running the LED at 5V, this means 5 V * 0.7 = 3.5 V will be needed for the WS2812 to detect a ‘1’ on the data line. While you might get away with using 3.3 V, after all the specification in the data sheet is meant to be a worst case, it’s possible that you’ll run into reliability issues.

So usually we’d say “add a level shifter to convert 3.3V to 5V” and this post would be over. We even have a whole post on building level shifters which would work fine for this application. However [todbot] at CrashSpace came up with a nifty hack that requires fewer components yet ensures reliability.

bigbutton-front-backFor the Big Button project at CrashSpace, [todbot] used an ESP8266 running at 3.3 volts and WS2812 LEDs running at 5 V. To perform the level shift, a signal diode is placed in series with the power supply of the first LED. This drops the first LED to 4.3 V, which means a 4.3 V * 0.7 = 3.01 V signal can be used to control it. The logic out of this LED will be at 4.3 V, which is enough to power the rest of the LEDs running at 5 V.

This little hack means a single diode is all that’s needed to control 5 V LEDs with a 3.3 V microcontroller. The first LED might be a little less bright, since it’s operating at a lower voltage, but that’s a trade off [todbot] made to simplify this design. It’s a small part of a well-executed project so be sure to click-through and enjoy all the thought [todbot] put into a great build.

LED Strip Display Gives You Two Ways to See the Music

What to call this LED strip music visualizer is a puzzler. It lights up and pulsates in time with music similar to the light organs of 1970s psychedelia fame, but it’s more than that. Is it more like the Larson Scanner that graced the front of [David Hasselhoff]’s ride on Knight Rider? A little, but not quite.

description-croppedWhatever you decide to call this thing, it looks pretty cool, and [Scott Lawson] provides not one but two ways to build it. The business end is a simple strip of WS2812b addressable LEDs. It looks like the first incarnation of the project had an ESP8266 driving the LEDs in response to commands sent to it from a PC running the visualization code, written in Python. That setup keeps the computationally intensive visualization code separate from the display, but limits the display to 256 pixels and probably has to deal with network latency. The Raspberry Pi version both crunches the numbers and drives the display, but the Pi doesn’t have the oomph to run both the LEDs and the GUI, which is pretty interesting to look at by itself. The video below shows the different visualization modes available — we’re partial to the “energy effect” at the end.

Take your pick of hardware and throw a couple of these things together for your next rave. And if you need a little more background on the aforementioned Larson Scanner, we’ve got you covered.

Continue reading “LED Strip Display Gives You Two Ways to See the Music”

Servo-Controlled IoT Light Switches

The Internet of Things is fun to play with; there’s all manner of devices to automate and control remotely. It can be sketchy, though — make a mistake when coding your automatic plant watering system and you could flood your house. Make a mistake with a space heater and you could burn it down. Combine these risks with the fact that many people live in rental properties, and it can be a difficult proposition to bring the Internet of Things to your home.

[Suyash] came up with a way around this by building 3D printed light switch covers that add servo control. It’s a great solution that it doesn’t require the modification of any mains wiring, and interfaces with the standard switches in the normal way. It makes it a lot safer this way — there are municipal wiring codes for a reason. This is a great example of what you can do with a 3D printer, above and beyond printing out Yoda heads and keychains.

The backend of things is handled by the venerable ESP8266, with [Suyash]’s custom IoT library known as conduit doing the heavy lifting. The library is a way to quickly build IoT devices with web interfaces, and [Suyash] claims it’s possible to be blinking an LED from the cloud within 5 minutes using the tool.

For another take on an IoT light switch, check out this Hackaday Prize entry from 2016.

Tracking Planes with an ESP8266

While there are apps that will display plane locations, [squix78] wanted to build a dedicated device for plane spotting. The ESP8266 PlaneSpotter Color is a standalone device that displays a live map with plane data on a color TFT screen. This device expands on his PlaneSpotter project, adding a color display and mapping functions.

First up, the device needs to know where planes are. The ADS-B data that is transmitted from planes contains useful data including altitude, velocity, position, and an identifier unique to the aircraft. While commercial services exist for getting this data, the PlaneSpotter uses ADS-B Exchange. You can set up a Raspberry Pi to record this data, and provide it to ADS-B Exchange.

With the plane data being received from the ADS-B Exchange API, it’s time to draw to the screen. The JPEGDecoder fork for ESP8266 is used for drawing images, which are fetched from the MapQuest API as JPEGs.

Finally, geolocation is needed to determine where in the world the PlaneSpotter is. Rather than adding a GPS module, [squix78] went with a cheap solution: WiFi geolocation. This uses identifying information and signal strengths from nearby WiFi access points to determine location. This project uses a public API by [Alexander Mylnikov], which returns a JSON object with longitude and latitude.

This project demonstrates what the ESP8266 is capable of, and brings together some neat techniques. If you’re looking to geolocate or display maps on an ESP8266, the code is available on Github.

Continue reading “Tracking Planes with an ESP8266”

Air Conditioner Speaks Serial, Just Like Everything Else

Like so many other home appliances, it’s likely that even your air conditioner has a serial interface buried inside it. If you’re wondering why, it’s because virtually every microcontroller on the planet has a UART built in, and it’s highly useful for debugging during the development process, so it makes sense to use it. Thus, it was only a matter of time before we saw a hacked airconditioner controlled by a Raspberry Pi.

[Hadley] was growing frustrated with the IR remote for his Mitsubishi air conditioner; it can issue commands, but it’s a one way interface – there’s no feedback on current status or whether commands are received, other then the occasional beep or two. Deciding there had to be a better way, [Hadley] grabbed a Saleae Logic Analyser and started probing around, determining that the unit spoke 5 V TTL at 2400 bps with even parity. The next step was to start talking back.

Continue reading “Air Conditioner Speaks Serial, Just Like Everything Else”

ESP-ing a Philips Sound System.

IoT-ifying old stuff is cool. Or even new, offline stuff. It seems to be a trend. And it’s sexy. Yes, it is. Why are people doing this, you may ask: we say why not? Why shouldn’t a toaster be on the IoT? Or a drill press? Or a radio? Yes, a radio.

[Dr. Wummi] just added another device to the IoT, the Internet of Thongs as he calls it. It’s a Philips MCM205 Micro Sound System radio. He wanted to automate his radio but his original idea of building a setup with an infrared LED to remotely control it failed. He blamed it to “some funky IR voodoo”.  So he decided to go for an ESP8266 based solution with a NodeMCU. ESP8266 IR remotes have been known to work before but maybe those were just not voodoo grade.

After opening the radio up, he quickly found that the actual AM/FM Radio was a separate module. The manufacturer was kind enough to leave the pins nicely labelled on the mainboard. Pins labelled SCL/SDA hinted that AM/FM module spoke I²C. He tapped in the protocol via Bus Pirate and it was clear that the radio had an EEPROM somewhere on the main PCB. A search revealed a 24C02 IC in the board, which is a 2K I²C EEPROM. So far so good but there were other functionalities left to control, like volume or CD playing. For that, he planned to tap into the front push button knob. The push button had different resistors and were wired in series so they generated different voltages at the main board radio ADC Pins. He tried to PWM with the NodeMCU to simulate this but it just didn’t work.

Continue reading “ESP-ing a Philips Sound System.”

Rust Running on the Realtek RTL8710: ESP8266 Alternative?

For simply getting your project connected to WiFi, a least among hacker circles, nothing beats the ESP8266. But it’s not the only player out there, and we love to see diversity in the parts and languages that we use. One of the big shortcomings of the ESP8266 is the slightly-oddball Xtensa CPU. It’s just not as widely supported by various toolchains as its ARM-based brethren.

And so, when [Zach] wanted to do some embedded work in Rust, the ESP8266 was out of the picture. He turned to the RTL8710, a very similar WiFi module made by Realtek. Documentation for the RTL8710 is, at the moment, crappy, much as the ESP8266 documentation was before the hacker community had at it. But in trade for this shortcoming, [Zach] got to use the LLVM compiler, which supports the ARM architecture, and that means he can code in Rust.

In the end, the setup that [Zach] describes is a mix of FreeRTOS and some of the mbed libraries, which should be more than enough to get you up and running fairly painlessly on the chip. We’ve actually ordered a couple of these modules ourselves, and were looking to get started in straight C, but having Rust examples working doesn’t hurt, and doesn’t look all that different.

Is anyone else using the RTL8710? An ARM-based, cheap WiFi chip should be interesting.