2020-08-07 (F) Weekly Summary

After you carry a custom box in your pocket, with its sharp corners and awkward shape, you note what needs improvement. I haven't gotten to the sharp edges yet, but I made a hole for the USB port and deeper grooves for my components to sit.
Base model

I asked some other hackers what they would like to see in this project, and the response was sluggish. I feared that sharing my $70USD price tag scared some folks away, so I decided to start an inexpensive spin-off. Instead of the Adafruit parts, I bought Chinese modules. The IMU was still $10, but the total price tag, not including a power pack, should be under $20. The device will not include Bluetooth, and I will call it miniCard, for miniature Cardinal.

Parts for miniCard

I assembled my knock-off Arduino, Chinese IMU module, and a vibrating motor. I kept the boards separate with header pins that connected my I2C channel. I should have installed the programming port pins first because the IMU board overlapped, but I got it sorted out. The vibrating motor was under the microcontroller board.


I have purchased a few USB↔serial converters, and sometimes they contain counterfeit chips and refuse to work. My computer recognized this one, but the pins were not in the order I expected, so I had to map out the wires. I was able to program the BLINK example. My next step was to migrate my old Cardinal code to this controller. I had to solder some connections on the IMU, and then I could connect, but my program still needed a few tweaks.
Mapped cable functions

I revised my miniCard code to recognize the IMU and function like it was supposed to do. I added a micro USB port for power and repurposed the RESET switch one of the input pins. Unfortunately, I ran into an issue where if I used the digitalRead() in my code, it would lock up the processor. I need to figure this out.
MiniCard top and bottom

I had a couple of ways to get around the issue with digitalRead(), and the first was to add a jumper wire to one of the analog pins because analogRead() worked correctly. After I proved this worked, I researched how to read a digital input with some low-level programming and came up with "((PINB >> 3) % 2)" instead of digitalRead(11). Both solutions worked, and I proceeded to add code to zero out the heading after I pressed the button.

Working heading button and unnecessary wire

The rest of the summary posts have been arranged by date.
First time here?

Completed projects from year 1
Completed projects from year 2
Completed projects from year 3
Completed projects from year 4
Completed projects from year 5
Completed projects from year 6
Completed projects from year 7

Disclaimer for http://24hourengineer.blogspot.com and 24HourEngineer.com

This disclaimer must be intact and whole. This disclaimer must be included if a project is distributed.

All information on this blog, or linked by this blog, is not to be taken as advice or solicitation. Anyone attempting to replicate, in whole or in part, is responsible for the outcome and procedure. Any loss of functionality, money, property, or similar, is the responsibility of those involved in the replication.

All digital communication regarding the email address 24hourengineer@gmail.com becomes the intellectual property of Brian McEvoy. Any information contained within these messages may be distributed or retained at the discretion of Brian McEvoy. Any email sent to this address, or any email account owned by  Brian McEvoy, cannot be used to claim property or assets.

Comments to the blog may be utilized or erased at the discretion of the owner. No one posting may claim property or assets based on their post.

This blog, including pictures and text, is copyright to Brian McEvoy.