Friday, July 22, 2016

More on the Areocore 2 for Dragonboard 410C



 As you could probably tell from my earlier post, I'm pretty excited for  the new Aerocore 2 board.  I just posted a short video showing off the board's features and performance that you really should watch if you have any interest in MAVs, drones or swarms.  This board's got some awesome capabilities.

Check out the video and see for yourself:



Friday, July 8, 2016

Remote Data Collection Board Chapter 2: Geppetto Design Process

So let's go through the steps it took to design my board.  Geppetto D2O is a web application so there is no download or software configuration steps, just straight to the design process.

First, click on that link or the one at the top of the page.  The app will load and you will see your workspace:

Geppetto Workspace
That column on the right hand side has all the modules that are available to add to your board.

Making the RDC Board

First, here are the main modules I'm going to use:

Processor: TI Sitara AM4378

Storage:
  • bootable uSD card reader
  • 8GB eMMC
Power: 5V barrel connector

USB:
  • USB type-A host 
  • USB micro-B console port
Network: NimbeLink Skywire LTE modem connector

Sensors: 
  • 9-axis IMU (gyro, mag, accel)
  • humidity
  • barometer
  • camera (on-board tiny caspa)
Headers:
  • 5-pin Pre-GO GPS connector 
  • 4-pin ADC
  • I2C
  • UART
  • SPI
  • 20-pin GPIO
There will definitely be other bits and pieces to add.  A reset button and power light, to name a couple.  Anyway let's get started.

Placing and Connecting Modules

A sensible place to start is the processor.  You can find the TI Sitara AM4378 module under the "Processors" tab in the right-hand column.  That section also has a couple other ARM microcontrollers and processors on there.  Just drag
Drag-n-drop your modules
and drop it onto your board the way you would an icon on your desktop.  This module is taller than the default board size but you can resize it just like any desktop window.

What I like to do next is to satisfy all of the module's dependencies before moving on to the next main module on my list.

With the connections option selected in Geppetto's toolbar, when I hover over a placed module, a list of required signals appears.  If I click on a red signal, that right-hand column is filtered to only display those modules that provide that signal.

AM4378 module's required signals
In order to supply a 5V signal to the processor module, I am going to use a 5V power multiplexer for reasons I'll explain later.

Once I place the power muxer on the board, the 5V signal on the CPU module turns yellow.  Yellow means that this signal can be provided by a module on the board.  Now when I click on it, a matching signal appears next to the power muxer, which I can click on to complete the connection.

I'll add the uSD reader, a 1.7mm 5V barrel connector and a USB micro-B connector.  I needed to add a 3.3V regulator to correctly power the uSD reader and a USB-UART interface adapter to connect to the proccessor's console.  You'll notice, connecting the USB-UART module to the processor, a little penguin head appears next to UART0.  This is the "Tux Approved" icon.  That means that if you connect to UART0, the console connection will work out of the box.  Otherwise, you might need to edit your boot sequence accordingly. 

Also I connected the muxer to the barrel connector AND the USB micro-B, again, for reasons I'll explain in a second.  As I connect the required signals between my modules, the modules turn green.  When all modules are green the board's border turns green too.
All my modules are green


Now it's time to add our LTE modem.
This one's under the "Network" tab.  Adding this module to our board is tricky in the case of our board.

I've been promising to tell you why we need a power muxer and this is it.  Nimbelink's specifications for current on their  modems is high to account for increases in power usage when signal quality is poor.  I'm sure you've noticed that when your smartphone's signal drops below two bars, your battery drains much faster.

Now this is supposed to be a REMOTE data collection device so we want it to be able to run off of solar panels and backup batteries.  So if the weather conditions are not condusive to providing enough power to the board, we want to continue collecting data. So once the reserve battery is depeleted, let's just run the processor and sensors off of the trickle of power the photovoltaic cells are providing.

To do this I'll hook the 5V signal directly to the barrel connector while everything else uses the power muxer.  The muxer will automatically switch to whichever source is providing the most power.

