August 15, 2010 8:19 PM
Puppet Master Final Project Page Updated
by Anna Kaziunas FrancePuppet Master final project page with links to all my Fab Academy work:
http://as220.org/~anna)

August 14, 2010 6:21 PM
Shopbot Project - Modular Shelving
by Anna Kaziunas FranceI designed a very simple set of modular cube-type shelves that can be stacked side by side or on top of each other to form a larger shelf or bookcase. Inner shelves will be attached with metal hardware, as will the back and sides of the shelf
August 14, 2010 2:24 PM
Diploma Completion Checklist Update - 08.14.2010
by Anna Kaziunas FranceAt this point I have completed all of the Fab Academy assignments to the best of my ability and time constraints.
Note: The shopbot project file that I will be posting shortly was not actually cut due to AS220 not having a shopbot and scheduling issues at the other shopbots in the area.
August 14, 2010 11:08 AM
Unsuccessful Modela Troubleshooting - Partially Successful Switch to Roland Vinyl Cutter
by Anna Kaziunas FranceI wish that I could relate tips for troubleshooting the Modela milling machine in this post - but I have hit a brick wall. (However, I recommend you try the steps below if you are troubleshooting your own milling machine.) My boards have been milling extremely hairy for weeks - punctuated by a workable board or two out of 50 or so milled.

I have tried:

When I first began using the Modela back in January - I often had these types of problems, but as I became better acquainted with the machine, the boards came out better overall, with an occasional hairy board. However, in the last few weeks I mill almost exclusively mangled boards with the occasional usable board being produced.
As I am completely out of time - I thought I would try to cut my remaining infrared prototype boards for my final project / networking on the vinyl cutter out of flexible copper sheets. The boards are very tiny - I am not sure I can get them off off the sticky background without destroying them. I cut many multiples to use as spare parts for when parts get torn. Hopefully this will work and I can finish my projects.

