A development blog showing the creation of a curious machine that instils an emotion. This project has been developed at our hatch labs at Goldsmiths, University of London. Questions? Contact me at [email protected]
Don't wanna be here? Send us removal request.
Text
The Future
This post provides some conclusive thoughts on the journey undertaken. This project provided me a great opportunity to build on learning about electronics and the paradigms of designing and the challenges around assembling physical computing technologies. I have really enjoyed building this machine and very much look forward to showcasing it - watching people reactions and experiences with it in the hope it instils an emotion.
This project would not have been made possible if it wasn’t for equipment such as the laser cutter and 3D printers being made available to students in our hatch lab.
Whats next? There’s always scope to build on and improve this project. I would like solder my project onto a breadboard. In the future, I would like to pick up on this project try to incorporate machine learning and computer vision to improve on the machine’s ability to accurately sense movement. Another possibility to increase immersion would be to build further interactive experiences into it such as sound and lights sensors.

Project References
https://howtomechatronics.com/tutorials/arduino/how-pir-sensor-works-and-how-to-use-it-with-arduino/
Arduino Projects Book, 3rd Edition, May 2015 - Scott Fitzgerald, Michael Shiloh and Tom Igoe
https://create.arduino.cc/projecthub/
0 notes
Text
Putting it all together
Some pictures of the project coming together

Behind the curtains


0 notes
Text
The Code
In this post I provide a brief explanation of how this works. Each PIR pin is assigned to an array. The main loop cycles through the array checking if each PIR is at a HIGH state. If it goes HIGH then the servo is moved to the corresponding angle. The PIR is set to LOW if there is no detection.
//Physical Computing Project //An Emotion Machine
//Servor motor #include <Servo.h> Servo servo1;
boolean pirStatus; //sets the status of the PIR sensor as true/false int servangle = 0; //sets the current angle of the servo
//PIR sensors int pirNumber[] = {3,4,5,6,7}; //connected PIR pin numbers int pirPreviousUsed[] = {0,0,0,0,0}; //track if PIR has been used after going HIGH int pirPreviousLow[] = {1,1,1,1,1}; //previous state of the PIR (0=LOW, 1=HIGH) int pirPosition[] = {5,55,105,145,175}; //positions for servo (angles 0 to 180) int ledPin = 13; int pirPin = 3; int curPositionPir = 0;
///SETUP/// void setup(){ Serial.begin(9600); servo1.attach(9); //assigns servo pin for(int j=0;j<5;j++){ pinMode(pirNumber[j], INPUT); } pinMode(ledPin, OUTPUT); delay(10000); //calibrates the sensors for roughly 10 seconds } //end setup
///Main LOOP/// void loop(){ for(int k=0;k<5;k++){ //starts loop for each PIR pirPin=pirNumber[k]; pirStatus = digitalRead(pirPin); if (pirStatus == HIGH) { digitalWrite(ledPin, HIGH); //this triggers on led to show PIRs are HIGH if(pirPreviousLow[k]) { if (curPositionPir != pirPin && pirPreviousUsed[k] == 0) { // if high PIR is different than current position PIR then move to new position servo1.write(pirPosition[k]); curPositionPir = pirPin; // keep current PIR pirPreviousUsed[k] == 1; } pirPreviousLow[k] = 0; // PIR high is set to false } } else { digitalWrite(ledPin, LOW); //turn off the led pirPreviousLow[k] = 1; //PIR low set to true pirPreviousUsed[k] == 0; } } //ends PIR loop } //ends infinite loop
0 notes
Text
Physical Design II: 3D Printing
Yesterday good progress was made in the first step of housing my components. Today I focused on designing a solution to stand the polystyrene head up and mounting the servo to it.


I decided to 3D print a mount with spikes that were sharp enough to poke through the base of the head.
youtube
This took several attempts getting the size and balance right - ensuring its sturdy enough to hold the head onto the servo.


