Friday, September 08, 2006

Touch w. CUBLOC and Xport

So it was pretty trivial to get one side of Touch working with the CUBLOC CB220 and the Xport.

I put the CUBLOC into the CB220 Proto Board. I attached the Xport to the Comfile Xport Dongle which provides an RS-232 level serial connection, but needs +5V on Pin 9 of the DB9. The Xport
needs about 200 mA, which is more than the CUBLOC regulator can provide (I found that out through trial and error...) So I put a 7805 5V regulator on the proto board, brought the wall wart positive voltage to it, and connected the output of the 7805 to pin 9 of the CUBLOC DB9 connector.

IMG_1042

IMG_1066

Then I hooked up the Pololu Micro Serial Servo Controller, this time using the logic-level serial connection from the CUBLOC second serial port:

IMG_1061

The Xport was tuned to carry the first serial port of the CUBLOC over UDP to an Internet server. I also attached a servo with a finger to the servo controller board:

IMG_1071

On the CUBLOC, I wrote this simple program to report out the finger force-sensitive resistor analog value and send it to the Internet server, then when it receives a new finger position from the Internet server, it commands the servo controller to update the position:

Const Device = CB220

Dim f_pos_1 As Byte
Dim f_pres_1 As Byte

Input 5 'P0 / Pin 5 as Input
Opencom 0,9600,3,32,32 'open RS-232 channel to Xport
Opencom 1,9600,3,32,32 'open serial channel to Servo Controller
Bclr 1,1 'clear channel 1 tx buffer

On timer(10) Gosub a2d 'every 100 ms
On Recv0 Gosub servo_move 'on UDP in from Xport

Do
Loop

a2d:
f_pres_1=Adin(0)>>2 'scale 0-1023 to 0-255
Put 0,f_pres_1,1 'send finger pressure to Xport
Return

servo_move:
f_pos_1=Get(0,1) 'get commanded finger position from Xport
Put 1,255,1 'send 0xFF to servo controller
Put 1,0,1 'servo #0
Put 1,f_pos_1,1 'send finger position to servo controller
Return


Pretty simple, eh? On the Internet server side, I had a Python test program that took the force-sensitive resistor value, and turned it around back to the CUBLOC to command the servo position:

from socket import *
s=socket(AF_INET,SOCK_DGRAM)
s.bind(('',1068))
while 1:
    [msg,addr]=s.recvfrom(256)
    p=ord(msg[0])
    print addr,p
    s.sendto(chr(p),addr)



So there you go, it works great, took about 1 hour to set up, and it looks like I need to pick up another CUBLOC and Xport!

3 comments:

Alx said...

Hello Thomas,

I had exactly the same idea last week, mostly to communicate with a girl few hundred miles away - big invention always come from this kind of need ;) - with using Arduino board (reduce greatly electronic search, i'm just a programmer).

Can I use you code for my work? I'll send you more info as soon as available, you can watch http://blog.alexgirard.com if you need some about me :)

tolerance said...

Good article, thanks. Many people have written petition for Puma / Nike shoes act. There are many people over the world protested. Chaussures Sport,tennis rackets,cosplay costumes,ed hardy clothing,Cheap Polo Shirts,The North Face Jackets,cheap ugg boots,tn requin,ed hardy online store,Nike Chaussures Hommes,discount Ugg boots,Chaussures Requin tn

tolerance said...
This comment has been removed by the author.