Tag

Showing blog posts sorted under the tag: 3d printing

Adventures in Remote Control Aircraft and 3D Printing

Eclipson Model B with Raspberry Pi Zero 2 W and Camera.

For the past couple of years, UAVs and drones have been on my mind, well, really just fixed-wing drones. So, in an effort to break away a bit from working on Dreamcast projects (still working on something cool right now but not ready to show yet), I wanted to spend some time working on remote control planes. I think the applications of UAVs is growing rapidly and up here in the North, in the middle of nowhere, even more-so.

A bit over a year ago, I had purchased the files and plans for a drone-style plane called the Flightory Stallion. It's a fairly involved and expensive build so, in the end, I never got further than ordering the necessary lightweight 3D printing filament and kind of shelved the project for later.

This spring though, my son got into planes and, what do you know, we had a 3D printer and filament ready-to-go. I wanted to scale things back though and try a simpler project. Partly to just take things slower instead of trying to jump straight into making an expensive drone, and partly so my son could help put things together and build some of the plane himself.

After a bit of research, and discussions with my son, we ended up purchasing plans for the Eclipson Model B. These plans also came with an exact parts list for the non-3D printed parts and recommendations for stuff like the transmitter/receiver combo which made ordering electronics pretty convenient.

So, with everything on the way, it was time to actually print the plane. It's printed almost entirely using lightweight PLA Aero filament, a special 3D printing filament that foams as it gets heated in the print nozzle. Because of the foaming, it is much less dense than standard PLA and ends up being about half the weight. It's also not nearly as durable as standard PLA, but I guess that's the tradeoff.

The way the parts are printed is also very clever. They're printed in 'spiral vase mode' which means one continuous extrusion of filament is laid down in a spiral so the nozzle never lifts off the part. This makes for a much smoother and nicer-looking part than traditional layer-by-layer printing, especially with lightweight PLA as it tends to foam and spew little bits of filament whenever the nozzle lifts off the part. Even the internal spars and strengthening is cleverly designed as sort of indents in the 3D model itself so that there is still some internal support without actually using infill from the slicer.

A single layer of a wing section being printed in vase mode. Internal supports are 'walls' baked into the 3D model itself.

Gluing all the printed pieces together was pretty satisfying as plane slowly took shape. This was also where my son got to have the most fun working on it. We probably went through half a bottle of super glue during the whole process.

As for the onboard electronics, it's extremely bare-bones with standard servos, an inexpensive 1250KV motor, speed controller, and a cheap receiver. After a bit of research, the one piece of electronics I added over the standard list was a gyroscope. Compared to fancy flight computers, the gyro is much simpler but, being a novice flyer, I wanted a bit of insurance.

Normally, the gyro just corrects sudden changes in the planes orientation but it can also be configured to always return the plane to level flight when no controller input is detected or limit how much the plane can roll or pitch. This ended up being a huge help and probably saved the plane in at least one instance.


Since this all started with an interest in drones and UAVS, and since the RC plane looks like, well, a plane, I wanted to make it a bit more 'drone-ish'. So, of course I have to strap a Raspberry Pi and camera to it. It was connected to the planes battery and was setup to both record to an SD card and stream it over wifi using itself as the access point.

Unfortunately, the whole camera setup was a complete failure for a couple of reasons. Firstly, it was positioned under the nose of the plane at a bit of a downward angle, hoping to maybe catch something interesting on the ground like a bear. However, being behind the propeller meant the video looked awful! This probably could have been avoided with some ground testing but I was eager to get out in the field. It's starting to make sense why so many drones use pusher props.

Even worse though, soon after takeoff the transmitter started alarming that it could not reach the receiver and cut out for several seconds. Thank goodness for the gyro, otherwise I'm sure the plane would have ended up in a tree. My theory is that the 2.4GHz of the Pi's wifi was interfering with the 2.4GHz of the transmitter, or possibly the Pi drawing too much power, as there were no more issues after removing the camera. For the interested viewer, feel free to check out the rather short flight video at the bottom of this post.


All-in-all, it was a fun project. I learned a lot about RC planes and UAVs, and got to spend some time with my son working on a project. And thankfully the plane did make several (mostly) successful landings, even if one was into a tree. I would love to spend more time on this stuff, long-range beyond visual line-of-sight would be really cool for surveying. Or maybe trying to recreate some of the gyros features using a Pi Pico would be fun.

Thanks for reading!


Tags:


