Introduction to IoT Week-5: SUMMARY

Pranay Bhatnagar
8 min readOct 26, 2023

--

Welcome to the summary of Week-5 of our Internet of Things exploration. In this blog, we dive deeper into the dynamic world of IoT applications and innovations.

From UAV networks to machine-to-machine communication, we’re on the brink of exciting developments. Join us as we uncover the latest trends and possibilities that IoT has to offer.

Current Challenges in IoT:

  1. Large-scale of cooperation
  2. Global Heterogeneity
  3. Unknown to IoT Device Configuration
  4. Semantic Conflicts

Solution: Interoperability

Interoperability is a critical aspect of the Internet of Things (IoT), ensuring that devices, systems, and products can work together seamlessly, both now and in the future, without limitations. Its primary goals are to enable meaningful communication and data or service exchange.

The need for interoperability in IoT arises from the desire to fulfill key objectives, such as allowing physical objects to interact and share information, facilitating communication between devices anywhere and anytime, and enabling machine-to-machine (M2M), device-to-device (D2D), and device-to-machine (D2M) interactions. The ultimate aim is to achieve seamless device integration within the IoT network.

However, achieving interoperability can be challenging due to the vast heterogeneity within IoT. This heterogeneity encompasses different wireless and wired communication protocols, programming languages, hardware platforms, operating systems, databases, data representations, and control models. These diversities call for solutions that address syntactic and semantic interoperability to ensure that devices and systems can communicate effectively.

Types of Interoperability:

  1. User Interoperability (problem between a user and a device)
  2. Device Interoperability (problem between two different devices)

Device Identification and Categorization for Discovery: To ensure interoperability in the Internet of Things (IoT), it is essential to establish unique device identification and categorization methods. Several solutions are available for this purpose:

1. Unique Addresses: Various unique address generation methods are used, such as Electronic Product Codes (EPC), Universal Product Codes (UPC), Uniform Resource Identifiers (URI), and IP Addresses, including the newer IPv6.

2. Device Classification: Different device classification solutions exist, including the United Nations Standard Products and Services Code (UNSPSC), which is a global standard for classifying products and services across multiple sectors. Another classification system is eCl@ss, designed for the clear description and categorization of cross-industry products.

Syntactic Interoperability for Device Interaction: Syntactic interoperability involves ensuring that devices and users can communicate effectively in terms of message formats. It ensures that the message format sent from a device to a user is understandable by the user’s computer, and vice versa.

Several popular approaches are employed for achieving syntactic interoperability:

1. Service-oriented Computing (SOC)-based architecture.
2. Web services.
3. RESTful web services.
4. Open standard protocols, such as IEEE 802.15.4, IEEE 802.15.1, and WirelessHART.
5. Closed protocols like Z-Wave, although they may not be compatible with each other.

Middleware technology is used to facilitate syntactic interoperability by dynamically mapping physical devices with different domains and enabling remote device discovery and control. Additionally, cross-context syntactic interoperability is achieved through collaborative concept exchange using XML syntax.

Semantic Interoperability for Device Interaction: Semantic interoperability ensures that devices and users can understand the meaning of the messages exchanged. It addresses semantic conflicts that may arise when different processing logics are applied to the same IoT networked devices or applications. A popular approach to achieving semantic interoperability is Ontology. This involves creating ontologies for various aspects, including device ontology, physical domain ontology, and estimation ontology.

Collaborative Conceptualization Theory: Collaborative conceptualization theory defines objects based on collaborative concepts called “cosigns.” A cosign includes an internal identifier, a natural language representation, context information, and a definition of the object. For example, in the context of a CCTV camera, a cosign may look like this (1234, English, CCTV, “Camera Type: Bullet, Communication: Network/IP, Horizontal Resolution: 2048 TVL”). This approach can be applied to different domains and contexts to ensure a common understanding of devices and their functions.

Device Interoperability: To address device interoperability challenges, a solution approach called the Universal Middleware Bridge (UMB) is employed. UMB aims to resolve the seamless interoperability issues arising from the heterogeneity of various home network middleware systems, such as HAVI, Jini, LonWorks, and UPnP.

UMB creates virtual mappings among physical devices across different middleware home networks, ensuring compatibility between these networks. The UMB architecture includes the following components:

1. UMB Core (UMB-C): The UMB Core primarily focuses on routing universal metadata messages to their intended destinations. It plays a vital role in ensuring effective communication between devices in different middleware networks.

2. UMB Adaptor (UMB-A): UMB Adaptors are responsible for translating local middleware messages into global metadata messages, facilitating communication and interaction between devices from different middleware networks.

The UMB architecture, comprising UMB Core and UMB Adaptors, is designed to provide a cohesive solution for device interoperability. It effectively manages the routing of universal metadata messages through the Middleware Routing Table (MRT), ensuring that devices can communicate seamlessly, irrespective of the middleware network they belong to.

Introduction to Arduino: It is an open source-based electronic programmable board (microcontroller) and software (IDE) that accepts analog and digital signals as input and gives desired out. Also, no extra hardware is required to load a program into the controller board.

