Materials (Resin Lamp)
1] Flat piece of walnut wood (any dimensions)
2] Resin and hardener
3] 3 wires
4] Arduino Nano
5] 3D printer filament (any color, PLA)
6] Mini-B USB Connector Cable
7] Orbital Sander
8] Table Saw
9] Drill Press
10] Router
11] Polish
12] Wood glue
13] Vices
14] Planar
15] Band Saw
16] Cardboard
Steps to Build (Resin Lamp)
NOTE: these instructions are extremely high-level -- for more detail, see Daily Journal
NOTE: make sure you test this project along the way -- doing so will help avoid fatal mistakes that eventually become unfixable
1] Use the table saw to cut the wood into 16 long rectangles (2 square faces and 4 rectangular faces)
2] Use wood glue and vices to assemble the wood strips into a 4x4, larger block of wood
3] After the wood glue dries, use the planar to even out all faces (use a miter saw as a first step if the offset is too large to plane)
4] Use the band saw to cut the block of wood so that the two pieces have a 1/3:2/3 ratio
5] Use the router to cut a channel for the Arduino Nano and a channel for the NeoPixels in the 2/3 block of wood
6] Use the drill press to make a hole for wires through the 2/3 block of wood
7] Design a mold that folds around three sides of the blocks of wood so that resin can be poured without spilling (smaller face on the surface)
8] Laser cut the design
9] Solder the three wires to the three pins of the NeoPixels
10] Place the NeoPixels in their channel, insert the wires through their hole, and paint the NeoPixels with a small layer of resin
11] Cover the surface of the cardboard that will touch the wood with clear tape to avoid resin sticking
12] Use hot glue to attach the mold to the wood
13] Pour the resin into the mold
14] After the resin has dried, scrape off the hot glue and remove the mold
15] Use the planar to smooth out all edges
16] Use the orbital sander to smooth out the lamp from 180p to 3000p
17] Take a damp paper towel and use it to remove dust from the lamp
18] Wait a day, then sand again in the same fashion
19] Use a dry paper towel to remove excess dust
20] Use a rag to apply a layer of the polish to the sides and top of the lamp
21] Program the Arduino to use the NeoPixels
22] Solder the wires coming through the bottom of the lamp to the Arduino (using the pins decided in your programming)
23] 3D print a case for the Arduino Nano designed so that it fits in the channel
24] Insert the Arduino into the case
25] Use the Mini-B USB Cable to power the Arduino Nano, and the lamp should light up
Daily Journal
3-21
Today, I used the Miter Saw to cut out a piece of wood for my cutting board, and I also researched my Useless Machine Final Project. I found this Instructables project to help me understand all components of this project: https://www.instructables.com/How-to-build-another-useless-machine-easy-to-make-/. To use the Miter Saw, the first step is to create a jig that ensures that the material will always be in the same position when cut. Then, after loading the material into place, I click the safety button, turn on the saw, and pull back, down, forward, then up to cut the wood. Pushing all the way forward toward the end of the cut minimizes kickback because the material is cut all of the way through.
3-22
Today, I used the planar to smooth out both faces of a piece of wood for my cutting board. This tool also ensures that the two faces are parallel to one another. To use the planar, flip the power switch, slowly lower the cutter until it will cut a layer off of the wood, and use a "pushing stick" to push the wood through the machine. It is very important not to stick your hands into the machine, as it can lead to severe injury. Sometimes, I lowered the machine too much, resulting in a bumpy surface. Instead, I needed to lower the machine slightly less every pass and just chip away a small layer. Eventually, both sides of the wood were parallel and smooth.
3-23
Today, I started to design my box using Fusion 360. I am not going to be 3D-printing all of the parts, but having a CAD model is still important to the design process. I also found another example of a useless machine from Instructables.com that I can use to help find certain electrical components: https://www.instructables.com/Useless-Box-4/.
3-24
Today, I started programming the Arduino for my useless machine using TinkerCAD. It is not fully functioning, but a copy of the code is below.
Servo servo;
bool isPressed = false;
void setup()
{
pinMode(2, INPUT_PULLUP);
servo.attach(4);
Serial.begin(9600);
servo.write(90);
}
void loop()
{
Serial.println(digitalRead(2));
if (digitalRead(2)) {
if (!isPressed) {
isPressed = !isPressed;
turnServo(90);
}
}
else {
if (isPressed) {
isPressed = !isPressed;
turnServo(0);
}
}
}
void turnServo(int deg) {
servo.write(deg);
}
3-25
Today, simulated the circuit for my useless machine in TinkerCAD. I am still in the process of debugging, but a picture of the circuit so far is below.
3-28
Today, I fixed all of the problems with my circuit and code for my useless machine project. Originally, I used batteries with too little voltage and the servo motor wasn't turning. Then I used a multimeter in TinkerCAD to see the voltage. Then I looked up the necessary voltage for a servo motor (>4.5V) and realized the circuit had too little voltage. Then I switched to a battery pack with 4 AA batteries and this solved the problem. Also, I was using the INPUT_PULLUP setting for the switch, but I had the wiring wrong -- I needed to but electricity into the pin from the 5V port and also attach the pin to the GND. Then connect the switch in such a way that switching it breaks the connection to the GND, stopping the voltage. Then digitalRead(2) will return 0 when the circuit is connected and voltage flows and 1 when the circuit is broken. This is the difference between INPUT and INPUT_PULLUP.
3-29
Today, I added more features to the software side of my project. The servo motor has different "animations" that it randomly selects using a switch statement (a switch statement is a more concise way of writing many linked if statements). Below is a copy of the code and a video of the animations.
// C++ code
//
#include <Servo.h>
#define switchPin 2
#define servoPin 4
Servo servo;
bool isPressed = false;
void setup() {
servo.attach(servoPin);
pinMode(switchPin, INPUT_PULLUP);
Serial.begin(9600);
}
void loop() {
Serial.print("Switch state: ");
Serial.println(digitalRead(switchPin));
if (digitalRead(switchPin) && !isPressed) {
isPressed = !isPressed;
switch (random(5))
{
case 0:
turnServo(90);
break;
case 1:
turnServo(40);
delay(1000);
turnServo(30);
delay(1000);
turnServo(90);
break;
case 2:
for (int i = 0; i < 90; ++i)
turnServo(i);
delay(25);
break;
case 3:
turnServo(75);
delay(2000);
turnServo(90);
break;
case 4:
delay(1000);
turnServo(25);
delay(2000);
turnServo(90);
break;
}
}
else if (!digitalRead(switchPin) && isPressed) {
isPressed = !isPressed;
turnServo(0);
}
}
void turnServo(int angle) {
servo.write(angle);
}
3-30
Today, I started using Aspire to CNC my cutting board. I have decided to deep-laser cut the bulldog design and CNC the handle of the board. Originally, when I was using Aspire to generate toolpaths (that the CNC machine can read) to cut out my handle, I received an error which said that the toolpaths are uncuttable. After much debugging, I figured out that the design had turns that were too sharp, so I modified the file and smoothed out the curved. Then, I put it into Aspire and it functioned perfectly! Also, I added juice channels which had an extremely similar process to the handle.
3-31
Today, I used the CNC machine to cut out my handle (I have not done the juicer yet). First, I put the cutting board in the jig on the CNC machine (an apparatus that holds the wood in place). Then, I configured the CNC machine via a software on a computer that it was hooked up to. I used the JZ 4 command to life up the Z axis so that the machine can move without hitting anything. Then I calibrated the Z axis and moved the X and Y to right over the board using the J2 X,Y command. Then I told everyone that the machine was moving (for safety purposes) and set it to cut. I made sure to keep a finger over the space bar (to pause) and the emergency stop button (for stopping in case of an error). After the process was done, I used the J2 20,20 command to move the machine away from the wood, took it out of the jig, and used a chisel and hammer to cut out the tabs (pieces of wood that the CNC machines doesn't cut out so that chips don't fly around the room). In the future, I will sand out the area around the cut to smooth out the wood.
4-1
Today, I finished my CorelDRAW SVG file for my cutting board design. After scaling the board in Aspire to fit on my cutting board, I also adjusted the page dimensions (on the top of the window) in CorelDRAW. Then, I dragged the "scale boxes" after clicking on my design to help adjust the Bulldog picture to the correct size. Next class, I am going to deep laser cut the bulldog onto my cutting board.
4-4
Today, I accomplished several things:
1] I decided on a method for creating the box of my useless machine. I am going to use what we learned at the beginning of the year (with designing tabbed boxes) to CNC a tabbed, wooden box, and the top hinges are going to be designed in such a way that the box will be able to open for the hand to come out and turn on/off the switch.
2] I helped two of my classmates with Aspire. When I first designed my toolpath for CNC machining the handle to my cutting board, I received an error about not being able to cut the toolpath. I eventually determined that the turns were too sharp, so I created two circles, joined them with tangent lines, and used the "virtual segment delete" tool to delete any unnecessary lines left over. Then, after exporting as an SVG and importing the file into Aspire and calculating the cut, it worked perfectly.
3] I started to sand the cut-out handle of my cutting board using sandpaper.
4] I tried to create a toolpath out of the bulldog design for my cutting board so that I can CNC it as well, but the design is too intricate for the 1/4" bit. Therefore, I have decided to deep laser cut instead. Also, sanding out the wood afterwards will eliminate any burn marks that have been created, solving all problems with this design.
4-5
Today, I spent most of the class sanding my cutting board. I used the sandpaper to smooth out the inside of the handle as well as the outer edges of the board.
4-6
Today, I continued to work on my cutting board. First, I tested laser cutting my design on a piece of cardboard, but it turned out I had forgotten to remove the path for the handle. After correcting this, I tried again, and it worked perfectly. Then, I put the cutting board in the big laser cutter, selected deep engraving for wood, focused the laser cutter, and ran the deep engrave twice (this would ensure that the cut is deep enough to fill with resin. Following this, I ran the board through the planer so that the burn marks would be removed. Next, I created the resin by mixing together two different liquids and adding the brown color for the bulldog. Because I want to color the dog and the words in two different colors (brown and white respectively), I covered up the words with tape for now. Then, after mixing for 5 minutes, I poured the mixture onto the dog, used the blowtorch to remove any air bubbles, and put it in the oven. Tomorrow, I will continue working on this process.
4-7
Today, I let the resin continue to cure and listened to a lecture from Mr. Dubick about the lamp final-project. I decided to change my project from a useless machine to a resin wood lamp. After working with resin throughout the cutting board project, I have found that I really enjoy the process as well as the final outcome, so I'd like to learn more about it through the lamp, too. Here is a link to the resin wood lamp project: https://www.instructables.com/Epoxy-Resin-and-Walnut-LED-Night-Lamp/. Mr. Dubick taught us about where we should place the "neo-pixels" in the lamp, and that an Arduino Nano can supply enough current to power up to eight "neo-pixels." Also, he said that, throughout the "Fab Academy" program next year, we will learn how to program our own microcontrollers in a more frugal and efficient manner. Additionally, we downloaded the KiCad software, which allows us to create circuit schematics easily. Schematics are diagrams that show all components that need to be connected to each other in a circuit, not necessarily how to replicate it in real life. We also learned that, in TinkerCAD, there is a way of converting a simulation-circuit into a schematic that can be imported into KiCad.
4-8
Today, I caught up on my digital portfolio and continued working on my cutting board project. The resin I poured previously had worked well, and I took the tape I placed over the words last time off. Also, some of the resin dripped into the handle which I will have to chisel off at a later date. I decided to color the words white, unlike the brown bulldog. Therefore, I mixed the resin and hardener together and stirred it for 5 minutes. I learned that you need to stir folding the mixture instead of just stirring in circles to make the resin more effective. Then, I poured the resin into the cutting board and continued to let it sit. This worked fairly well, and I will continue to work on it during future class periods.
4-11
Today, I was sick and was unable to come to school (I had a cold), so I was unable to work on engineering.
4-12
Today, I checked on the resin for my cutting board, which had finished drying. Some of the resin spilled into the handle of the board, so I used a chisel to remove it. Even so, there was still some around the edges, so I will remove this during a future class. Then, I helped Will use a planar to remove the spillover from the resin on his board, and then I planed mine as well. At first, all of the debris from the cutting would spill out the front of the machine, but then I realized that the debris removal system was clogged. Then, I unclogged it and it worked perfectly. Then because there were a couple of parallel lines on the board from the planning, I used sandpaper (180p) to sand the board down my hand. Then, I used the electric sander to accomplish the same task. A picture of the result is pictured below.
4-13
Today, I continued to work on my cutting board. First, I used a Bemel with a cutting blade to remove some of the resin from the handle. Then, I switched to a sanding tip for the same purpose. Finally, I used the table router to smooth out any bumps and clear any final resin on the inside of the handle. The final result looks very similar, although it feels far smoother.
4-19
Today, I started to work on my resin-lamp final project. I used the saw stop to cut sixteen equally sizes pieces out of wood. I used a jig to ensure that all pieces were the same size. In a future lesson, I will glue the pieces together and continue working on the lamp. One important thing I learned about the saw stop is that it is very important to step into the saw as you are cutting as opposed to leaning over to reach it.
4-20
Today, I caught up on my logging for my digital portfolio and started using NeoPixels in TinkerCAD. I used this extremely useful website (https://adrianotiger.github.io/Neopixel-Effect-Generator/) to design effects for the NeoPixel strip, asked the website to generate the Arduino code, and wired the circuit in TinkerCAD. I also looked through the code and noticed that the unsigned integer 8 was passed into the constructor method for a Strip class as the argument "pin," so I knew that I had to wire the third pin of the Arduino to the "in" pin of the NeoPixel strip. Then, I clicked run, and a video below shows the result (notice that the effects are difficult for TinkerCAD to render in real time, so it is very slowed down and time is displayed at the top of the screen). Also, a copy of the generated code is displayed below.
#include <Adafruit_NeoPixel.h>
class Strip
{
public:
uint8_t effect;
uint8_t effects;
uint16_t effStep;
unsigned long effStart;
Adafruit_NeoPixel strip;
Strip(uint16_t leds, uint8_t pin, uint8_t toteffects, uint16_t striptype) : strip(leds, pin, striptype) {
effect = -1;
effects = toteffects;
Reset();
}
void Reset(){
effStep = 0;
effect = (effect + 1) % effects;
effStart = millis();
}
};
struct Loop
{
uint8_t currentChild;
uint8_t childs;
bool timeBased;
uint16_t cycles;
uint16_t currentTime;
Loop(uint8_t totchilds, bool timebased, uint16_t tottime) {currentTime=0;currentChild=0;childs=totchilds;timeBased=timebased;cycles=tottime;}
};
Strip strip_0(60, 8, 60, NEO_GRB + NEO_KHZ800);
struct Loop strip0loop0(2, false, 1);
//[GLOBAL_VARIABLES]
void setup() {
//Your setup here:
strip_0.strip.begin();
}
void loop() {
//Your code here:
strips_loop();
}
void strips_loop() {
if(strip0_loop0() & 0x01)
strip_0.strip.show();
}
uint8_t strip0_loop0() {
uint8_t ret = 0x00;
switch(strip0loop0.currentChild) {
case 0:
ret = strip0_loop0_eff0();break;
case 1:
ret = strip0_loop0_eff1();break;
}
if(ret & 0x02) {
ret &= 0xfd;
if(strip0loop0.currentChild + 1 >= strip0loop0.childs) {
strip0loop0.currentChild = 0;
if(++strip0loop0.currentTime >= strip0loop0.cycles) {strip0loop0.currentTime = 0; ret |= 0x02;}
}
else {
strip0loop0.currentChild++;
}
};
return ret;
}
uint8_t strip0_loop0_eff0() {
// Strip ID: 0 - Effect: Rainbow - LEDS: 60
// Steps: 60 - Delay: 20
// Colors: 3 (255.0.0, 0.255.0, 0.0.255)
// Options: rainbowlen=60, toLeft=true,
if(millis() - strip_0.effStart < 20 * (strip_0.effStep)) return 0x00;
float factor1, factor2;
uint16_t ind;
for(uint16_t j=0;j<60;j++) {
ind = strip_0.effStep + j * 1;
switch((int)((ind % 60) / 20)) {
case 0: factor1 = 1.0 - ((float)(ind % 60 - 0 * 20) / 20);
factor2 = (float)((int)(ind - 0) % 60) / 20;
strip_0.strip.setPixelColor(j, 255 * factor1 + 0 * factor2, 0 * factor1 + 255 * factor2, 0 * factor1 + 0 * factor2);
break;
case 1: factor1 = 1.0 - ((float)(ind % 60 - 1 * 20) / 20);
factor2 = (float)((int)(ind - 20) % 60) / 20;
strip_0.strip.setPixelColor(j, 0 * factor1 + 0 * factor2, 255 * factor1 + 0 * factor2, 0 * factor1 + 255 * factor2);
break;
case 2: factor1 = 1.0 - ((float)(ind % 60 - 2 * 20) / 20);
factor2 = (float)((int)(ind - 40) % 60) / 20;
strip_0.strip.setPixelColor(j, 0 * factor1 + 255 * factor2, 0 * factor1 + 0 * factor2, 255 * factor1 + 0 * factor2);
break;
}
}
if(strip_0.effStep >= 60) {strip_0.Reset(); return 0x03; }
else strip_0.effStep++;
return 0x01;
}
uint8_t strip0_loop0_eff1() {
// Strip ID: 0 - Effect: Fade - LEDS: 60
// Steps: 20 - Delay: 5
// Colors: 2 (0.0.0, 255.255.255)
// Options: duration=100, every=1,
if(millis() - strip_0.effStart < 5 * (strip_0.effStep)) return 0x00;
uint8_t r,g,b;
double e;
e = (strip_0.effStep * 5) / (double)100;
r = ( e ) * 255 + 0 * ( 1.0 - e );
g = ( e ) * 255 + 0 * ( 1.0 - e );
b = ( e ) * 255 + 0 * ( 1.0 - e );
for(uint16_t j=0;j<60;j++) {
if((j % 1) == 0)
strip_0.strip.setPixelColor(j, r, g, b);
else
strip_0.strip.setPixelColor(j, 0, 0, 0);
}
if(strip_0.effStep >= 20) {strip_0.Reset(); return 0x03; }
else strip_0.effStep++;
return 0x01;
}
4-21
Today, I worked on my resin-lamp final project. I took the 16 pieces of wood that I had previously cut and glued them together in groups of four. I put glue on the bigger side of one piece of wood, rubbed the two in a circular fashion to coat the entire two faces with glue, and repeat until I have four groups of four. Then, I put a vice around each group of four and put tape with my name on them, as well. Finally I let them harden over night. Below are pictures of the final result.
4-22
Today, I checked on my 4 pieces of wood, and they had glued together really well. Then, I took them to the planar (which I explained in a previous log) and smoothed out the front and back faces. I then encountered the problem that one of the four pieces was longer than the other three, so I used the table saw to trim it to the correct length. Finally, I used the same gluing process to glue the four pieces of four pieces of wood together into a rectangular prism, used two vices to hold it in place (and prevent warping), and next week I will use the planar once again to smooth it out.
4-25
Today, I worked to understand how current plays into the amount of NeoPixels that an Arduino can power without an external power source. First, I used the NeoPixel Effect Generator website (linked in a previously day's log) to create an effect that is easier for TinkerCAD to render. A copy of the code is shown below. Before hooking an Arduino up to as many NeoPixels an I could find, I tried to calculate the number of NeoPixels that it could supply effectively. After some online research, I learned that the 5V pin of an Arduino can supply up to 500mA of current, and each individual NeoPixel draws 60mA of current. Because 500/60 ~ 8.33..., I concluded that an Arduino should be able to safely power up to 8 NeoPixels. In order to test this hypothesis, I opened my TinkerCAD simulation I created previously and copied the new code from the NeoPixel Code Generator. TinkerCAD has virtual versions of NeoPixel strips that have 4, 6, 8, 10, 12, 16, or 20 pixels, and you can connect the ports at the ends of different strips to combine them into a longer strip. Below are pictures of the Arduino trying to power 4, 8, 10, and 60 long NeoPixel strips, but I learned that TinkerCAD doesn't account for the lack of current supplied by the Arduino. This taught me an important distinction between simulations and pragmatic, real-life test: a simulation can provide an idea of whether a design is effective, although you will never truly know if something will function correctly until you actually build it. Although the TinkerCAD simulation did not provide satisfactory results, I did more research and learned that my original hypothesis was, indeed, correct: the Arduino can consistently power up to 8 NeoPixels (https://www.arduinoplatform.com/led-strips/controlling-and-powering-neopixels-with-arduino/#:~:text=Connecting%20more%20than%208%20NeoPixels,milliamps%20a%20maximum%20brightness%20white).
#include <Adafruit_NeoPixel.h>
class Strip
{
public:
uint8_t effect;
uint8_t effects;
uint16_t effStep;
unsigned long effStart;
Adafruit_NeoPixel strip;
Strip(uint16_t leds, uint8_t pin, uint8_t toteffects, uint16_t striptype) : strip(leds, pin, striptype) {
effect = -1;
effects = toteffects;
Reset();
}
void Reset(){
effStep = 0;
effect = (effect + 1) % effects;
effStart = millis();
}
};
struct Loop
{
uint8_t currentChild;
uint8_t childs;
bool timeBased;
uint16_t cycles;
uint16_t currentTime;
Loop(uint8_t totchilds, bool timebased, uint16_t tottime) {currentTime=0;currentChild=0;childs=totchilds;timeBased=timebased;cycles=tottime;}
};
Strip strip_0(60, 8, 60, NEO_GRB + NEO_KHZ800);
struct Loop strip0loop0(1, false, 1);
//[GLOBAL_VARIABLES]
void setup() {
//Your setup here:
strip_0.strip.begin();
}
void loop() {
//Your code here:
strips_loop();
}
void strips_loop() {
if(strip0_loop0() & 0x01)
strip_0.strip.show();
}
uint8_t strip0_loop0() {
uint8_t ret = 0x00;
switch(strip0loop0.currentChild) {
case 0:
ret = strip0_loop0_eff0();break;
}
if(ret & 0x02) {
ret &= 0xfd;
if(strip0loop0.currentChild + 1 >= strip0loop0.childs) {
strip0loop0.currentChild = 0;
if(++strip0loop0.currentTime >= strip0loop0.cycles) {strip0loop0.currentTime = 0; ret |= 0x02;}
}
else {
strip0loop0.currentChild++;
}
};
return ret;
}
uint8_t strip0_loop0_eff0() {
// Strip ID: 0 - Effect: Blink - LEDS: 60
// Steps: 48 - Delay: 5
// Colors: 2 (192.106.37, 255.255.255)
// Options: timeBegin=110, timeToOn=10, timeOn=10, timeToOff=10, timeOver=100, every=1,
if(millis() - strip_0.effStart < 5 * (strip_0.effStep)) return 0x00;
uint8_t e,r,g,b;
if(strip_0.effStep < 22) {
for(uint16_t j=0;j<60;j++)
strip_0.strip.setPixelColor(j, 192, 106, 37);
}
else if(strip_0.effStep < 24) {
e = (strip_0.effStep * 5) - 110;
r = 255 * ( e / 10 ) + 192 * ( 1.0 - e / 10 );
g = 255 * ( e / 10 ) + 106 * ( 1.0 - e / 10 );
b = 255 * ( e / 10 ) + 37 * ( 1.0 - e / 10 );
for(uint16_t j=0;j<60;j++)
if((j%1)==0) strip_0.strip.setPixelColor(j, r, g, b);
else strip_0.strip.setPixelColor(j, 192, 106, 37);
}
else if(strip_0.effStep < 26) {
for(uint16_t j=0;j<60;j++)
if((j%1)==0) strip_0.strip.setPixelColor(j, 255, 255, 255);
else strip_0.strip.setPixelColor(j, 192, 106, 37);
}
else if(strip_0.effStep < 28) {
e = (strip_0.effStep * 5) - 130;
r = 192 * ( e / 10 ) + 255 * ( 1.0 - e / 10 );
g = 106 * ( e / 10 ) + 255 * ( 1.0 - e / 10 );
b = 37 * ( e / 10 ) + 255 * ( 1.0 - e / 10 );
for(uint16_t j=0;j<60;j++)
if((j%1)==0) strip_0.strip.setPixelColor(j, r, g, b);
else strip_0.strip.setPixelColor(j, 192, 106, 37);
}
else {
for(uint16_t j=0;j<60;j++)
strip_0.strip.setPixelColor(j, 192, 106, 37);
}
if(strip_0.effStep >= 48) {strip_0.Reset(); return 0x03; }
else strip_0.effStep++;
return 0x01;
}
4-26
Today, I checked on my lamp final project whose glue has hardened, and I used the planar to smooth out its sides. First, I took the wood out of the vice, then I used the planar to, layer by layer, smooth out each of the long sides of the block. I did not do the small faces, though, because I plan to use a miter saw to cut those during a future class period. Below is a video demonstrating the result of planing the project.
4 -27
Today, the first task I worked towards was creating a list with other people in my class of what steps we need to take to finish this project. After we complete this, a teacher will help us revise the list so we have a detailed plan of what needs to be accomplished. Next, I used the band saw to cut the unfinished faces off of my block of wood for my resin lamp. I set up the jig then cut off the right amount so that the faces became flat. Afterwards, I learned that, to most effectively sand wood, you have to take a larger piece of sand paper, tape it to or hold it against a table, and move the wood back and forth; this ensures a flat, even, smooth result. Then you can just rotate the wood to sand edges and corners. Following this, I measured the width of the wood, divided it by three, and made a pencil mark that far in from one of the small faces. I then drew a perpendicular line at this point and, once again, used the band saw to cut along that line. Finally, I repeated the above sanding process for the newly-created edges and faces. Pictures of the finished, hand-sanded result are below.
4-28
Today, I spent the entire class sanding the edges and sides of my cutting board. I put on a mask, took and extension chord, the electric sander, and the different grades of sandpaper outside, and started working. I started with 120p and sanded the face of a side, went back and sanded the edges, and sanded the corner. Then I took the sandpaper off of the electric sander, folded it, and used it to hand-sand the inside edges of the handle. Then, I repeated this process with the 220p and achieved an extremely smooth, natural looking curve around the side of the entire board. A video showcasing the results of the sanding is below.
4-29
Today, I used Cutting Board Oil to give my cutting board a nice, shiny, finished look. I first poured some of the oil on one side of the board, used my hand to spread it around the surface, and repeated for the other side. Then, I also coated the edges of the board and the inside of the handle with the same oil. I will let this dry for the rest of the period, and I will come back during Activity Period today to do another coat and check on the status of my board. Below are pictures just after applying the first coat.
5-2
Today, I applied the second coat of Cutting Board Oil onto my cutting board and continued work on my resins lamp. For the oil, I used the same process as last class (detailed above), and for the resin lamp, I used Fusion 360 to start designing a case for an Arduino Nano. Because the wires in this design will need to come out of the side of the case, I had to 3D print my own original case. Below are pictures of my result. I found a model for a case online then modified it and created a whole in the lower back for wires to connect (as you can see in the picture). I also set it to 3D print and it should be finished my next class.
5-3
Today, I started by checking on my 3D print for my Arduino Nano case. Not only was it far too large, but the print itself also failed. A picture is shown below. After the failed print, resolved to make my own design from scratch. I started by laying out my ideas on the white board, thinking of all the requirements for this design to be successful: wires from the Arduino's pins had to be accessible from a whole in the very sides of the design, snugly hold the Arduino in place, and fit in a channel that I will make with the router during a future class period. I then recreated the designed I drew on the white board in Fusion 360, exported as OBJ file into PrusaSlicer, and send it to the 3D printer. I cleaned off the bed again and tried once more, and the print worked successfully. The only problem is that the case is slightly too narrow for the Arduino Nano to fit inside of, so I will continue to improve upon this design in future lessons. Also, I the design required supports which are very difficult to remove, so I re-printed the case standing up and the curved roof was able to print without supports.
5-4 -- 5-6
I have been out of school for the rest of this week and unable to work on my project.
5-9
Today, I both 3D printed a new version of my Arduino Nano case and used a router to create a channel for the NeoPixels in the block of wood (the 2/3 piece) I will be using for my resin lamp. I adjusted my design to where the top is open (and little flaps hold the Arduino in place). This way, the USB port from the Arduino Nano will fit and all of the wires connecting to the Arduino's pins will be easily accessible. I, once again, am printing this design standing up so that supports are not required. Then, I used the router to cut a channel in my block of wood (picture below). To use the router, I push the block of wood into a spinning bit (with the help of a jig to keep the block steady). Afterwards, I did a little bit of hand sanding to smooth out some of the edges, although this part of the wood will be covered in resin so the sanding is not completely necessary. In a future class period, I will use a different bit in the router to make a larger hold on the other side of the block that the Arduino Nano case will fit inside of, and the wires from the Arduino Nano will connect to the NeoPixels, activating the lamp.
5-10
Today, I soldered by NeoPixel strip, tested the connections, and cemented the connections using hot glue. First, I cut three wires of at least 200mm in length (making one of them slightly shorter than the other two). Then, I used a wire stripper to expose the ends of the wires, twisted them, and soldered them to the NeoPixels, as shown below. The red and black wires are each soldered to two pieces of copper on the strip, while the grey wire is only soldered to one (the grey one is the wire that is slightly shorter -- this means that, if the wires are ever pulled on, the wires with more, stronger connections will handle the majority of the pressure). Then, I stripped the other ends of the wires and connected them to a test Arduino that had a sample NeoPixel program loaded onto it. The program ran successfully, so I disconnected the wires and put hot glue over all of the place I soldered to keep the connections in place. After hot gluing, I tested the pixels one more time to ensure that they worked, and the strip lit up successfully. Finally, I learned that the NeoPixel strip I was using had the patches of copper very close to legs of the LEDs themselves, meaning that one misplaced piece of solder could cause a short circuit. Fortunately, I avoided this with soldering, and I will continue to use this NeoPixel strip for the rest of the project. Also, I have not yet soldered the opposite ends of the wires to the Arduino Nano yet because the wires will need to pass through the block of wood first. This final soldering is one of the last steps in the entire project.
5-11
Today, I both used the router to cut a channel for my Arduino Nano case in my block of wood for my lamp and designed a mold in CorelDRAW for when I pour the resin for my lamp. When I used the router to cut the channel, I had to measure the width of the wood and divide it by two. The bit I am using is 3mm smaller than the desired hole size, so I made two passes, one 1.5mm~2mm more that the width/2 and another one 1.5mm~2mm less than the width/2. The resulting cut is shown below. Then, using the width I measured, I modified a template of a mold I will use when pouring the resin into my lamp, and a picture of the resulting CorelDRAW (.CDR FILE) design is shown below. I will cut this design out in cardboard during a future lesson (the red lines represent scoring where the cardboard is slightly cut, allowing bends without a full separation).
5-12
Today, I used the drill press to create a hole for wires through the block of wood, secured the NeoPixels in their slot, painted a layer of resin on top of the NeoPixels to prepare for the resin pour, and designed and laser cut a mold that I will use when pouring the resin during a future class period. I used a jig to hold my block of wood in place, cut half way through using the drill press, flipped the block of wood around, and met the hole on the other rise. Then, I ripped the tape off of the back of the NeoPixels, exposing adhesive that I stuck to the wood. Next, I used a paintbrush to place a layer of resin on top of the NeoPixels to protect it when the full resin is poured on during a future class period. Lastly, I designed a mold out of cardboard using CorelDRAW and the 'score' setting on the laser cutters, but it did not work correctly because I designed it so that the wood would stand up on the skinny edge, but this would lead to uneven hardening and drying for the resin. I will fix this problem next class period.
5-13
Today, I started off by correcting the cardboard mold by modifying my CorelDRAW design. Then, I laser cut my design, placed clear tape over the entire surface of the cardboard that will touch the resin so that the resin will not stick to the cardboard, causing it to peel, placed the two pieces of wood (2/3 and 1/3 pieces) in the mold so that they were 5cm apart. Then, I hot-glued the mold in place, used tape to secure the top, mixed resin with hardener and blue coloring, and poured it into the mold. After the weekend, it will have dried completely.
5-16
Today, I started by removing the mold from my resin lamp. After peeling it off, I used a scraper tool to remove the hot glue from the lamp. This way, when I plane the lamp, the glue will not get caught. Then, I used the planar to smooth out the resin of the lamp and remove excess glue/resin. Lastly, I hand-sanded all faces, edges, and corners at 180p. Pictures of the result are below. The final step that I have not yet completed is printing an Arduino Nano case and soldering the wires to it, but I have already tested the wires with a pre-programmed Arduino Uno to ensure that everything still functions, which it does.
5-17
Today, I used the electric sander to smooth out all sides of my lamp from 180p all the way gradually up to 3000p. Then, I used a wet paper towel to remove any leftover dust. This water will make the lamp very rough again. Next class I will sand it again, then I will 'buff' it to finish it. Also, I soldered the Arduino Nano to the wires coming out of the bottom of the lamp. A picture of the result is below.
5-18
Today, I came to class to find my lamp extremely rough because of the wet paper towel I used on it yesterday. Then, I sanded it against just like yesterday all the way from 180pt o 3000p. Next, I used a dry paper towel to remove any leftover dust before applying a coat of oil to all sides of the lamp. A picture of the result is shown to the right. While electric sanding, I wore safety goggles, ear protection, and a KN95 mask to make sure I didn't inhale sawdust, and I used gloves while applying the oil. Tomorrow, the oil will have dries and the project will work successfully.
5-19
Today, I almost finished my resin lamp project. The oil has dried, so I programmed the Arduino and NeoPixels. I plugged the Arduino Nano into the computer, used a NeoPixel Code Generator to lay the basis for what I wanted to accomplish, and fine tuned the program in the Arduino IDE. I also had to change the pin parameter from 8 to 2, since that was the pin I soldered to earlier in the process. Below is a video of the result. The only step left is to 3D print a case for the Arduino Nano, and I set it to print during class. When it finished, I came back, inserted the Arduino Nano, and stuck it in the channel in the bottom of the lamp. Now the project is finished!
5-20
Throughout the duration of this project, I have learned so much about woodworking, aesthetics, working with resin, NeoPixels, and so much more. I will be sure to apply all of my learning to future projects in engineering classes next year!