August 12, 2010 8:47 PM
Very Basic Beginner Assembly Tutorial III: How to Use Avrdude
by Anna Kaziunas FranceSee the Very Basic Beginner Assembly Tutorial: How to Use Gavrasm to compile an .asm flie
Note: If you do not yet have avrdude installed or if you are a windows user and need avr studio - see Lady Ada’s tutorials for detailed information on how to download, setup, configure and use these programs. Lady Ada’s AVR software installation tutorial:
Again - Lady Ada has excellent detailed tutorials on how to use avrdude check the out for details on what the all the commands are and what they do - I will just give the very basics here to help you program a chip.
Open your command line interface and navigate to the directory that contains the file you want to flash to the microcontroller.
Connect your AVR programmer to your computer - I prefer the usbtiny (also created by Lady Ada and available at a reasonable price from adafruit studios).
If your board has an resonator / external clock you will need to set the fuses first before attempting to program the microcontroller. You must do this first. However, once the fuses are set - you do not have to do it again. The fuses are set only once. You can reprogram the microcontroller as many times as you want after the fuses are set.
example to set fuses:
parts used in this example:
avrdude -p t44 -c bsd -U lfuse:w:0x7E:m
You need to change the parts in the code above to match the parts you are using in order for it to work. Ask you instructor if you are confused.
example to set fuses: parts used in this example:
avrdude -p t45 -c usbtiny -U lfuse:w:0x7E:m
generic example to flash microcontroller:
avrdude -p microcontroller -c programmer -U flash:w:program.hex
example with actual data:
parts used in this example:
avrdude -p t44 -c usbtiny -U flash:w:freqrx3.hex
August 12, 2010 8:21 PM
Very Basic Beginner Assembly Tutorial II: How to Use Gavrasm to compile an .asm flie
by Anna Kaziunas FranceThis tutorial instructs you on how to compile an assembly language file (.asm) into a .hex flie using Gavrasm (Gerd’s AVR Assembler). the .hex file can then be uploaded to a AVR microntroller using Avrdude (or another program.)
Open your command line interface and type:
gavrasm
If Gavrasm is installed you will see (your version number may vary):
+------------------------------------------------------------+ | gavrasm gerd's AVR assembler Version 2.5 (C)2010 by DG4FAC | +------------------------------------------------------------+
You can download and install Gavrasm from here: http://www.avr-asm-tutorial.net/gavrasm/index_en.html.
*Note: if you are running a Mac OS (especially a pre-intel / PPC - Power PC Mac see my tutorial on where to get the compiled Gavrasm for PPC Macs or how to compile it yourself. *
A. navigate to the directory where the file that you want to compile is located.
- if you are unfamilar with unix commands: s To list the files in your current directory type:
ls
To change directory / navigate into a specific listed directory type (where directory name is the name of the directory you want to move to):
cd directoryname
To move upwards in the directory tree structure type”
cd ..
If you know the pathname of the directory that you want - type in the pathname of the directory preceded by “cd”
ex:
cd /Desktop/mydirectory/mydirectory2
you can find more about general unix commands b doing a general internet search.
B. After navigating the correct directory - type:
gavrasm filename.asm
where “filename.asm” is the name of the assembly file you want to compile.
Gavrasm will inform you if there are warnings. For the most part you can ignore the warnings. Ask your Fab Academy instructor if they are something you should be concerned about.
If there are errors in compiling your file - Gavrasm will refuse to create a .hex file and will throw a bunch of error messages at you. Use these error messages to fix the problem.
If you don’t understand them - google the error or look at the datasheet for the microcontroller that you are using. See my tutorial on “Datasheet Tips”. Ask your instructor if you are confused - odds are they have encountered this many times. You must fix the errors in the program before it will compile.
August 11, 2010 8:30 PM
Very Basic Assembly Tutorial I: Where to Get Gavrasm for the Mac OS
by Anna Kaziunas FranceHaving problems compiling Gavrasm on your Mac? Here is where to get Gavrasm (Gerd’s AVR Assembler) pre-compiled binaries for the Mac OS.
Download Anna Kaziunas France’s compiled version
Download Kelly Snook’s compiled version
Download David Mellis’ compiled version
Pre-compiled binaries for Windows and Linux are available from the Gavrasm homepage. http://www.avr-asm-tutorial.net/gavrasm/index_en.html
August 6, 2010 2:15 AM
On Self-Replication
by Anna Kaziunas FranceAugust 5, 2010 2:34 PM
Complete and Working --> Modified Hello Echo + Button + FTDI v.2
by Anna Kaziunas Francebr> br> br>
Fab Academy Embedded Programming Assignment:
I modified the hello serial echo board (my modified echo board version2 - see previous posts) to respond to a button and added an FTDI header so I could use it as a substitute for the internet 0 serial board. (I have a Mac and therefore no serial port).
The behavior is that the LED is always on - but when the button is pressed, it turns off.
Shawn and I modified Elliot’s reprogramming the echo board code.
Here is the code:
; Modified.Hello.Echo.Blink LED.44.asm
;
; blink LED when button is pressed
;
; Code Created At FAB ACADEMY AS220
; by Shawn Wallace & Elliot Clapp
; Last Modified 08/05/2010 - Anna Kaziunas France
;
; Permission granted for experimental and personal use;
.device attiny44
.org 0
cbi DDRA, 1
sbi DDRB, 2
loop:
sbic PINA,1
sbi PORTB, 2
sbis PINA,1
cbi PORTB, 2
rjmp loop
I use an usbtiny programmer.
Copy the above code into a text file and save it with YourFileName and .asm extension. Compile it using gavrasm:
gavrasm YourFileName.asm
Compiling the file will create a .hex file.
First - set the fuses on your board:
avrdude -p t44 -c usbtiny -U lfuse:w:0x7E:m
Second - flash the attiny44 with the program code you just compiled:
avrdude -p t44 -c usbtiny -U flash:w:YourFileName.hex
July 27, 2010 3:25 PM
Modified Hello Echo + Button + FTDI v.2 ---> In Progress
by Anna Kaziunas FranceI am having some issues with the Modela this week. I milled this board last night, but it came out hairy / torn up. I will give it another go tonight.
July 27, 2010 2:49 PM
Modified Hello Echo + Button + FTDI v.1
by Anna Kaziunas FranceThis version milled out a bit hairy. Some of the traces were broken, so I used jumpers to re-connect them.
There must have been a short somewhere - after stuffing it, setting the fuses and flashing it, I plugged it in to a 9v battery and received a puff of smoke for my efforts. The LED went on - then smoke came out. In addition, I placed the button too close to the programming header, making it hard to press the button. I am not including the Eagle board or schematic here - see version 2 for a better board.Back to Eagle!!! See version 2 for a (hopefully) improved and working board).
July 27, 2010 1:05 PM
Mantis Hardware / Software Trial Run
by Anna Kaziunas FranceAfter we put the spindle together - Shawn and I tested the Mantis to see if it would respond to commands. It looks like Fab Academy AS220 (with a huge effort on Noah’s part) put machine together properly.
The Mantis responded to the following commands (see screenshots) and responded well. The next step is to figure out how to feed an .rml file into the software. (in progress). After that we need to mill a board on the Mantis and see how it turns out.
July 27, 2010 12:02 PM
First 3D Scans - Modela Scan of Laughing Die and Shell
by Anna Kaziunas FranceThe Fab Academy Assignment The assignment was to scan an object. I used the scanning attachment for the Modela milling machine and the Dr. Picza 3 software that comes with the Modela. The Dr. Picza software works well enough, but unfortunately, it only runs on Windows.
The yellow Modela attachment (see pictures below) taps around the surface of an object using a touch sensor in order to scan a representation of it into the computer.
The objects I scanned were one of Shawn Wallace’s “laughing” dice and a shell we had laying around the lab. The output was saved as screenshots and as an .stl file that can be imported into meshlab and then cleaned up and (hopefully) printed with the Makerbot Cupcake CNC printer.
July 27, 2010 12:00 PM
Interlocking Rings - 3D Printing
by Anna Kaziunas FrancePrint an object
This was my first 3D printing attempt.
Printing the interlocked rings with the MakerBot.









