Redial Diary – May 07 Final

Asterisqué
Making a call could be the hottest thing again.

Introduction

The project is a refined/redialized version for the recently famous project of Durex’s Fundaware. With the same function, it is a cloth/fabric with tiny vibration motors, which can be triggered remotely. The project stimulates touches from others for people who wear it and therefore partners can play through a far distance. However, what different between Asterisqué and Durex’s experimental product is that people can simple call and trigger the motors with the plain keypad on a regular phone, instead of an app. It also allows people to get rid of parsing the app and the product. Plus, with what I learnt from “Redial,” the motors can also be triggered by audio level. That gives Asterisqué a more interesting input by blowing to the microphone on the phone, which I call it the “Whispering Mode.”

mannequin_withFlow

Design

As of now, I have completed a prototype for testing and presentation. The case is a long strip with double sides. One side is with five pink dots on it, which imply where the motors are so people can interact with them. On the other side, there are five square windows, which allow users to see how the motors work. The color palette is pink and black, trying to give a cool and trendy image.

IMG_5561

IMG_5562

IMG_5577

IMG_5585

IMG_5600

AnotherSide

Structure

Via conducting thread inside the case, the motors are connected to an Arduino UNO and a bluethooth mate. The Bluetooth is connected to Processing, communicating with serial port. Tinyphone lies between Processing and Asterisk, sending the digits from Asterisk to Proecessing. With different digits, Processing will tell Arduino to trigger different motors.

The flow is as this:
Call-> Asterisk-> Tinyphone -> Processing ->(via Bluetooth) ->Arduino

Video demo of communication between Processing and Arduino

Challenges and Solutions

The first idea is to stimulate the “real” pattern of touch. Press the pad and the motor vibrates; leave it and the motor stops. Unfortunately, it could be done due to the hardware mechanism of the phones. There is no way to know when the pad is pressed. Furthermore, the pad will only send one digit one time, which means I cannot trigger multiple motors.

The solution right now is I set the motors will vibrate only for four seconds and it will stop unless the digit matching it to be press again. Now the motors won’t be vibrate forever with only one pressing and if users press the pad fast enough, it is possible to have multiple motors vibrating at the same time.

Testing

It was a great chance to test in the class this Tuesday. The result was exciting. First thing was it’s more interesting than I thought. I was kind of not confident of my project before the presentation, but it turned out to be good. I think I probably did something right about presentation. The other thing is about situation of the multiple players. I was afraid that ten more people calling it will ruin my server but it is quite smooth after all.

One of points I learnt from the presentation was that I should let the project talking from itself. Just let people try and they will find the way to play around with it. The other point was the way my motors vibrating is not like human touching. It generally feels like something caused by machine (well… it is after all). Therefore, an advise from the class is I can make it like a massage products rather than a teledildonics product. In my point, I think maybe the how the vibration feels like may not be the most important part, while how the interaction pattern should be. But it is still good to know some other applications of my project.

Demo in the class

Future Plan
1) Completing different mode
2) Fashion the design to wearable clothes

Basic Analog Circuits Exercise – Apr 16

Thanks to Andrew!

Surface mount soldering
Flux and flux pen // apply on leads before soldering them

Solder paste // microscopic balls of solder mixed in with flux. This is easier but needs to be stored in a fridge when not in use.

Doing it 1 pin at a time with a small tip is a good technique.
Chip-Quik (low temp solder) is good to remove parts. Solder it with chip-quick and brush the part off the board.

* Doing it one pin at a time with a small tip is a good technique.
* Low temp soldering: 650 degrees

Soldering SMS(Surface Mount Device)

CuriousInventor.com

*Solder with a coffee heater or toaster oven
Use solder paste after carefully putting chips on the right position, slowly heat it to 200 F by toaster oven, then use a blower to heat it again then the chips should be fix on the right positions.

Filter
For audio, video, and sensors
High-pass filter controls the high freqs, etc.
Low-pass filter: Amplify the 60hZ and not the 15khZ

