Project

General

Profile

Internet of Things

This is sometimes referred to as IoT.

Protocols

A number of different protocols may be used in IoT applications:

The lab has implemented a number of successful IoT projects using these. The Django server platform directly implements a RESTful API. Instructions for building such a server are on the Building a generic Ubuntu LAMP server page.

More information on these and other aspects of IoT can be found online. This article from Control Engineering covers many of the essential topics:

PLCs_power_industrial_data_integration-IoT.pdf

Note that the assumed "device" is a PLC although the ESP32 (see below) can be used in it's place.

Devices

See these pages for more info on specific devices that have been used in the lab.

ESP32

This device is less expensive than an Arduino faster than one and has two cores and has built in WiFi and BLE. It does not have support for Arduino shields. The Design Lab has a purpose made PCB for this device whcich can be used to permanently mount components OR to add headers to use like a typical protoboard.

Arduino + ESP8266

The common Arduino devices do not include internet capability. While there are shields available to provide that function, these are intended to work with Arduino's that have the matching headers.

A common and less expensive alternative is to pair the Arduino with an ESP8266. The ESP8266 can be programmed to serve as a "pass thru wi-fi modem" which then allows the Arduino to send messages to the internet and receive the responses. Since these are simply strings of characters, no special libraries are needed for basic functions.

ESP8266

While it can be configured in a "pass-thru mode" to be used in conjunction with almost any microprocessor, it is also a complete microprocessor on it's own. Due to it's limited configuration in terms of memory and I/O it is only suitable for very small applications. For our Capstone projects it is usually easier to use it in conjunction with a separate microprocessor.

Note that it's a 3.3V device and is NOT compatible with 5V circuits / peripherals.

The board does NOT include a USB interface, so it cannot be programmed without an external interface. There is information on the web on how to use an Arduino to temporarily provide the interface. The alternative is a dedicated FTDI interface board which the lab does not have.

The board does not include any edge connectors, only solder pads. The spacing of these pads is NOT compatible with the spacing on a proroboard, adding another inconvenience to using this board.

NRF24L01

While the ESP8266 chip can connect a microprocessor to wifi, this chip can not! The NRF24L01 device can ONLY be used to talk to another NRF24L01 chip. So it's basically just a radio modem, but is NOT a wifi interface. If you are ordering parts, be careful you do not accidentally select this rather than the ESP8266. It is sometimes incorrectly marketed as an "Arduino wifi antenna". These are quite inexpensive, however, if you simply need a modem for remote operation. You might, however, then also need something to "bridge" between the NRF24L01 and the rest of your system.

Cypress PSoC4BLE

This flexible "Programmable System on a Chip" has built in BLE capabilities. An interesting feature of this chip is that the I/O pins are configurable, such that a given pin may be set as either a digital I/O or an analog I/O. It has a hybrid programming environment that combines the typical C language programming as used in LITEC with a powerful schematic mode where logic and function blocks are added to a schematic. The C program can access data within the schematic! The chip can also be programmed in VHDL. While the C/schematic mode can be challenging to take advantage of, it does offer capabilities not found in other microprocessors.

While the chip does not include wifi, it is possible to add an ESP8266 to provide that capability.

Cypress PSoc6 Family

This is an even more powerful model of PSoC. Two versions are available - one with BLE and the other with both BLE and WiFi. The processor is a dual CPU ARM device providing for a very large amount of programming / processing capabilities.

Cypress altered their programming approach from the PSoC 1-5 families and the PSoC family is only available for C based programming - no schematic mode exists.

The programming is on the high end of challenging for most students. As a result, although the device is extremely capable, this family is not recommended for Capstone projects.

PLC

A PLC is a programmable logic controller. These are ruggedized devices that have been used on the factory floor & in other industry applications for decades. Modern controllers now include some level of IoT support built in, such as directly implementing the MQTT protocol.

One article that provides and overview can be found here: https://www.controleng.com/articles/plc-programming-fundamentals-and-uses-in-discrete-manufacturing/ and this is another e-book on PLC's: https://bt.e-ditionsbyfry.com/publication/?i=812542

As PLC's have been in use for decades, there are many other resources available on-line.

Typical Architecture

While there are many possible overall system architectures used for Internet of Things projects, we find that many of our Capstone projects use a variation of this one: IoT_Generic_System_Architecture.pptx

Note that the ESP32 can be replaced by a microprocessor + ESP8266 combination where the microprocessor can be an Arduino or almost any other make/model.

Attachments