Turning Everything Into A Tap Controller

Our entire life is staring at glowing rectangles, and all our surroundings are hard, flat surfaces. [Ben] had the idea to turn those flat surfaces into a generic tap interface controller, and his project for the Hackaday Prize might just do that.

Some of the prior art that went into this project includes Ping Pong Plus Plus, an augmented-reality-ish implementation of ping pong that puts projected light wherever a ping pong ball hits the table. The game does this by mounting piezos to the bottom of a table and just a slight bit of math to determine where on the table the ball hit. There’s also MicLoc, a door lock that responds to knocking.

With this prior art, it’s all about microcontrollers and peripherals, and for that, [Ben] turned to the STM32F303RE, which sports four very fast ADCs and op-amps. There’s a lot of DMA usage on there, and the code is using a ton of signal processing. The important bit here is finding the difference between whatever the tabletop equivalent to an earthquake’s P-waves and S-waves are — [Ben] only wants the first bit of a waveform that travels through the table longitudinally, not the much louder vibrations of the entire table.

If [Ben] manages to put this together, an entire wall could be a light switch or a dimmer. You could add a secret knock to your door, and your desk could control your computer. It’s a promising idea, and the engineering that’s going into this project is just fantastic.

ARM Programming With Bare C

We confess. When starting a microcontroller project, we often start with the last one we did for that environment, copy it, and just make changes. And the first one? It — ahem — might have been found on the Internet. There’s a lot more than just your code that goes into this. If you want  to do (and understand) absolutely everything yourself on an ARM development project, you could use an all-in-one walkthrough. It just so happens [Jacob Mossberg] has a from scratch guide of what you need to do to get your C code running on ARM.

Starting with an ARM Cortex M3, he writes a simple C program and gets the assembly language equivalent. What follows is a detailed analysis of the machine code, exploring what the compiler assumed would be set up. This leads to understanding of what the start up code and linker script needs to look like.

It is a great approach and reminded us of the old saying about “teach someone how to fish.” He even devotes a little time to talking about getting debugging working with OCD. Of course, the exact details are specific to the chip he’s using, but most of it would apply to any ARM chip. Even if you don’t use ARM, though, the thought process and methodology is itself quite interesting.

This post would be just the thing if you are using Blue Pills and ready to move away from the Arduino ecosystem. Of course, if you want to veer away from the Arduino system, but don’t want to go all the way to bare metal, there’s always mBed.

Simple ESP8266 Weather Station Using Blynk

Today’s hacker finds themself in a very interesting moment in time. The availability of powerful microcontrollers and standardized sensor modules is such that assembling the hardware for something like an Internet-connected environmental monitor is about as complex as building with LEGO. Hardware has become elementary in many cases, leaving software as the weak link. It’s easy to build the sensor node to collect the data, but how do you display it in a useful and appealing way?

This simple indoor temperature and humidity sensor put together by [Shyam Ravi] shows one possible solution to the problem using Blynk. In the video after the break, he first walks you through wiring the demonstration hardware, and then moves on to creating the Blynk interface. While it might not be the ideal solution for all applications, it does show you how quickly you can go from a handful of components on the bench to displaying useful data.

In addition to the NodeMCU board, [Shyam] adds a DHT11 sensor and SSD1306 OLED display. He’s provided a wiring diagram in the repository along with the Arduino code for the ESP8266, but the hardware side of this demonstration really isn’t that important. You could omit the OLED or switch over to something like a BME280 sensor if you wanted to. The real trick is in the software.

For readers who haven’t played with it before, Blynk is a service that allows you to create GUIs to interact with microcontrollers from anywhere in the world. The code provided by [Shyam] reads the humidity and temperature data from the DHT11 sensor, and “writes” it to the Blynk service. From within the application, you can then visualize that data in a number of ways using the simple drag-and-drop interface.

We’ve seen Blynk and ESP8266 used to control everything from mood lighting to clearance-rack robotic toys. It’s a powerful combination, and something to keep in mind next time you need to knock something together in short order.

Continue reading “Simple ESP8266 Weather Station Using Blynk”

What’s Behind The Door? An IoT Light Switch

We’re not sure who designed [Max Glenister]’s place, but they had some strange ideas about interior door positioning. The door to his office is right next to a corner, yet it opens into the room instead of toward the wall. Well, that issue’s been taken care of. But the architect and the electrician got the last laugh, because now the light switch is blocked by the open door.

Folks, this is the stuff that IoT is made for. [Max] here solved one problem, and another sprang up in its place. What better reason for your maiden voyage into the cloud than a terrible inconvenience? He studied up on IoT servo-controlled light switching, but found that most of the precedent deals with protruding American switches rather than the rockers that light up the UK. [Max] got what he needed, though. Now he controls the light with a simple software slider on his phone. It uses the Blynk platform to send servo rotation commands to a NodeMCU, which moves the servo horn enough to work the switch. It’s simple, non-intrusive, and it doesn’t involve messing with mains electricity.

