MiniCard
The Cardinal project is about making an open-source device that vibrates when the user faces north, which is not a new idea. One hangup with existing models is that they rely on the Earth's magnetic field, which I mean, makes sense. The problem with magnets is that they don't work around iron, like bicycles, buildings, boats, and bridges, which are a few words that start with b. miniCard uses the BNO055 Inertial Movement Unit, IMU, which considers accelerometer data as well. The best part is the heavy math happens on the unit, and it gives us tidy orientation data instead of messy sensor data.
This is a proof-of-concept, and I want to get feedback. In the meantime, folks can build their own and have a functional device for tinkering without having to shell out $70 for the Bluetooth model.
Bill of Materials and Schematic
I'm going to assume you have soldering materials and skills. If not, there are tons of outstanding Instructables that will help you. You will need to know how to read an electrical schematic.
I would rate this a 6/10 for difficulty as far as insertion mount projects go because there are some finicky wires to bend, or it would be a breezy 1. I have links for all the parts I recommend.
- Arduino Pro Mini and FTDI programming adapter
- Dupont wires with a female crimp at each end
- Header pins
- BNO055 inertial movement unit
- 2 rectifier diodes
- Enclosed vibrating motor
- Battery charging circuit
- Rechargeable lithium battery
- Enclosure
These links are only for reference. I don't get rewarded if you buy from Amazon, and I bought most of my parts through eBay anyhow. If you're unfamiliar with these parts, I suggest you buy something equivalent to the linked product. If you are a smart cookie, it's probably safe to swap in a part you have on your shelf.
The schematic is shown with this step so you can see how all the parts fit together. I didn't include the pushbutton in the BOM because I salvaged it from the Arduino. The BNO055 link is for an Adafruit product which I used in my initial testing. It works well but is on the expensive side. I have found then as cheap as $11, which I pictured in these instructions.
Assembly
I hesitate to say there is a wrong way to assemble these parts, so long as you follow the schematic. The biggest issue I had was the crystal that came with the purple IMU, which I should have installed last because it was difficult to position while it sticks straight up.
The configuration placed the IMU above the Arduino where it lined up the I2C data pins. I wish I had placed the charging board first because these two boards have the most stress on them. Your Arduino will need the programming pins connected at least once and you will have to push and pull those. The charging board will get stressed every time the battery gets low. I recommend fastening these two firmly if possible based on your specific hardware.
I desoldered the RESET switch from my Arduino and reused it as my zero-heading switch. It may be smart to make your switch accessible. For mine, I have to push a paperclip through a hole in my case.
Programming
If you haven't programmed an Arduino Pro Mini, this Instructable seemed like a good resource.
I have had problems with off-brand boards that said they were FTDI programming boards, but they were counterfeit and wouldn't work. If you subbed an Arduino Micro, NANO, or M0 board, you don't have to worry about any of that.
My latest code is on my GitHub page. It should have a filename like, "Cardinal_BareBones_2020-08-21_01.zip" Download the code, extract, and open with the Arduino IDE.
Operating
I hope you didn't have trouble. These were sparse directions aimed at a skilled audience.
When I started using the BNO055 IMU, I noticed that it was erratic for a couple of hours after applying power. I measured how far it would drift, and it seemed to take forty-eight hours before the system settled and reported reliable results. Recognizing this is why I suggested a charging board that can easily accept a couple of diodes so it would remain powered while charging. With the old circuit, charging would cut power and erase the calibration. I suggest recharging the battery whenever possible. After making these instructions, I switched to a larger rechargeable battery, but I would like a size that lasts 20+ hours.
There is only one button. As soon as you press it, the system will vibrate for an instant, then wait ten seconds. At that point, it will accept the current heading as north. Of course, it can be any direction you choose. The waiting period should be long enough to place the unit into a pocket or where you feel comfortable operating it. It won't automatically vibrate when the reset is complete, but humans sway a tiny, so it should be obvious.
Considerations
I have carried one prototype or another for more than one-hundred hours, and I made tons of observations, but I am just one person, and that is only one set of opinions.
When I was wearing this on my right ankle, the intuitive sensation was that north was to the right of me. The same thing happened when I wore this on my right hip. If north is the defined direction, it worked better for me when it was centered on my body. If I wore the miniCard in a breast pocket, it was a natural feeling.
When I kept this in a hip pocket, I got anxious because even though my phone was elsewhere, a vibration just below the belt was alarming. Another issue with pockets was that they don't always press against the body. I wear guy-pants, so that is a problem. The thigh isn't nerve-rich, so I assumed my battery was dead a few times because I didn't feel anything, but it was working fine.
I put a mark on the floor of my office to align myself with geographic-north, but that was also the inspiration behind the logo. The cardinal/compass sticker can point north for anywhere you might need to re-zero.