Stream Data, Signal, and Trigger Actions with Arduino Yún

2 min readPubNub Staff on Jan 7, 2015
Try PubNub Today

Free up to 1MM monthly messages. No credit card required.

Subscribe to our newsletter

By submitting this form, you are agreeing to our Terms and Conditions and Privacy Policy.

A walkthrough on connecting an Arduino Yun to the Internet for remote signaling and trigger, as well as data streaming for IoT actions.

In our series on building an Arduino-controlled smart home with PubNub, I’ve gone into more detail on many of the roadblocks I faced while constructing the home automation model. In a previous blog post, I explained how I was able to connect my Arduino Uno and Ethernet Shield to the PubNub Data Stream Network.

Near completion, I decided to make his house wireless and replaced the Arduino Uno with the Arduino Yun. In addition to a WiFi chip, Yun has a second processor that runs Linux. This blog post walks through how to get Arduino Yun up and running on the PubNub Data Stream Network.

The Arduino Yun is Arduino’s flagship IoT chip. It includes onboard WiFi, USB power, and two processors; one of which is used to run Linux. The Arduino Yun is a microcontroller board based on the ATmega32u4 (datasheet) and the Atheros AR9331.

The Atheros processor supports a Linux distribution based on OpenWrt named OpenWrt-Yun. The board has built-in Ethernet and WiFi support, a USB-A port, micro-SD card slot, 20 digital input/output pins (of which 7 can be used as PWM outputs and 12 as analog inputs), a 16 MHz crystal oscillator, a micro USB connection, an ICSP header, and a 3 reset buttons. arduino yun Unfortunately we didn’t have a PubNub library specifically for the Yun. So I wrote one.

Writing the Arduino Yun PubNub Client

We like to say “if it can connect to the Internet, it can connect to PubNub.” The fact is that basic publish, subscribe, and history calls with PubNub can all be completed with our HTTP REST Push API.

The full Arduino Yun client code is available here.

The following is a short snippet demonstrating how to use the HttpClient. We’ll also have a full featured library available as part of the Arduino PubNub SDK soon.

The Arduino starts by making a request to the PubNub subscribe endpoint (on the linux processor). When data is received, it’s streamed to the Arduino sketch.

I opened the PubNub developer console and started sending messages like this:

My sketch receives the data and waits for the termination character “\0”. Then it strips the JSON response out of the callback by looking for “(” and “)”. Next, it’s sent to the ArdinoJson library. This was the hardest part to figure out by far. Arduino does not have the same javascript types like a hash table, so they are re-implemented just for this library.

Once I figured out how to parse the JSON payloads, I simply matched keys to functions and values to parameters.

Now I was able to trigger functions in Arduino through the PubNub developer console!

I used jQuery mobile and the PubNub JavaScript library to create a simple and responsive control panel. That full code is available here.

The PubNub javascript is really simple:

That’s it! Below are the other Arduino-controlled smart home resources:

More from PubNub

Can Empathy Exist in the Metaverse
News May 16, 20221 min read

Can Empathy Exist in the Metaverse

A roundtable discussion led by PubNub’s COO, Casey Clegg, exploring the topics of what it means to be human in a virtual world.

PubNub Staff

PubNub Staff

How to Advance Telehealth and Virtual Care Technologies
News May 2, 20221 min read

How to Advance Telehealth and Virtual Care Technologies

Dr. Joe Kvedar, Chair of the Board for the American Telemedicine Association, joins our COO, Casey Clegg, to discuss why...

PubNub Staff

PubNub Staff

Another Step Towards Data Security: ISO-27001 Implementation
BuildMay 2, 20221 min read

Another Step Towards Data Security: ISO-27001 Implementation

Today, we are glad to announce that we are currently in the process of implementing ISO-27001 security standards.

PubNub Staff

PubNub Staff