Let's Make Robots!

Beaglebone Black -- Box to Bot

Open Hardware ARM Computer, 1ghz

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8/25/13:

This fellow here has made some pretty nifty walkthroughs on the rtl8192 and the Chronodot (DS3231) RTC on the Arch Linux.  Though I've not attempted his instructions (been burnt out on this board) I believe his instructions will get a reliable WiFi connection with the rtl8192, using Arch Linux, on the B^3.

Also, when I get the energy, the pinout at the bottom of this page has a mistake or two.  As Zaius pointed out.

EDIT: Ok. Don't use the pinout until I research more.  I'm getting conflicting information on what pins are what in Mode 7. The reference manual is stating one thing, but other sources are agreeing with me.  I'm guessing Zaius is dead on; version issues. When I've got it sorted I'll update.

 

7/3/13:

Not much yet, still working on stable wifi.  I thought I might as well share my work log; embarrassing as it may be.  

If there are some Linux wise in the crowd (especially those knowing Arch Linux) would you mind taking a look at my work flow? I've got the wifi module working, though, it's not as stable as I'd like.

http://cthomasbrittain.wordpress.com/2013/07/03/installing-8192cu-module-on-the-b3-running-arch-linux/

 

6/22/13

Wow.  Sorry all, been more than a month since I updated this post.  

I've not given up on the BBB as a robot platform; I realized I didn't know Linux well enough to begin tweaking it on embedded devices (well, devices lacking community support, at least).  I've spent the last month reading about Linux and trying to wrap my head around it (that and fixing all of our bust-a-mucated cars).  

I grew up Microsoft and over this last month all household computers have switched to dual-booting Ubuntu 12.04 and Microsoft X.  And router will soon make the switch to OpenWRT.


Back to the BBB; the Realtek WiFi dongle that drove me mad has been solved by these guys. I've not had time to attempt their walkthroughs, but it is on the agenda.

I haven't found an Arch Linux image file, so I thought I'd cook one and post it for anyone who needs it.

 Arch Linux for the Beaglebone Black -- 6-20-13

If anyone actually downloads the image, will you confirm it works for you?

 

Off topic a bit, I'm not sure if anyone else uses iDevices; but I did run into this app that I greatly enjoy.

ServerAuditor

It'll let you tunnel (SSH) into your Linux devices from either from an iPhone or iPad X.  I've enjoyed this for two reasons: I can keep an eye on how a program is compiling on the Raspberry Pi while watching a movie with the family, and, I like the feeling of running Linux on a closed system.  I understand it's a falsity, but it's still comforting. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

I hope all are well.

 

5/20/13

Well, I think I could best describe this point in economic terms. It's the where I've realized my productive efficiency is being restricted due to the current inabilities of technology.

Figure 1

In essence, this graph shows that I cannot reach my desired productive efficiency (getting the B^3 to do the tricks I want it).  Really, I'd be happy at point C (even though point D is probably better for me and my family).  The problem is technology limitations are restricting me from getting to point C on the curve.  And it's bugging the hell out of me.  At first, I thought this was completely due to my ineptitude (which is partially true), but there is another barrier, a seemingly hidden one.  

The current Beaglebone driver technology is a hidden barrier to this productivity point.

I've read the warnings TinHead gave on treating embedded devices like computers.  But if they don't carry some extrordinary functions then what separates them from really, really fast microcontrollers?  No.  I'm pushing to have some basic PC functionality.

