Feedback Form
The main assignment for my Fall 2024 Inventing with Technology course was for students to prototype a project that solves a problem using some of the features of a micro:bit microcontroller and mounts to the project's intended location via French cleat. While that prompt may seem simultaneously vague and specific (it is), this was the framework I decided to explore with my students this semester.
Whenever possible, I try to complete a project in parallel to the projects that my students are working on. This skateboard hanger hangs via French Cleat and includes embedded lever switches to sense when a skateboard is placed in the hanger and lights up two strips of LEDs controlled by the micro:bit.
The initial concept was focused on how the hanger could hold two skateboards and use some kind of pressure sensor to detect whether a skateboard was in either of the two positions on the hanger. The actual prototype ended up looking very similar to this sketch and the only major changes were the type of sensor I used to detect the skateboards (moving from flex sensor / soft-touch potentiometers to a lever switch).
Thinking through the details of connecting the electronics components to micro:bit were not part of this first stage of the design.
At this stage, I also hadn't made a plan for how the two brackets would attach to the backer piece that had the French cleat on it to attach over the receiver on the wall.
For the first iteration of my skateboard hanger project, I was focused on figuring out the spacing of the two hanger brackets so that they skateboards could hang at a nice angle from the wall. Challenges I faced included deciding how far apart to make the two brackets so that a variety of sizes of skateboards could fit in the hanger as well as making sure the boards themselves didn't hit each other. Originally I was considering trying to design the hanger so that skateboards could be placed onto the brackets with the wheels/trucks facing either direction so that a user could display either the bottom graphic or the design in the grip tape. If the board was in an orientation with the grip tape facing out, the wheels were too close to the wall. I eventually decided it made more sense for the wheels/trucks to face out, so I didn't need to worry about designing for both orientations.
First laser cut prototype to get a sense of the proper angles and spacing from the wall.
Once I settled on the form factor for the skateboard hanger, I designed a prototype in Fusion 360 and cut the three parts on the CNC. For this version of the hanger we experimented with using a dovetail joint to slide the two brackets into the backer board.
Once I had the general concept of how I was going to design the hanger, I moved on to the second aspect of the project which was to utilize a micro:bit to augment the project. I decided to add embedded LEDs that would light up when a skateboard was placed in the hanger. Figuring out how to elegantly add some kind of sensor to determine if a board was on the hanger was a fun challenge. I explored using a flex sensor as well as touch potentiometer but unfortunately neither of those options panned out. I eventually landed on using a lever switch.
After getting a great suggestion from my colleague, Mr. Supiro, I ended up embedding the lever switch into the two arms of the left bracket and hide them inside by milling a pocket for the switches and covering them with a veneer of laser cut wood.
Designing the electronics for this project had various challenges. I used the standard micro:bit V2 without an LED expansion add-on board. I wanted to demonstrate what was possible with just the micro:bit and five standard pins (PO, P1, P2, V3, GND). Controlling two switches and two LED strips with only three data pins was challenging. I wired the lever switches in the left bracket arms to sense whether the skateboard was on the hanger. I connected the two lever switches’ data and ground lines to one main wire to the micro:bit P0, leaving the other two pins (P1 and P2) for each LED strip. The switch on the top or bottom of the brackets controls the LEDs, regardless of the number of skateboards. As long as there was one skateboard on the rack, it triggers P0 and initiates the LEDs.
Fusion 360 model of the skateboard hanger layout for milling on the CNC.
In order to make it possible to run the wires between the area where the micro:bit would be housed and the LED strips and lever switches in the left bracket, I milled the backer piece from the back side so I could create hidden slots to connect each region.
I wanted to design a nice way to attach the micro:bit (and future micro:bits) to a surface that would stabilize the micro:bit and make it easy to remove. After a few iterations, and some nice learning opportunities to explore assemblies in Onshape, I was able to model this micro:bit mounting clip in Onshape around a model of the micro:bit that I created as a project for the Inventing with Technology class earlier this semester. I learned how to import the micro:bit into another Onshape document and then designed this 3D printable clip around the features of the model for the micro:bit. One of the keys to getting this to work was something called Modeling In-Context. I am very glad I learned how to get this to work and I will definitely include teaching this to students down the road.
This second prototype came together nicely and functioned as I had hoped. There were a variety of challenges in putting this version together and improvements that I wanted to make for the next iteration.
Improve the 3D printed micro:bit clip to allow wires to come in from the sides in addition to the top and bottom. Also wanted to improve how the micro:bit fit into the clip to improve stability and ease-of-use.
Shorten the span of the backer piece to reduce the overall size and keep all of the LEDs within the space between the two side brackets.
The micro:bit USB-C cable did not have a way to come out the back or side of the skateboard hanger somewhere where it wouldn't interfere with the French Cleat. I crudely added a slot using a palm router after the prototype was finished, but I want to build this into the design for the next iteration.
Hide the LEDs behind acrylic to diffuse the lights.
I decided to make one additional prototype before the end-of-semester showcase. I wanted to make the following improvements...
Remove the excess wood on the backer board on the outside of the both brackets to make the whole hanger slightly smaller in width.
Make both strips of LEDs the same length and keep both strips inside the two brackets. This was to accound for the smaller overall width of the backer and also simplified how the LED strip wiring was connected to the micro:bit.
Improve the 3D printed micro:bit clip. I added a bit more tolerance on the edges of the clip so the micro:bit had a bit more room to fit inside the clip. I also increased the amount of overhang on each of the mounting clips to make it hold onto the micro:bit more securely. Finally, I wanted to add space on the sides of clip so wires can enter the micro:bit area from both the top and bottom as well as the sides. This is to make it easier to wire all of the electronics in a fairly tight area.
Paint the whole hanger to make it look more finished than the milled plywood and laser cut wood looked in this version.
Getting the project designed and functional was the main focus of this project for most of the semester. Once the hardware was built and at a good place, it was exciting to get to start to explore the coding aspect of making the skateboard hanger project come to life. I've commented the code to try to make it clear how everything works.
Controlling the LED brightness was another challenge. It is essential to avoid drawing too much current and resetting the board. Soldering to the board directly is problematic because if the code instructs the micro:bit to draw more current than it can provide, the micro:bit briefly overdraws too much power to light the LEDs and immediately resets. If all connections are permanently soldered to the micro:bit and the code didn’t allow users to modify brightness, a loop occurs where the board continuously reboots due to power overdraw. In this scenario (which my students and I have both experienced), the power or ground connections must be desoldered and then the code can be adjusted and re-uploaded before fixing these soldered connections.
To solve this issue, I coded the micro:bit to start at a dim brightness of around 40 out of 255. I added a feature where pressing the button increments the brightness up to 160, in steps of 40. Once it reaches the max threshold, an if statement is used to reset the brightness to the initial dim brightness to prevent excessive power consumption. This requires experimentation and coding the micro:bit to start out dim and adjust upward is a very good idea. This coding technique gives the programmer of the micro:bit an opportunity to adjust their code to limit the brightness without needing to desolder any connections. If the current drawn is too big and the micro:bit resets, the user can change the code after it resets because the code starts out dim. The code showing how the brightness is initalized at a dim setting and then is incremented upward is documented in the screenshots above.
It is a good idea to consider the colors you plan to use. Primary colors like red, blue, and green, or combinations like rainbow gradients of colors, draw less power. Using white as a color draws significantly more power at a given brightness than green, red, or blue. For instance, a setting of brightness = 90 (out of 255) in blue uses only one LED, while brightness = 90 with color white uses all three LEDs, drawing three times as much power.
The LEDs are nicely placed within their respective slots and hidden under white acrylic. When I first cut the acrylic to be used as a diffuser covering the LEDs, the piece was slightly too big. I ended up offsetting the sketch contour by -.02" to get a nice fit.
The new micro:bit clip works much better. The micro:bit fit into the clip more easily and the additional slots in the sides made wiring the electronics much more feasible.
The wiring successfully fits within the pocket housing the micro:bit. This was still a challenge to get all the wires solder and connected. This can be further improved. (See below).
The Makecode I have written is great proof-of-concept with 5 modes demonstrating possible 2 methods to fill the LEDs when a skateboard is on the hanger. Getting the Makecode project to fill the selected palette of colors to the LED strip only when a board is placed on the hanger or when a new palette is selected was a fun challenge. This allows the colors to be set and then the palette is rotated across the strip.
Incorporate feedback from guests at the Dec. 2024 Showcase. I will be asking for feature requests and I am hoping to add to the project based on some of the ideas I get via this feedback form.
Creating soldered connections to the micro:bit was challenging due to the limited data pins and multiple connections to 3V and ground. You can see how the wires are bunched together in the image to the left. This is messy and can lead to shorts and other issues with the wires being bent more than desired. A better solution would be to connect all wires to a small solderable breadboard, potentially hidden in a pocket on the back. This would ensure clean connections and even potentially hide the soldered connections by coming up from below the micro:bit and up through each pin before soldering on the top surface.
Figure out a better way to paint a project like this. First, I masked the junctions that will be glued together later with painter’s tape, then I spray painted multiple coats on each of the three pieces, including the backer and both brackets. Then, I glued the pieces together. Perhaps a smarter solution would be to assemble and glue the entire hanger, then I could protect the lever switches with painter’s tape and entire piece could be spray painted as one unit. This would include base layers of primer/white paint followed by a clear coat.