Posts with «arduino hacks» label

PID Control with Arduino

Experience — or at least education — often makes a big difference to having a successful project. For example, if you didn’t think about it much, you might think it is simple to control the temperature of something that is heating. Just turn on the heater if it is cold and turn it off when you hit the right temperature, right? That is one approach — sometimes known as bang-bang — but you’ll find there a lot of issues with that approach. Best practice is to use a PID or Proportional/Integral/Derivative control. [Electronoob] has a good tutorial about how to pull this off with an Arduino. You can also see a video, below.

The demo uses a 3D printer hot end, a thermocouple, a MAX6675 that reads the thermocouple, and an Arduino. There’s also an LCD display and a FET to control the heater.

The idea behind a PID controller is that you measure the difference between the current temperature and the desired temperature known as the setpoint. The proportional gain tells you how much output occurs due to that difference. So if the setpoint is way off, the proportional term will generate a lot of output to the heater. If it is close, only a little bit of output will result. This helps prevent overshoot where the temperature goes too high and has to come back down.

The integral term adds a little bit to the output based on the cumulative error over time. The derivative term reacts to changes in the temperature difference. For example, if something external causes the temperature to drop suddenly, the derivative term can goose the output to compensate.

However, the operative word is “can.” Part of setting up a PID is finding the coefficients for each term which for some systems could be zero or even negative (indicating a reverse effect).  There are a lot of other subtleties, too, like what happens if the output stops affecting the temperature for a long period and the integral amount grows to unmanageable magnitude.

By the way, we’ve covered a PID library for Arduino before. While this post talks about temperature, PID control is used for everything from flight control to levitation.

Hack a Day 14 Apr 09:00

Need a Thousand Extra PWM Pins?

If your Arduino runs out of I/O lines, you can always add one of the several I/O expander chips that takes a serial interface to set its several pins. Or perhaps you could buy something like an Arduino Mega, with its extra sockets to fulfil your needs. But what would you do if you really needed more pins, say a thousand of them? Perhaps [Brian Lough] has the answer. OK, full disclosure: If you really need a thousand, the video isn’t exactly for you, as he shows you how to add up to 992 PWM outputs. The chip he uses works with any microcontroller (the video shows an ESP8266), and we suppose you could use two daisy chains of them and break the 1,000 barrier handily.

We like how short the video is (just two minutes; see below) as it gets right to the point. The PCA9685 chip gives you 16 12-bit PWM channels via an I2C interface. You can daisy chain up to 62 of the boards to get the 992 outputs promised.

[Brian] uses a cheap $2 breakout board that lets you set a 6-bit address, has a nice power connector and makes it easy to use the little surface mount device. Each of the 16 outputs on the board can have an independent duty cycle, but they do share a single output frequency. That means if you want to use some channels for low-frequency devices like motors and some for high-frequency devices like LEDs, you might have to spring $4 for two boards.

Over on, we’ve seen these devices driving 128 vibration motors. The PCA9685 made us think of the time we rolled our own serial to PWM devices using an FPGA.

Hack a Day 12 Apr 00:00

Art Deco Radio Gets FM Reception

Taking a vintage radio and cramming it full of modern, Internet-connected, guts has long been a staple of the hacking and making scene. While some might see it as a crime to take what’s arguably a legitimate piece of history and turn it into nothing more than a slipshod case for the Raspberry Pi, we have to admit there’s a certain appeal to the idea. Taking the beauty of classic design and pairing it with more modern capabilities is getting the best of both worlds.

But this project by [Nick Koumaris] is a somewhat unique take on the concept. Rather than sacrificing a real vintage piece of hardware to house the electronics, he’s designed a 3D printable case that looks like a classic 1936 AWA Radiolette. But what’s really interesting to us is that he then puts a basic FM radio inside of it.

That’s right, no Internet radio streaming or smartphone Bluetooth compatibility here. It’s just a regular FM radio, not entirely unlike the kind of hardware you’d expect to be inside of a classic radio. Of course, it’s much more modern, and [Nick] actually built it himself from a TEA5767 FM radio module and an Arduino Pro Mini.

While functionally it might not be terribly exciting, we do appreciate that he went through the trouble to make a vintage-looking user interface for the radio. While physical buttons would arguably have been more appropriate given the era, the art deco inspired font and graphics that show on the device’s Nokia 5110 LCD do look really slick.

Purists will surely be happy to see another project where a piece of vintage piece of audio equipment wasn’t sacrificed at the Altar of Hack, but we’ve also played host to many projects which weren’t nearly as concerned with historical preservation.

An LED Effect for Every Occasion

Quality software development examples can be hard to come by. Sure, it’s easy to pop over to Google and find a <code> block with all the right keywords, but having everything correctly explained can be hit or miss. And the more niche the subject, the thinner the forum posts get. Bucking the downward trend [HansLuijten] provides an astoundingly thorough set of LED strip patterns in his comprehensive post titled Arduino LED strip effects.

