Tuesday, September 5, 2017

Updates: Intel Joule, LoRa, Arduino and Protocase

Blog Break

It has been a while since I posted a blog entry.  I have been knee-deep in a challenging internal project and haven't had much time to come up for air.  Today, I've got a chance to reflect on some of the things that have been happening here at Gumstix and share my perspective with you.

First, there's the EOL announcement from Intel that blindsided the x86-focused IoT community:
 the Joule, Edison, and Curie modules are soon to be no more than a footnote in the history of embedded computing.

Also, Just recently, hardware support for LoRaWAN was added to the Geppetto module library and 3 LoRa boards were released.  I got to play with that quite a bit.  It also brought with it an ATmega32U4 Geppetto module, supplanting the Curie module as our primary Arduino-compatible MCU.

Finally, I've been talking a lot with Protocase.  These guys are cool.  They provide design and production services for custom small-run enclosures, rackmounts, brackets, and consolets. I'm very excited to see what they're making for me.

Intel EOL Announcements and Me

I'll admit it, I took the Intel Joule news harder than maybe I should have.  I spent a lot of time working with it and it's carrier boards.  I was looking forward to putting the GadgetDrone in the air with the AeroCore 2 for Joule, the Caspa HD and one of the RealSense point cloud cameras we have at the office.  I liked the idea of setting up my Workstation board in a 3D-printed enclosure as a Yocto build slave.  Oh and I still hope to test the Caspa 4K's "tone-mapping (Er, I mean HDR) Video" mode.

I was also sad to see the Curie go.  Working with our Radium 96Boards IE board is a lot of fun.  It had been a while since I'd worked at the MCU level.  Bare-wire programming on an 8051 and using a dual-Arduino Uno plus ZigBee robot controller were highlights of my academic career, but I haven't done anything of the sort since.  The Radium's nice and small, IE compliant and has all the cool features of the Curie, like Bluetooth, 6-axis IMU and Neuron pattern recognition nodes.

For whatever reason, Intel decided to terminate their IoT-targeted endeavors.  Maybe it was the slow - and sometimes negative - response from the community.  It's also possible that the challenges in providing software support for their hardware were more monolithic than anticipated.  Either way, the Joule, Curie and Edison are gone.

For all of you who jumped on board with Intel's IoT hardware just over a year ago, I empathize with your plight.


If you're into IoT, you may have heard of LoRa, LoRaWAN and the LoRa Alliance.  It's a communication protocol for sub-GHz long range LPWANs, and it's sweeping Europe and North America's IIoT industry.  It works like this:  

You set up a Gateway. This is the equivalent of a WiFi router in your home, but the difference is these things can have a range of up to 15 km, depending on the quality of your antenna.

You deploy nodes.  These are your data acquisition points - temperature, presence detection, air quality, etc.  Whatever you need to know.  Put them where they need to be and hook them up to a battery, solar panel or hamster wheel (No hamsters were harmed in the writing of this blog post).  The idea is that they require very little power to run and can last anywhere from a week to several months on a single charge, or indefinitely with solar.  These tend to have a range of 2-5 km.

You monitor the data and use it as you see fit.

Gumstix released a gateway/concentrator and a transciever module in Geppetto, as well as a gateway dev board for both the Overo and the Raspberry Pi Compute Modules (Overo Conduit and Gumstix Pi Conduit boards), and a weather station sensor board (Strata Node).  They're in the store and available in both North American and European frequency bands.

Once I had my Gumstix Overo Conduit gateway and an RHF0M301 gateway/concentrator module in hand, I was impressed with how quick and easy it was to set up on thethingsnetwork.org.  The Strata node I recieved was pre-release and hadn't had the bootloader flashed yet (they come pre-flashed now), so it took a little longer, but writing a sketch and setting up a project on TTN and cayenne.mydevices.com went super-smoothly.  It just so happens that I made a bit of a quick-start video:

Arduino Stuff

Arduino is a great thing.  For artists, makers, inventors, amateur developers, and teachers, it's a great way to avoid the challenges of bare-wire programming and get physical objects doing what you want them to do.  For professionals, it's a good prototyping tool, delivering your proof of concept to the project manager in hours or days instead of weeks (or worse).

Adding the ATmega32U4 to the Geppetto library means I'll get a lot more time to play with Arduino hardware, projects, board support, and the IDE.  It also means that there will likely be more Arduino boards coming to the store and hardware modules coming to the Geppetto library.

I'm also going to have to find a quick and easy way to set up my 'arduino_pins.h' file.

Discovering Protocase