Another new task required for connecting the modem is choosing between multiple options.  It can communicate with the CPU either by USB or UART, so the signals pop-up has a "choose  >" item.  Hover over that and you see these two options.  In this case I want to use USB.  Overall, I need two USB host devices because I want to use a USB WiFi dongle for testing later.  That and some external sensors may require a USB connection.
Not enough USB host connections

But what's this?  The AM4378 module only provides ONE USB host?  No problem.  We'll just add an on-board 3-port USB hub. 

And that's about as difficult as placing and connecting modules can get.

I'll skip over the addition of the sensors and headers and go straight to layout.

Arranging Modules

The next step in my workflow is layout.  I like to get everything on the board first and put the puzzle together later.  That's one thing that's great about Geppetto.  Doing this in, say, Eagle is not a trivial process.  Here we can just move them arround and not worry about traces, vias, etc. This is my design now:
My arranged board


Once I clean it up, drop the eMMC I forgot about and add some mounting holes, it looks like this:


Saving and Previewing

Now that I have my design the way I want it, I don't want to lose it.  In order to save you need an account, but I'm sure you can set that up after clicking the login button on the top-right corner of the page.

When you click the save button, you'll be asked to provide a title and description.  When you click next, there will be a short wait while Geppetto thinks, then, and this is really cool, you'll see a 3D render of your board.


This design image can even be exported to an STL file, which is handy for making enclosures for it.

The final step in the Geppetto workflow is ordering, but for now, we'll stop here.  My imaginary company needs to approve the design before we commit to it.

NEXT TIME: Ordering and preparing for software development

Wednesday, July 6, 2016

Remote Data Collection Board Chapter 1: Starting in Geppetto

As the final stage of my RTK project quickly approaches (waiting for a clear day), My next project is taking shape.  I am designing my first expansion board in Geppetto, ordering it, and developing an RDC program for it.

What is Geppetto?

Geppetto is a unique online service with which you can lay out and connect together hardware modules, COMs and on-board processors on a virtual PCB.  The drag-and-drop "Green Means Go" interface make it easy to place and connect all of the features on your board.


Couple that with the fact that Gumstix will manufacture, test, and ship your board to you in three weeks, and you've got the ultimate design-to-order expansion board CAD tool.  It will cost you a $1999 setup fee for your first Geppetto order.

We use Geppetto in-house as well.  Gumstix's recent expansion boards and single-board computers (SBCs) have been designed in Geppetto and are available to the community to kickstart your designs.

Check out gumstix.com/geppetto for more info.

What I Am Doing

My Imaginary Company

Here's my use case scenario.  Let's say I run a company that monitors the potential for wildfires in a given area.  In order to do so, I must acquire a multitude of environmental data: temperature, humidity, pressure, etc.  I need a compact and self-contained device that can easily be deployed in the field.  As usual, I will also need to access these data nodes from anywhere.  What I need is a PCB that incorporates as much of this functionality on-board as possible because connecting hardware with wires is messy and unreliable.

OK so how do I go about a proof of concept?  Eventually, I'll want to go to high-volume production as my business grows, but for now I want to avoid paying engineers to make me a board.  Fortunately, Joe Tech, the intern on the firmware engineering team, heard about Geppetto from one of his profs and tells me all about it.

I check it out and start playing around.  After about 45 minutes or so,  I've got a board with most of the sensors I need, on-board storage and cell modem capabilities.  I added a few communication headers in order to add the remaining sensors for my application.

After a few tweaks and the stamp of approval from my senior engineer, I order the board.  Three weeks later, it arrives and my firmware team starts testing their software.

Execution

I'm going to go through the whole design and development process.  I'll design my board in Geppetto, get the thumbs up, order it, and start developing right away.  I'll keep you posted as the design moves through the hands of the Gumstix engineers and will develop some code to poll the sensors and transmit the data over the Internet.

In the spirit of the use case above, the board will focus on ambient environmental data, like temperature, barometric pressure, etc.

We'll be taking this board to production and selling it in the Gumstix store when it's finished so if you're in the business of collecting data remotely and need a board that will get you going, keep an eye on me and I'll let you know when it's ready.

UP NEXT: The finalized Geppetto design

P.S. I recently opened a twitter account, @gstixguru.  Follow me for updates on my projects and cool new hardware in the tech industry.