His plan was to design a new light switch cover with mounting brackets for the board and servo that screws into the existing holes. That worked out pretty well, but the weight of the beefy servo forced [Max] to use a bit of Gorilla tape for support. He’s currently dreaming up ways to make the next version easily detachable.

Got those protruding American switches? [Suyash] shed light on that problem a while back.

Programmable Badge Uses E-Ink And ESP8266

You’ve probably noticed that the hacker world is somewhat enamored with overly complex electronic event badges. Somewhere along the line, we went from using a piece of laminated paper on a lanyard to custom designed gadgets that pack in enough hardware that they could have passed for PDAs not that long ago. But what if there was a way to combine this love for weighing down one’s neck with silicon jewelry and the old school “Hello my name is…” stickers?

[Squaro Engineering] might have the solution with Badgy, their multi-function e-ink name…well, badge. Compatible with the Arduino SDK, it can serve as anything from a weather display to a remote for your smart home. Oh, and we suppose in an absolute emergency it could be used to avoid having to awkwardly introduce yourself to strangers.

Powered by an ESP-12F, Badgy features a 2.9″ 296×128 E-Ink display and a five-way tactical switch for user input. The default firmware includes support for WiFiManager and OTA updates to make uploading your own binaries as easy as possible, and a number of example Sketches are provided to show you the ropes. Powered by a LIR2450 3.6 V lithium-ion rechargeable coin cell, it can run for up to 35 days in deep sleep or around 5 hours of heavy usage.

Schematics, source code, and a Bill of Materials are all available under the MIT license if you want to try your hand at building your own, and assembled badges are available on Tindie. While it might not be as impressive as a retro computer hanging around your neck, it definitely looks like an interesting platform to hack on.

Voltage Monitor Relay Is More Than Meets The Eye

Automotive components that have a hidden secondary function are usually limited to cartoons and Michael Bay movies, but this project that [Jesus Echavarria] created for a client is a perhaps as close as we’re likely to get in the near future. The final product certainly looks like a standard automotive relay, but a peek inside the 3D printed case reveals a surprisingly complex little device. It’s still technically a relay, but it uses a PIC microcontroller to decide when it should activate.

[Jesus] was given the task of creating a device that would fit into the relay box of a vehicle, and serve as a battery monitor to fire off at different voltage set points. The client also wanted the ability to configure such things as how long the device would wait before enabling and disabling the alarms once the voltage threshold has been passed. After showing the client an oversize prototype using a PIC16F88 and switching regulator, he got the OK to move on to a smaller and more cost-effective version.

The final hardware makes use of a 78M05 500 mA linear regulator, a PIC16F1824 microcontroller, and a pair of AQY211EH solid state relays. The standard five pin layout used for automotive relays allows the monitor to get power from the vehicle’s battery while providing two output channels that can be switched on and off from the microcontroller. [Jesus] says an agreement with the client prevents him from sharing some elements of the project (like the firmware source code), but he gives enough information that it shouldn’t be too hard to spin up your own version.

With the addition of something like an ESP8266, this could be an easy way to retrofit an older vehicle with “smart” features. As an example, it could potentially allow for controlling the car’s headlights and horn over Wi-Fi. Or you could hack together a theft deterrent system that refuses to power on the starter or fuel pump unless your smartphone enables the relay first.

ESP8266 Internet Controlled LED Dimmer

There’s no shortage of debate about the “Internet of Things”, largely centered on security and questions about how much anyone really needs to be able to turn on their porch light from the other side of the planet. But while many of us are still wrestling with the realistic application of IoT gadgets, there’s undoubtedly those among us who have found ways to put this technology to work for them.

One such IoT devotee is [Sasa Karanovic], who writes in to tell us about his very impressive custom IoT LED dimmer based on the ESP8266. Rather than rely on a commercial lighting controller, he’s designed his own hardware and software to meet his specific needs. With the LED strips now controllable by any device on his network, he’s started working on Python scripts which can detect what he’s doing on his computer and react accordingly. For example, if he’s watching a movie the lights will automatically dim, and come back up when he’s done.

[Sasa] has provided all the files necessary to follow in his footsteps, from the Gerber files for his PCB to the Arduino code he’s running on the ESP. The source code is especially worth checking out, as he’s worked in a lot of niceties that we don’t always see with DIY projects. From making sure the ESP8266 gets a resolvable DNS hostname on the network to using websockets which update all connected clients with status info in real-time, he’s really put a lot of work into making the experience as complete as possible.

He’s explains in his blog post what needs to be edited to put this code to work in your own environment, and there’s even some descriptive comments in the code and a helpful debug mode so you can see how everything works. It’s always a good idea to consider that somebody else down the road might be using your code; taking a few minutes to make things clear can save them hours of stumbling around in the dark.

If you need more inspiration for your ESP8266 lighting project, check out this ambient lighting controller for a kid’s room, or this professional under-cabinet lighting controller.