Further to a comment I received http://www.adamsinfo.com/the-robot-phidgets-usb-interface-board-kit-works/comment-page-1/#comment-490 I thought that it might be a good idea to write a quick high level overview of getting the USB Phidget Interface Kit working under Linux. In my case I am of course using 32bit Debian, however these instructions should mostly be portable to any other Linux based OS
Tags: debian, gcc, Linux, phidget, phidget interface kit, usb
Progress has as always been good lately. The robot boots up quickly and appears on the wireless LAN, with openssh running. The internal Atheros miniPCI wasn’t doing the trick and wireless performance was shaky at best. I’m using an Alfa Networks USB adapter (r8187) and an 8dBi gain antenna now, so this has some distance now!
I was also getting frustrated with the laggyness of the board while VLC was running for streaming audio and video and so I decided on an IP Camera (Edimax), which is connected directly to the LAN port on the Alix board (I don’t have any reason to use it for anything else).
The motor control script works well and the device is responsive. At this point I can drive the device around
relatively easily and accurately, stream video and audio back to my laptop, which again is connected wirelessly.
Using ‘espeak’ you can easily generate a synthesized voice to provide easy text to voice:
Everything is working great and I’m pleased so far. The only reason why there isn’t a video up yet is because I haven’t had the time! There will be one up shortly.
(more…)
Tags: 8dbi, alfa networks, alix, antnna, atheros, cf card, distance sensor, edimax, espeak, gain, hardware sensors, ip camera, Linux, motor control, phidgets, picolcd, power consumption, r8187, SD card, serial, usb, usb to ttl, vlc
I’ve used OpenWrt previously to this project to build some firmwards for the Linksys Router WRT54 range. OpenWrt is an incredibly powerful and small Linux distro. Although debian is probably better suited to the reasonably powerful hardware, I wanted to give OpenWrt a go anyway.
Unless you’re running a MIPS 4Kc processor on your host which I’m guessing you’re not, you’ll either need to cross compile your binaries, or just compile them natively on the device itself. Compiling on the device works fine as long as you have the relevant packages, however if I was going to build a 2.6 kernel, I’d rather do it on an x86 quad core intel host, rather than waiting a week for the device to do it. I also wanted to minimize the writes on the CF card.
OpenWrt comes with a nice buildroot environment which you can read about and download from www.openwrt.org using Subversion.
Here http://downloads.openwrt.org/kamikaze/docs/openwrt.html#x1-310002 is a great HOWTO on getting the build root environment set up on your x86 host.
Also, see: http://wiki.mikrotik.com/wiki/RB500_Linux_SDK – this is a very complete HOWTO, which is why I’ve not covered most of the installation process and just detailed customizations.
You’ll need to select the RB5xx target for the kernel. Also, run:
In your build root top directory, and add USB support (as my one is modded for USB which is not RB5xx default.
While you’re there, browse to the networking options and make sure you have everything you want, specifically the schedulers for traffic shaping.
Here is my precompiled image:
Tags: /dev/cfa1, /dev/cfa2, /dev/cfa3, bridge, build root, buildroot, debian, dropbear, ifconfig, iptables, kamikaze, mikrotik, miniupnp, miniupnpd, mips 4kc, multiple isps, multiple providers, ntp, ntp client, openwrt, precompiled image, rb532a, rbxxx, split route, subversion, svn kernel, uplink, usb, usb support, x86
I’ve been struggling to think of a good project to start on. I’m currently writing the APNIC Box series here, and I’m on part 4 of maybe 7 or 8 right now. I like to keep at least one personal project of interest on the go at a time so back to struggling for inspiration.. Feel free to tell me that this is an awful idea and suggest something else, but until I hear otherwise I’m going to roll with it.
Linux Robot – Requirements
Here’s what I’m thinking. Small embedded device, way smaller than the Mikrotik 532a used for the APNIC Box. The board will need USB [as we're going to use the 5v for charging later]. I’d like to start with a powerful enough board that it can be expanded later with relative ease.
The device will initially have few inputs and outputs. It will support miniPCI, USB, Serial Console, CF card, GPIO or some other good method for controlling a relay board and some motors. The device will have 4 small wheels, maybe rubber [old mouse] balls instead and some ultrasonic sensors, 4, 6 or 8.
(more…)
Tags: embedded, fm, Hardware, Linux, Linux robot, minipci, motor, oscillator, relay, Robot, sensors, servo, usb
I’ve posted previously about my embedded device and picolcd. I wanted to put some thoughts down about using picolcd.
The easiest way to drive your picolcd is with lcdproc I’ve found. The device doesn’t require any special drivers which is great, as long as you have USB support working you’re fine. Make sure uhci-hcd and usbcore are loaded, you should be able to use ehci-hcd as well as it supports USB 1.1 and 2.0 but I haven’t tested that.
Use lsusb to make sure that the device is shown and recognised. If you see:
Bus 002 Device 003: ID 04d8:0002 Microchip Technology, Inc.
then great. Your device is connected, working and your machine supports USB.
(more…)
Tags: drivers, ehci-hcd, embedded, lcdproc, libhid, liblcdusb, libusb, lsusb, pico lcd, picolcd, picolcd on linux, routerboard, uhci-hcd, usb, usbcore
I have two separate internet providers, two separate static ranges, one from each provider, and a LAN. The purpose of the exercise here was to split traffic between the two providers on an equal 50/50 basis.
(more…)
Tags: Linux, mikrotik, minipci, openwrt, picolcd, router, routerboard 532a, usb, wireless
Recently I came across an annoying issue. I have three identical Seagate USB mass storage devices, plugged in to a debian etch 4.0 stable (2.6.18) machine. I could add those devices and mount points to /etc/fstab, but upon reboot, the /dev/sdX device names would change and therefore the drives would get mounted in the wrong place and bad things would happen. To summarize, “drive1″ would appear as /dev/sdb on one boot, but on another boot, “drive1″ would appear as /dev/sdc with “drive2″ appearing as /dev/sdb.
There are two options here, use the drive serial numbers and some UDEV trickery to ensure that a particular drive gets the same device name each time, but I wasn’t so sure about that.
(more…)
Tags: automounter, debian, drive, fstab, Linux, mass storage device, mount, partition, usb