One of the benefits of working at the the Intel Experience Store was an excuse to play with an Intel Galileo Board. As a happy little AVR based Arduino programmer, the Galileo is not something I would have checked out otherwise. I’m glad to of had the opportunity because this project opened my eyes to the power of combining Python with low level I/O in way that I knew about but hadn’t really been attending to.
Starting from an article on SparkFun I combined pagermotors, springs, paper and a VCR case into a derivative of Tom Igoe’s classic email clock. In this example the pager motor bees shake with more and more agitation the more unread email in the inbox. The code I used is already in a GitHub repository called BeeMail. I’ll be adding the schematics there as I finish the write up. The project requires motor circuitry, wifi, an Arduino sketch and Python all to work together.
About the Galileo Board
The Galileo board is a welcome freshman effort for Intel into the EZ-Maker-Friendly-Protoboard community. The Galileo is Arduino Certified, but not the right choice for a first dip into the Arduino ecosystem. Those already attached to working with the powerful x86 architecture or experienced Arduino users interested in a change will be the most comfortable with Intel’s design decisions.
The best tutorials to date
- Arduino.cc: Getting Started
- Spark Fun: Galileo Getting Started Guide and Unread Email Counter
- More Wireless Configuration by Sergey Kiselev
- NEW! MAKE magazine: Create a Display to Track the Days Until MAKE hits Newsstands
Traps and Pitfalls
I’ve been struck by the fact that many things listed as optional in the official documentation simply aren’t that optional. Many of these represent simple fixes that I suspect Intel will change in the next revisions as Intel seems to be soliciting feedback from all the right people. In the mean time, here are my fair warnings of things to have before getting started to minimize frustration down the line.
- You will have to have two seperate Arduino IDE’s on your machine. The Galileo’s must be called something short without spaces. For example, don’t call is “Arduino Galileo” call it “ArduiG”
- A properly formatted SD card is not “optional.” The Galileo board does not remember a sketch once you unplug it without one.
- Access to a Windows machine or Windows VM will be necessary or…
- While it is technically possible to talk to the Linux part of the Galileo with an ethernet cable, that is not a reliable choice. The connection appears to require an Arduino script explicitly enabling that feature to be running. You will want to get:
- A 3.5 mini-jack to DB9 Female cable (that mini jack is NOT for speakers Raspberry Pi users… )
- A gender changer for the DB9
- Serial to USB Converter (This one by Prolific did not work on MacOS with the Prolific provided driver, but did with a third party driver apparently better tuned to work at high speeds)
- If you do any serial communication with the board from within a sketch there needs to be a 3 to 5 second delay in the setup() loop or there will be serious trouble loading new programs onto the board.
- To use the wifi mini-pci:
- A wifi card like Intel Centrino® Advanced-N 6205 or the N135 work with the firmware of of the box but Sergey Kiselev shows how to update firmware for others like the Intel Centrino® Advanced-N 6235 802.11n. There is more information in the forums.
- An adapter so the card will fit
- Stand-offs and Screws so you aren’t scrapping the card against the ground since the mini-PCI socket lives on the bottom of the board.
- Not necessary, but handy: a protoshield with mini-breadboard. If not those than the standard a breadboard will do and of course any other components need for your given project.
- UPDATE: Forgot to add that I/O pins are pulled HIGH between embedded Linux startup and sketch start up so use negative logic as much as possible.
This project required me to use a lot of accumulated troubleshooting skills. Over the next week or so I’ll be going through not just what someone else can do that will work, but how I figured out what to do.
- Part 1
- This overview
- Part 2
- From Zero to Blink.
- Creating an SD card image and getting a sketch to persist on the Galileo
- UPDATE: Blink on an external LED
- Part 3
- Creating the bees and getting them to work on an Arduino UNO
- Part 4
- Setting up Wifi (very easy, library examples worked immediately)
- Getting the SD card read & write to work (a missing libraries/symlink problem)
- Part 5
- Serial Communication to the Linux Core
- Troubleshooting Python on the Galileo
- Part 6
- Revising the example String to Int code (lack of Null Termination problems)
- Moving the motors over to the Galileo