Select Page
Tech Log #034: Milling v0.1 sensor node

Tech Log #034: Milling v0.1 sensor node

Milled the board, it’s done! Two of them actually – in case one of them failed. It was a long milling operation, taking up the entire space of the 4×6″ double sided copper clad piece. A 0.005″ v bit was used for engraving the traces, and a 1/32″ bit for the drills and outline. Decided to drill the holes on both sides (before flipping and after) and it helped to reduce the amount of time afterwards in post-processing by poking out some of the pieces that didn’t go through all the way. So that’s a great help. The thermal pads for the Gnd copper pour turned out well.
There were two mistakes found out on this iteration: forgot the resistor for the speaker, so this was wired in by hand after. White LED 1 on IO0 has the via going to the top layer through the pin pad. This doesn’t work since the holes are not through-plated. The solution was to jumper from the extra pad to the via, and the problem was solved. Hooray, the extra row of pads comes in useful for prototyping! Next step is coding more of the blinking patterns.
Tech Log #033: Circuit board v0.1 sensor node

Tech Log #033: Circuit board v0.1 sensor node

Board routing is done! Needed to do two iterations on it. The first iteration was routed without using the right dimensions on the outline. Oops. With the proper outline imported, everything needed to be placed closer together. Lesson learned: always import the proper outline (or close to it) as the first step. Alright, so the routing was completed fine. It is a 2 layer board with a copper pour on the back of the board. Tolerances for design for fabrication are 20 mils tracewidth, ample spacing at 10+ mils, and using longpads whenever possible. Vias are large like pads, so they can have a wire pass through them during the assembly stage. Next up is milling the board!

Tech Log #032: Schematic v0.1 sensor node

Tech Log #032: Schematic v0.1 sensor node

Schematic done for v0.1 of the sensor node! This is the most simplest design possible, with the barebones minimum. An ESP32 breakout, with headers to each side just in case, a reset switch, 6 LEDs, temperature sensor, speaker, and power boost board. All components are through hole at this moment in time. Pretty smooth sailing on this. Next step is to route the circuit board.

Tech Log #031: Basic functionality code, onto schematic

Tech Log #031: Basic functionality code, onto schematic

Basic code for the node to test input output functionality works. Two LEDs had to change pins as they were input only. PWM on ESP32 for LEDs is different than with the Arduino boards, that was interesting to learn about. Temperature sensor works, and analog input is 12 bit, so from 0 to 4095. Schematic is started. Next step is to complete the schematic, then board layout, and get the proper board outline with mounting holes into the design.

Tech Log #030: Wiring the ESP32 test device

Tech Log #030: Wiring the ESP32 test device

Determined the pins and wired them to the ESP32. Checked the recommended schematic for the temperature sensor, added a 0.1uF cap. There will be 4x white LEDs (2 individually controlled), and 1x red, blue, green, yellow. The purpose of each of these will be determined later when writing the code that connects with MQTT. The white LEDs illuminate an orange Nalgene quite nicely. Found a tone library for the speaker that works with the ESP32. Why use a breadboard for this and not jump right away to circuit board layout? Have run in to situations with the ESP32 where some pins behave differently than originally thought (for example, some pins are output only). Just verifying this works, then can make a pcb. Next step is to write the test code, then schematic capture and board layout. Yay, electronics!

Tech Log #029: Drag & drop works

Tech Log #029: Drag & drop works

The drag & drop functionality now works! Check out the gif. By a count, about 8 methods were tried before reaching one that worked. Thought about the problem a bit differently, broke it down into tiny steps, and with a bit of tinkering, it works.
 
 
Dragging the square to the marker makes the marker change to green. Moving the marker to the square also makes it change to green.
 
One of the methods that was close to working but not quite was aframe-mouse-dragndrop. I made some changes, which are viewable in this git diff. Main change was line 76: .add(this.direction.clone().multiplyScalar((this.dist + this.range) * ((-1*zPos)-1) ));. The other big changes were thanks to bknill for the initial parented entities fix.
 
 
The next step is to clean up the code that works, and integrate it with the ‘full’ codebase. After that, continue with the device hardware. There are plenty of ways to make it even better, but for now the aim is to make a complete working prototype.