Creative Commons images are CC BY-NC-SA 3.0


SparkFun Block for Intel® Edison - UART
project on
hackster.io project

Arduino - Motor PID Speed Control
by whitebank

Description: The Intel® Edison is an ultra small computing platform that will change the way you look at embedded electronics. Each Edison is packed with a huge amount of tech goodies into a tiny package while still providing the same robust strength of your go-to single board computer. Powered by the Intel® Atom™ SoC dual-core CPU and including an integrated WiFi, Bluetooth LE, and a 70-pin connector to attach a veritable slew of shield-like “Blocks” which can be stacked on top of each other. It’s no wonder how this little guy is lowering the barrier of entry on the world of electronics!

The Console UART Block delivers power to the Intel® Edison while providing a simple console interface via a FTDI cable. This is the most minimal solution to get started using the Intel® Edison. This board can supply 4V and up to 500mA of current to power the Edison passed through it’s VSYS line and any other expansion boards you may add to your stack. This is a great board for low power applications that won’t require constant console access. By removing the FTDI USB-UART from the board, current consumption is minimal. When the FTDI cable is not inserted, it will be necessary to provide external power to the board.

If you are looking to add a little more stability to your Intel® Edison stack, check out this Hardware Pack. It will provide you with increased mechanical strength for stacking Blocks on your Edison!

Note: The 3.3V FTDI breakout will NOT work with this block, but the 5V version will.

Documents:

Recommended Products

