DJI Phantom 3 Case

Recently purchased a DJI Phantom 3 Advanced. It truly is a great platform, reading up on Eric Chens site Skypixel (Worth it to navigate), he suggested a Duratool MJ-139-20.5 Weatherproof Tool Box case for Phantoms. I was able to use a different one, supplied by MCM electronics (Links below)

Found on Amazon here:
http://amzn.com/B00QPQLWO6

Or MCM Electronics
http://www.mcmelectronics.com/product/22-24120

MCM has a lot of discounts so it’s pretty great getting a decent case for $50 bucks. Sure it was a little bit more work getting everything cut and setup but if you have the time, I would say go for it. I did have to cut the top foam piece to make the Phantom 3 fit comfortably. The Seahorse SE-920F looks solid if you’re looking for an alternative case.

22" Black Tactical Weatherproof Equipment Case

Posted in Uncategorized | Leave a comment

Installing the latest version of node js on the beaglebone

Warning: Cloud9 IDE
If you do this, the Cloud9 IDE will stop working…
Cloud9 only works with earlier versions of node.js at this time.
Try at your own risk, backup everything!

This is useful if you want to install the latest version of node.js on the beaglebone. Unfortunately many of these new version’s are not tested so please be sure to back up your files before going ahead.

Run the following on the command line (preferably from /home/root):

wget http://nodejs.org/dist/v0.6.12/node-v0.6.12.tar.gz
tar xf node-v0.6.12.tar.gz
cd node-v0.6.12


The most difficult thing I had trouble tracking down was a minor change in the file:

node-vx.x/deps/v8/SConstruct

You need to edit this file and modify
line # 84 it should look like this:

'gcc': {
    'all': {
      'CCFLAGS':      ['$DIALECTFLAGS', '$WARNINGFLAGS', '-march=armv7-a'],
      'CXXFLAGS':     ['-fno-rtti', '-fno-exceptions'],
    },

*You need to add -march=armv7-a


Go to the downloaded node.js directory (e.g. node-v0.6.12) and run the following on the command line (found this here):

export CC=’gcc -march=armv7-a -mtune=cortex-a8′
export CXX=’g++ -march=armv7-a -mtune=cortex-a8′
./configure
make
make install

After running ‘make’, it will take a long time so be prepared to wait.

Posted in beaglebone | 1 Comment

Setting up the beaglebone with node-usb

1. Install Libusb-dev:

Run the following on the command line:

opkg update
opkg install libusb-1.0-dev

2. Install NPM

Run the following on the command line:

curl http://npmjs.org/install.sh | sh

3. Install the node-usb package

At the time of this writing, I’m having some problems with the latest version of node-usb. The latest version uses some library’s (libuv) not installed with the current version of node js on the beaglebone: v0.4.12. The forked version listed below compiles correctly on the beaglebone, it’s a good place to start:

My forked version of node-usb is below:

https://github.com/jbrache/node-usb

Run the following on the command line:

cd /var/lib/cloud9/node_modules
git clone git@github.com:jbrache/node-usb.git
cd node-usb

Run ‘make’ in the node-usb directory.

make

Copy the usb_bindings.node file in the build directory to the node-usb directory:

cp -i /var/lib/cloud9/node_modules/node-usb/build/default/usb_bindings.node /var/lib/cloud9/node_modules/node-usb/usb_bindings.node

Posted in beaglebone | Leave a comment

beaglebone with data acquisition hardware

Recently I saw beagleboard.org came up with a new device called the beaglebone.

I thought this platform would make for an awesome little data acquisition project that would be browser based. I’ve used the USB-2408 from Measurement Computing extensively before to make temperature (using thermocouples) and voltage measurements. Since it’s USB based, I thought I could use it with the beaglebone to provide a standalone web interface. Since you normally use a full blown PC for data acquisition I thought this beaglebone could provide a browser based interface to accommodate some data acquisition and control needs.

To communicate with the USB-2408, it’s possible to use libusb-1.0 directly with it. When I received the beaglebone I noticed it came preinstalled with node.js, and uses the Cloud9 IDE for development. I realized I could use node.js to develop my application, and communicate with my USB-2408 through a web interface.

I found this node-usb project that exposes libusb-1.0 to node.js, which is really awesome. When using it I found that the author had yet to implement receiving data from USB control transfers so I had to fork the project and implement this small change. My fork is here:
https://github.com/jbrache/node-usb

I’m currently trying to develop a couple different web interfaces for controling the USB-2408:
1. A text based interface where you can send or receive commands.
2. An interface that provides graphs of voltages or temperature read back.
3. Digital IO control and counter readback on the USB-2408.

As far as the graphs go, I like the highcharts javascript library and have some really cool examples using them to provide graphs of the voltages and temperature read back from the USB-2408, see Figure 1. The google charts API might be worth checking out; there are some really neat javascript based graphing implementations out there.

Figure 1: Highcharts Graph Example

So far I’m really pleased with the beaglebone. It’s a great little package and has a lot of features I haven’t even touched. I’m sure I’ve just scratched the surface.

Current Issues:
1. Sometimes when booting up the beaglebone I get these weird errors when accessing the beaglebone through the COM port:

hub 1-0:1.0: unable to enumerate USB device on port 1
ti81xx_interrupt 869: CAUTION: musb1: Babble Interrupt Occured
ti81xx_interrupt 870: Please issue long reset to make usb functional !!
musb_h_ep0_irq 1150: no URB for end 0
hub 1-0:1.0: unable to enumerate USB device on port 1

When this happens, my USB device does takes a little bit of time after the system has booted up to enumerate; after that I don’t see the errors anymore. For some reason whenever I unplug/plug back in my device I have to reboot the beaglebone. It’s a weird behavior and I haven’t quite determined the root cause; I am actually providing external 5V power to the beaglebone.

If I attach a USB hub to the USB port on the beaglebone, my device can be unplugged/plugged back in with no problem. I’ll try to come back to this problem at some point, for now I’ll stick with the USB hub.

Posted in beaglebone, Projects | 2 Comments