Here is the Modtronix SBC65EC. It is a PIC18F6627 based system with Ethernet, RS232, I2C, 12 Analog Inputs, and 32 Digital I/Os. It comes pre-loaded with Web Based Configuration, and can bootload new programs over Ethernet:
And here is the Pololu Micro Serial Servo Controller. It is an 8-channel servo controller driven with RS-232 or TTL serial. It is small!
Could I write a 5-channel servo controller on the SBC65EC board? Probably yes, but since the Pololu controller only cost $20, it isn't worth me spending the 10 hours it would take to write the servo controller and make it work well and play nice with the TCP/IP stack. Unfortunately the SBC65EC does not expose all of the PIC18F6627 PWM outputs, so I'd have to do the PWMing myself.
Thursday, June 29, 2006
Monday, June 26, 2006
Scott Hutchison in Elan Magazine
My friend Scott Hutchison was featured in May's Elan Magazine. The article mentions the work Look that we collaborated on.
Sunday, June 25, 2006
RVHE Network Issues
UpDATE^3: I FINALLY got the RVHE working with a two-way NATed UDP conversation with a host over the Internet. Well, OK, it seems to work half the time, it is unclear to me if this is an issue related to NAT or not, hopefully I can do some Etherealing tonight to double check.
SO: You have to, by hand, specify the RVHE gateway. No, DHCP won't set it. For example:
10 GW0=192:GW1=168:GW2=0:GW3=1
AND: You also have to, by hand, specify the RVHE gateway MAC address. No, DHCP won't set it. For example:
70 V=1696
75 BYTE(V)=0,9,91,109,143,106
This kind of annoys me, because it means Touch won't be automagically plug-and-play without hooking up a serial connected terminal and setting the gateway IP and MAC. But at least I can prototype with it.
AND: The RVHE initially sets the UDP time-to-live (TTL) value to zero. This means if your packet will be dropped by the first router it hits.
Undocumented, it turns out the TTL is set by the byte at the packet header address plus 10 bytes. However, too high a TTL will break the packet header checksum routine (which also means your packets won't make it). So I suggest keeping the TTL at 70 (decimal) which should get you across the longest Internet connection, but doesn't appear to break the packet header checksum routine.
For example:
70 V=1696
80 BYTE(V+6)=8,0,0,0,70,17
Where the 70 is the TTL.
AND: Let's not forget that the RVHE only receives UDP packets that start with the password in PASS0,PASS1,PASS2,PASS3, then "AB" (which is not documented). The password defaults to "RVHE". If instread you add "AA", it will only work with "autoanswer" (which is documented).
For example (from a host with Python):
s.sendto("RVHEAB12345",('192.168.0.12',1234))
So here is an entire program to send and receive packets:
10 D=DHCP(1)
12 IF D>0 THEN GOTO 10
13 GW0=192:GW1=168:GW2=0:GW3=1
15 PRINT "IP:",IP0,IP1,IP2,IP3
20 UDPPORTIN=16
40 INTIP=1000
50 INTERRUPTS
60 PAUSE 1000
70 V=1696
75 BYTE(V)=0,9,91,109,143,106
80 BYTE(V+6)=8,0,0,0,70,17,198,31,44,99,0,16,0,16
81 F=2176
82 BYTE(F)=66
85 PRINT "SENDING..."
86 PRINT SECONDS
90 D=IPSENDUDP(5)
95 GOTO 60
and in Bank 1:
1000 PRINT "INTERRUPT"
1010 B=IPGETDATA(1)
1020 PRINT "BANK= ";B
1030 C=RELEASE(B)
1040 E=((B-2)*128)+1792
1050 PRINT BYTE(E),BYTE(E+1),BYTE(E+2),BYTE(E+3),BYTE(E+4)
2000 RETI
SO: You have to, by hand, specify the RVHE gateway. No, DHCP won't set it. For example:
10 GW0=192:GW1=168:GW2=0:GW3=1
AND: You also have to, by hand, specify the RVHE gateway MAC address. No, DHCP won't set it. For example:
70 V=1696
75 BYTE(V)=0,9,91,109,143,106
This kind of annoys me, because it means Touch won't be automagically plug-and-play without hooking up a serial connected terminal and setting the gateway IP and MAC. But at least I can prototype with it.
AND: The RVHE initially sets the UDP time-to-live (TTL) value to zero. This means if your packet will be dropped by the first router it hits.
Undocumented, it turns out the TTL is set by the byte at the packet header address plus 10 bytes. However, too high a TTL will break the packet header checksum routine (which also means your packets won't make it). So I suggest keeping the TTL at 70 (decimal) which should get you across the longest Internet connection, but doesn't appear to break the packet header checksum routine.
For example:
70 V=1696
80 BYTE(V+6)=8,0,0,0,70,17
Where the 70 is the TTL.
AND: Let's not forget that the RVHE only receives UDP packets that start with the password in PASS0,PASS1,PASS2,PASS3, then "AB" (which is not documented). The password defaults to "RVHE". If instread you add "AA", it will only work with "autoanswer" (which is documented).
For example (from a host with Python):
s.sendto("RVHEAB12345",('192.168.0.12',1234))
So here is an entire program to send and receive packets:
10 D=DHCP(1)
12 IF D>0 THEN GOTO 10
13 GW0=192:GW1=168:GW2=0:GW3=1
15 PRINT "IP:",IP0,IP1,IP2,IP3
20 UDPPORTIN=16
40 INTIP=1000
50 INTERRUPTS
60 PAUSE 1000
70 V=1696
75 BYTE(V)=0,9,91,109,143,106
80 BYTE(V+6)=8,0,0,0,70,17,198,31,44,99,0,16,0,16
81 F=2176
82 BYTE(F)=66
85 PRINT "SENDING..."
86 PRINT SECONDS
90 D=IPSENDUDP(5)
95 GOTO 60
and in Bank 1:
1000 PRINT "INTERRUPT"
1010 B=IPGETDATA(1)
1020 PRINT "BANK= ";B
1030 C=RELEASE(B)
1040 E=((B-2)*128)+1792
1050 PRINT BYTE(E),BYTE(E+1),BYTE(E+2),BYTE(E+3),BYTE(E+4)
2000 RETI
Natalie Jeremijenko article in Salon
Salon has an article on Natalie Jeremijenko, technological/environmental/public artist. Her website is here. Among other works, she has put together Feral Robotic Dogs that find poisons in brownfield sites. Now I feel like my fish are underachievers!
Tuesday, June 20, 2006
Dorkbot DC Meeting
The Washington, DC chapter of Dorkbot is forming, and the first organizational meeting is tonight (June 20, check link for more details).
I'll be there tonight with an RVHE board to show off.
I'll be there tonight with an RVHE board to show off.
Friday, June 16, 2006
RVHEs and Python
Why do I love Python? Because this is all you need to send a UDP packet:
from socket import *
s=socket(AF_INET,SOCK_DGRAM)
s.sendto("My Data",('192.168.0.1',1099))
So after a bit of work to understand the documentation, I finally have the RVHE boards sending and receiving UDP packets. Now for Touch, I need to build the server where they two sides will meet, and have them exchange A/D information, and drive the finger servos.
from socket import *
s=socket(AF_INET,SOCK_DGRAM)
s.sendto("My Data",('192.168.0.1',1099))
So after a bit of work to understand the documentation, I finally have the RVHE boards sending and receiving UDP packets. Now for Touch, I need to build the server where they two sides will meet, and have them exchange A/D information, and drive the finger servos.
Toronto Tech Art
I had a great time in Toronto, and much of it centered around the Interaccess electronic media center. I attended an opening of work associated with the Subtle Technologies conference. One of the sculptural works by Philip Beesley and Will Elsworthy looked like thousands of feathers tied together along with piano-wire tentacles. The tentacles were attached to touch sensors, and touching them pulled up the tentacles using memory wire.
Another night I attended Dorkbot Toronto which included David McCallum's "Warbike" for sonification of wireless access points, a discussion VJ tools and techniques by VJ Nokami, and Cameron Browning's 3D network visualization glove.
Finally, I attended an I/O Media synthesizer jam, which was far more entertaining than I thought it might be. Lots of combinations of analog and digital synthesizer systems.
I found out about a lot of cool things, like FreeFrame video effect plug-ins for VJs, and Pure Data, a real-time dataflow language for audio and video processing, and the Plogue Bidule and Live5 audio systems.
Another night I attended Dorkbot Toronto which included David McCallum's "Warbike" for sonification of wireless access points, a discussion VJ tools and techniques by VJ Nokami, and Cameron Browning's 3D network visualization glove.
Finally, I attended an I/O Media synthesizer jam, which was far more entertaining than I thought it might be. Lots of combinations of analog and digital synthesizer systems.
I found out about a lot of cool things, like FreeFrame video effect plug-ins for VJs, and Pure Data, a real-time dataflow language for audio and video processing, and the Plogue Bidule and Live5 audio systems.
Monday, June 12, 2006
Thursday, June 01, 2006
The Serializer
I've got to order my Robot supply links in a Wiki or something...
Today I found The Serializer at RoboticsConnection.Com. Based on serial control (full RS-232 or TTL levels), it has: I2C, 5 A/D, 2 4A DC H-bridges, Single and Quadrature Encoder inputs, 2 servo controls, up to 16 digital I/Os.
RoboticsConnection has a PC-104 PC, but it is $319!
Today I found The Serializer at RoboticsConnection.Com. Based on serial control (full RS-232 or TTL levels), it has: I2C, 5 A/D, 2 4A DC H-bridges, Single and Quadrature Encoder inputs, 2 servo controls, up to 16 digital I/Os.
RoboticsConnection has a PC-104 PC, but it is $319!
Subscribe to:
Posts (Atom)