Customer Comments

  • Hello,

    Any plan for a RS485 block ?

  • To anyone having issues with 40MHz oscillations, make sure to check your probe capacitance when you’re checking things on your scope. The TXB0104 level shifter really struggles with capacitive loads ~70pF which is typical for a 1X probe. Try with a 10X probe and see if you’re still getting oscillations.

    Wish I’d realised this soooo much earlier… >:(

  • Does UART1 communication works now if power source is attached to this block too?

  • Will this power a Venus GPS (GPS-11058) if also connected to a battery block? Or is the power only in?

    • I was thinking much the same thing, except I was looking at a GP-635T.

      I’m guessing that it will work, as long as the VSYS line is getting enough power from elsewhere.

  • I bought one of these about a week ago since it was in stock and the Base block was not. Since it does not have an OTG connection, I spent a little time searching for a way to both update the Edison Yocto version and load Arduino sketches over wifi.

    I have compiled a few of the things I learned here as a bit of a one stop shop for using the UART block and wifi to fully exercise the Edison. I apologize if this is all obvious to a lot of you, but hopefully some will find it helpful. This is all on OSX, and will work for Linux but probably not Windows.

    To work with the Edison you really need to first update the Yocto distribution that ships with the device. It has a few issues such as the 5 second timeout bug that make it difficult to work with. There are also a few of the commands you will want to use that are not supported in the shipping version. But first, it’s necessary to get the wifi working.

    Run the Edison setup program.

    configure_edison –setup

    You will need to get the wifi working and set up a root password in order to use ssh over wifi. I was able to use the above setup procedure to get the Edison connected to my wifi, but there is a lot of info on the Intel Edison forum on different ways to approach this.

    Once you’re on wifi, there are a couple of ways to update Yocto over wifi. The way Intel recommends seems pretty safe, but it’s a little unclear of it is supported with the “as shipped” version of Yocto. The method I used is here - see wbp’s post #19 towards the bottom of the page. I was able to make it work, but be aware that doing this incorrectly can brick your Edison.

    Once Yocto is updated you can actually use the Edison. I initially followed the SparkFun tutorial for programming with Eclipse and had good results. However, the Arduino interface was the one I really wanted to get working. This required a little work to get away from the OTG port and onto wifi. Here are the steps I used (Again, I’m using OSX).

    First download the Arduino software for Edison and your development platform. Ignore the fact that the Arduino/Intel site directs you to Galileo software - this is what you need for the Edison too.

    Start up the Arduino package for Edison and open preferences. Under preferences, you’ll find an option check box that says “Show verbose output during upload” that you will want to enable. Close preferences and compile and run an example sketch (blink will do). The sketch should fail uploading since you don’t have a USB cable connected to the OTG port. Look in the message window along the bottom of the Arduino development environment and scroll up until you find the line containing clupload_osx.sh (for Mac - look for clupload_linux.sh for linux and clupload_win.sh for windows). Note the file path. You will need to modify this file in order to automatically upload to the Edison over wifi.

    Make a backup copy of the clupload_osx.sh file (cp clupload_osx.sh clupload_osx.sh.original - or something). Use a programming editor or whatever method you are comfortable with to make a file containing:

    #!/bin/sh

    set -e

    HOST=192.168.0.70 # CHANGE THIS TO YOUR DEVICE’S IP

    SKETCH=/sketch/sketch.elf

    OLD_SKETCH=${SKETCH}.old

    ssh root@$HOST “mv -f $SKETCH $OLD_SKETCH”

    scp $2 root@$HOST:$SKETCH

    #Give the host time to stop the process and wait for download

    sleep 1

    ssh root@$HOST “chmod 755 /sketch/sketch.elf”

    ssh root@$HOST “systemctl restart clloader”

    echo “Success”

    exit 0

    This is a shell script I modified from Labby’s site. You can use his or mine - I modified his for a couple of reasons I list below.

    I can’t remember if the /sketch directory originally contained a sketch.elf file or not. Verify if the file is there with ls /sketch

    If /sketch/sketch.elf does not exist, the script above will fail. An easy way around this is to create a dummy file as a placeholder for the script (assuming /sketch/sketch.elf does not exist and the script fails). To create the dummy file:

    cp /dev/tty /sketch/sketch.elf

    <hit return>

    <hit control c to exit and save>

    ls /sketch (to verify the file was created in the correct place)

    It is convenient (if not necessary) to set up a passwordless login for ssh to make all of this work correctly. Labby also gives a good description on how to do this for Linux and it works the same for OSX. I don’t speak Windows enough to know what is required there, but I found a few search results that seem to show how to do it.

    If you have modified the clupload_osx.sh file in the original path discovered through the Arduino Programing environment, and your passwordless ssh is correctly set up, you should be able to compile and download a program to the Eddison wirelessly (quit and restart the Arduino software after modifying the clupload_osx.sh file).

    You can verify the Arduino software is uploading correctly by monitoring the Edison console and looking into the /sketch directory on the Edison. If you have successfully uploaded a new sketch you can see the timestamp on the /sketch/sketch.elf file (on the Edison) reflect the current date. Compare it to the date obtained by running date on the Edison.

    A potential hitch here… The Edison Yocto /root partition will probably be at nearly 100% capacity ( verify by running df on the Edison console if you wish). This causes the Arduino software (and our new script) all kinds of issues since the Edison will report that it is out of space about every other compile.

    One way around this is to repartition the Edison to get more room on /root. Probably the best long term solution (but I haven’t done so yet…). Another way is to move the sketches to the home directory and place a symbolic link named /sketch/sketch.elf in the original location. This location is where the Arduino emulation for the Edison expects the sketch.elf to be located, and it is fairly simple to fake it out and get ourselves some available disk space.

    To do this, I created a sketch directory off of /home/root. On the Edison:

    mkdir /home/root/sketch

    Then (because of what the shell script expects), I copied /sketch/sketch.elf to /home/root/sketch/sketch.elf

    cp /sketch/sketch.elf /home/root/sketch/sketch.elf

    and removed the sketch files from /sketch

    rm /sketch/sketch.elf

    rm /sketch/sketch.elf.old

    (the second file may not exist, but it won’t hurt to enter the command…). Next, I created a symbolic link to the /home/root/sketch/sketch file like this:

    ln -s /home/root/sketch/sketch.elf /sketch/sketch.elf

    Which should show up as a symbolic link (ls -al /sketch).

    Finally, if you have done this you need to change the clupload_osx.sh file line:

    SKETCH=/sketch/sketch.elf

    to:

    SKETCH=/home/root/sketch/sketch.elf

    which should make the Arduino software update the files in the /home/root/sketch directory and leave the symbolic link /sketch/sketch.elf alone.

    Hope this helps. Apologies in advance to those who find all of this obvious! Please correct any mistakes in the above as you discover them. Thanks

  • I can confirm that the block can properly power a stack but the UART does not work as explained in the review (high frequency oscillations messes up the signal). Has there been any update on this?

  • The TXB0104 used for level shifting will oscillate at ~40MHz when connected to longer wire (1m cable of FTDI converter is enough). Placing series resistors before cable seems to solve this (I used ~2k2 for TXO and 220R for RXI, 3.3V FTDI cable then works).

  • I bought 3 of these a while ago and have not been able to use any of them. The console just shows a bunch of garbage. I’m pretty sure I’m doing everything correctly. Is this a known issue? Is there a workaround? I really need to use these.

  • Does this breakout UART_1 also? Can it be used to hook up a serial device like xbee? if not, which block can do that cheaply? Thanks

    • The new version has a switch that selects RX/TX between UART1 and UART2. Pictures are coming soon. Check the Github and Schematics for more info.

    • I’m also looking to work with two UARTs concurrently (UART1 and UART2) for TTL serial devices (gps and modem) I think this means we will need to disable the kernel console redirection in Linux, but I don’t see any Sparkfun boards that break these out (rx, tx, rts/cts for uart1 and uart2) I would love to have a solution there.

  • This block would make a lot more sense if it included a 5.5 mm barrel socket for power from a 5v brick; even better a provision to alternatively add a LiIon for power with charging from either the USB or the 5.5 mm socket. Maybe that would be escalating the scope too much.

    • Before somebody else does it for me, let me freely offer that my comment was stupid. The connector I mentioned would be way too gigantic. Would a micro USB fit on the power pads (for power only of course)? I’m afraid it would tear off too easily though.

Customer Reviews

3 out of 5

Based on 2 ratings:

Currently viewing all customer reviews.

7 of 7 found this helpful:

UART Functionality works. Power supply has problems...

The UART functionality does what it is supposed to do. Unfortunately, if you power the Edison stack from this board, the serial data is corrupted and rendered worthless. If you power the Edison from some other breakout board, such as the Base board, then the UART board works great. If you are only using the UART board as your sole breakout board, or your sole means of providing power, rework your design. I’ve tried two different boards and both exhibit the same problem. Scope traces show high frequency noise at amplitudes near the signal voltage. I’ve had a phone call with Sparkfun technical support, which only advised me to log the issue via email. I logged the issue via email, and despite numerous inquiries, this problem goes unresolved. I know Sparkfun is a tiny company, but I had higher expectations than this. I thought they would test their board design to make sure it worked, but it doesn’t seem to have happened in this case.

Hi, I’m sorry for the issues. I have reported your findings to our Engineering team. Hopefully we can make a fix that corrects this issue.

1 of 1 found this helpful:

Level Shifter Let Down

The use of the TXB0104 level shifter was a mistake in my opinion. Because it’s a bi-directional shifter you have to be very careful with the loads you can put on the data pins, too much capacitance or too long a cable and the output will just oscillate at ~40MHz. Given it’s just a UART this could have been designed with a one-way level shifter and been much more reliable.

I also needed this to interface to a 3.3V device, which can be accomplished by hacking the board up a little. It would be nice if there was a jumper/switch to choose the external interface voltage.

After a few days of fiddling it’s working as expected.

Related Tutorials

Programming the Intel® Edison: Beyond the Arduino IDE

January 7, 2015

Intel's Edison module goes beyond being just another Arduino clone. Check this tutorial for advice on how to get the most out of your Edison by writing code in C++!

General Guide to SparkFun Blocks for Intel® Edison

January 5, 2015

A general guide for using SparkFun Blocks for Intel® Edison in your next project!

Loading Debian (Ubilinux) on the Edison

December 5, 2014

How to load a Debian distribution (specifically Ubilinux) onto the Edison.

Edison Getting Started Guide

December 5, 2014

An introduction to the Intel® Edison. Then a quick walk through on interacting with the console, connecting to WiFi, and doing...stuff.

Installing libmraa on Ubilinux for Edison

January 5, 2015

libmraa is a tool kit for interacting with various Intel single board computers.