Pico2Maple - Sega Dreamcast Controller Adapter using Raspberry Pi Pico 2

Pico2Maple prototypes powered on during Power Stone 2.

Since getting the Steam Controller working on the Sega Dreamcast, I've been expanding the idea into a general-purpose USB-to-Dreamcast device with an eye on potentially selling it as a product. To that end, I've created a few prototype devices of something I'm calling Pico2Maple.

Pico2Maple is a dongle that plugs into the Dreamcast and allows USB devices to be used on the system in place of original Dreamcast peripherals. Several controllers, keyboards, and even some mice are supported (yes the Dreamcast had an official keyboard and mouse). Additionally, Pico2Maple emulates a VMU - the Dreamcast's memory card - complete with a tiny OLED screen and saving files to a microSD card for easy backups.

So far, I've confirmed the following controllers to work:

  • Steam Controller
  • 8BitDo SN30 Xbox
  • XInput controllers (Xbox 360, One, Series)
  • Sony DualSense5
  • 8BitDo Wireless Dongle (great for connecting a variety of other controllers wirelessly)

Most USB keyboards should work for games like Typing of the Dead or chatting in Phantasy Star Online. Mouse support does need a bit of improvement but chances are good most will work; it's hard to find enough hardware to test things like this.

Some USB devices will report multiple descriptors (a mouse may report as a mouse and a keyboard) for extra functionality. Pico2Maple will try and use the first valid device it sees and pass that through to the Dreamcast. Unfortunately, it's not possible to report multiple devices through a single Dreamcast controller port.

Pico2Maple prototypes.

The brains of the device is a Raspberry Pi Pico 2 with my custom firmware and Maple bus implementation. The firmware is not open source at the moment, but the binaries are available on my GitHub if anybody wants to make their own version of the hardware.

When I started working on this project, the RP2350 chip powering the Pico 2 was not readily available, so I designed a custom PCB where the Pico 2 board could be soldered directly to it. Since most of the 'real' electronics are on the Pico board, my PCB is more-or-less just a way to connect all the extra components and peripherals, with a form factor that would work well for a dongle.

Surprisingly, the prototype PCBs I ordered worked great! I must have gotten lucky because there were no functional issues with the boards. Due to the insane shipping times to where I live though, I was moving a bit fast and wasn't completely decided on a final design when I ordered the PCBs. This is why the USB port is facing the wrong direction and meant I had to do a bit of extra manual prep work on the boards. I hope to do a second revision to fix that, and move around a few components for a better overall fit.

Pico2Maple PCB render.

In addition to the custom PCB, this project was also my first experience with CAD and 3D printing. I designed the entire enclosure for the dongle in FreeCAD and printed them on a BambuLab P1S. The main body of the dongle is made up of 3 pieces that sandwich the electronics together and four m2 screws, with threaded inserts, extend through the whole dongle and squeeze everything tight.

It took quite a bit of tweaking a test-printing to get the fit I was going for but I think it was worth it in the end. They came out looking almost exactly like what I had imagined! (Wavebird dongle vibes anyone?)

The final dimensions of the dongle are roughly 30mm wide, 25mm deep, and 61mm tall. I would say they are a smidge too wide and are therefore a bit too snug when multiple are plugged in. The microSD card also sticks out about 1-2mm so, even though four can fit in the console by themselves, not all would be able to have SD cards plugged in. Ideally I'd shave off maybe 2mm from the width and have the microSD cards be flush for a better fit.

Other than being a bit too wide, I think the rest of the dimensions are perfect and they look pretty slick when plugged into the Dreamcast.

A Dreamcast-coloured Pico2Maple powered on.

I mentioned earlier that I hope to produce and sell these to fellow Dreamcast enthusiasts but the current road block is that assembly simply takes way too long to make it worth it. Between soldering the Pico to the main board, wiring up the Dreamcast plug, and final assembly, the whole process takes maybe 45-60 minutes which is too long for me. Plus I don't really like being hunched over a soldering iron for so long.

I could save some time if JLCPCB could presolder the Pico 2 boards for me, or if I could design a PCB using the RP2350 chip directly. But that still leaves wiring up the Dreamcast plug which is what really takes the bulk of the time, trimming wires and soldering the pins. I'd guess it would still take around 30 minutes to put one together which still seems too long.

If anybody has any tips on speeding up manufacturing I'd leave to hear it. I would also be open to potentially licensing the firmware and letting somebody else handle the manufacturing. Either way, feel free to reach out!

Thanks for reading!


Tags: