The Wikipedia page on the Internet of Things (IoT) says the following:
"The Internet of Things (IoT, sometimes Internet of Everything) is the network of physical objects or "things" embedded with electronics, software, sensors, and connectivity to enable objects to exchange data with the manufacturer, operator and/or other connected devices based on the infrastructure of International Telecommunication Union's Global Standards Initiative."
This chapter starts with a brief walkthrough of the evolution of the 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 chapter is divided into the following sections:
Evolution of the IoT
Hardware and software in the IoT ecosystem
Market survey of IoT development boards and cloud services
What is Particle?
Photon, Electron, and Core
It is not very clear exactly who coined the term IoT. Kevin Ashton (https://en.wikipedia.org/wiki/Kevin_Ashton) supposedly coined the phrase Internet of Things 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 the 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 says the following:
"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".
The IoT has, in recent years, become quite popular and an everyday phenomenon, primarily due to IoT-related hardware, software, accessories, sensors, and Internet connections 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 the IoT really simple and easy. Thus, IoT enthusiasts range from school kids, hobbyists, and non-programmers to embedded software engineers specialized in this area.
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, and 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 you to the essential terminology used when dealing with the IoT. This will also help you to understand and appreciate the features of the Particle IoT products—Core, Photon, and Electron—explained in detail later in the chapter.
Let's learn about a few terms that we're going to be hearing all throughout this book, 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 computers 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 |
As the name suggests, real-time operating system (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 responses are 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, it's a variant of the 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 an 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) 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, and USB. |
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, and UART (https://en.wikipedia.org/wiki/Universal_asynchronous_receiver/transmitter). |
Table 1: Terminology
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 versus IoT
Here we list some of the most popular IoT boards and cloud services, available in the market at the time of writing this book, with some of their important specifications and features. These tables should help you to get an idea as to where Particle products fit in on the IoT map.
The next table lists the main specifications of popular IoT boards. These specifications 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 |
256 MB/512 MB/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
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 |
Amazon Web Services
Microsoft Azure
(https://azure.microsoft.com/)
Cloud Foundry
(https://www.cloudfoundry.org/)
IBM Bluemix
(http://www.ibm.com/cloud-computing/bluemix/)
|
Platform as a Service (PaaS) provides virtual machine (VM), storage, application services, deployment and management, mobile and device services, and big data analytics. |
Parse
Kinvey
AnyPresence
Appcelerator
(http://www.appcelerator.com/)
|
mBaaS provides ways to link mobile apps to backend cloud storage, user management, push notifications, and integration with social networking services. |
ThingWorx
|
M2M offering
from PTC (http://www.ptc.com/)
|
Table 4: Cloud services
Particle (https://www.particle.io), formerly known as Spark, is a company started by Zach Supalla. It provides hardware and software for the development of IoT projects.
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 questions 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.
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 Over-The-Air (OTA) code deployment. This removes the hassle of adding extra modules on the prototyping boards for connectivity, and it also allows pushing code or testing/debugging onsite. As previously mentioned, one of the important features that differentiates Particle products from other devices is the Particle device's ability of deploying 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 with a faster code release cycle and testing/debugging.
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, that 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 the Web to extend the IoT experience from the devices/sensors to the phone and the Web.
A detailed comparison between Photon, Electron, and Core is given in the next section.
The first prototyping board that was released by Particle (then known as Spark) was called Core. The subsequent prototyping boards released by Particle were called Photon and Electron. Core was superseded by the more powerful, faster, and less expensive Photon. Sale of Core has since been discontinued at Particle's online store at https://store.particle.io/, and hence, we will primarily discuss the Photon and the Electron. At the end of this chapter, we do a feature-wise comparison of the boards. The comparison can help one arrive at the most suitable board for one's project needs.
The Spark Core was the first IoT prototyping board released by Spark (now known as Particle) in a successful Kickstarter campaign that raised $567,968 from 5,549 backers. The Spark Core is an Arduino-compatible, Wi-Fi enabled, cloud-powered development platform that makes creating Internet-connected hardware a breeze.

The technical details of Spark Core are as follows:
ARM Cortex M3 CPU
72 MHz operating frequency
128 KB flash memory
20 KB RAM
12-bit ADC
Wireless programming
Analogue and digital I/O pins
TI CC3000 Wi-Fi module
802.11 b/g Wi-Fi support
USB 2.0 full-speed interface
The Spark Core is priced at $39 USD.
The Photon was built considering the feedback received from Core users. Thus, the Photon is the successor of the Core, and is more powerful than the Core in terms of CPU and memory.
The Photon can be ordered with or without headers, which means it has the flexibility to be used as a prototyping board (with headers) by hobbyists, or it can be soldered into a bigger circuit (without headers) for production.
The Photon is also Arduino-compatible, like its predecessor.

The technical details of the Photon are as follows:
120 Mhz ARM Cortex M3 processor
Wireless programming
Broadcom BCM43362 Wi-Fi chip
Supports 802.11 b/g/n Wi-Fi
1 MB flash memory
128 KB RAM
18 GPIO and peripheral pins
On-board RGB LED
Real-time operating system (FreeRTOS)
Support for AP (Access Point) mode (SoftAP)
Open source design
FCC, CE, and IC certified
The Photon has additional capabilities such as a wake-up pin for waking up from low power modes. The Photon is optimized to use less power, and this is made possible by the new Wi-Fi module it uses—Broadcom's BCM43362, which it incorporates. This new Wi-Fi chip powers other popular IoT products such as Nest Protect, LIFX, and others, as it provides the most stable solution. The Photon is available for $19 USD, and can be purchased from Particle's online store at https://store.particle.io.
The Electron is a cousin of the Photon with minor differences. It has a GSM module instead of a Wi-Fi module. The Electron can be used for creating cellular-connected electronics projects and products. It ships with a SIM card, and is optimized for low-bandwidth messages. The SIM card offers affordable data plans for over 100 countries worldwide through carriers such as Telefonica, AT&T, T-Mobile, O2, Movistar, Vivo, Telenor, Rogers, and many more. You can find the list of countries where the Electron's GSM connectivity is available at https://www.particle.io/cellular.

The technical details of the Electron are as follows:
1 MB flash
128 KB RAM
Wireless programming
U-blox SARA-U260/U270 (3G) and G350 (2G) cellular module
STM32F205 120 MHz ARM Cortex M3 microcontroller
RGB status LED
30 mixed-signal GPIO and advanced peripherals
Open source design
RTOS
FCC, CE, and IC certified
The Electron is available both in 2G and 3G variants. The Electron 2G is available for US $39, while the Electron the 3G variant is available for US $59. The Electron SIM card is available without any contracts, and the basic data charges are $2.99 per month for 1 MB and an additional $0.99 for each additional megabyte of data transferred.
This section provides a tabular comparison between Spark Core, Particle Photon, and Particle Electron. This table can help in an easy reference of technical specifications, and can also help decide the best board to use for a given project.
Feature |
Spark Core |
Particle Photon |
Particle Electron |
Wi-Fi Support |
802.11 b/g |
802.11 b/g/n |
No |
Wireless Module |
TI CC3000 |
Broadcom BCM43362 |
U-Blox SARA U-Series or G-Series |
Microcontroller |
STM32F103 |
STM32F205 |
STM32F205 |
CPU speed |
72 MHz |
120 MHz |
120 Mhz |
Flash memory |
128 KB |
1 MB |
1 MB |
RAM |
20 KB |
128 KB |
128 KB |
Wakeup pin exposed |
No |
Yes |
Yes |
VBAT pin exposed |
No |
Yes |
Yes |
No. of GPIO pins |
18 |
18 |
30 |
UART present |
Yes |
Yes |
Yes |
JTAG present |
Yes |
Yes |
Yes |
I2C present |
Yes |
Yes |
Yes |
SPI present |
Yes |
Yes |
Yes |
ADC present |
Yes |
Yes |
Yes |
DAC present |
No |
Yes |
Yes |
CAN present |
No |
Yes |
Yes |
Dimensions and weight |
35.6 mm x 20.3 mm x 11 mm, 6 g |
With headers -36.6 mm x 20.3 mm x 6.9 mm, 5 g
Without headers - 36.6 mm x 20.3 mm x 4.3 mm, 3.7 g
|
20.32 mm x 16.5 mm x 52.1 mm, 10 g |
Operating voltage and current |
3.6V to 6V,
~ 50 mA to 300 mA normally,
3.2 μA in deep sleep
|
3.6V to 5.5V,
~ 80 mA normally
~ 80 uA in deep sleep mode
|
3.7V,
~ 180 mA normally
~ 130 uA in deep sleep mode.
|
Price |
$39 |
$19 |
$39 or $59 |
Table 5: Comparison of Particle products
In this chapter, we learnt about the IoT, and how it all began. We briefly touched upon major organizations involved in the IoT, common terminology used, and we looked at different hardware products and cloud services we have available for building IoT projects. Further, we saw how Particle fits into the IoT picture, and the different products it has on offer for us to make the most of.
In the next chapter, we'll get hands-on, and learn to set up the IoT kits for our projects.