If you've seen my previous posts, chances are you've seen my low-tech enclosures, mounting brackets and test environments.  My indoor quadcopter test flight had a paracord tether tied to the rafters so that I didn't give my co-workers a hair cut.  I like to think of it as ISRU (In Situ Resource Utilization).  However, in some cases, a solid, well-made case is more than just a good idea.  When I went shopping for enclosures for my Overo Conduit board so that I could deploy it outside, my boss pointed me to protocase.com.  I think he just wanted me to stop asking for a 3D printer for the office.

These guys are awesome.  They're working on something for me and I can't wait to show it off.  They have a huge variety of custom products: L-shape, U-shape 5-sided, milled aluminum, and more!  They'll build from your CAD drawings and have free templates to help get started.  They even have their own design software for you to use.  If all else fails, they will work with you and design a fully customized enclosure for your device.

If you've got a prototype, an invention or a first-run for a kickstarter campaign, Protocase might be for you.  Just check out their page and see for yourself.

To Summarize:

I've been busy.  From grinding away at that internal project to working on LoRa and Arduino board support to designing enclosures to recovering from the Intel IoT fallout, I've hardly had enough time to catch my breath.  Now that things are settling down a bit, I am looking forward to spending more time telling you all about the cool stuff I'm working on.

Friday, July 14, 2017

AutoDoc: We Automated Product Documentation

Geppetto's AutoDoc

Gumstix has announced this week that Geppetto users can now download documentation for their designs that is generated from the current state of their project.  The addition of the AutoDoc button marks the public release of a tool we've been using internally for some time.  As one of the content curators of this application, I'm excited to share it with everyone because it's a bigger deal than it sounds.

Hardware Documentation

I'm one of those people who find it satisfying to produce usable technical documentation - to describe the operation and setup of a platform in a legible, accurate and eloquent way.  I have always felt that written tech materials either skimp on details or skimp on readability, and I strive to find a balance of both.

For hardware, one of the documents engineers find most helpful is the schematic - a block diagram of the ICs and passive elements that are interconnected in a design.  Firmware programmers, on the other hand, are less reliant on these drawings.  Instead, they need to know the bus names, addresses, GPIO indexes, and features  of the devices connected to the SoC they are programming.
Both need access to technical reference manuals, a layout overview, and connection maps.

AutoDoc cover page for one of my designs
Geppetto's purpose is to provide an avenue for board development that does not require in-house electrical engineers, providing a piece of hardware that could pass directly into a developer's hands.  In my opinion, this is the epitome of the startup use-case.

Why AutoDoc?

Because Geppetto completes the layout, BOM, and fabrication steps for your design, you can have a board in your hands really fast.  That doesn't leave a lot of time for someone like me to sit down and write out a detailed description of your design and its components, so we developed a method of generating written design specs solely from the data later used to generate your board.  We have been able to provide this kind of documentation for some time and it has helped many clients get their applications up and running fast.

With the data in these files, developers can configure drivers, write interface software, and begin testing code before the board has even shipped.  By exposing access to this resource to you before you complete your design, you don't even need to order your boards before you get started. Clicking on the AutoDoc button gives you the pin-outs and signals as they are currently saved.  I feel like it's empowering you with ownership of your design at the earliest possible time.

...And I don't have to sit there and write it all out.

Board layout diagram and a module description

Why it Works

If you don't know what LaTeX is, you should.  It is essentially a programming language for documents.  Look at this way:  When you write a document in MS Word or Google Docs, you have to struggle with the complexity of its "What You See is What You Get" (WYSIWYG) interface.  This is nice for letters, memos, and most resumees, but when it comes to technical documentation, it becomes a fight.  Also, it's not particularly portable.  When you create a document in Google and download it as a .docx file, it definitely doesn't look the same.  Margins change, images move or disappear entirely, fonts are lost or mutilated...  A mess.

Tables, captions, title pages, pagination and indenting:  All these things can be hard-coded into a document with LaTeX.  It will look right every time you compile it.  It will look right when someone else compiles it.

So if we treat documentation as source, then we can script it.  We can apply templates to it. We can make the result deterministic and incrementally improve its quality and content.  And this is what we did with AutoDoc.  There is now no temporal or financial expense in creating a useful reference manual for custom designed Geppetto boards  Enjoy.

What's Next?

I like how Geppetto automates things.  Seeing what it delivers always makes me smile.  So what else can we automate.  Lots!  What else do you need, as firmware developers?  As project managers?  As startup companies?  You can look forward to more of it from Geppetto.

Monday, April 17, 2017

Playing With the New Caspa Cameras and Intel Joule Module