Don’t let the unassuming title lead you astray from the content, because what’s on offer goes beyond your average beginner tutorial on how to setup a strand of NeoPixels. [HansLuijten] is thorough to a fault; providing examples for everything from simple single color fades and classic Cylon eyes to effects that look like meteors falling from the sky. Seriously! Check out the video after the break. Those chasing lights you see around theater signs? Check. Color twinkle and sparkle? Check. Color wipes and rainbow fades? Check, and check.

At this point, an average forum post would be a jumbled mess of source which only works on an authentic Arduino Duemilanove running at 3.3v sitting on top of the 2nd printing of the author’s favorite issue of Make. But not here! These samples work with Adafruit’s easy to use NeoPixel library as well as FastLED, the quickest pixel in the West. On top of that the examples are clear and concise and explanation is plentiful. But the best part is definitely that each effect has a video clearly showing what it looks like.

If only everything were this easy to use, the open source revolution would already be here.

Stecchino Game is all about Balancing a Big Toothpick

Stecchino demo by the creator

Self-described “Inventor Dad” [pepelepoisson]’s project is called Stecchino (English translation link here) and it’s an Arduino-based physical balancing game that aims to be intuitive to use and play for all ages. Using the Stecchino (‘toothpick’ in Italian) consists of balancing the device on your hand and trying to keep it upright for as long as possible. The LED strip fills up as time passes, and it keeps records of high scores. It was specifically designed to be instantly understood and simple to use by people of all ages, and we think it has succeeded in this brilliantly.

To sense orientation and movement, Stecchino uses an MPU-6050 gyro and accelerometer board. An RGB LED strip gives feedback, and it includes a small li-po cell and charger board for easy recharging via USB. The enclosure is made from a few layers of laser-cut and laser-engraved material that also holds the components in place. The WS2828B LED strip used is technically a 5 V unit, but [pepelepoisson] found that feeding them direct from the 3.7 V cell works just fine; it’s not until the cell drops to about three volts that things start to glitch out. All source code and design files are on GitHub.

Games are great, and the wonderful options available to people today allow for all kinds of interesting experimentation like a blind version of tag, or putting new twists on old classics like testing speed instead of strength.

Arduino Clock Jots Down The Time, In UV

We’re big fans of the impractical around here at Hackaday. Sure there’s a certain appeal to coming up with the most efficient method to accomplish your goal, the method that does exactly what it needs to do without any superfluous elements. But it’s just not as much fun. If at least one person doesn’t ask “But why?”, then you probably left something on the table, design wise.

So when we saw this delightfully complex clock designed by [Tucker Shannon], we instantly fell in love. Powered by an Arduino, the clock uses an articulated arm with a UV LED to write out the current time on a piece of glow-in-the-dark material. The time doesn’t stay up for long depending on the lighting in the room, but at least it only takes a second or two to write out once you press the button.

Things are pretty straightforward inside the 3D printed case. There’s an Arduino coupled with an RTC module to keep the time, which is connected to the two standard hobby servos mounted in the front panel. A UV LED and simple push button round out the rest of the Bill of Materials. The source code is provided, so you won’t have to figure out the kinematics involved in getting the two servos to play nicely together if you want to try this one at home.

We’ve seen many clocks powered by Arduinos over the years, occasionally they even have hands. But few can boast their own robotic arm.

Programming Linux Devices With Arduino And The Cloud

Back in the olden days, when the Wire library still sucked, the Arduino was just a microcontroller. Now, we have single board computers and cheap microcontrollers with WiFi built in. As always, there’s a need to make programming and embedded development more accessible and more widely supported among the hundreds of devices available today.

At the Embedded Linux Conference this week, [Massimo Banzi] announced the beginning of what will be Arduino’s answer to the cloud, online IDEs, and a vast ecosystem of connected devices. It’s Arduino Create, an online IDE that allows anyone to develop embedded projects and manage them remotely.

As demonstrated in [Massimo]’s keynote, the core idea of Arduino Create is to put a connected device on the Internet and allow over-the-air updates and development. As this is Arduino, the volumes of libraries available for hundreds of different platforms are leveraged to make this possible. Right now, a wide variety of boards are supported, including the Raspberry Pi, BeagleBone, and several Intel IoT boards.

The focus of this development is platform-agnostic and focuses nearly entirely on ease of use and interoperability. This is a marked change from the Arduino of five years ago; there was a time when the Arduino was an ATmega328p, and that’s about it. A few years later, you could put Arduino sketches on an ATtiny85. A lot has changed since then. We got the Raspberry Pi, we got Intel stepping into the waters of IoT devices, we got a million boards based on smartphone SoCs, and Intel got out of the IoT market.