Example-
TV: Isolate 60 hZ frequency from the 15 khZ frequency
Band pass filter // amplifies both high and low frequencies, with two apmlifiers

Impedance
resistance as it applies to frequency/AC signals.
Impedance rating of an impedance capacitor is 1/(2*pi*frequency*capacitance).
Low freq = high impedance. High freq = low impedance.
In a low-pass filter, the capacitor’s in the feedback circuit. In a high-pass, we put it in the input circuit.

*Capacitor cares the frequency (AC),resistor doesn’t

Notch filter: does not allow certain frequencies through. Kinda like the inverse of a band-pass.

* read “All About Circuits” online

* band filter for amplifying only frequencies of human voice and eliminate the sound of the environment

Motors

1950s in Orlando small motors first showed up. Fractional horsepower motors (smaller) are a recent development

synchronous motors were invented by Tesla, first applied in clocks to keep the clocks accurate by applying the same frequency. Synchronous motors: No brushes, just magnetic fields. We use them when we want motors to operate at precise frequencies.

http://en.wikipedia.org/wiki/Synchronous_motor

servo motor // applied on CDs and DVDs as they can offer adjustable and fixed speed. They change the speed depending on frequency.
* The servos we use aren’t really servos, and they operate on PWM

DC fractional horsepower motor has brushes and a commutator inside. The brushes switch polarity to the coils, which causes the coil to keep rotating. The brushes will be eventually worn out. They are made cheaply but the accuracy of their speed is poor. Reduce the power will reduce the speed.

How to reduce the speed but remain the power?
PWM: you can pulse-width modulate in an analog circuit with a 555 timer.
By give a pulse electricity power (555 chip will make it only can take 18 volts).

The method is called Pulse Width Modulator.

2N2222 // the transistor used in controlling the speed of motor
2N3904 // Eric’s favorite transistor

EZ driver instead of H bridge // Use EZ drivers (stepper motor driver chip). Even has a 5V regulated output.

L293 chip (H bridge) // H-bridge: Current amplifier – uses small voltage to control a large current.

TIP120 // already has a diode in it to protect the circuit

http://www.learn-c.com/experiment5.htm

* Because motors have inductor coils, when you shut them off their magnetic field collapses and they generate a voltage in the opposite direction. Use a diode in the opposite direction of current flow.

Converting analog sine wave to digital

You have to sample by taking a lot of tiny slices of the wave.
Going from analog from digital back to analog will be somewhat destructive – there’ll be “steps” instead of a smooth curve. The higher the sample rate, the less dramatic this effect will be.
Nyquist sample: You have to sample at double of the rate of the highest frequency you hope to recover.

Touch Switch

No electronics, just with your fingers. Touch and open the circuits. You can build an invisible keypad to open your front door without letting anyone knows.

Basic Analog Circuits Exercise – Apr 09

Eagle library at Sparkfun

https://www.sparkfun.com/tutorial/SparkFunEagle-04-13-10.zip

1) new/ project and new/board
2) library /use / SparkFun
3) switch to schematic mode
4) add (on the command line) // add components; move // move components;
name // rename components; del // delete components; net //combine multiple components; copy // copy components

*ctrl and click on the component // be locked not to be connected

http://www.electronicspoint.com/trouble-wires-eagle-t103066.html

5) switch to edit mode (generate/switch to board)
6) arrange the components. Make it neat. The yellow lines should not cross each other. Ground doesn’t matter because we can do flood ground later.
7) route (choose width), using the stroke of wide angle // make the route; ripup // undo the route; show // show where the yellow line connect to. The point is make sure the route does not make a 90 degree turn, which act as a resistor will interrupt the electricity flow.
8) Draw a polygon, name it and type I and click on the polygon to choose isolate as the width about 0.016, which will isolate the positive wires from flood ground. Then click tool/ratsnest to fill it.
9) CAM // after the window pops up, just keep only 16 bottom and 17 pads on and choose PS as the device.
10) Press “Process Job”

Change the language of EAGLE
Windows
EAGLE takes care on a variable named LANG. For changing it go to the
Windows Control Panel where you can define environment variables. Set up
a variable named LANG. For english language the value is typically set to
en_US or en_GB. For german language the value should be set to de_DE,
de_CH, or de_AT.
In case you would like to use a batch file to start EAGLE, it could look like
this:
SET LANG=en_GB
cd C:\Program files\eagle-5.x.x
start bin\eagle.exe
This is of use, if there are other applications that react on the LANG variable.
The batch affects EAGLE, only.

In CMD SET LANG=en_GB wherever you are. Then go into the directory of EAGLE and run start bin\eagle.exe. It will automatically run EAGLE and it should change the language.

Redial Diary – Apr 18

Finally solved the problem of tinyphone server to Processing. It turned out to be that because I changed the host IP in tinyphone_eagi_ruby.rb (line 11) to my server instead of sticking in “127.0.0.1.” Therefore, tinyphone_eagi_ruby.rb was trying to link outside to the WWW and link back to itself, and it apparently did not work. It did not matter if I did not specify the version of Ruby.

The explanation from Chris:
Ah, that makes sense. Yes, I’ve set up Tinyphone to only allow AGI connections from clients on the same machine. This is for security reasons. I’m glad you figured it out.

Redial Diary – Apr 16

Presentation

Iridium // the company(a branch of Motorola) offers conception by 66 low orbit satellites, dedicating to severing the reception of anywhere on the planet.

Ka Band // 26.6-40 GHz, use it to connect the conception in north pole.

Live real time satellite observation

http://www.n2yo.com/

Thuraya // Arabic satellite telecom service for military

http://www.thuraya.com/

http://en.wikipedia.org/wiki/Thuraya

* consider the beginning of making an interactive telephony project.
* Chris’ advice: fantastic model. Making things actually going through from the beginning to the end. A clear vision.

SIP ml 5 // html 5 to Asterisk

http://sipml5.org/

*Final project advice from Alex: Call your friend to play

Redial Diary – Apr 14

Set up my tinyphone server on the cloud.
I set the tinyphone server, install Processing library, and dialplan in Asterisk. But it turned out that though I can dial into my dialplan and execute the client ruby, however it returned nothing. Therefore, I could not get any result from the server right now.

Redial Diary – Apr 09

“Raspbian” “wheezy”

http://www.raspberrypi.org/downloads

// have GPIO just like Arduino to do physical computing stuffs
// have an internal DNS system, so it can make everyone links into with a public address but through Rasberry Pi
// have ports to HDMI and audio and internet

*idea: 行動電磁影響裝置

Speech Synthesis API

Festival // Scottish robotic voice
Google // undocumented
Microsoft // two thousand characters a day

Speech Recognition API

Google // undocumented

In the case of our example, instead of confidence, maybe it is better to use comment to say “please say it more clearly.”

*IPKall // just set it up as a SIP phone (ex Zoiper), however, the number IPKall gives to users is actually their username though users get a 10-digis number, too . Therefore, be sure to set the extension as the username.

* The highest frequency of the sound telephones can get is 4,000 Hz

* Phtotosounder // takes the pic and converts it to waveforms, so you can hear your picture.

* in Linux environment, it is a common way to instruct user to type their personal info: // “<” “>” are not needed.

DWD Diary – Apr 12

For our final project
1) well documented, someone can run it if he/she just happens to find it on repo
2) write the README carefully

Authentication
*On mobile

*shift+cotrl+R // make chrome console/network to refresh

*draw on the Google map and generate a serial street view

http://hyperlapse.tllabs.io/

* APP Engine

https://developers.google.com/appengine/docs/java/gettingstarted/?hl=zh-TW

*Parse //build APP

https://www.parse.com/

*Google Places

https://developers.google.com/places/documentation/

* incognito mode // won’t store any cookie, might help to fix some bugs to log in

http://support.google.com/chrome/bin/answer.py?hl=en&answer=95464

Cookie and Session
app.use(cookie) should be coded before app.use(route)

Passport

http://passportjs.org/guide/