Makerbot Cupcake CNC
July 27, 2010 11:50 AM
MakerBot Cupcake CNC- Assembling the Plastruder mk4 Spindle
by Anna Kaziunas FrancePutting together the MakerBot Plastruder spindle piece for the MakerBot 3D printer. I would describe the full process, but the MakerBot staff has already provided an excellent tutorial. http://wiki.makerbot.com/plastruder-mk4-assembly
July 27, 2010 11:42 AM
Capacitive Sensing - PuppetMaster v.1-v.2
by Anna Kaziunas FranceMy final project for Fab Academy is a universal remote I am calling PuppetMaster, due to its ability to control out of reach objects / devices using the fingers. This post details the PuppetMaster boards v.1 - v.2 that use capacitive sensing.
The first working version of the prototype uses capacitive sensing built on the Hello World Step response example, but converted for use with a attiny 44.
I fabbed the board(s) myself, using the standard fab inventory parts.
However, there was a issue with this initial board and I could not get the modified code for the attiny 44 to work with the Hello.Step.45.py code. I attempted triage, but the board remained flaky. There seemed to be an issue between the ground pin on the chip and power.
In addition, I realized that I routed the Tx to Rx wrong on the FTDI header pins. I was using jumpers to work around it initially, but after the version 1 board’s persistent flakiness, I decided to make a version 2 board. I am not including the schematics & Eagle files for version 1 because of these issues.






I ran out of time in the lab and did not get a chance to mill out the board. Instead, I scored the perimeter with a utility knife and broke off the excess edge. Then I used a rasp to file the edges down.



