Integrated hardware and cloud solution helps developers connect their prototypes quickly

Particle is electronic hardware that can be programmed and wired into prototypes and products, allowing those devices to be monitored and controlled via the cloud.

BY JEREMY LOSAW

For the past decade, IoT products have gone from being interesting whimsy for the early adopters to must-have functionality for many types of consumer devices.

In the early days of IoT, you needed a whole team of electrical engineers and programmers to bring a connected product to life or even prototype them. As the industry has matured, so have the tools to connect and control devices through the web and with apps. Many solutions allow developers to get their prototypes connected quickly, and one of our favorites at Charlotte-based Enventys Partners is called Particle.

Basic information

Particle is an integrated hardware and cloud solution for IoT products—electronic hardware that can be programmed and wired into prototypes and products, allowing those devices to be monitored and controlled via the cloud. The company’s latest Generation 3 products include the Boron (cellular and Bluetooth), Argon (WiFi and Bluetooth) and Xenon (Bluetooth mesh), although the Xenon will be dropped by the end of 2020.

Products are built on the Feather platform, an asymmetric pin design that is reminiscent of the Arduino but smaller. Thus, they are compatible with a number of peripherals that use the same platform, such as OLED screens, relays and LED drivers.

Prices for the boards range from $19 to $80. You can also get development kits that include sensors and other goodies, available through the Particle.io webstore or other online retailers.

All Particle devices can be programmed and monitored via the Particle cloud at particle.io. A web IDE (integrated development environment) allows for the devices to be programmed in a language very close to that of Arduino.

However, unlike Arduino and other development boards that must be physically plugged into a computer to be flashed, Particle devices are updated via the cloud so you can program them remotely. They also provide a dashboard that shows all your devices and allows you to see what data are being sent back, which lets you send commands to the device to perform a desired action.

Note that although the Particle data services are free for prototyping, there are monthly fees to use it once you grow to more than 100 devices.

Setting up a Particle board is very easy, and devices can be provisioned in minutes. The devices are set up via the Particle smartphone app where you scan the QR code on the top of the board, point the device to your WiFi network and you are off and running.

You do not even have to write a line of code to interact with the device. The Particle app has a feature called “Tinker” that allows you to control all analog and digital pins through a graphical interface.

Programming, functions

Programming Particle devices with custom code is not hard and is handled through the web Particle console.

The console allows you to see all your devices. There, you can access the web IDE to create your own sketches. The code language is a modified C++, which is very similar to that of Arduino, and most Arduino sample code and libraries will compile to Particle devices.

Libraries to drive sensors and hardware are already hosted on the Particle cloud; they can be added to a sketch with just a couple of clicks. Once your code is written, it can be sent to your device anywhere in the world with just one click.

The real magic of Particle devices and the ecosystem are the Particle functions. These special features can be called in your code to allow you to monitor and control the device through the app or web console. The Particle functions are available across all Particle devices, require minimal coding, and are a great tool to extract the power of their IoT capability.

There are many Particle functions, but the four that are of primary concern for prototypers are Particle.variable, Particle.function, Particle.publish, and Particle.subscribe.

Particle.variable allows you to see the value of a variable from your code in the console. For example, if you have a temperature sensor hooked up to the device, you can send the value in a Particle.variable to see the current temperature in the console.

Particle.function allows you to perform a coded action when it is called from the console. If you have an LED hooked up to the device, you can create “on” and “off” functions to turn on and off the LED.

Particle.publish and Particle.subscribe are a related and powerful combination.

Particle.publish allows you to send sensor data or a status based on the data. For a temperature sensor, you can Particle.publish the actual sensor reading and can also send a temperature status event— where it may send the value “normal” if the temperature is in a comfortable range or “hot” if the temperature passes a defined threshold.

Particle.subscribe allows a device to monitor the Particle cloud for certain events and perform actions based on them. A device can listen to the temperature status events from above. When it sees the event “normal,” it could drive LEDs to show the color green; if the event changes to “hot,” the LEDs can be driven to red.

Practical uses

Particle devices are great for both prototyping and end-use applications. Because they can be flashed remotely, they are great to use for prototypes where they may be away from the lab or travelling to a trade show.

For example, the Riego smart plant watering system used a Particle Argon. We chose this solution because we wanted to control watering events with an app, and we knew the inventor wanted to take it to a trade show such as CES.

Our team also built end-use products on the Particle system, such as the FloSonix lice treatment device. The device uses a Particle board to send key performance metrics to the cloud to monitor device performance and health, and we can update firmware remotely so that the devices can stay out in the field.

Because of how fast and easy it is to get Particle products up and running, I have also used them to build some devices for fun at home.

My latest Particle application is a water pressure monitoring system for my greenhouse. I have an Argon in my greenhouse, hooked up to a pressure sensor in my misting system that cools the greenhouse.

I Particle.publish the data and have another Argon on my desk. It  displays the pressure reading on an OLED display and changes the colors on an addressable LED ring from green (not watering) to blue (misting in progress). This way, I can make sure the cooling system is working properly without having to log in to the Particle console or walk out to the greenhouse during the hot summer months.