0 notes
Text
Early Project Test
youtube
Adjustments where needed to be made to the PIR sensors to improve their sensitivity and responses times. I also needed to laser cut the roof of my structure to minimise light interference to the sensors.
0 notes
Text
Physical Design I: Laser Cutting
Back from the holidays. This week I intend to design and build a structure that will house my components and the foam head and to address the design flaws presented by my prototype. The first step will be to design and build the structure to hold the components. The second step will be designing and building a way to mount and balance the foam head.

I took accurate measurements of a PIR sensor using a vernier calliper. Design considerations needed to be taken to hold and separate the PIR sensors so they are less prone to interference and to house the Arduino and circuit wires. The use of 5 PIR sensors prompted me to use an octagon shape to hold the PIR sensors at 45 degree angles.
I used Illustrator to design my main structures to laser cut the structures on cardboard.
youtube
After getting the measurements right, I used a hot glue gun to put the structure together and began to house the circuit and components.

0 notes
Text
Early Prototype
This week, I put together my first prototype of my project.

I used foam mounts to hold PIR sensors in place by friction in a semi circle thus allowing them to capture movements in a 180 degree radius.

Problems encountered:
Upon testing this prototype, I quickly noticed that effectiveness of the PIR sensors to capture movements diminished. This was because they were overlapping each other causing the servo movement to fluctuate. I needed to come up with a design that will separate the PIR sensors so there is no interference.
0 notes
Text
Assembling the circuit

I assembled the circuit which will form the fundamentals of my project. I used a 100uf capacitor to help smooth out any voltage changes that may occur when the servo motor is in motion.
I wired all the PIRs positive and negative wires together - powering them directly off the 5V Arduino board. I plugged the PIR signal wires into ports 3-7 and the servo into port 9.
Next up - I will be able to put together an early prototype of my project.
0 notes
Text
Arduino Circuit Design
I used a software tool called Fritzing to help me design the circuit for my project. This will allow me to go onto assembling the circuit next.

0 notes
Text
Components
I have chosen to use 5 PIR sensors (HR501) to effectively capture infrared movement across 180 degree radius. I have opted to use a larger servo (MG996R) to be able to hold the foam head. I will also be using an Arduino Uno board that I’ve grown familiar to using in class.

I tested the components which are going to be used for this project. I used a servo tester tool to ensure it was in working order. To test the PIR sensors I setup a circuit with an LED that triggers upon detection of movement.



0 notes
Text
Project Overview
This week I have formulated a plan for this project and consolidated the components I would like to use to achieve the vision set out.

How it works:
The machine will use PIR motion sensors to detect any movement with a certain radius. Upon detecting a movement, the servo motor will rotate to the point in that direction.
0 notes
Text
Approaches
This week was spent thinking about the interactive experiences and how to achieve them.
To create an intriguing experience, I want to people to be exposed to a motion tracking mannequin head that detects movement within a certain radius and follows them giving the illusion of being watched. There are several ways of approach this. Initially I thought about using a camera embedded on the head and using OpenCV library to achieve image recognition - utilising servos to pan and tilt on a gimbal.

However there are many challenges. I have discovered there was a steep learning curve taking this approach with no experience in the field of computer vision and machine learning. This also got me thinking that perhaps this project doesn’t need image recognition to achieve its aims but instead a module that senses movement.
0 notes
Text
It begins here
For my physical computing class we have been tasked to build a curious machine designed to instil a certain emotion in people. As a society many of us experience a wide array of emotions in certain walks of life - whether it’s social situations, stage fright or someone jump scaring you.
THE BIG IDEA
Given the freedom the I have with developing this project - I want to develop a machine that evokes surveillance/creepiness instilling the emotion of fear and anxiety of being watched. This project would be considered a success if it is able to portray these emotions effectively creating intriguing experiences.

I will use this blog to embark on a journey to give readers insights as the project develops. Stay tuned.
1 note
·
View note