Introducing IoT with Particle's Photon and Electron

Ajith Vasudevan

September 2016

In this article by Rashid Khan, Kajari Ghoshdastidar, and Ajith Vasudevan, authors of the book Learning IoT with Particle Photon and Electron, we will have a brief walkthrough of the evolution of Internet of Things (IoT) followed by an overview of the basics of IoT-related software and hardware, which every IoT enthusiast should know. The discussion then moves on to introduce Particle, an IoT company (https://www.particle.io/), followed by a description of Particle's popular IoT products—Core, Photon and Electron.

This article will cover following topics:

  • Evolution of IoT
  • Hardware and software in the IoT ecosystem
  • Market survey of IoT development boards and cloud services
  • What is Particle?
  • Summary

(For more resources related to this topic, see here.)

Evolution of IoT

It is not very clear exactly who coined the term IoT. Kevin Ashton (https://en.wikipedia.org/wiki/Kevin_Ashton) supposedly coined the phrase IoT while working for Procter & Gamble (P&G) in 1999. Kevin was then working on an RFID (https://en.wikipedia.org/wiki/Radio-frequency_identification) initiative by P&G, and proposed taking the system online to the Internet.

In 2005, UN's International Telecommunications Union (ITU) - http://www.itu.int/, published its first report on IoT. In 2008, the global non-profit organization IPSO Alliance (http://www.ipso-alliance.org/) was launched to serve the various communities seeking to establish IoT by providing coordinated marketing efforts available to the general public. IPSO currently has more than 50 member companies including Google, Cisco, Intel, Texas Instruments, Bosch, Atmel. In 2012, IoT Consortium (IoTC) - http://iofthings.org/, was founded to educate technology firms, retailers, insurance companies, marketers, media companies, and the wider business community about the value of IoT. IoTC has more than 60 member companies in the area of hardware, software, and analytics, a few of them being Logitech, Node, and SigFox.

A 2014 Forbes article by Gil Press mentions:

"Gartner estimates that IoT product and service suppliers will generate incremental revenue exceeding $300 billion in 2020. IDC forecasts that the worldwide market for IoT solutions will grow from $1.9 trillion in 2013 to $7.1 trillion in 2020".

Why IoT has become a household word now

IoT has, in recent years, become quite popular and an everyday phenomenon primarily due to IoT-related hardware, software, accessories, sensors, and the Internet connection becoming very affordable and user friendly. An explosion in the availability of free Integrated Development Environments (IDEs) and Software Development Kits (SDKs) have made programming and deployment of IoT really simple and easy. Thus, IoT enthusiasts range from school kids, hobbyists, and non-programmers to embedded software engineers specialized in this area.

Hardware and software in the IoT ecosystem

Advancement in technology and affordability has made acquisition and usage of IoT devices very simple. However, in order to decide which IoT package (boards, accessories, sensors, software) to choose for a particular application, and actually building projects, it is essential to have knowledge of IoT terminology, hardware, and software. In this section, we will introduce the reader to the essential terminology used when dealing with IoT. This will also help the reader understand and appreciate the features of the Particle IoT products—Core, Photon, and Electron.

Essential terminology

Let's learn about a few terms that we're going to be hearing all throughout this article, and whenever we work with IoT hardware and software components:

Term

Definition

IoT Development Board

A development board is essentially a programmable circuit board which wraps an IoT device. The IoT device's processor/microcontroller, memory, communications ports, input-output pins, sensors, Wi-Fi module, and so on are exposed by the development board, in a convenient way, to the user. A board manufacturer usually provides an IDE with it to write and deploy code to the physical board. A development board with the IDE enables rapid prototyping of IoT projects.

Microcontroller

A microcontroller is a highly compact single Integrated Circuit (IC) with a processor and limited Random Access Memory (RAM) and Read Only Memory (ROM) embedded in it with programmable peripherals. Microcontrollers are "computer on a single chip". Because of its limited memory and architecture constraints, usually, only one specific program is deployable and runnable on a microcontroller at one time. Preprogrammed microcontrollers are used in electrical machinery such as washing machines, dish-washers, microwave, and so on.

Microprocessor

A microprocessor is a single integrated chip which in itself is a Central Processing Unit (CPU). The microprocessor has separate RAM and ROM modules, and digital inputs and outputs. The Microprocessor CPU is usually more powerful than that of a microcontroller, and there is provision to add larger amounts of memory externally. This makes microprocessors suitable for general-purpose programming, and are used in desktop computers, Laptops, and the like.

Flash Memory

Flash memory is an electronic non-volatile storage device, for example, USB pen-drives, memory cards, and so on. Data in Flash memory can be erased and rewritten. Unlike RAM, access speed is lower for flash memories, and also unlike RAM, the data stored in flash memory is not erased when power is switched off. Flash memories are generally used as reusable extra storage.

RTOS

RTOS as the name suggests, RTOS responds to events in real time. This means, as soon as an event occurs, a response is guaranteed within an acceptable and calculable amount of time. RTOS can be hard, firm, or soft depending on the amount of flexibility allowed in missing a task deadline. RTOS is essential in embedded systems, where real-time response is necessary.

M2M

Machine-to-Machine (M2M) communication encompasses communication between two or more machines (devices, computers, sensors, and so on) over a network (wireless/wired). Basically, a variant of IoT, where things are machines.

Cloud Technology

Cloud refers to computing resources available for use over a network (usually, the Internet). An end user can use such a resource on demand without having to install anything more than a lightweight client in the local machine. The major resources relevant to IoT include data storage, data analytics, data streaming, and communication with other devices.

mBaaS

Mobile Backend as a Service (mBaaS) is a infrastructure that provides cloud storage, data streaming, push notifications, and other related services for mobile application developers (web, native, IoT app development). The services are exposed via web-based APIs. BaaS is usually provided as a pay-per-use service.

GPIO

General Purpose Input Output (GPIO), these are electrical terminals or 'pins' exposed from ICs and IoT devices/boards that can be used to either send a signal to the device from the outside (input mode), or get a signal out from the inside of the device (output mode). Input or Output mode can be configured by the user at runtime.

Module

Unit of electronics, sometimes a single IC and at other times a group of components that may include ICs, providing a logical function to the device/board. For example, a Wi-Fi module provides Wi-Fi functionality to a board. Other examples are Bluetooth, Ethernet, USB, and so on,

Port

An electrical or Radio-Frequency-based interface available on a board through which external components can communicate with the board. For example, HDMI, USB, Ethernet, 3.5mm jack, UART (https://en.wikipedia.org/wiki/Universal_asynchronous_receiver/transmitter).

Table 1: Terminology

Network Protocols

Connected smart devices need to communicate with each other, and exchange large volumes of messages between themselves and the cloud. To ensure near real-time response, smart bandwidth usage, and energy savings on the resource-constrained IoT devices, new protocols have been added to the traditional seven-layer network model (OSI model: https://en.wikipedia.org/wiki/OSI_model). The following table shows the major OSI network protocols and the IoT network protocols suitable for various smart, connected devices.

Layer

Examples of Traditional Network Protocols (OSI)

Examples of IoT Network Protocols

Application,

Presentation,

Session

HTTP, FTP, SMTP, TLS, RPC, JSON, CSS, GIF, XML

CoAP, MQTT, DDS, M2M service layer

Transport

TCP, UDP

UDP, DTLS

Network

ICMP, IPsec, IPv4, IPv6

6LoWPAN, RPL (Zigbee)

Data Link

IEEE 802.2, L2TP, LLDP, MAC, PPP

IEEE 802.15.4, BLE4.0, RFID, NFC, Cellular

Physical

DSL, Ethernet physical layer, RS-232, any physical transmission medium (for example, Cables)

Wires, Sensor drivers to read from sensor devices

Table 2: Layerwise Network Protocols – OSI vs IoT

Market survey of IoT development boards and cloud services

Here we list some of the most popular IoT boards and cloud services, available in the market at the time of writing this article, with some of their important specifications and features. These tables should help the reader get an idea as to where Particle products fit in on the IoT map.

IoT development boards

The next table lists the main specifications of popular IoT boards. These specs are the basic details one has to consider while selecting a board—its specifications in terms of processor and speed, memory, available communication modules and ports, and IO Pins. Also, while selecting a board, one has to analyze and match the project's requirements with the available boards, so that the right board is selected for the application in terms of fitment and performance.

Board Name

Microcontroller

Microprocessor

Memory

Modules

Ports

IO Pins

Raspberry Pi 1/2/3

Broadcom SoC BCM2835/6/7

Single/Quad-core ARM 11/Cortex-A7/A53 CPU, VideoCore IV GPU

256MB/512MB/1 GB RAM

Ethernet, Wi-Fi, Serial UART, I2C

HDMI, USB, Ethernet (RJ45), GPIO

26/40/40

Arduino Mini

ATmega328

NA

32 KB Flash

2 KB SRAM

NA

NA

14

Arduino Yun

ATmega32u4

Atheros AR9331

32 KB Flash

2.5 KB SRAM,

16 MB Flash, 64 MB RAM

Wi-Fi, Ethernet

USB, Ethernet (RJ45)

20

Intel Edison

MCU at 100 MHz ( Intel Atom Soc)

Dual-core CPU at 500 MHz (Intel Atom Soc)

4 GB Flash, 1 GB RAM

Wi-Fi, Bluetooth 4.0

USB, UART, SPI, GPIO

28

Libelium Waspmote

ATmega1281

NA

128 KB Flash, 8 KB SRAM

Temp, Humidity, Light Sensors, (optional) GPS

UART, I2C, SPI, USB

19

NodeMCU ESP8266

ESP 8266 SoC

ESP-12 module

4 MB Flash

Wi-Fi,

Serial UART,

ADC

UART, GPIO, SPI

14

BeagleBone Black

Sitara SoC AM3358/9

AM335x 1 GHz ARM Cortex-A8

512 MB RAM, 2/4 GB flash storage

Ethernet, Serial UART, ADC, I2C

Ethernet (RJ45), HDMI, USB, GPIO

24

CubieBoard

ARM Cortex-A8 CPU

AllWinner A10 SoC

512 MB/ 1 GB RAM, 4 GB flash memory

Ethernet, Serial UART, ADC, I2C

Ethernet (RJ45) , USB, SATA

96

Table 3: IoT development Boards

Cloud services (PaaS, BaaS, M2M)

It is important to know what kind of cloud service we will be dealing with, and whether our board has open standards and allows us to use our own personal service easily, or whether the board-provided service needs some manipulation to use in the current project.

Cloud Service Name

Salient Features

Platform as a Service (PaaS) Infrastructure (VM, Storage), Big Data Analytics, Application Services, Deployment and Management, Mobile and Device Services

mBaaS

ThingWorx (https://www.thingworx.com/)

M2M offering from PTC (http://www.ptc.com/)

Table 4: Cloud services

What is Particle?

Particle (https://www.particle.io), formerly known as Spark, is a company started by Zach Supalla. It provides hardware and software for development of IoT projects.

Journey of Particle

The first company started by Zach Supalla in 2011 was known as Hex Goods, and it sold designer products online. In early 2012, Hex Goods was shut down, and Zach started a second company called Switch Devices, which dealt with connected lighting. Switch Devices was then renamed Spark Devices. The name Spark was used as it provided a double meaning to the founders. Spark stood for spark of light and also sparks of inspiration.

In early 2013, Spark transformed to an IoT platform for engineers and developers. The name Spark also did not last long as the founders felt Spark created confusion for a lot of users. There exist 681 live trademarks that include the word Spark. Apart from the number of trademarks, there are some other great, unrelated software and hardware products employing the name Spark in them—some of them being Apache Spark, SparkFun, and Spark NZ. It has been reported that a lot of people logged on to Zach's #spark IRC channel and asked doubts about big data.

The name Particle was finally chosen, as it gave plenty of room to grow in terms of products and offerings. Particle, in scientific terms, is a single discreet unit within a larger system. The name draws a parallel with the mission of Particle—the company which provides development kits and devices as single units used to build the greater whole of IoT.

We'll cover Particle IoT products in depth, and see how and when they perform better than other IoT development boards.

Why Particle?

Today, the most recurring problem with all existing IoT prototyping boards is that of connectivity. In order to connect the existing boards to the Internet, additional components such as Wi-Fi or GSM modules have to be attached in the development environment as well as in production. Attaching external devices for communication is cumbersome, and adds another point of failure with frequent issues such as Internet unavailability, intermittent network connectivity, and so on. This leads to a bad experience for the developer.

Developers have to frequently (re)write code, deploy it onto the device(s), test, debug, fix any bugs, rinse, and repeat. The problem with code deployment with existing boards is that the boards need to be connected to a computer, which means for even the smallest code update, the device/board needs to be connected to the developer's computer, either by moving the computer to the device (which may be located at a not-so-easily accessible location) or vice versa. This poses a problem when the device, after an update at the developer's site, has to be placed back in its original production environment for testing and debugging the new changes. This means large turnaround times to load new code into production.

Particle provides products that have built-in Wi-Fi modules or GSM modules, which help in easy connection to a network or the internet, with support for OTA (Over-The-Air) code deployment. This removes the hassle of adding extra modules on the prototyping boards for connectivity, and it also allows for pushing code or testing/debugging on site. As previously mentioned, one of the important features which differentiates Particle products from other devices is the Particle device's ability of deployment of code over the air. New code can be deployed onto the device or burnt, as the process is called in embedded systems' parlance, via REST API calls, which makes it very convenient to provide updates. This feature of Particle products helps in faster code release cycle and testing/debugging.

What does Particle offer?

Particle offers a suite of hardware and software tools to help prototype, scale, and manage the IoT products. It also provides the ability to build cloud-connected IoT prototypes quickly. If you're satisfied with your prototype and want to productize your IoT design, no problem there. It helps us to go from a single prototype to millions of units with a cloud platform that can scale as the number of devices grow. The popular Particle hardware devices are listed as follows:

  • Core: A tiny Wi-Fi development kit for prototyping and scaling your IoT product. Reprogrammable and connected to the cloud, this has now been superseded by the Photon.
  • Photon: A tiny Wi-Fi development kit for prototyping and scaling your IoT product. Reprogrammable and connected to the cloud.
  • Electron: A tiny development kit for creating 2G/3G cellular connected products.

The Photon and the Core are bundled with Wi-Fi modules, which help them connect to a network or the Internet without adding any extra modules.

The Electron has a 3G/2G GSM module, which can be used to send or receive messages directly or connect to the Internet.

The firmware for the Photon, Electron, and Core can be written in a web-based IDE provided by Particle, and the deployment of the firmware code to the device is done over-the-air. Particle also offers SDKs for mobile and web to extend the IoT experience from the devices/sensors to the phone and web.

Summary

In this article, we learnt about IoT, and how it all began. We briefly touched upon major organizations involved in IoT, common terminology used, and we looked at different hardware products and cloud services we have available for building IoT projects. 

Resources for Article:


Further resources on this subject:


You've been reading an excerpt of:

Learning IoT with Particle Photon and Electron

Explore Title