They're Here!

I'm very excited.  I've been waiting for these cameras for a while and they finally came into the office last week. The Gumstix store has added two new cameras to the Caspa family and they are fantastic: 

The Caspa HD is a 5 megapixel OV5670 imaging sensor.  A two-lane MIPI CSI-2 communication bus, 1.12-micron pixel, and 60 Hz framerate at 1080p make this a fantastic camera for mobile hardware designs.

The Caspa 4K is the 13MP Sony IMX214 with an auto-focus lens, 'HDR Movie' mode and 30 FPS 4K video.  The 4-lane CSI-2 bus delivers 4K video at 30 FPS for smooth, crisp Ultra-HD streaming and recording.

The best part about these two new additions is that they are 100% compatible with the Intel Joule module out of the box, which I'm also excited to have added to our store.

EDIT: The Intel Joule's pins and BIOS is set up such that the Caspa 4K connects to the JCAM1 connector on the module and Caspa HD to JCAM2!

One Stop Joule Shop

Let's recap some of the latest additions to the Gumstix store and the Geppetto module library:

  • First, there were the boards.  A connector-saving interposer and 5 board designs to cover a wide variety of projects and functions:
  • At the same time the connector module for the Intel Joule was added to the Geppetto D2O library so customers could quickly and easily design their own Joule expansion boards.
  • A little later, the Nodana, a 96Boards Consumer Edition-compliant Joule expansion was released.
  • Recently, the Active Cooling System for Intel Joule module was also added.
  • And now, all together Gumstix has added:
Gumstix is definitely a one-stop shop for anything you might need for the Intel Joule module, INCLUDING your very own custom expansion board.

Testing, Testing

Nope, I would not tell you about anything Gumstix if I hadn't already taken it out for a spin.  I hooked up both cameras to one of the office's Joules, flashed the BIOS and updated the disk image, and ran some tests.  This is what I can report:

As advertised, these cameras work out of the box.  Both have exceptional image quality for their classes, and the AF feature of the 4K is very effective.  I recorded a little demo reel in UHD just to show you.

