Posts

V-22 Osprey Project - Prototype 1

Image
"Two helicopters on a stick" For my first prototype, I want to attach two of the mCPX BL helicopter frames to a central boom to test the control system in a hover. Essentially, two helicopters on a stick.  Upon examination of the stock mCPX BL frame, there is not a good way to attach the plastic frame to any cross support. I would have to design my own. I took the measurements from the stock frame and started sketching them up in Fusion360. After a few test prints to confirm the dimensional accuracy, I created a way to attach the frames to a 15mm square dowel. I’m using a Flip32+AIO FC board ( https://www.readytoflyquads.com/flip32-aio ) that I had in stock. It’s a Naze clone, and already quite old as FCs go, but it should provide enough functionality for this build. The stock mCPX BL controller has a built-in ESC for the brushless motor, but I will have to use different ESCs since I’m not using the stock control board. I happened to have 3 12-amp ESCs in m...

V-22 Osprey Project - Flight Control

Image
Now that I have a conceptual idea of how to build a V-22 using leftover mCPX BL parts, how do I go about controlling such an aircraft? I own a Taranis X9D+, and it can control up to 32 channels using dual receivers, so that won’t be a problem. I’m sure that I can create a mixing profile in the transmitter to handle just about anything, but I’m also sure that just like any multi-rotor “drone," this thing will need some form of automatic flight stabilization. I own a few multirotor aircraft and I’m familiar with how they function. Some research into the popular flight control software (Betaflight, iNav, Cleanflight, LIbrepilot, etc.) all came up short. No one has written code for off-the-shelf flight controllers to manage a dual-swashplate aircraft. I would have to build my own. I have not delved into writing code for flight controllers, but I have built a number of Arduino projects, and some of them utilize RC inputs to control servos and motors. It occurred to me that I...

V-22 Osprey Project - Background

Image
I embarked a few weeks back on what I think is a fairly ambitious project. I’ve long been a fan of the Bell Boeing V-22 Osprey. For those not familiar, the V-22 is an “American multi-mission, tiltrotor military aircraft with both vertical takeoff and landing (VTOL), and short takeoff and landing (STOL) capabilities. It is designed to combine the functionality of a conventional helicopter with the long-range, high-speed cruise performance of a turboprop aircraft.” (Wikipedia: https://en.wikipedia.org/wiki/Bell_Boeing_V-22_Osprey ) I’ve studied a few commercially produced V-22 radio control (RC) models, but they all seem to come up short. In the cases I studied serious design concessions were made to control costs and the model did not properly reproduce the real-world functionality of the V-22. Here are a couple of my observations: E-flite V-22 Osprey VTOL BNF Basic 487mm ( https://www.horizonhobby.com/v-22-osprey-vtol-bnf-basic-efl9650 ) Horizon Hobby, the makers of E-f...

Failed Print and Recovery

Image
I was able to turn a printer fail into a success. I started printing a toilet for my daughter's 18" American Girl doll. I scaled up this model ( https://www.thingiverse.com/thing:1866716 ) by 304% to get the appropriate size. Final height is ~180mm. I rotated and sliced the model into a tank and bowl parts. The bowl was going to require supports for a couple areas, but that was no problem.  I set it up to print both parts at 0.20 layer height and let it rock. To my horror the next morning I came in and saw this: I thought 15 hours of printing was lost. I searched the forums for what this error meant, and it turns out that the thermistor that reports the bed temperature had come loose.  To protect itself and our home, the printer aborts whatever it's doing when this occurs.  I took the bed off, fixed the loose bed thermistor, reassembled everything, and recalibrated the bed. I'm glad I took the photo of the failure screen because it told me it was printing at 61m...

New Hobby - 3D Printing

Image
I've been wanting a 3D printer for quite a while, but we could never really justify the cost.  A couple of co-workers were raving about the Prusa i3 Mk2 (http://www.prusa3d.com/) and all the awards it had just won.  I had looked around at others as well, but the general consensus was this was the real deal.  The only thing I had to do now was convince my wife. She asked the typical questions: "What are you going to do with it?" "It's so expensive!" "You'll just print little doo-dads."  "That's an expensive toy!" What guy's toy isn't expensive, huh?  It wasn't until she saw that it could print doll furniture that she was hooked as well. My co-workers and I all ordered our printers within a month or so, but with a 2 month backlog at Prusa the wait was killer.  Finally, my kit arrived!  I spent the first evening into the wee hours assembling the main bed.  Wow!  This thing is like IKEA on steroids!  The next day I spe...

ESXi Upgrade on Home Server

My home computer setup was starting to show its age.  My previous setup was a pair of Core2Duo class systems each with 4GB of DDR2 RAM.  One functioned as a server running ESXi 5, and the other as a gaming rig with a pretty slick ATI Radeon 6850.  The gaming rig did just fine for most modern games with that video card, but the ESXi server was over-taxed when trying to run anything more than a couple small Linux VMs. I read about folks having success with "whitebox" ESXi servers at  thehomeserverblog.com , and figured I'd follow suit.  I purchased a Gigabyte 970A-UD3P motherboard, AMD FX8350 CPU, and 32 GB of Gskill DDR3 RAM from Newegg.  In retrospect I probably should have forked over the extra dough for the 990 chipset, but C'est la vie. I got everything hooked up and my VMs migrated over, when I noticed that my CPU and memory stats were nearly idle.  Even after installing a couple of Windows 2k8 R2 VMs that had struggled before.  I looked o...

Whereabouts Software, Part 4 - Arduino Code

The Arduino code is responsible for connecting to the Wifi network, getting the latest data from the server (with the help of the fetch_current.php script), and moving the servos to the correct location. Arduino sketch:   Whereabouts.ino Before you download and install the sketch to your Arduino, you will need to update some of the code for your specific environment: /* Network Information */ char ssid[] = "your_SSID"; // your network SSID (name) char pass[] = "your_WPA_pass"; // your network password // WiFi/Ethernet vars IPAddress server(10,10,10,10); This is all pretty self-explanatory. Add the Wifi SSID, WPA password, and server IP address to the sketch. // Servo control vars // The number of people (or hands) that I have on the clock #define NUM_PEOPLE 5 // Names of the people we track (must match what is returned from the server String peopleNames[NUM_PEOPLE] = {String("DAD"), String("MOM"), String("CHILD1"),...

Whereabouts Software, Part 3 - Fetch Current

The PHP script that is called by the Arduino looks into the database and grabs the most recent locations for each user.  It then returns the data in an XML output that the Arduino can parse. Here's the source code:   fetch_current.php You will need to update the following with your own server data: // Database connection information $db_hostname = "localhost"; $db_username = "db_username"; $db_password = "db_password"; $db_database = "whereabouts"; When executed with `php fetch_current.php` you should receive output similar to this: <?xml version="1.0" encoding="ISO-8859-1"?> <whereabouts> <DAD> home </DAD> <MOM> home </MOM> <CHILD1> home </CHILD1> <CHILD2> home </CHILD2> <CHILD3> home </CHILD3> </whereabouts> The clock will use the user names and locations to move the hands to the appropriate places.

Whereabouts Software, Part 2 - Fetch Locations

The server-side collection and processing is done with a PHP script on a LAMP (Linux, Apache, MySQL, PHP) server and is executed by cron.  I set mine to query the phone data every 15 minutes, and it didn't seem to kill my battery any more than normal.  Increase or decrease the timing as you see fit. The script is dependent on the work of Tyler Hall and his Sosumi PHP library to get the location data from the Find my iPhone service.  You will need to download the class from  his website. The script included below will query the phone data for users in the database whose 'location_source' is 'GPS'.  You will need to modify the following in the script to get the location grabbing code to work: // Enter your iCloud username and password $ssm = new Sosumi('your_apple_id', 'your_password'); // Database connection information $db_hostname = "your_database_host"; $db_username = "db_username"; $db_password = "db_password...

Whereabouts Software, Part 1 - MySQL DB

The Whereabouts code is comprised of three parts: the webserver code that fetches the data from the iPhones, the database that stores the information, and the Arduino that represents the server data in physical form in the clock. This post is on the MySQL database that hosts the location data.  I've attached a SQL file that can be loaded into an empty database.  Some tweaking will need to be done for your specific environment which I will detail below. whereabouts.sql The 'clock_location' table is a key/value pair table that represents the physical locations on the clock.  The names in the 'name' field are important and must match exactly (case-sensitive) the values that will be used in the Arduino code for clock locations.  The twelve locations provided are the ones I used but may be modified as needed. The history table is an empty table that will be populated each time the location fetching code is run.  This will be purged after 30 days by the same c...