For instance,

  1. WiFi capability.
  2. Easy access to a graphical interface (note, I'm not stating GUI).
  3. Ability to utilize higher-level programming languages (Python, C++, etc).

Really, that's it.  A few features to allow rapid prototyping while haranessing the power of open software.

To me, if these three features are achieved, then I feel like the device is complete.  Though, I should state, I've realize these three features are no simple feat.

So, where's the Beaglebone Black?  Not there.

Some things not supported that will need to be for me to get to point C (Fig. 1).

  1. Ability to plug in cheap, low-power WiFi dongles and get them going in under an hour.  Let's be honest.  Cheap is what 90% of us will go with.  It allows us to do more with our budgets.  Therefore, if an embedded device in anyway can utilize cheap peripherals, then let's focus on making it happen. 1
  2. Better power-management on the software side. Several distros will shutdown the board during boot-up, as the peak above 500mA. The designers suggestion?  Don't plug anything in until the board is up.  Sounds ok, right?  Well, don't forget there is no hot-plugging on the USB, microSD, or HDMI.  The drivers haven't been written yet.  I'm pretty sure this is due to drivers, since I've read through the BBB datasheet and the power supply hardware seems sound.
  3. Ability to adjust the HDMI output.  At one point, I had one point, I was trying to get Arch Linux up and I couldn't get in via SSH.  So, I plugged it into the only HDMI monitor I have and tried to adjust the ssh.config file.  The problem?  I couldn't see what was commented out due to the overscan.  I dig through Google group where the board designers rest; guess what?  There is no current way to adjust the video output. 2

Therefore, my conclusion (though, my insanity is rising), is:

Figure 2

 

All this to say, my wife has taken away my Beaglebone Black until that green line moves farther out.

Yes, I am little-cat whipped, but she has said, "You're doing this to relax, not work a second job.  I'd rather you work on some other projects for awhile."  Hey, being married is the only thing keeping me sane.  Well, her and you guys (and girls, if Max didn't run them off :P).

 

 

5/16/13:

I've finally got the Black Bone near where I've got my Pi.  Here, the old Bone is running an updated Angstrom (4gb) build, using WiFi dongle, and is connected to a 1A wall-wart (connected to microUSB not barrel-jack).  When I'm off work today I'll try to complete a "Box to Wireless" walkthrough for good 'ole Angstrom.

(Question, anyone else feel like there's a Mason's conspiracy going on in the embedded world?)

I think I got near understanding TinHead's post: Don't treat an embedded device like a PC?  I dunno.

 

5/15/13

I was able to get my WiFi dongle up by adding the realtek8192 kernel.  Not sure all I did, but it works.  So, as soon as I can get some repeatable steps, I'll post a walkthrough of setting the Beaglebone Black up with PuTTY, VNC, and WiFi dongle.

5/14/13:b

Was able to get RealVNC to pick up Angstrom.  Working on getting WiFi dongle up.

5/14/13:a

I added some links to Bonescript GPIO walkthroughs (PWM, Analog, Blinking).

5/12/13:b

I've created a visual guide to mode 7 pinout (added below).

5/12/13:a

I'm pretty frustrated.  So, I'm going to back off working on the board until Tuesday when my 8gb microSD comes in.  At that point, I'll use this to reflash my eMMC boot partition and start working two different projects: Getting Arch Linux going well, and giving in and update && upgrade my Angstrom.  Both, I'll try to write up.

Jerz, or anyone else with a BBB, if you have any notes to add, if you don't mind shooting me an email I'll update this post. 

Hope everyone had an awesome mother's day.

 

5/11/13:c

May I encourage anyone who has yet to order their B^3: Wait.

There are several intense issues being worked out on a hardware-software level.  Until then, I feel you'll be as frustrated as me.  Bdk6's pun says it all: This board is being a bitch.

Some updates:

  • The package manager that came with Angstrom was actually broken for awhile, and no one bothered mentioning it to the community.  Instead, there were many posts titled "why won't opkg work?"  Now, I believe it will work if you run update && upgrade, of course, to do that you must have an SD card since it will be larger than 2gb.
  • I got Arch Linux up, briefly (it takes both eMMC and SD).
  • I lost the appropriate boot file for my eMMC.  (While attempting Arch Linux).
  • There doesn't seem to be an easy way to flash eMMC back to stock (I've got to wait for a bigger card).
  • One of the only cool things I've seen yet is a one wire(ish) pc.
  • The developers are pretty stressed out.  I don't see solid support for a bit.  And already seems like a us vs. them between the developers and open community
  • I'm tired.  Who's taking over?

 

5/11/13:b

So, I attempted getting my WiFi dongle setup (again) using Angstrom's package manager.  I found that everything I tried installing using their package manager would shoot back an error.  I read, and I believe the problem is the following must be run to catch the Angstrom stock package manager up with desired packages. 

opkg update 
opkg upgrade 

I ran them, and guess what? The eMMC does not have enough space to hold the updates.  Mother-of-a-Beagle!


Sadly, I'm using a microSD card from an old phone, which is only 2gb.  My 8gb is on order.

This, in my opinion, puts the Beaglebone Black on the same level as the Raspberry Pi; that is, it must have a SD card before you can use it (a card larger than 2gb).  If someone else finds a way to install things on the B^3 without updating it, let me know, I'll correct this critique.

 

5/11/13:a

Wrote up a guide to restore Angstrom to the eMMC.

 

5/10/13

I screwed up the eMMC partition while trying to get Arch Linux on the Beagle.

 

5/9/13: Oh, dear lord. It's true. Lack of community support kills the Beaglebone.

It took me nearly 9 hours to setup an OS on an MicroSD.  

I'll write it up tomorrow night, after some rest.

Ubuntu on Beaglebone Black:

 

5/6/13

I got my Beaglebone Black (BBB, B^3) in today.  I thought I'd share my unboxing and general thoughts.  

Please don't take this as Mr. Jones on a Sunday drive, rather, I want to provide the touch-n-feel information for every robot builder here.  In short, I don't want everybody to waste $45 if the BBB is going to turn out to be Beagle sh..., well, you get it. 

(Hey, Raspbery Pi puns could fill a library, I can't make one BBB pun.  Shesh.)

 

BBB Development Group:

https://groups.google.com/forum/?fromgroups=#!categories/beagleboard/beaglebone-black

This is a good place to find info to your specific problem.

 

Beaglebone Black Educational Material (aka, bathroom reading):

B^3 Manual: 

http://circuitco.com/support/index.php?title=BeagleBoneBlack#Hardware_Files

 

Original Beaglebone tutorials 

(these were found by JerZ, thank you sir).

http://www.youtube.com/playlist?list=PLF4A1A7E09E5E260A

Hardware interfacing:

http://www.nathandumont.com/node/250

 

Robot Support for B^3:

This was found by Vishu,

"Robotic Operating Software for BBB"

Get Vishu or MaxHirez to explain it; I'm still trying to make a light blink :(

 

RPi vs BBB discussions:

http://www.element14.com/community/thread/23575?tstart=0

http://www.raspberrypi.org/phpBB3/viewtopic.php?t=41489&p=336995

 

Beaglebone Pinout: 

JerZ was trying to explain to me there are several modes for the B^3 pins (he's run Hello World on it, and I'm sure by this moment he's run Blink),   Regardless, I thought I'd try to whip up a visual for robot building on the B^3.  

Keep in mind, these are the pin names -- you'll have to look up on page 69-73 of the reference manual to know how they might be used.  Although, almost every pin can be used, regardless of its intended function.  Their functions are defined by the software, each pin having 8 modes (0-7).

http://circuitco.com/support/index.php?title=BeagleBoneBlack#Hardware_Files

For example, if your bot is a quadrocopter: You find a real time kernel for Linux and you'd probably set the pins to MODE 7 turning the non-essential pins into GPIO (i.e., sacrificing HDMI, eMMC, etc. lines to GPIO).

JerZ also found this site:

http://blog.pignology.net/2013/05/getting-uart2-devttyo1-working-on.html

Which seems to be an excellent guide on accessing the mux'ed pins (haven't worked through it yet).

I found this robotics group that put some walkthroughs together on using the GPIOs by way of Bonescript.

  1. Blinking a Led
  2. Analog
  3. PWM

If anyone else following this, please double-check me, I'll make corrections if needed.

 

 

 

Beaglebone Black and Raspberry Pi:

These are some of the differences I've noticed between the Beaglebone Black and the Raspberry Pi.



Est. to Upgrade Rpi or BBBEst. Difficulty to Add
Real Time Clock10
$2.30Medium
Processor Speed1GHZ700MHZ
$4.76Medium
Power Switch10
$0.83Easy
Reset Switch10
$0.83Easy
Boot Switch10
$0.83Easy
GPIO6526
$8.85Medium
Flash Memory2GB0
$5.66Easy
MicroSD (smaller footprint)10
$4.35Easy
Serial Ports41 (that's accessible)
$1.50Hard
Barrel-jack and MicroUSB powerYesNo (just microUSB)
$2.95Easy
Highest Screen Resolution1280 x 10241920 x 1200
~~
Peak Power Requirement460mA475mA
~~
Supply Current to USB500mA700mA
$5.50Hard
USB Host (devices used by BBB or Rpi)12
$1.87Easy
USB Client (lets BBB or Rpi be a device)10
~~
Plastic Headers for GPIO650
$1.95Easy
USB Cable1 (Mini USB)None
$1.07Easy


The Hardware:

First impressions in a sentence: The hardware looks sound.

Several things make it stand out:

  • It uses a Micro SD card instead of a SD.  This allows for a smaller overall size without using an Adafruit Adapter.

  • It has three tactic switches: (1) power, (2), reset, and (3) a mystery switch.  I'm hoping the third is software accessible.  The built in powerswitch is a real winner.  It means you can tell this guy to keep his £15 and his closed source design.

  • It has one USB hub. This is my second greatest concern (after less community support) is having to rely on USB HUBs to connect devices.  And, yes, I'm aware an IC, breadboard, and access to hardware IO will allow custom USB deivces. But sometimes don't you want to just plug-and-go? (Yes, I'm aware I'm lazy.)

  • It has a barrel-jack instead of a Micro USB for power.  I don't know how you feel, but I'd rather have the Micro USB simply because I've got a lot of those lying about, whereas barrel-jacks, I'm not sure.  Maybe under the decaying skull?

  • It's open hardware.  The RPi claims to be for "educational purposes," although, it seems the education is restricted to the software.  Of course, this is an assumption based on not yet seeing a schematic for the Raspberry Pi silicon bits.

 

  • It's TI.  They're nice to me. (I might have a stack of sampled ICs from them...maybe.)

 

If everyone is alright with me floating this post for a bit, I'm going to try to do a first-boot video tomorrow, then, continue until I've built this BBB into a bot.

Hope you're all well :)

  • Bdk6
  • RPI: 5
  • BBB: 14
  • Maxhirez
  • RPI:1
  • BBB: 2
  • Ladvien:
  • RPI:
  • BBB:1

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

I'll try playing with the router settings.  It's a LinkSys WRT54GL.  It comes highly recommended. Though, I've not switched to OpenWrt yet.

I've thought about your bit on embedded devices not being PCs, and for the most part, I had disagreed (albeit out of ignorance).  Then I saw this, and I've decided I'm somewhere in between.  But I do know that's going too far.  Why not buy a PC?

 

I hope you're well, sir.

Linksys should be fine :/ But yeah maybe putting dd-wrt or open-wrt on it would make things better. 

I do run dd-wrt on mine so .. don't know wifi is a thing designed to make things simpler but it's not an inherently stable medium ..

Oh yeah USB power was also an issue especially with first revisions of Pi boards not sure how this applies to the BBB.

There are many power issues with the B^3, but the best I can make sense of the schematics and documentation most of the power issues center around powering the B^3 through the microUSB port.  So, I've been powering it with a 2.5 A barrel-jack.

I'll throw on my powered-hub tonight and report.

Keep hacking at this. Someone has to bring it to bot and you have the lead. I was afraid we'd lost you for a while!

I needed it.  Not sure if it was the BBB curse or what, just seems like every project I've put my hands to this last month has turned to crap.  Being ashamed and disheartened, I've not stopped by to say "Hello."

My turned-to-crap list is extensive:

1. Working breakout board for HLM-10 BLE module. (Complete but not posted)

2. Setting up a pipe with Gstreamer to pipe video from the Pi to the desktop for OpenCV to process in real time (who cares, Gstreamer's a 'B').

3. Setting up Distcc on the Pi. (85%)

4. Re-creating this pulse sensor in Eagle. (90%)

5. All the hacking at the B^3. (10% finished?)

 

 

I use an app called "The SSH Client" on my windows phone. Has an ad on it and doesn't handle tombstoning too well though :/ On my android tablet (until the 2 year old got a hold of it and destroyed the screen) I used slick 2 usb serial, a usb otg adaptor and a pl2303 usb>TTL to achieve a similar effect although there are plenty of ssh clients out there too.

Not going to lie; that last bit there was completely over my head.

I do relate to the effective hands a two-year-old, though. :)

She cracked the glass over the screen which being Corning FIT glass has the digitiser bonded directly to the back. Now the lower 3rd of the screen wont respond to user input and worse still, generates loads of ghost input, sometimesover the supposed 10 touch limit for that panel. Completely unusable, home insurance excess is higher than the cost of a new one, repair bill is higher than a cost of a new one and I cant afford to buy a new one. Joy.

 

 

Many many years ago when mainframe computers were the standard you of course needed to have access terminals around the building. One of the popular methods involved taking a CRT screen, a keyboard, wrapping it up with a chip of some sort and exposing a serial interface. Any bytes recieved on the serial line would be pushed to the screen, any keyboard input would be transmitted on serial. Chuck in a few command bytes too for backspace etc. What you could then do is connect a few serial cables between a bunch of terminals and a mainframe, the mainframe would then associate each user with a particular serial port. Instead of the mainframe directly writing to the screen when a user ran a command, it simply wrote the characters to the serial port. Instead of reading from their keyboards, it just read from the serial port. Pretty damn effective.

Nowadays it is still used with linux systems. Take a big room of rack servers. Each server likely has a serial port available already. Putty in its goodness can still emulate the old serial terminals, lwhen creating a new connectiong alongside the radio boxes for Telnet and SSH there is a serial option, in this mode any bytes read from the serial port get pushed to the display and any key input gets sent over serial much like the old serial terminals used with mainframes (and with the correct hardware it stil works with those old mainframes, or more interestingly, connect 2 modern machines by serial, open putty on both in serial mode, instant messaging). Linux running on those servers will have a daemon running which offers a similar function to the old mainframes, namely taking keyboard input from the serial line instead of directly from a USB/PS2 keyboard and printing the shell over serial. Walk around the room of rack servers with a laptop, the correct serial cable and putty and you can interface to each machine 1 by 1 instead of using SSH (for security reasons many corporations will disable SSH). Hell, if you use Putty it looks identical to SSH minus the cable your attached to.

Raspbian has a similar setup enabled by default on its GPIO UART. If you have an FTDI cable or PL2303 cable or some sort of 3.3V TTL serial cable, you can plug it into the pi and a computer, run putty and have the pi's command line printed neatly in putty as if you were using SSH. Or, I had an android app with a name somewhere along the lines of "slick 2 usb serial terminal". Many modern android devices support USB host mode with an adaptor. I ran the app, had my serial cable attached with a USB adaptor and plugged into the pi. Pi command line on tablet, no SSH required.

 

On raspbian it can cause chaos actually :P The daemon is always running. You can change a few text files on the pi to change what port is listens on to be blank to disable it. But by default its enabled on the GPIO, which then means you check out a few pi forums where someone has gone to interface something to the serial of their pi and is then wondering why there is loads of garbage data on it, the answer, the pi is trying to print its command line over the serial port your connected to so your garbage data is probably the current contents of the display.

It can probably be setup on the BBB but if possible I would just go with SSH. If you were making an outdoors robot or something and there was no LAN or internet available for SSH then serial might well be useful. When I was using it, I didnt know the IP address of my pi in order to SSH, couldnt find where to list it on my wireless router either. Now I have found out how (and set it to be static) so I use SSH instead.

 

Oh, I did see a thing where some guy got hold of one of the ancient serial terminals and got it working with the pi.

We are blinking LEDs latest since the NE555 was introduced in 1972. It took us 10 minutes to do. By 2030 we will still try to blinking LEDs, using quantum computer boards. It will take us 30 years till we figure out how the OS and interfacing of a quantum computer works. By 2090 we will have 1:1 replica of our human brains available and spend our entire life to figure out how to interface a plain old LED and program the brain to make it blink...

This is the most insightful thing I have ever read on the subject of electronics and it is true. When we finally achieve Kurzweil's Singularity, all that will be visible in the meat world will be a blinking red LED.