It was literally this easy: 
  1. Update Joule firmware and reference OS disk image (https://software.intel.com/en-us/iot/hardware/joule/downloads)
  2. Power up the board and open up a terminal window in the Joule's XFCE desktop
  3. Enter a gstreamer command to start streaming video to the desktop
    • for Caspa 4K: 
    • $ gst-launch-1.0 icamerasrc device-name=0 io-mode=3 ! video/x-raw,format=NV12,width=1920,height=1080 ! vaapisink dmabuf-alloc-tiled=true
    • for Caspa HD:
    • $ gst-launch-1.0 icamerasrc device-name=1 io-mode=3 ! video/x-raw,format=NV12,width=1920,height=1080 ! vaapisink dmabuf-alloc-tiled=true
  4. SMILE!!!
Yep, that's it

I think you'll find the price of the new cameras very appealing as well at $25 and $30 (USD).  So if you're looking for a CSI camera for your Joule project, you'll find it, and many other tools you might need, in the Gumstix store!

Wednesday, April 5, 2017

Jumpnow Technologies has tamed RTC Trickle-Charging and Yocto on DuoVero

Jumpnow Technologies, a software consulting group and a Gumstix Verified Design Consultant recently posted an pair of instructional articles to help DuoVero developers get things done.

Building Duovero Systems with Yocto shows you how to assemble the meta layers and development tools you need to generate your own custom flavor of DuoVero-compatible Linux.  Everything from build machine setup to SD card prep is succinctly covered.  Now Gumstix has its own guide at gumstix.org, and our own yocto resources in our public repositories but the guide from Jumpnow is great for getting you started with application-specific custom builds.

Duovero Real-Time Clock answers the question "How do I set up trickle-charging  on the Parlor's RTC module?"  I know, that's probably been wracking your brain for months.  TI's TWL6030 has backup battery charging capabilities, but it is disabled by default.  Jumpnow's guide provides helpful instructions and a Linux 4.4 patch that gets the RTC registers configured to do the job.

Thanks to Jumpnow for providing these resources and many other instructional articles for Gumstix COMs, Raspberry Pi, BeagleBone Black, and more.

AS A DISCLAIMER: I have to point out that charging Li-Ion and LiPo cells can be dangerous and lead to damage, fire, or physical injury.  If you enable trickle charging on any Gumstix board, you do so at your own risk.

Friday, March 31, 2017

Gumstix Says "Hello World" to Arduino® with Geppetto D2O and Intel® Curie™

In the world of the Internet of Things and embedded systems, there is a whole class amateur designers and developers who thrive in the realm rapidly iterative prototype development.  We dub these people 'Makers' and recognize them as the innovators and creative thinkers of the amateur electronics world.  The Internet is teeming with their blogs, walkthrus, git repos, and YouTube channels and we love 'em! Nowhere else will you find a Bluetooth-controlled cat-feeding rube goldberg machine made entirely of Lego, cardboard, plywood and a little microcontroller development board.  No, I haven't witnessed this project myself, but I'm about 95% sure it's out there somewhere.

One thing many of them have in common is a love of the well-known Arduino®/Genuino® platform.  One of the best things about Arduino devices is that they're so easy to program.  People of all ages - students, hobbyists, artists, engineers, and more - are taking these inexpensive devices and a desire to learn and create, and using them to - as Mr. Bill Nye (@billnye) would say - "...Change the world!"

Image: John Park (jedgarpark.wordpress.com, @jedgarpark)
In my experience, classic programming of microcontrollers, or as we call them in the biz, MCUs, involves tedious and tiresome "bare-wire" programming in low-level languages such as C and often regresses into embedded assembly language.  Not to mention each brand of chip requires a different assembler inside the compiler toolchain.  With a lot of time and some trial and error, an experienced developer can produce a working product, but the barrier to entry is so high, you rarely see hobbyists messing around with this stuff.

More and more Arduino-compatible devices are surfacing and, as they do, new applications for the platform are discovered.  There seems to be no end to the enabling power Arduino provides to its users.

Intel recently released the Arduino 101, using the new Curie module - a miniscule 32-bit MCU, with plenty of value-added features, including Bluetooth and a gyro-accelerometer.  There's also a dedicated and programmable signal processing unit and 32-bit x86 processing power.

Just in time for Arduino Day 2017, Gumstix is announcing the addition of the Arduino-compatible Intel Curie module to the Geppetto module library.  What this means is that ANYONE can custom-design their own Arduino 101 board and take that amazing maker project out of its rat's-nest of wires, cables, and breadboards and into a product!  The added bonus is that you don't have to start your sketch from scratch because If you assign your pins carefully, your code should work right away.

I already mentioned that the Gumstix Radium 96BIE - a 96 Boards IoT Edition board using the Intel Curie module - was released in a previous post, and now I can confirm that it's Arduino compatible.  Oh yes, I personally made that built-in LED blink!  I have yet to put it through its paces, but I will.

So what are you going to make with Arduino and Geppetto?  Me?  I'm still excited about quadcopters after my drone demo project, so I've put together a micro-drone control board. It's less than 5x4 cm in size and includes ADCs, PWMs, GPIOs, GPS, I2C, USB... I love acronyms, don't you? Aaanyway, no one's building it yet but the design is there for you to look at and should give you an idea of what Geppetto can help you to with the Intel Curie, Arduino and your very own board design.

Friday, March 17, 2017

Gumstix Pi Compute Boards are CM3-Ready

If you follow me on twitter (@gstixguru), you might know that I recently ordered an RPi CM3.  Lots of people have been contacting us to find out how well our Pi Compute boards support the new, faster module, so I found a bit of time to play around with it.  I'd worked with the original CM on our dev board for my GPS and RTK project a year ago with great success, and was looking forward to getting back to the Pi Compute boards.

First Steps

As always, my first step was to flash a brand new image onto the CM's eMMC.  I downloaded the latest Raspbian Jessie Lite ISO and mounted my CM on a Gumstix Pi FastFlash.  Next, I ran rpiboot, plugged the board into my USB hub and CROSSED MY FINGERS!

RPi CM3 on a FastFlash getting flashed. Pardon the clutter.
So what happened next?  Exactly what should:  the eMMC was mounted to my file system like any unpartitioned flash drive would be.  So I dd'ed the image, moved the module over to the Gumstix Pi Compute Dev Board and got ready to Pi.

First Boot

At first, all I wanted was proof of life.  That and I was sure the default wpa supplicant and network interfaces config would not get me on the WiFi network.  So I screen'ed in and powered up the board.  And yes, the console came to life, spewing forth those familiar Linux startup messages.  No kernel panic, no errors, no problem.  So far so good. Raspbian Lite was up and running.  Oh, all the things I should test: GPIOs, I2C, SPI....  BORING!

Let's start with USB (Oh, and get the WiFi up and running while we're at it; screen is not my friend and SSH makes me smile:).  The WiFi dongle goes into the port and lsusb shows a list of devices.  And there it is.