July 27, 2010 11:36 AM
[Revised] Fab Academy Final Project Proposal: PuppetMaster
by Anna Kaziunas FranceMy final project for Fab Academy is a universal remote I am calling PuppetMaster, due to its ability to control out of reach objects / devices using the fingers. This is the revised final project proposal - the first proposal was overly ambitious and encompassed too many sensor types in too short of a time period.
First Working Prototype: The first working prototype (illustrated in the PuppetMaster v.1-v.2 [capacitive sensing] post) uses thin copper sheets to create a capacitive sensor between the index finger and the thumb.
For Fab 6: By Fab Academy graduation I propose that PuppetMaster will consist of a fabbed board that reads gestural input from accelerometers.
All board(s) will be fabbed, using the standard fab inventory parts with a few exceptions, (the sensors used in the later stages).
The First Stage [capacitive sensing]
The Second Stage [ accelerometer input]
| Stage | Description | Deliverable | Date Range | Board Version |
| Short Term — For Fab 6 | ||||
| 1.0 | Capacitive Sensing | working capacitive sensing prototype | Complete on 6/2/2010 | v.1 — v.2 |
| 2.0 | 6-axis Sensors (gyro, accelerometer) | accelerometer prototype | 06/02/2010 — 09/16/2010 | v.3 - |
| 3.0 | Basic gestural language | A few mapable gestures that can be read by the computer / another device | 06/02/2010 — 09/16/2010 | v.3 - |
| Long Term — Future Improvements to make the remote “universal†| ||||
| 4.0 | Infrared | infrared remote prototype | 05/16/2010 — TBD | |
| 5.0 | Radio Control | infrared remote prototype + radio control | 07/01/2010 - TBD | |
| 6.0 | Bluetooth | infrared remote prototype + radio control + bluetooth | 08/20/2010 — TBD | |
| 7.0 | Complex gestural Language | Full gestural language mapped to the 6-axis sensors | 07/01/2010 —TBD | |
July 27, 2010 11:35 AM
Personal & Lab Pages
by Anna Kaziunas FranceJuly 27, 2010 11:28 AM
Hello Serial Echo
by Anna Kaziunas France
This hello world board uses a python program (term.py) to send keyboard input over a serial connection from the board to the computer. It is called “serial echo” because when the computer is able to communicate with the board via serial, the python program will allow the keyboard input to be sent to the board and then “echo” it back to the computer. The keyboard input / text will then appear in the python window.
Type the following into the terminal at the prompt:
python term.py /dev/ttyS0 115200
Where “/dev/ttyS0” is the name of the serial port connection to your computer.
July 27, 2010 11:28 AM
Hello FTDI Step Response
by Anna Kaziunas France
My first step in building this project was to start with the basics. I milled, stuffed and programmed the hello step response board (modified to use the FTDI header by Shawn Wallace). I have a Mac and I can’t troubleshoot / develop at home with the serial header examples.
I am using terminal in OS X 10.4.11Â - this was the terminal command I used to run the hello step response example and what it will say when it can communicate with the board and begin plotting the graph.
Anna-Kaziunas-Computer:~/Desktop/fab_runs/step annakaziunas$ python hello.step.45.py /dev/tty.usbserial-A600dVDy finding framing ... start plotting 0
Here is a screenshot of the charging graph that is produced by Neil’s hello.step.45.py code. This initial charging graph shows the capacitor charging up.
I used thin copper sheets to create the capacitor to test the hello step response board. I hooked them up to jumper wires. When they copper sheets are touching or close to it, the graph will spike up. This indicates that current is flowing through the circuit. When they are far apart the graph will flatten out. This indicates that the circuit is not connected.
For a video of this type of capacitive sensor in action - see the Puppet Master posts.
July 27, 2010 11:19 AM
FabISB Round 2: Stuffing and Programming the Board
by Anna Kaziunas France

The Fab Academy Assignment make and program a board
The FabISP was designed by David Mellis. It is an in-system programmer for AVR microcontrollers. Mellis designed it so that it could be produced in a Fab. It’s based on theUSBtiny andV-USB firmwares, allowing the ATtiny44 to communicate over the USB connection. It can be programmed with avrdude. See Mellis’s site for more details.
This was my first board that I put together and programmed at Fab Academy
I learned how to:
I had a alot of trouble initially with this board and I made at least 6 of these at various stages of completion before I got the final one working. Some of the issues were due to my inexperience and need of practice with soldering and troubleshooting, but I discovered later that many of the problems were also due to the programmer I was using (see below).
July 27, 2010 11:16 AM
Making Programming, Connector and Serial Cables
by Anna Kaziunas FranceMost of the effort in putting the cables together should be directed at figuring out how the pins match up to the wires before attempting to put the cable together.
Headers:
The rest of the cable assembly is fairly simple. Using the diagram that you created to match up the pins - thread the wires through the connector, (ensuring they are in the correct pin positions). Then crimp the wires with the connector by pressing down until the header is securely attached.
If you need to split ribbon cable wires into segments in order to map the pins correctly, secure the strands with electrical tape to make it more difficult to pull them out of the header.
July 27, 2010 11:13 AM
Final Project Licencing and Distribution
by Anna Kaziunas France
Invention, Intellectual Property and Business Models
Develop a plan for distributing your final project.
I plan to distribute my PuppetMaster (see Final Project pages in the main navigation for details on this project.) final project through my website as downloadable schematic and board files. Releases will be made available as individual stages are completed. If the project becomes popular, I may consider distributing it as a kit.
It is unlikely that I will patent this device, as patents are expensive and afford little protection unless you are the owner of a large company with deep pockets who is prepared to litigate.
I instead intend to use the Creative Commons for both licensing and enableling others to find these plans. (a non-commercial, modifications allowed, share alike license seems to make the most sense). This will enable me to keep the copyright to my work while allowing others to us, modify and improve it.
I will create and register the actual license when my final project is closer to completion.
July 27, 2010 11:02 AM
Internet 0 / Zero - Milling, Stuffing & Setting Up the Boards
by Anna Kaziunas FranceJune 2, 2010 7:11 AM
PuppetMaster Final Project Page
by Anna Kaziunas FranceThe project page for my PuppetMaster final project (and all of my Fab Academy project content) is located here: http://as220.org/~anna/


