Rf Signals
Team:
Sara Johnson as designer, integrator, and tutor
Annabelle Lee as scribe, designer, and integrator
Introduction:
There are thousands of invisible cell phone signals bouncing around us. Our team set out to visualize and experience the invisible data flying through the air that that consume our attention. We narrowed our focus on rf signal emitted by cellphones, and created a light display that fades and flickers in response to the background noise created by our constant use of cellphones, and dramatically flashes and changes color when a phone sends or receives data nearby.
Technical Specs:
We used a 16 cm antenna to sense rf signals emitted from phones, emitting signals at a frequency of about 1800 MHz standard GSM (Global System for Mobile Communications). 1 cm of the antenna wire was stripped and exposed to collect signal. It can detect any cell phone activity such as incoming or outgoing calls, texting, and data usage. The sensitivity is adjusted with a potentiometer.
The sensed signal is amplified through an op-amp, and the sensitivity is adjusted with a potentiometer to a level of sensitivity to ignore background noise and react to large packets of data. THe signal is analyzed through the signal the Arduino’s analog input and determines the frequency using arduino timer interrupts.
The two analog LED strips are powered by 12V and setup with 6 N-powered mosfets, one mosfet for each color.
Circuit Schematic:
http://www.jerome-bernard.com/blog/2013/01/12/rgb-led-strip-controlled-by-an-arduino/
Pictures:
Arduino Code:
The below code uses Amanda Ghassaei’s “sine wave freq detection with 38.5kHz sampling rate and interrupts” code available here:
http://www.instructables.com/id/Arduino-Frequency-Detection/
//clipping indicator variables
boolean clipping = 0;
//data storage variables
byte newData = 0;
byte prevData = 0;
//freq variables
unsigned int timer = 0;//counts period of wave
unsigned int period;
int frequency;
void setup(){
Serial.begin(9600);
pinMode(13,OUTPUT);//led indicator pin
cli();//diable interrupts
//set up continuous sampling of analog pin 0
//clear ADCSRA and ADCSRB registers
ADCSRA = 0;
ADCSRB = 0;
ADMUX |= (1 << REFS0); //set reference voltage
ADMUX |= (1 << ADLAR); //left align the ADC value- so we can read highest 8 bits from ADCH register only
ADCSRA |= (1 << ADPS2) | (1 << ADPS0); //set ADC clock with 32 prescaler- 16mHz/32=500kHz
ADCSRA |= (1 << ADATE); //enabble auto trigger
ADCSRA |= (1 << ADIE); //enable interrupts when measurement complete
ADCSRA |= (1 << ADEN); //enable ADC
ADCSRA |= (1 << ADSC); //start ADC measurements
sei();//enable interrupts
}
ISR(ADC_vect) {//when new ADC value ready
prevData = newData;//store previous value
newData = ADCH;//get value from A0
if (prevData < 127 && newData >=127){//if increasing and crossing midpoint
period = timer;//get period
timer = 0;//reset timer
}
if (newData == 0 || newData == 1023){//if clipping
PORTB |= B00100000;//set pin 13 high- turn on clipping indicator led
clipping = 1;//currently clipping
}
timer++;//increment timer at rate of 38.5kHz
}
void loop(){
if (clipping){//if currently clipping
PORTB &= B11011111;//turn off clippng indicator led
clipping = 0;
}
frequency = 38462/period;//timer rate/period
//print results
Serial.print(frequency);
Serial.println(” hz”);
delay(100);
}
Antenna:
You can switch out antenna lengths according to which frequency of signals you’re looking to capture. Our antenna is 16cm.
2.4 GHz = 12.5 cm / Bluetooth, WLAN
1800MHz = 16 cm / E Netz GSM
900MHz = 33 cm / D Netz GSM
500 MHz = 60 cm / DVBT K24 Television
100 MHz = 150 cm / FM Broadcast
Or, you can calculate using the below equation.
λ=c/f = (300.000km/h)/900MHz =33.3 cm
Then; Antenna Length = λ / 2 = 16.6 cm
]]>
Team: Annabelle Lee and Sara Johnson
Proposal: We plan to produce a product that would allow users to experience EMF/RF sensing capabilities through tactile, and possibly aural or visual, sensory inputs. RF signals will be picked up by a discrete wire attached to an earset. Piezo buzzers mounted to the earset will convey information about the detected signal through various pulse patterns and frequencies.
Annabelle Lee
(Scribe and Designer)
Joe Mallonee
(Designer and Tutor)
Riya Savla
(Integrator and Designer)
Introduction
Our project centers around the idea of finding substance in a world where Coca Cola can steal ground water, use fossil fuels to ship their products around the globe, and still have a polar bear as an advertising mascot. The eye flower continuously moves, looking out at the surrounding environment and avoiding contact with the Coca-Cola advertisements.
Technical Notes
The advertisements are suspended by metal wire which runs into the Arduino’s ground pin. The flower is hooked up to a pull-down resistor and given five volts. When the wire wrapped around the stem touch the grounded shapes, it sends a signal to a digital input pin (pin 2). This allows us to detect movement and send the flower in the reverse direction.
Above: Parts used are Arduino, breadboard, two servos, high resistance resistor (10k ohms), switch. Two wires (probe and ground) run out to their correct respective mechanical components.
Arduino Code
#include <Servo.h>
Servo servo_up;
Servo servo_down;
//setup servo variables and values
int val_up = 90;
int val_down = 90;
int inc_up = 1;
int inc_down = -2;
const int lowerbound_up = 5;
const int upperbound_up = 110;
const int lowerbound_down = 5;
const int upperbound_down = 180 – lowerbound_down;
const int contactPin = 2; // the number of the pushcontact pin
long lastContactChangeTime = 0;
long noMoreChangeDelay = 3000;
void setup() {
servo_up.attach(9);
servo_down.attach(10);
pinMode(contactPin, INPUT);
}
void loop()
{
// read the state of the switch into a local variable:
int reading0 = digitalRead(contactPin);
delay(10);
int reading1 = digitalRead(contactPin);
int reading = reading0 & reading1;
Serial.println(millis() – lastContactChangeTime);
}
if ((reading == HIGH) && (((millis() – lastContactChangeTime) > noMoreChangeDelay)))
{
inc_up = -inc_up;
inc_down = -inc_down;
lastContactChangeTime = millis();
}
if((val_up <= lowerbound_up) || (upperbound_up <= val_up)) {
inc_up = -inc_up;
}
if((val_down <= lowerbound_down) || (upperbound_down <= val_down)) {
inc_down = -inc_down;
}
val_up = val_up + inc_up;
val_down = val_down + inc_down;
delay(20);
servo_up.write(val_up);
servo_down.write(val_down);
}
Structural Aspects
The flower’s movement is the result of two servos controlled by an Arduino. One of them alternatively rotates clockwise and anti-clockwise. It rotates a disk, through which a shaft sits. The second servo sits on top of this shaft and supports and controls an arm. Thus we get trace out a spherical path with the two servo arms mimicking the longitude-latitude system. The shaft and the top servo are balanced with the help of multiple acrylic disks that rest on low-friction spherical balls.
Images
]]>
Roles: Becca Epstein as Designer, Annabelle Lee as Scribe, Jenna MacCarley as Tutor, Duncan McIsaac as Integrator
Introduction
Our Dream Machine approaches this assignment by focusing on the isolation and terror we all experience in nightmares.
Our Dream Machine is a hanging black obelisk that you may enter from below. As you rise into the apparatus, it envelops you and pulses against your face, closing off more space as the tempo becomes more urgent, and eases off as the tempo decreases. Along with this claustrophobic atmosphere, a surreal atmosphere is established by flickering, diffused lights within. Lower frequencies of the music produce warmer color tones while higher frequencies produce cooler color tones. A external observer will see a faint glow produced by the lights.
Video
Technical Notes
Our project is a black wooden box with a clear, pyramid top that hangs from the ceiling. Within the black box are plastic bags inflated by two computer fans and deflated by two additional fans mounted on the side of the box. Color changing LED bulbs are attached inside the bags, to the upper corners of the box. These bulbs are powered by batteries connected to LED drivers and the arduino inside the circuitry box. Their color changes based on a PWM signal from the arduino. The fans are also powered via drivers and batteries and change their speed based on PWM from the arduino. The circuitry is discretely installed on the side of the box.
Photos
]]>