While others companies and organizations have already made inroads into an online IDE for Raspberry Pis and other single board computers, namely the Adafruit webIDE and Codebender, this is a welcome change that already has the support of the Arduino organization.

You can check out [Massimo]’s keynote below.

Interactive Plant Lamps for Quiet Spaces

If you’ve spent any serious time in libraries, you’ve probably noticed that they attract people who want or need to be alone without being isolated. In this space, a kind of silent community is formed. This phenomenon was the inspiration [MoonAnchor23] needed to build a network of connected house plants for a course on physical interaction and realization. But you won’t find these plants unleashing their dry wit on twitter. They only talk to each other and to nearby humans.

No living plants were harmed during this project—the leaves likely wouldn’t let much light through, anyway. The plants are each equipped with a strip of addressable RGB LEDs and a flex sensor controlled by an Arduino Uno. Both are hot glued to the undersides of the leaves and hidden with green tape. By default, the plants are set to give ambient light. But if someone strokes the leaf with the flex sensor, it sends a secret message to the other plant that induces light patterns.

Right now, the plants communicate over Bluetooth using an OpenFrameworks server on a local PC. Eventually, the plan is use a master-slave configuration so the plants can be farther apart. Stroke that mouse button to see a brief demo video after the break. [MoonAnchor23] also built LED mushroom clusters out of silicone and cling wrap using a structural soldering method by [DIY Perks] that’s also after the break. These work similarly but use force-sensing resistors instead of flex-sensing.

Networking several plants together could get expensive pretty quickly, but DIY flex sensors would help keep the BOM costs down.

Glorious Body of Tracked ‘Mad Mech’ Started as Cardboard

[Dickel] always liked tracked vehicles. Taking inspiration from the ‘Peacemaker’ tracked vehicle in Mad Max: Fury Road, he replicated it as the Mad Mech. The vehicle is remote-controlled and the tank treads are partly from a VEX robotics tank tread kit. Control is via a DIY wireless controller using an Arduino and NRF24L01 modules. The vehicle itself uses an Arduino UNO with an L298N motor driver. Power is from three Li-Po cells.

The real artistic work is in the body. [Dickel] used a papercraft tool called Pepakura (non-free software, but this Blender plugin is an alternative free approach) for the design to make the body out of thin cardboard. The cardboard design was then modified to make it match the body of the Peacemaker as much as possible. It was coated in fiberglass for strength, then the rest of the work was done with body filler and sanding for a smooth finish. After a few more details and a good paint job, it was ready to roll.

There’s a lot of great effort that went into this build, and [Dickel] shows his work and process on his project page and in the videos embedded below. The first video shows the finished Mad Mech being taken for some test drives. The second is a montage showing key parts of the build process.

Paper and cardboard are very versatile and accessible materials for making things. It’s what was used to do some target practice with this working paper and cardboard gun. With the right techniques foam core can be worked into an astonishing variety of shapes, and we also made a case for the value of a desktop vinyl cutter on any well-equipped hacker’s workbench.

RGB Disk Goes Interactive with Bluetooth; Shows Impressive Plastic Work

[smash_hand] had a clear goal: a big, featureless, white plastic disk with RGB LEDs concealed around its edge. So what is it? A big ornament that could glow any color or trippy mixture of colors one desires. It’s an object whose sole purpose is to be a frame for soft, glowing light patterns to admire. The disk can be controlled with a simple smartphone app that communicates over Bluetooth, allowing anyone (or in theory anything) to play with the display.

The disk is made from 1/4″ clear plastic, which [smash_hand] describes as plexiglass, but might be acrylic or polycarbonate. [smash_hands] describes some trial and error in the process of cutting the circle; it was saw-cut with some 3-in-1 oil as cutting fluid first, then the final shape cut with a bandsaw.

The saw left the edge very rough, so it was polished with glass polishing compound. This restores the optical properties required for the edge-lighting technique. The back of the disc was sanded then painted white, and the RGB LEDs spaced evenly around the edge, pointing inwards.

The physical build is almost always the difficult part in a project like this — achieving good diffusion of LEDs is a topic we talk about often. [smash_hands] did an impressive job and there are never any “hot spots” where an LED sticks out to your eye. With this taken care of, the electronics came together with much less effort. An Arduino with an HC-05 Bluetooth adapter took care of driving the LEDs and wireless communications, respectively. A wooden frame later, and the whole thing is ready to go.

[smash_hands] provides details like a wiring diagram as well as the smartphone app for anyone who is interested. There’s the Arduino program as well, but interestingly it’s only available in assembly or as a raw .hex file. A video of the disk in action is embedded below.

Making LED lighting interactive comes in many different shapes and forms, and as the disk above shows, shifting color patterns can be pleasantly relaxing.