May 19, 2010 1:54 AM
Final Project Plan: PuppetMaster Universal Remote
by Anna Kaziunas France
My final project for Fab Academy is a universal remote I am calling PuppetMaster, due to its ability to wirelessly control out of reach objects / devices using the fingers. This device enables the user to remotely control infrared receiving devices (such as a television or stereo) from a maximum distance of 100 - 150 feet. The user of PuppetMaster will be able to operate the remote by using switches embedded in the fingertips. The board and power supply will be worn around the wrist like a watch or bracelet. (This makes weight and a small form factor a major design consideration for this project). Additional controls will be added in later stages. (see details below)
Form Factor / General Idea Mockup
If IR model - Infrared LED would be placed on top of hand in wrist strap.




I intend to fab the boards myself, using the standard fab inventory parts with a few exceptions, (especially the sensors used in the later stages). The first stage (to be completed by June 1 for the fab academy final project) consists of one mode of control (IR) but other modes (radio, bluetooth and additional gestural sensors) will be added as the project progresses. (See stages outlined below.) A dial or switching mechanism will be added to switch between the modes. These additional modes (combined with the necessary code) will allow the user to control almost any device with hand gestures. I am also keen to develop a gestural language in tandem with the addition of 6-axis sensors (3 axis gyro, 3 axis accelerometer) to the device.
I intend to use a lithium battery for lighter weight and longer life - that may need to come later, I am not sure I will have time to design a power supply.
Prototype in stages, adding functionality and additional control channels / technologies in each stage
1.0 Stage 1: Infrared
1.1. Use infrared to turn off on devices, navigate devices (most likely television)
1.1.1. Most likely commands:
1.1.1.1.On
1.1.1.2.Off
1.1.1.3.Up channel
1.1.1.4.Down channel
1.1.1.5.Other specialty features?
1.2. Power supply -> LiPo model uses lightweight lithium battery and outputs 5V
1.2.1 This is perfect for the TV-B-Gone style board I want to create / modify / fab
1.3 Parts List for puppetmaster (phase 1 - IR)
1.4. Complete working prototype by 6/01/2010
2.0 Stage 2: Radio Control
2.1. Add radio control to Stage 1 prototype
2.2. Enable mode switching on input device - different modes - different gestures
2.3. Experiment with driving a RC device.
2.4. Complete working prototype by 6/30/2010
3.0 Stage 3: Bluetooth
3.1. Add Bluetooth to Stage 1 prototype
3.2. Enable mode switching on input device - different modes - different gestures
3.3. Experiment with driving a RC device.
3.4. Complete working prototype by 7/30/2010
4.0 Stage 4: 6-axis motion sensors
4.1. Add additional sensors to interface:
4.1.1. 6-axis motion sensors (3 axis gyro, 3 axis accelerometer) to input gestures.
4.2. Complete working prototype by 11/01/2010
5.0 Stage 5: Gestural Language
5.1. Utilize 6-axis motion sensors (3 axis gyro, 3 axis accelerometer) to input gestures.
5.2. Creation of full blown gestural language (possibly based on sign language)
5.3. Complete working prototype by 11/01/2010
6.0 Stage 6: Personal LAN
6.1. Connect to the internet to create personal LAN.
6.1.1. Most likely by fabbing a board that can plug into an iphone,
6.1.2. This board could then provide any other user devices with data access
6.1.3. Could connect to Premonition system
6.2. Complete working prototype by 11/01/2010
| Stage | Description | Deliverable | Date Range |
| 1.0 | Infrared | Working infrared remote prototype | 05/16/2010 - 06/01/2010 |
| 2.0 | Radio Control | Working infrared remote prototype + radio control | 06/01/2010 - 06/30/2010 |
| 3.0 | Bluetooth | Working infrared remote prototype + radio control + bluetooth | 07/01/2010 - 7/30/2010 |
| 4.0 | 6-axis Sensors (gyro, acelorometer) | Stages 1 or 2 plus working sensor prototype | 06/01/2010 - 11/01/2010 |
| 5.0 | Gestural Language | Gestural language mapped to the 6-axis sensors | 06/01/2010 - 11/01/2010 |
| 6.0 | Personal LAN | Local area network driven by iphone data access that can wirelessly provide data to other personal devices. | 08/01/2010 - 11/01/2010 |
March 31, 2010 9:07 AM
Using a GUI to Control Processing Output with ControlIP5, Firmata via Serial
by Anna Kaziunas Francebr> br> br>
I created this simple interface to control turning on and off an LED that is attached to a microcontroller via the serial port on my Mac. I wanted to see if I could get the ControlIP5 (used to create the GUI), Firmata and serial libraries working together before I tried using more complex hardware. I intend to experiment with driving multiple servos and possibly tinkering with bluetooth using the NXT library as an "cheap" way (it's "cheap" because I already own the Mindstorms hardware) to play around with bluetooth without buying additional bluetooth modules.
The interface is simple - the Turn On button turns the light on and the Turn Off button turns it off.


/*-------------------------------------------------------------------
* Fab Academy -- Module 09: Interface Programming
*--------------------------------------------------------------------
* Assignment: Write a user interface for an input &/or output
* device.
*--------------------------------------------------------------------
* Purpose: This program is a test to get the controlIP5, Firmata,
* and serial libraries working together through the serial port.
* This program uses a simple button GUI interface to turn on / of an
* LED.
*--------------------------------------------------------------------
* Anna Kaziunas France - 30 March 2010
* Combined / Modified example code from:
* controlIP5 buttons example (included the library download)
*------------------------------------------------------------------*/
import processing.serial.*;
import cc.arduino.*;
import controlP5.*;
ControlP5 controlP5;
// we have to use controlP5.Button here since there
// would be a conflict if we only use Button to declare button b.
controlP5.Button b;
Arduino arduino;
// Variables
int ledPin = 11;
int buttonValue = 0;
int myColor = color(0);
void setup() {
arduino = new Arduino(this, Arduino.list()[2], 57600);
arduino.pinMode(ledPin, Arduino.OUTPUT);
size(640,480);
smooth();
frameRate(30);
controlP5 = new ControlP5(this);
controlP5.addButton("Turn_On",255,200,80,100,70);
controlP5.addButton("Turn_Off",0,200,160,100,70);
println(Arduino.list());
}
void draw()
{
background(myColor);
fill(buttonValue);
rect(20,20,width-40,height-40);
}
public void controlEvent(ControlEvent theEvent) {
println(theEvent.controller().name());
}
// function buttonA will receive changes from
// controller with name Turn_On
public void Turn_On(int theValue) {
println("a button event from Turn_On: "+theValue);
myColor = theValue;
arduino.digitalWrite(ledPin, Arduino.HIGH);
}
// function buttonB will receive changes from
// controller with name Turn_Off
public void Turn_Off(int theValue) {
println("a button event from Turn_Off: "+theValue);
myColor = theValue;
arduino.digitalWrite(ledPin, Arduino.LOW);
}
March 20, 2010 11:24 AM
Fab ISB - Round 1: Milling Out The Board
by Anna Kaziunas FranceToday I milled out my first PCB on the Modela. Technically it is not a “printed circuit board”, but machined out of copper-clad PCB stock.
The assignment is to design a circuit board, mill it, and program it in assembly language. This post documents Part 1 of this process which entails:
Part 2 will document the process of putting the components into the board. Each student had to become acquainted with the following work flow:
The first step in making a board is to create a tool path to send to the machine:
March 17, 2010 11:02 PM
Motion Sensing Glow Skull
by Anna Kaziunas FranceI am ready for Halloween early this year. For my I/O sensor project for Fab Academy I put together a Arduino-controlled motion sensing glowing skull. When motion is detected by the parallax motion sensor, the board turns on the LEDs in the mouth and fades in and out the LEDs glued into the eye sockets.
The code works - but needs to be modified, right now after the motion is activated, the lights stay on / fade in and out in an infinite loop until the power is switched off. Look for an update to this post.
/* -----------------------------------------------------------------
Anna Kaziunas France
--------------------------------------------------------------------
Fab Academy - Sensors I/O Module
Glowing Skull Project
03/02/2010
--------------------------------------------------------------------
Motion Sensor code:
Motion Sensor code:I have seen this code a few places,
it is never attributed to anyone in particular.
I saw it last at: http://www.ladyada.net/learn/sensors/pir.html
--------------------------------------------------------------------
LED Fader code by: By David A. Mellis - Created 1 Nov 2008
Modified 17 June 2009: By Tom Igoe
http://arduino.cc/en/Tutorial/Fading
--------------------------------------------------------------------
Combined / Modified by Anna Kaziunas France - 03 March 2010
--------------------------------------------------------------------
--------------------------------------------------------------------
Purpose of this Program
--------------------------------------------------------------------
Read input value from the sensor
Determine if motion is present (input is HIGH)
When motion is detected via motion sensor:
1. Eyes slowly glow red (fade in and out - continue)
2. Mouth glows (steady)
When motion is not detected after (length of time)
Switch off LEDs
------------------------------------------------------------------*/
// Variables
int ledPinSolid = 13; // choose the pin for the LED
int ledPinFade = 11; //
int inputPinSensor = 2; // choose the input pin (for PIR sensor)
int pirState = LOW; // we start, assuming no motion detected
int val = 0; // variable for reading the pin status
void setup() {
pinMode(ledPinSolid, OUTPUT); // declare Solid LEDs as output
pinMode(ledPinFade, OUTPUT); // declare Fader LEDs as output
pinMode(inputPinSensor, INPUT); // declare sensor as input
Serial.begin(9600);
}
// Begin Motion Detection
void loop() {
val = digitalRead(inputPinSensor); // reading input value
if (val == HIGH) { // if the input is HIGH
digitalWrite(ledPinSolid, HIGH); // turn LED ON
// sets the value (range from 0 to 255):
analogWrite(ledPinFade, HIGH); // turn LED ON
// fade in from min to max in increments of 5 points:
for(int fadeValue = 0 ; fadeValue < = 255; fadeValue +=10) {
// wait for 30 milliseconds to see the fade in effect
delay(400);
}
// fade out from max to min in increments of 5 points:
for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=10) {
// sets the value (range from 0 to 255):
analogWrite(ledPinFade, fadeValue);
// wait for 10 milliseconds to see the dimming effect
delay(110);
}
if (pirState == LOW) {
// we have just turned on
Serial.println("Motion detected Huzzah!");
// We only want to print on the output change, not state
pirState = HIGH;
}
}
else {
digitalWrite(ledPinFade, LOW); // turn Fader LEDs OFF
digitalWrite(ledPinSolid, LOW); // turn Solid LEDs OFF
if (pirState == HIGH) {
// we have just turned of
Serial.println("Motion ended");
// We only want to print on the output change, not state
pirState = LOW;
}
}
}
March 9, 2010 8:03 PM
Completed TARDIS Cast | Working Light
by Anna Kaziunas FranceThis project went through many adaptations and in the end, it did not turn out as a blue box, but more like a weathered garden statue. The hydrostone did not turn out completely white, but grime on the urethane molds made little swirls, further enhancing the marbleized look. It is not bigger on the inside, but the wiring and battery did fit nicely within the internal cavity. A switch turns it on and off. Although this endeavour did not turn out exactly as planned, I learned many things about thinking in 3D and many more about construction and molding objects in 3D.
So what makes this model a “TARDIS” not just a model of a British police box that looks like a light-up garden statue? Honestly, nothing but my intent. I set out to make a model of the TARDIS and that is what it will be called.
I designed the TARDIS in Google Sketchup. > See Previous Post: TARDIS: 3D Modeling
I used the Modela to mill out the front, 3 individual sides and roof of the model in machinable wax. > See Previous Post: TARDIS: Moldmaking
I used the block of machinable wax to create urethane molds of each of the pieces. > See Previous Post: TARDIS: Moldmaking
I dedicate this project to David Tennant for his the excellent portrayal of the 10th Doctor, which has just come to an end.
February 11, 2010 8:10 PM
TARDIS: Moldmaking
by Anna Kaziunas FranceI am still working on my Fab Academy 3D Molding and Casting project (a 3D model and cast of the TARDIS. The implementation of my model proved complicated.
Starting with the cad.py created .rml files (for details on the 3D modeling process see my TARDIS: 3D Modeling post), I carved several molds out a block of machinable wax using the Modela milling machine.
There were a few mishaps creating these molds. The z-max setting was not high enough on the side mold (you can see where the Modela bit drug through the wax and made lines that were not part of the design.). I learned that it pays to set the z-max close to the max of 1 so that it will clear the edges of the design. However, because this particular design took so long to mill out , 7 hours or so, I opted not to redo it if the damage was minor. Instead, I attempted to repair the damaged areas with wax.
After I made the wax molds, I made casts of each side and the roof using urethane rubber. The door was cast once, but the side needed to be cast 3 times to create the 3D object.
I did not allow for space at the top of the wax molds, so to ensure that the rubber would have enough room to capture the top of the design, I laser-cut some tempered masonite frames in to increase the vertical space for the rubber to fill. These frames also make it a little easier to get the rubber out of the mold.
At Fab Academy Providence, we used a smooth-on 2 part urethane mold mix. Just mix equal parts of each container (A and B) and mix slowly in a figure eight pattern to minimize the bubbles.
February 11, 2010 6:17 PM
Laser Cut Cards - Construction Kit
by Anna Kaziunas FranceWhen reading through instructables.com, I found a great pattern for a polygon construction kit. I thought I would use it for my first laser cutter / computer controlled cutting project at Fab Academy. The instructable I reviewed is for a plastic lamp shade, but I decided to use playing cards instead and make a construction kit minus the lamp. (Also, the cards are too opaque for a lamp and I didn’t want to take a chance with heat in such a small space.) In the end, I created a sculpture construction kit.









This construction kit shape can be put together to form a variety of shapes.


January 12, 2010 12:35 AM
TARDIS: 3D Modeling
by Anna Kaziunas FranceMy 3D Modeling and Casting project is to make a model of the outside of the TARDIS. I used the scale and dimensions from G. Hartley’s plans to make an 8 inch model TARDIS.
However, as the milling machine cannot carve out negative space, the faces on the sides or the model could not be created. In order to create a machinable mold, I had to take the 3D model apart into three sections: the roof, the front door and a side (3 of the sides are the same).
In addition, I also removed some details that were in the original 3D model, like the light on top of the box and the all of the “Police Box” lettering. The light was not transferring properly into the CAD file and the lettering would be too fine for the bit on the milling machine. (I plan to create a sticker or letter by hand). I also scaled the model down from 8 inches high to 4.8” so it could fit within the block of machinable wax.
Shawn Wallace suggested that I cast an LED into the model and use it for the light on top of the box. Brilliant.
Sketchup exports .stl ASCII files and I needed them to be in binary. I opened the files in Meshlab and then exported them as .stl binary files. Next I ran the .stl files through stl2png.py to convert the depths to grayscale.
The next steps are:
1. Mill out the 3 of the mold pieces
2. Cast with rubber, making 3 casts of the side view
3. Create a laser-cut box that will hold the mold together when it is being cast with hydrastone.
4. Cast with hydrastone.
Puppet Master Final Project Page Updated
Shopbot Project - Modular Shelving
Diploma Completion Checklist Update - 08.14.2010
Unsuccessful Modela Troubleshooting - Partially Successful Switch to Roland Vinyl Cutter
Very Basic Beginner Assembly Tutorial III: How to Use Avrdude
Very Basic Beginner Assembly Tutorial II: How to Use Gavrasm to compile an .asm flie
Very Basic Assembly Tutorial I: Where to Get Gavrasm for the Mac OS
Complete and Working --> Modified Hello Echo + Button + FTDI v.2
Modified Hello Echo + Button + FTDI v.2 ---> In Progress
Modified Hello Echo + Button + FTDI v.1
Mantis Hardware / Software Trial Run
First 3D Scans - Modela Scan of Laughing Die and Shell
Interlocking Rings - 3D Printing
MakerBot Cupcake CNC- Assembling the Plastruder mk4 Spindle
Capacitive Sensing - PuppetMaster v.1-v.2
[Revised] Fab Academy Final Project Proposal: PuppetMaster
FabISB Round 2: Stuffing and Programming the Board
Making Programming, Connector and Serial Cables
Final Project Licencing and Distribution
Internet 0 / Zero - Milling, Stuffing & Setting Up the Boards
Spindle Assembly - Mantis Milling Machine
PuppetMaster Final Project Page
Final Project Plan: PuppetMaster Universal Remote
Using a GUI to Control Processing Output with ControlIP5, Firmata via Serial
Fab ISB - Round 1: Milling Out The Board
Completed TARDIS Cast | Working Light
Laser Cut Cards - Construction Kit