Cerf* stuff
a development /prototyping board available from http://www.intrinsyc.com/
updates/automata
todo
- check mdns > .ipk
- setup network interfaces > dhcp/mdns
- serial i/o
- timings on gpio
setup and configuring the Ceed wireless system
to get the cerf running…
-turn wlan off - run dhcp server (on fmExt) /sw/sbin/dhcpd -d en0 - check access point ap-config (with address noted from the dhcpd debug log) - ESSID should be f0am (config->wireless) - plug in cerf (battery or power) - wait for dhcp ack - ssh root@wherever - pass: rootme - if adxl module is not loded, load it. insmod adxl.o - make sure there is someone listening (nc -lup 5333 for example) - run the sensor sending program ./operate -h 10.0.0.1
port remapping
- FIRST: nc -lup 5151 (or equivalent; gserv2)
- SECOND: nc -lup 5333 | nc -u 127.0.0.1 5151
- THIRD: start operate on the cerf
My (Tim's) experiences / notes outside the foAM environment. The CERFs seem to have fixed addresses or use whatever DHCP server they can find. Locating the IP address for them can be a pain, BUT it seems that the nmap utilities, usable under OSX from the NmapFE? package (http://faktory.org/m/software/nmap/) can do the trick happily. They will scan a whole network (192.168.0.* is the format you should use) and will even tell you what sort of machine is behind the IP (Intrinsyc = CERF).
then you can ssh to the CERF and yeehah as above/below.
In order to add machines (i.e. MAC addresses) to an access point (AP) you can use the unix utilities ap-utils. there is not (feb 05) a fink package, but following the instructions in the README seems to install it effectively. community = password. see http://ap-utils.polesye.net/
++ check if the module loaded. execute the command 'lsmod', if it shows a line begining with 'adxl' you can start the prog ram to send data. if not, execute 'insmod adxl.o' and check again. ++ check which chanels are active (if required) run the command... ./operate -c debug.conf -h <host ip#> ++ start sending data run ./operate -h <host ip#>
chanels 01 (2412 MHz) 02 (2417 MHz) 03 (2422 MHz) 04 (2427 MHz) 05 (2432 MHz) 06 (2437 MHz) 07 (2442 MHz) 08 (2447 MHz) 09 (2452 MHz) 10 (2457 MHz) 11 (2462 MHz) 12 (2467 MHz) 13 (2472 MHz) 14 (2477 MHz)
programming + reference
- runs a linux distro based on 'familiar' http://www.handhelds.org/
- intrinsyc ilinux docs (including harware reference, pinout and component placement diagrams) → http://www.intrinsyc.com/support/i-linux/sa-board/whnjs.htm
- SA1110 Developer's Manual (for strongARM cpu on board) http://www.intel.com/design/strong/manuals/278240.htm.
- example code for reading from the GPIO pins http://support.intrinsyc.com/ftp/pub/stable/distributions/i-linux/3.1/intrinsyc-linux/contrib/testsuite-0.0.1/
- bitkeeper kernel archive → http://sa-cerf-linux.bkbits.net:8080/sa-cerf-linux/
example code for reading from the GPIO pins
accessing the cerfboard GPIO pins under linux. better than nothing, and probably about all we need. tho i'm not sure how to go about doing anything realtime-like using mmap - that is, interrupts, rather than agressive polling to catch all of the pulses.
http://groups.yahoo.com/group/CerfCube/message/1023
You don't need to code in assembler, nor do you need any special
driver (although you can write your own GPIO driver if you wish). The
GPIO pins are accessible through the /proc/kmem (/dev/mem) interface.
Remember that much of the peripherals on the StrongARM? are
memory-mapped, thus, if there's no driver available, there's always
the ability to write your own userspace driver using /dev/mem.
elsewhere in the thread, the “GPIO pins” are defined as being the “16 digital i/o pins”. pix
Playing with Pix's adxl module
the working one is in pix/adxl.o
- load with insmod pix/adxl.o
- to record you i just did:
- [1]pix: dd bs=2 if=/dev/gpio05 of=/tmp/gpio05wobble.data
- [1]pix: then hit ctrl-c to stop it.
- convert using od -d
- display using gnuplot, not sure about usage
- plot [] [0:65535] “gpio05wobble.txt” with points pointsize 0
To use the current sense-to-OSC thingies:
- load the module with insmod adxl.o
- start the sensors: ./operate -h oz-hostnumber -s sleeptime
- oz-hostnumber is the IP of the machine that will receive the data from the sensors. It should have an OSC listener on port 5333. the OSC names are kept in the operate.conf file (see below).
- sleeptime is a wait between reads parameter, apparently good to slow data flow if needed. It is measured in microseconds, so -s 10000 would give a 10 millisecond delay.
Another technique is to use the ./start-sensors start command which will do these things, plus the OSCtoserial command (of which function I am still in the dark). June2004: OSC toSerial takes OSC messages in (in a very certain format) and pumps serial out of the CERF serial port. See questions below about exact format. The baudrate and OSC details are fixed in the source file, this should be easily (ha!) adjustable if anyone needs to….
operate.conf
The config files for the program operate (default is operate.conf but other can be given with a command line tag) are structured as above. The inputs for the two sockets mounted on the CEEDs now are:
gpio4,5,6 on the edge connector
gpio7,8,9 on the middle connector
one line of the operate.conf migh look like:
/dev/gpio6 /6teen/6 0 0 0
this is input number, OSC name, then three unknown parameters.
configs
see; Cerf Config
hardware
cable for the GPIO/Serial connectors
SAMTEC cables for the CerfBoard connectors (http://www.samtec.com/ftppub/pdf/FFSD.PDF ). The part numbers are:
- J2 (GPIO) - FTSH-120-01- LDVP
- J4 (serial) - FTSH-105-01-LDVP
The cables are custom made so you can order any variation you want by following this numbering scheme:
Type Strip: FFSD
No. Pins per row: 05
End Option: s - single; d - double
Overall length: xx 01
N : notch or polarize (doesn't matter)
Other Option: Just the straight through
dc power connector centre/tip is negative (black) ring is +ve (red)
sensor connectors
pin number | function | cable colour |
1 | gnd | shield |
2 | vcc +5v | red |
3 | x-axis | yellow |
4 | y-axis | green |
5 | z-axis | blue |
The plugs are available from RS, part number 464-044. They cost 8.50 Euro (March 2004), are sturdy and not too bad to solder. They are manufactured by Binder, http://www.binder-connector.de and are sexy.
Question: how much current can be sourced from the 5V available on this plug? Partial Answer: enough to run a quad opamp and a 555 to do the analogue inputs.
I (Tim) have built an analogue to PWM converter relatively simply, which allows one analogue channel per input. So CERFs can do 16 analogue input channels. If desired, I can put up a circuit diagram: essentially a 555 making a sawtooth wave and a OpAmp? comparator making the PWM signal. June04: I plan to make at least one board with multiple PWM inputs from Pots or whatever for a CERF.
This is being made. The design uses one OpAmp?, one channel to build a sawtooth signal, the others as comparators to make the PWM signal. So the input signal needs to be adjusted to lie between the upper and lower limits of the sawtooth. Because these OpAmps? are a bit tacky, the range is a bit low, 1.4V to 2.1V - sorry. Thus one needs to use potentiometers to set the right offsets for the inputs. Use an input that is a resistor or a voltage divider with large offset vales. Maybe I will explain the is detail soon. once these values are set, the pots can be replaced with fixed resistors, if you want.
I should have allowed offset resistors on the PCB, silly me I didn't. On the Veroboard version there is space for offsets, crammed in amongst the rest.
There is a NeoOffice? spreadsheet to calculate the values of the offset resistors / center values of the pots given the range of values that a variable resistor will do. I hope to make something like it for potentiometers too - though they are simpler than variable resistors.
Q: what are the two small chips on the extra board in the CERF box? They seem to be buffers or suchlike.
Q: what are the capacitors for? Smoothing for the chips?
Q: Why is the power being fed to two places on the CERF board - the “normal” looking power connector as well as two pins on J3, pins 6 and 7 (brown and red)? Or is this a reset, or enable, or watchdog, or…?
Q: is the serial available at J4 in RS232 format or is it TTL levels? Ditto for he serial that should be somewhere on the GPIO connector.
see (and probly refactor to..) Cerf Analog Interface
screen options
LCD Interface and 6.4 inch VGA (640×480) TFT LCD by Gregor Air, Inc.http://home.netcom.com/~gregor_g/lcd.html
power
The cerfboard requires a regulated 5v supply. aprox 900mA using a wireless CF card and ~500mA without.
longlife - chunky option
Sony NP-F730/750 OR NP-F930/960 infoLithium Battery (camcorder batteries for 8/15hrs recording times
http://stores.yahoo.com/direct/sonnpuseonfo.html
http://stores.yahoo.com/direct/sonnplitionb2.html
not so chunky option
Sony NP-F550 - 3000mAh, 7.2V. http://www.masterb2b.de/Detailed/news296508.html
Which require this charger
OR this charger which is MUCH cheaper
http://stores.yahoo.com/direct/unvid36repli.html
Datel UNS-5/3-D12 non-isolated 5V regulator
http://store.datel.com/cgi-bin/datel.storefront/3d416158056c606e271d26aabf020628/Catalog/1051
OR Texas Instruments PT6302 5v regulator
A detailed design can be found here
http://www.sanpo.t.u-tokyo.ac.jp/~jani/yak/doc/yak-2/regulator/
With background info here
http://wearables.blu.org/wear-hard-02/20027357.html
see: Battery Technology
system level
filesystem install
builing a filesystem image
#mkfs.jffs2 -o root.jffs2 -e 0x20000 -r root/ -p -l
installing
in bootloader... # setbyte 0xc0000000 0xff 0x1000000 # download tftp:10.0.0.1 root.jffs2 0xc0000000 # flash 0x160000 0xc0000000 0x800000 # boot
CerfPWM-calculate.sxc PWM board calculator NeoOffice/OpenOffice spreadsheet
Libarynth > Libarynth Web > WearableComputing > CerfNotes r31 - 02 Nov 2005 - 11:50