Once I’d verified that I understood the concept of using the shift register for both input and output, I designed a board to have 8 LED outputs and 8 button inputs. Again, I made this modular so that I can plug and unplug it into the Nerduino.
The image above shows the board with 1 shift register installed. This is for the output, the second one will be for the input and that’s still to be soldered.
The wiring leaves a lot to be desired. I’ll think about v2.0 at a later time, I’d just like to get it working first.
Here’s a video of it working:
Because the number of inputs I want to put on the remote control exceeds the number of pins on the micro controller, there needs to be some creative electronics. I claim no ownership of this idea but I picked up some very useful information from Kevin Darrah’s YouTube video ( https://www.youtube.com/watch?v=6fVbJbNPrEU ).
Here’s the video of me reproducing the circuit to make sure I understand how it all works ( I do 🙂 )
Once again, I’m soldering Nerduinos to act as the micro controller for the remote control.
This time, I’ve added generic connector so that I can reuse this when I need to. It has 15 pins plus GND and VCC which should be just enough to have 2 joysticks, the wireless transceiver and a shift register-based button panel (see the next video for the first step of that ). To prove that I soldered it all correctly, here’s the obligatory video:
As with the clock circuits, I’m going to use the nRF24L01+ wireless transceiver or, possibly, the ESP8266 WiFi modules ( that’ll be v2.0 ) and they need a 3.3v power input instead of 5v. In the clock circuit, the converter was part of the circuit but, this time, I decided that I would make it more modular.
Like I don’t have other pointless projects, I decided to get the Roomba up and running again with remote control in mind. The Roomba has a serial port and there are a number of projects that control them with Arduinos.
So, here’s the Roombaduino. First step is to wire up a serial cable to allow the Roomba to power a Nerduino. The video shows the cable working in that it provides power and the Nerduino can run the LED blink sketch.
Next step is to build a remote control to send instructions to the Nerduino.
The scanner uses line lasers directed on the object being scanned. They don’t move but they need to be positioned.
This calls for a holder that will not only attach to the frame of the scanner but will also allow some limited movement. Preferably only limited movement when manually moved.
I thought about an axle like I made for the bearings but that would only allow movement in the horizontal axis. Instead, I decided on a ball joint. The fun was actually designing and printing it. I took a number of attempts before I had it working. The 3D design software lets you take a solid and subtract that from another solid so that the two should fix perfectly. That bit wasn’t hard. The thing I forgot is that if you have a ball inside a tube (socket) and that ball is bigger than the internal diameter of the tube, there’s no way the ball is going to pop into the socket when the parts are printed separately. So, I added slits down the side of the tube to allow for the tube to open up to allow the ball to pop in.
This is the ball part. It holds the laser:
This is the socket part. It attaches to the scanner frame:
With the laser and threaded rod. The threaded rod is loose because the internal diameter of the socket part is just enough to form a thread when I screw the rod in but then it wobbles once in place. I’m going to clamp it with a nut on either side.
With the ball joint together. The laser will be hanging down and the friction of the material is enough to keep it in place when positioned.
The driver board needed some kind of enclosure.
I split the case into 3 parts: bottom, middle and top. Once again, this is for print reasons. 3D printers don’t like overhangs that much so the split was necessary so that the print was easier.
The driver board sits in the bottom part:
The middle provides the top part of the holes for the connections:
The top covers the board but also has posts that stop the board from rising to much:
Each layer has a screw hole and the whole case is just tall enough that a 14mm M3-0.5 screw is sufficient to keep it all together.
After identifying the reason for the print failure, I printed a cleaner version of the turntable support. I redesigned it to take the 4 struts. The design is modular for a couple of reasons but first and foremost it’s because, if I merge the struts with the motor support, there will be so much support material it won’t be pretty.
I made the gap between the motor and the sides of the structure a little wider and this meant that the motor fit a lot better.
I also printed the 4 struts and popped the bearings on.
You can see that I added a t-shaped tab to the strut design and that slots into the holders on the side of the motor support.
With those printed, I can slot them into the motor support.
You notice that there is a part of the tab which is not in a slot. Again, that was for printing reasons so I printed a second half of the same motor support design but without the top plate.
That slots onto the struts and provides more stability.
I thought about securing both halves to each other but the struts and tabs plus the weight of the turntable ( and whatever is being scanned ) provides enough downward pressure to keep it all together.
Next step is to print a new coupler because I redesigned it to take more screws.
Just a very short post to say that I identified the reason for the failed print. The grub screw in the coupling between the z-axis motor and the threaded rod was loose and so was slipping badly. I tightened that up again and was able to print the motor support. I will post a picture shortly.
In the interests of showing that I’m not the super-genius you all believe I am, here’s a failed print of the redesigned motor support that I tried last night. It’s not that the design is flawed, it’s just that the printer decided it was going to grind into the layers 3/4 of the way through the print so I had to cancel it.