Arduino IDE: It is an open-source software that is used to program the Arduino controller board and it is based on the variations of the C and C++ programming languages. A program coded in the Arduino IDE is called a SKETCH.

Sketch Structure: A sketch can be divided into two parts: Setup() and Loop().

Setup(): Just like the main() function in C and C++

Loop(): As the name suggests, it iterates the specified task.

For example:

Arduino Function Libraries:

Arduino offers a set of essential input/output functions for interacting with pins on the Arduino board. These functions include:

1. pinMode(): This function is used to configure Arduino pins to operate as either input or output. It is invoked in the setup() function and takes two arguments, the pin number, and the mode (INPUT or OUTPUT).

2. digitalWrite(): digitalWrites() is used to set a digital pin’s state to HIGH or LOW, effectively turning it on or off.

3. analogRead(): This function is employed to read the analog input voltage applied to a specific pin.

4. Character functions: Arduino provides character-related functions such as isdigit(), isalpha(), isalnum(), isxdigit(), islower(), isupper(), and isspace(), which return 1 (true) or 0 (false) based on the character’s properties.

5. delay(): The delay() function is commonly used for time manipulation, allowing you to introduce delays of a specified duration, measured in milliseconds.

These functions serve as the foundation for programming Arduino boards, enabling users to interact with digital and analog pins, handle character-based operations, and manage timing delays in their projects.

Operators:
1. Arithmetic Operators: Include =, +, -, *, /, and %.
2. Comparison Operators: These are ==, !=, <, >, <=, and >= for making comparisons.
3. Boolean Operators: Comprise &&, ||, and ! for logical operations.
4. Bitwise Operators: Include &, |, ^, ~, <<, and >> for working with individual bits.
5. Compound Operators: These consist of ++, — , +=, -=, *=, /=, %=, |=, and &= for efficient operations on variables.

Control Statements:
1. If statement: Used for conditional execution of statements based on a condition.
2. If…Else statement: Allows executing specific statements if a condition is true and different statements if the condition is false.
3. If…Elseif…Else: Enables branching to execute code based on multiple conditions.
4. Switch Case: Used for multi-branching based on various cases.
5. Conditional Operator: Provides a concise way to assign values based on a condition.
6. For loop: Utilized for looping and iterating a set of statements until a specified condition is met.
7. While loop: A loop that repeatedly executes a set of statements as long as a given condition is true.
8. Do… While loop: Similar to the while loop but ensures that the loop is executed at least once.

Arrays: Arrays are collections of elements with a homogeneous data type, stored in adjacent memory locations. They typically start at index 0 and can be declared using <Datatype> array_name[size]. Multi-dimensional arrays are also possible, declared as <Datatype> array_name[n1][n2][n3]… to store data in multiple dimensions.

Strings: Strings are arrays of characters terminated with NULL. They can be declared using character arrays like `char str[] = “ABCD”` or the String object. The String object provides functions like `ToUpperCase()`, `replace(str1, str2)`, and `length()` for string manipulation.

Random Numbers: Random number generation is supported with functions like `randomSeed(int v)` to set the seed value for the pseudo-random number generator and `random(maxi)` and `random(mini, maxi)` to generate random numbers within specified ranges.

Integration of Sensors with Arduino:

Digital Humidity and Temperature Sensor (DHT):
- The DHT sensor is a sensor used to measure humidity and temperature.
- It has four pins: 3.3V-5V power supply, data, null, and ground (from left to right).
- The data pin is used to read temperature and humidity values.

DHT Sensor Library:
- Arduino supports a special library for DHT11 and DHT22 sensors.
- The library provides functions like `dht.readHumidity()` and `dht.readTemperature()` to read humidity and temperature values from the sensor’s data pin.

Integration of Actuators with Arduino:

Servo Motor:
- A servo motor is a mechanical or electromechanical device that converts energy into controlled motion.
- It provides precise rotary motion in the range of 0 to 180 degrees.
- A servo motor typically has three wires: ground (black/darkest), power supply (red), and signal (yellow).
- Arduino offers the SERVO library to operate servo motors, and an instance of the servo is created to use it in the sketch.

In conclusion, Week 5 of our 12-week journey into the world of IoT through NPTEL has provided us with valuable insights into the importance of interoperability, sensor integration, and actuator control within the Internet of Things ecosystem. We’ve explored the critical role of function libraries, control statements, sensors like the DHT, and actuators like servo motors in building IoT applications. The knowledge gained this week will continue to be the building blocks for our IoT expertise in the weeks to come.

As we move forward in this NPTEL course, we can look forward to delving deeper into more advanced IoT concepts and practical applications. Stay tuned for Week 6 as we explore even more fascinating aspects of IoT.

Feel free to share your thoughts, questions, or any insights you’ve gained from Week 5 in the comments below. We’d love to hear about your experiences and discoveries on this exciting journey through IoT. Together, we’re taking significant strides in understanding the Internet of Things and its incredible potential.”

Remember to adjust it to your blog’s tone and style as needed. Good luck with your blog series!

--

--