Bus 001 Device 002: ID 148f:5370 Ralink Technology, Corp. RT5370 Wireless Adapter

Beautiful.  I fix up /etc/network/interfaces and add the office WiFi network to wpa_supplicant.config and shut it down.  Time to set this asside and get back to my other tasks.

Day 2

Before ditching the USB console connection, I have to go into raspi-config and enable the SSH host, and reconfigure the daemon:

sudo rm /etc/ssh/ssh_host_*
sudo dpkg-reconfigure openssh_server
After a restart, ssh works fine.

Let's got straight up the food chain to the camera!  That's what I want to see!  I want to get that Sony IMX219 taking stills and recording videos.  I want to see those LVDS signals in action.  The CSI-2 camera connector is by far my favorite feature of the dev board.  So while I was in raspi-config, I made sure to enable the camera as well.

Here's my Frankenberry Pi camera rig, ready to go, I hope.
So I hooked it up, fired up the module and... nothing.  Did I forget something?  Of course I did! I needed the device tree overlay blob for the camera.  Oops.  OK, so I grab the binary, -- I get the one for both camera and display, just because I can -- copy it to the boot partition and restart.

And did it work?  See for yourself:
Me and my clipboard.
Edit: Here's me trying to pretend I'm not being recorded by the Pi Camera:


I also took a few minutes and got the USB-Ethernet board fired up, and yes, everything works great.
I am very happy.  Stay tuned!  I have a Raspberry Pi DSI display around here somewhere and I want to get that up and running too.

Friday, March 3, 2017

The New Active Cooling System for Intel® Joule™ Module

Having spent some time now with the  Intel® Joule™ module, I have found it to be a powerful tool in embedded and IoT technology.  But as we all know in this field, with great power comes great heat dissipation needs.  Like the CPU in your laptop, the Joule runs hot so, like the CPU in your laptop, it's a good idea to use something a bit more potent than 2 x 2 cm heatsink that comes with your module if you're going to be doing any major computation.

Well Gumstix now has an active cooling system, tailor-made for the Intel Joule module, in our online store.  You can order yours here.  To make everyone's life simpler, I'm writing a short how-to guide for installing it, and I'm giving you a preview right here.

Active Cooling System For Intel® Joule™ Module


Installation Guide

This active heat dissipation unit provides a low-profile fan and heatsink solution for the Intel® Joule™ module.

Kit Contents

KIT054 contains a plastic heatsink shroud, 4 mounting screws, a Sunon Maglev MC30100V2 DC fan with 3-pin TE AMP connector, and a custom heatsink with a thermal interface material pre-adhered.  

Maglev MC30100V2 Technical Details: 

  • Air Flow:  3.7 CFM 
  • Speed:       7500 RPM
  • Noise:        24.0 dB
  • Power:      
    • 5.0 V
    • 72 mA
    • 0.36 W

Assembly Instructions

1. Mount module to expansion board

To mount the module to the board's connector, center it over the silkscreened footprint and press down over top of the module's connectors, as indicated in the adjacent image.  There will be an audible click when mounted properly.

2. Attach Heatsink

Before attaching the heatsink, remove the plastic membrane covering the thermal compound on its underside.  This paste will accelerate the dissipation of heat by forming a thermally conductive conduit between the sink and module.  Center the heatsink over the module and mount it with the provided screws, as in the image below, with a 1.6mm Phillips screwdriver.  The screws attach directly to the expansion board, securing the module and heatsink.

3. Mount Fan to Shroud

Attach the fan to the plastic shroud by pushing it into the the central cavity of the shroud, sticker side down, from the underside.  Ensure that the fan's wires are not pinched between the fan and the shroud's mounting tabs.  Apply pressure evenly on the left and right side of the fan until it snaps into place.

4. Mount Shroud and Fan to Heatsink

To complete active cooling system's assembly, attach the shroud and fan to the heatsink.  Place the shroud on top of the heatsink so that the fan fits in the cut-away region. Ensure the fan's wires pass between the fins of the heatsink and aren't being pinched.  Apply pressure to the left and right sides of the shroud until it snaps in place.

5. Connect Wires to Power Supply or Fan Control Connector.

The active cooling system's fan requires a 5V power supply and some Geppetto boards include a fan connector.  Either connect the fan's red wire to a 5V header pin and the black wire to GND, or insert the fan's connector into the board's connector if present.  The system is now ready for operation.

If any components are missing from the package, please contact sales@gumstix.com.

Intel, the Intel logo and Intel Joule are trademarks of Intel Corporation or its subsidiaries in the U.S. and/or other countries.