I'm Vandalizing My Community... With Kindness – Part 1
License: GNU Lesser General Public License Drivers / Controllers Solenoids Programmers Qwiic STEMMA
This is my hydraulic matrix printer. It’s a machine I built to spray words onto a sidewalk, a way to share messages of kindness with the world. Turns out, getting this thing to work was a lot harder than I expected, but that’s where the fun begins. To get this working, I had to solve a few problems, like a leaky water system, tricky code, and a really janky prototype, before I could even spell one word, but if I can manage to pull this off, I want to take this thing out in public and vandalize my community with kindness, one drop of water at a time.
I want to be clear that this project wasn’t my original idea. I was inspired by a video on the Ryder Calm Down YouTube channel called "I Turned my Pickup truck into a printer." Ryder built this awesome contraption on the back of his truck that uses solenoid valves, just like these, to pump and spray water as he drives. It works just like a dot-matrix printer, spelling out words as he drives. I also watched a video on the Ivan Miranda channel where he built a similar vehicle that rides along the beach, making small indentations in the sand to spell out words. After watching those two videos, I was inspired to build one of these projects for myself and immediately had several ideas for how I would put my own spin on it.
Here’s my plan: instead of putting this on the back of a truck, I want to put it on the back of my Onewheel. I think it would be really cool to ride around and spray messages on the sidewalk, kind of like non-destructive graffiti. The real motivation for this project is to spread kindness, so all my messages will be really positive.
In Ryder’s video, he used a five-gallon bucket of water and a pump to generate water pressure, but I found something a little more interesting. I've got a small water pressure tank. The cool thing about it is that there are two compartments inside: one full of air and one full of water. I want to use this because it's much simpler, has no moving parts, and I think it’s a better overall solution. You might look at this tank and ask if it's enough water, and I’m a bit concerned about the same thing. This might only be enough water to write one or two messages. If that's the case, I have some ideas for solving that problem, and I'll cross that bridge when I get there. I've been planning this project for a long time, so I'm really excited to jump in.
The first thing I need to do is see if I can get water inside this pressure tank. Then I need to connect it to this tiny solenoid valve and try to actuate it to see if water comes out. I’m already a little bit stumped. The water pressure tank came with poorly written instructions and a bunch of fittings, so I need to figure out which ones I need to use. I have a valve for opening and closing the water pressure tank. Then, I can attach some six-millimeter tubing. If I can get water inside the tank, I can close the valve and then connect the tubing to the solenoid. The solenoid has a barbed end, so it fits perfectly and appears watertight. Keep in mind, this isn't very high pressure, only about 10 psi, or 68 kilopascals. If the pressure were a lot higher, I'd be more worried about leaks. On the other end of the solenoid tube, I’m just going to install one of the little spray nozzles, typically used in mist cooling systems for back porches. These have a tiny 0.2mm hole at the bottom, which atomizes the water into droplets and forms a cone as it exits.
Now I have to figure out how I’m going to fill this thing up with water. The first thing that comes to mind is just connecting it to a sink or a hose. I figured it wouldn’t be that hard to find something like this on Amazon, so that’s where I started. Unfortunately, it looks like I’m out of luck. I can't find any garden hose thread to six-millimeter quick-connect fittings, so I think I’m going to have to design and 3D-print my own. After some design time, I had an adapter modeled. Let's go ahead and print it out and put it all together to see if it works. I’ll start with this end that has the quick-connect fitting. I don't know if I'm just getting arrogant, but I'm not even going to put Teflon tape on it. On the other side, I have a garden hose O-ring that needs to be in there for a good seal. Now I'm ready to go outside and test this out. Here's the moment of truth. Let's see if these threads fit. They fit so well! Now I can open the valve on the pressure tank and the garden spigot, which should fill the tank to pressure. Then I'll close the tank valve and can safely remove it. Now I can go test my nozzles.
The first test is the 0.2mm nozzle. I'm going to hold it about ten centimeters above the ground and see how big the spot is. At least I can get water to come out. That's a great start. Now we'll try the 0.5mm nozzle. Oh yeah, that worked way better. I can already tell. I think if I want enough speed to print these messages, I'll need a little more flow than a 0.2mm nozzle.
We're making good progress, but this whole project will rely on solenoid valves, and it will need a lot of them. If I'm going to put this on an Onewheel, I need small solenoid valves. I found some tiny solenoid valves online. The plan is to attach a whole bunch of these to the back of the Onewheel, and they will create the message by spraying out water. Solenoid valves are like faucets that you can turn on and off with electricity. These solenoids have a normally open and a normally closed port. If the solenoids are not powered, water will just start coming out of this port on the end. I need to figure out a way to plug the normally open port. Once I apply a voltage to the solenoid, the water will come out of the plastic end. Because I don't want water coming out of the open end, I need to seal it. The first thing I tried was using a tiny M2 tap to cut some threads inside that hole. Then I applied some Teflon tape to an M2 screw, and that worked pretty well. But then I had an idea: why don't I just squirt some hot glue in there? Now we're going to test it to see how good a seal it makes. I'm going to connect the water pressure tank to the barbed input, and I'm hoping that when I open this ball valve, nothing happens and the water stays where it's supposed to. Great, it looks like that’s going to work. I'm glad that worked because it's going to be so much easier.
Now that the normally open port is fully sealed, I tested the solenoid by connecting it to a 5-volt power supply. These solenoid valves need to turn on and off with very precise timing so we can print every pixel of each letter and create words. Fortunately, solenoid valves are really easy to control; all you need to do is apply a voltage. But I need to be careful because a solenoid is an inductive load, which means it has a coil of wire inside. When you apply a voltage across a coil, it creates a magnetic field. When you remove that voltage, the magnetic field needs to dissipate, and if you're not careful, it can leak back into your electronics and fry them. So you need a flyback diode. I started designing my own circuit board for this project. I said, “Okay, I need about eight MOSFETs to control all of the solenoids, and those MOSFETs need to have flyback diodes.” Then I thought, maybe I should check first to make sure nothing like this is already out there. To my surprise, Adafruit has a board that is exactly what I needed. It's a solenoid control board with eight channels and all the protection circuitry, so I'm just going to use it.
The next task is to do some design work and 3D-print brackets to go on some aluminum extrusion. It will hold all the valves in place where they're supposed to go, and I also want to create a small bracket for the solenoid control board. Once everything is complete, I'll assemble it, plug it in, and start testing the solenoid valves.
I need a way to distribute the water from the pressure tank to all eight solenoids. I decided to print a manifold and connect everything together. After testing it for the first time. I discovered it leaked everywhere! I was hoping that it would hold the water pressure, but clearly it didn't. I need to rethink how I'm doing the manifold that distributes the water. I tried 3D-printing this part again, but with 100% infill. I don't know if this will work, but I’ll give it a shot. Oh yeah, I'm seeing some leaks. It's still leaking through the 3D-print, even though it's 100% infill. That’s disappointing. I was really hoping this would work. I'm going to think about this and come back with a better solution. I'll be honest. I'm really frustrated that I couldn't get this manifold design to work because it looks so cool, and I spent so much time designing it. As disappointing as it is, I have to remember that my goal here is not to design the finished product; it's to get a working prototype. With that in mind, I'm going to reluctantly use some off-the-shelf push-fit connectors. It’s not going to look pretty, but the goal is to get something working, and I think this is my ticket.
Once I have all the splitters connected to the solenoids, I need to set up a small testing station so the water goes into this container instead of all over my workbench. I've got a lot of work left to do. Let's see if all of these splitters actually hold pressure. Looking good! Never doubted it for a second. That's such a relief. All eight solenoids are holding back the 10 psi of water pressure. All that's stopping it from coming out is a control signal from a microcontroller to turn on all eight solenoids. I can't wait. This is going to be so good.
I connected the solenoids to 5 volts, then connected a microcontroller to my computer. Next, I'm going to write a simple sketch that just cycles through all eight solenoids. All I have to do is press down the button on the microcontroller, and it should start cycling through all eight solenoids. Oh, four and eight did not fire. I wonder what is going on there? I tested each solenoid individually, and they all seem to be working fine. I wonder if I just don't have enough voltage. The solenoids are rated between five and six volts, and I have it set to like 5.2v. I think I'm going to crank it up a little bit, maybe even go over six volts just to see if that's the problem. Perfect, that worked. It's nice to catch a break every once in a while. It seems like every time I run into a hurdle, I spend a day trying to figure out what it is.
With all of this working, I think I'm ready to move on. The next thing that this project needs is positional feedback. As I'm riding down the road and the message is printing, I don't want to rely solely on the microcontroller's timing to tell it when to fire the solenoids. I want some sort of feedback in the system. I've got a couple of different options. The first option is a photo interrupter. These have optical sensors inside, and when you pass something through the U-shape, they send a pulse to the microcontroller. The other option is an optical reflector. It sends out IR pulses and looks for the return signal. I don't want to have to attach something to the wheel and then have it pass through the gate. I'd much rather have an optical sensor. Since this is a reflective sensor, I could just use a silver Sharpie to draw a small line on the Onewheel hub. Now, I’ll mount the optical sensor using some poster putty. I've connected the optical reflective sensor to my microcontroller with a display, and you can see the analog readout at the bottom. Let's see if that value changes as the silver Sharpie passes by. I'm looking at the value. It is 4095, and now I’ll pass the silver Sharpie over. Oh, it does. It jumps, look at that! 3881. That's not a huge jump, but it's probably enough to trigger a microcontroller. I do think I can do a little bit better, though. I want to try laser-cutting a wooden circle for the Onewheel hub, with small windows cut out so the depth changes as it passes over the optical sensor. Now, I’ll plug this back in and look at our sensor value. When it's aimed at the laser-cut wood, I get a value of about 920. When I pass over a window, it's all the way up to like 2700. I think this will work really well for providing positional feedback to our controller so it knows when to turn the solenoids on and off.
I've been programming all day, and I'm finally ready to test this. Take one was kind of a disaster. I’m going to try again, wish me luck. Unfortunately, I forgot to turn on the water. Okay, ready? Did that kind of work? Oh, definitely. That is a Z-A-C-H, and then it starts over again with Z. That is unbelievable. I did not expect that to work. I mean, it's not perfect. I need to fine-tune some things. The A just kind of looks like a giant splotch, but I am definitely spelling out letters and my name. I'm freaking over the moon about this. I can't believe I got that to work.
Well, unfortunately, I think that's as good as it's going to get for now, but I am not giving up on this project. I am determined to get this thing to work flawlessly, and I think with enough tinkering and adjusting, I'm going to get there. I'm really excited to add more solenoids here and space them out so I can use bigger, more complex fonts, draw pictures, and all sorts of stuff. Then I can't wait to bring this thing out to the public, show people, and see what their reaction is. So stay tuned, you don't want to miss it, it's coming soon.

