Design Iteration Goals
The goals for this design iteration are:
- Prototype a shield using the Spark Core
- But: retain the ability to interface to an Arduino Uno
- Improve the touch interface
- Eliminate crosstalk with the haptic feedback vibration motor
Fabrication
The shield design was modified to accommodate the Spark Core. It can still be used with an Arduino Uno by simply using jumper wires in the Spark Core socket to connect to the Arduino control pins. Design files are on the Aspect Github repository under ‘Shield’.
As before, then shield prototype was fabricated on a Shopbot with an engraving bit using a layout generated in Kicad. A jig was created for PCB milling using MDF. A shallow pocket (0.040″) was milled to ensure the PCB (mounted with double-side tape) was truly perpendicular the the Shopbot Z-axis.
A 5 mil engraving bit was used to route around the PCB traces (separating them from the ground plane). The routing opening widths were increased which made soldering and hand clean-up of traces much, much easier than in the last prototype
Assembly
As before, this is a single-sided board with components mounted on the non-copper side of the board. One important layout change was associating pairs of LEDs with a corner rather than a side. This was a nicer look and actually simplified the layout.
Here is the first board being assembled:
The Spark Core has a handy mobile app called Tinker that let’s you control pins from your smartphone without writing any code. This was very useful for debugging the assembly (LEDs and vibration motor).
The board design incorporates connection of the touch sensor line to the connecting bolt, eliminating the need for wiring. A right angle USB connector (6′ length) provides both power and a serial port when debugging. A cable clamp can be attached using the bottom plate mounting holes for cable stress relief.
Here’s the entire enclosure stack just before adding the cap.
Testing
The standard Arduino Capacitive Sense library has not been ported to the Spark Core platform, so custom touch sensor code needed to be created. The code used the interupts on the Spark platform to sense the arrival time of a pulse (which is dependent on capacitive loading under touch conditions). Details on the touch sense code can be found here.
Two projects were created using this prototype to demonstrate the capabilities of the platform:
- Pomodoro Timer is a timer for the famous Poomodoro method that also logs activity to a Google Drive spreadsheet using the combination of a simple server PHP script and IFTTT
- Internet Candle reads local wind speeds and simulates the flicker response of a virtual candle. The touch interface can be used to turn the candle on and off.
Video
Prototype Lessons
- Accommodating the Spark Core is an excellent addition to Aspect enclosure
- The Spark Core packs a lot of functionality in a small footprint (processor + WiFi) and is supported by a great cloud platform.
- Moving the control of pairs of LEDs from a side to a corner works well
- It looks very good and actually simplifies the shield layout.
- The touch sensor works much better
- Some work is still required to optimize the performance when connected to various power supplies
- It is time to move to a commercially fabricated PCB
- The holes in the bottom plate need a chamfer to seat the head of the connecting bolts properly
- Need a better solution for placement of rubber feet on the bottom
- The ideal spot is right where the connecting bolt heads are located. Offsetting the rubber feet leads to some stability issues when the touch sensor is tapped too enthusiastically.
- The Aspect shield functions need to be captured in a library to simplify their use