[PictoBloxExtension]

Internet of Things (IoT)

IoT
Extension Description
Add IoT to your project and control it across the globe.

Introduction

What is IoT?

The Internet of Things is the network of physical objects or “things” embedded with sensors, actuators, and internet connectivity, which enables these objects to collect and exchange data.

A “Thing” in the context of the IoT, is an entity or physical object that has a Unique identifier, which is a unique sequence of characters used to identify or refer to it, combined with an embedded system, and has the ability to transfer data over the internet.

These devices collect useful data and then autonomously flow and share it between other devices.

What is IoT Lifecycle?

Now we know in brief, what is IoT, let’s understand how the IoT ecosystem works in the real world using what is known as an IoT lifecycle.

The IoT life cycle comprises systems for

  1. Collection: Let’s start with the first phase i.e. the collection. For any device or any system to perform any action, first, it needs some data to act on. This data can either be generated from any sensors or any IoT devices about the thing. The data generated can be from any sensor be it temperature sensors, motion sensors, moisture sensors, air quality sensors, light sensors, you name it.
  2. Communication: Next, onto the Communication phase. The data collected from the sensors is then sent to the Internet to some destination with security and reliability. The devices like routers, switches, etc. are used to send data across the destination devices. The destination devices could be
    1. A cloud platform like Google or Alexa
    2. Private data centers like Indian Defence Data Centers
    3. Home networks like Smart-home networks.
  3. Analyzing: In the next phase, that is the Analysis phase, the data we collected needs to be analyzed to create a meaningful format. It could be
    1. Visualizing the data like temperature variation during the day
    2. Building reports to analyze the manufacturing system cause
    3. Setting up events like should you the Air Conditioner ON or OFF depending on the temperature.
  4. Acting: Now that we have the final form of data we need to perform an action according to it. The actions based on the information and data could be
    1. Communicating with another machine- like turning the AC ON or OFF
    2. Sending a notification (SMS, E-mail, or Text)- like notifying that the plants have been watered.
    3. And much more.

Application of IoT

We use IoT in normally all fields of life.

  1. Building and Home Automation
  2. Manufacturing
  3. Medical and Healthcare systems
  4. Environmental monitoring
  5. Energy management
  6. Transportation
  7. Better quality of life for the elderly and whatnot!

What is the Cloud?

In an IoT system, the most important component is the cloud service on which we can store or retrieve data as per the applications. A cloud service is any service made available to users on demand through the internet. Cloud services are designed to provide easy & scalable access to applications, resources, and services. Cloud is the collection of data servers used to provide services like computing, analyzing, networking, etc.

There are a number of cloud service providers out there, like Amazon, Microsoft, Salesforce, Apple, etc. One such cloud service is Adafruit.io which we are going to use.What is Cloud

IoT with Adafruit IO

Adafruit.io is a cloud service – that just means we run it for you and you don’t have to manage it. You can connect to it over the Internet. It’s meant primarily for storing and then retrieving data but it can do a lot more than just that!

PictoBlox supports the IoT applications for Adafruit IO in this extension.

Create an Account in Adafruit IO

Follow the steps:

  1. Go to the website and Sign up: https://accounts.adafruit.com/users/sign_in
  2. Add the details and click on Create Account.
  3. You will be signed in to the account.

From here, you’ll want to learn about two important features of Adafruit IO before proceeding further –  Feeds and Dashboards

Feeds

Feeds are the core of the Adafruit IO system. The feed holds metadata about the data you push to Adafruit IO. This includes settings for whether the data is public or private, what license the stored sensor data falls under, and a general description of the data. The feed also contains the sensor data values that get pushed to Adafruit IO from your device.

You will need to create one feed for each unique source of data you send to the system. For example, if you have a project with one temperature sensor and two humidity sensors, you would need to create three feeds. One feed for the temperature sensor, and one feed for each humidity sensor.

Creating a Feed

Follow the steps:

  1. Go to the Feeds tab. Click on New Feed.
  2. Add the name and description and click on Create.
  3. You will find the feed in the list.
  4. You can click on the feed name and visualize the data.

Dashboard

Dashboards allow you to visualize data and control Adafruit IO-connected projects from any modern web browser. Widgets such as charts, sliders, and buttons are available to help you quickly get your IoT project up and running without the need for any custom code.

Creating a Dashboard

Follow the steps:

  1. Go to the dashboard and click on New Dashboard.
  2. Add the Dashboard Name and Description and click on Create.
  3. Open the New Dashboard. Click on the Setting icon in the top right corner and then click on Create New Block.
  4. From the options, click on the line chart.
  5. Select the Temperature Feed and click on Next Step.
  6. Add the Block Title and the Y-Axis Minimum – Maximum value. Click on Create Block.
  7. You will find the block added on the dashboard.
  8. Add a Humidity block as well. Also, add two gauge elements showing the current temperature and humidity value.
  9. Click on the Setting button and Edit Layout to align all the buttons.

IoT with ThingSpeak

ThingSpeak is an IoT analytics platform service that allows you to aggregate, visualize, and analyze live data streams in the cloud. You can send data to ThingSpeak from your devices, create instant visualization of live data, and send alerts.

PictoBlox supports the IoT applications for ThingSpeak in this extension.

Creating a ThingSpeak Account

Follow the steps:

  1. Go to https://thingspeak.com/ and click on create a new account.
  2. Add the details and click Continue.
  3. It will show – Personal Email Detected. Click Continue.
  4. Next, you have to verify your account.
  5. Once verified. Click on Continue. It will ask you to set the password.
  6. Once completed. You will be greeted by your dashboard.

Creating Channel in ThinkSpeak

Collect data in a ThingSpeak channel from a device, from another channel, or from the web.

Follow the steps:

  1. Click on New Channel.
  2. Add Channel information such as name, description, and field names. There can be 8 fields for 1 channel.
  3. Click on Save Channel.
  4. Your channel is created.

API for ThingSpeak

You will need the following data for making code in PictoBlox:

  1. Channel ID: This is the unique ID by which the channel data can be identified.
  2. Read and Write API: These is the unique API keys for performing data read and write operations. You can locate it in the API section of the channel.

Accessing IoT Extension in PictoBlox

Following is the process to add Internet of Things capability to the PictoBlox Project.

  1. Open PictoBlox and create a new file.
  2. Select the coding environment as Block Coding.
  3. Next, click on the Add Extension button and add the Internet of Things extension.
  4. You can find the Internet of Things blocks available in the project.
Read More

PictoBlox Blocks

All articles loaded
No more articles to load

Block Coding Examples

All articles loaded
No more articles to load

Python Functions

The function turns the sprite by the specified amount of degrees clockwise. This changes the direction the sprite is facing.
Syntax: right(angle = 15)
The function gives its sprite a thought bubble with the specified text, which stays for the specified amount of seconds.
Syntax: think(message = “Hello!”, time = 0)
The function will play the specified sound, with no pause to its script.
Syntax: play(sound_name = “Grunt”)
The function removes all marks made by the pen or stamping. It is the only pen block that the Stage can use.
Syntax: clear()
The function turns off the specified RGB LED of Quarky (specified with the X and Y position of the LED).
Syntax: clearled(x_position = 1, y_position = 1)
The function returns the IR sensor analog reading. The reading varies from 0 to 4095.
Syntax: readirsensor(sensor = “IRL”)
The function moves the Quarky robot in the specified direction for the specified time. The direction can be “FORWARD”, “BACKWARD”, “LEFT”, and “RIGHT”.
Syntax: runtimedrobot(direction = “FORWARD”, speed = 100, time = 1)
The function plays the specified audio on the Quarky speaker. The function has a callback, so other functions will be executed after the audio is played.
Syntax: playsounduntildone(audio = “QuarkyIntro”)
This function is used to analyze the image received as input from the camera, for the feature.
Syntax: analysecamera()
This function is used to analyze the image received as input from the camera, for the handwritten and printed text.
Syntax: analysecamera()
When the function is executed, the recognition window will open and you will get a specified time during which PictoBlox will record whatever you say. Once recorded, the speech will be converted to the text of the language you spoke in and saved locally.
Syntax: analysespeech(time = 2, language = “en-US”)
The function sets the pick action angle with the specified angle. This is useful to set a custom pick angle for the pick and place robot.
Syntax: setpickangle(angle = 40)
The function returns a tensor with a length 1 axis inserted at the index axis.
Syntax: tf.expand_dims(input, axis = 0, name)
The function calibrates the angles of the servo motors and saves them in the memory of Quarky. Due to some mechanical assembly errors, there may be some misalignment of the servos which can be handled with this block.
Syntax: setoffset(Front Right Hip Offset = 0, Front Left Hip Offset = 0, Front Right Leg Offset = 0, Front Left Leg Offset = 0, Back Right Hip Offset = 0, Back Left Hip Offset = 0, Back Right Leg Offset = 0, Back Left Leg Offset = 0)
The function reports the state of the PIR sensor connected to the selected pin. The function returns 1 when it is HIGH (or 3.3V) or 0 when it is LOW (or 0V).
Syntax: pirstatus(pin = “D3”)
The function creates an Adafruit IO object that set up the API connection between the PictoBlox and the Adafruit server with the specified username and AIO key.
Syntax: adaio.connecttoadafruitio(username = “username”, AIO Key = “AIO key”)
The function calibrates the angle servo motors and saves them in the memory of Quarky. Due to some mechanical assembly errors, there may be some misalignment of the servos which can be handled with this block.
Syntax: setoffset(Head = 0, Front Left = 0, Front Right = 0, Back Left = 0, Back Right = 0)
The function calibrates the angles of the hip and foot servo motors and saves them in the memory of Quarky. Due to some mechanical assembly errors, there may be some misalignment of the servos which can be handled with this block.
Syntax: setlegoffset(Left Hip Offset = 0, Right Hip Offset = 0, Left Foot Offset = 0, Right Foot Offset = 0)
The function allows the robot to move in the specified direction at a given speed.
Syntax: runrobot(direction = “forward”, speed = 100)
The function sets the servo motor connected to the specified servo pin of the Quarky Expansion board to the specified angle. The expansion board can control up to 8 servos simultaneously.
Syntax: moveservo(servo port = 1, angle = 40)
The function is used to return the inverse hyperbolic cosine of a given value.
Syntax: math.acosh(x)
The function takes the current end–effector position and adds an offset value to it. It then updates the end–effector position in the length and Z directions according to the specified direction. The function also normalizes the end–effector position, ensuring that the calculated offset is applied consistently.
Syntax: roboticArm.setoffset(length Offset = 0, Z Offset = 0)
This function moves the robot forward and reverse for a set time, collecting IR sensor data on white and black lines.
Syntax: calibrateir()
The function disables the automatic display of the box on face detection on the stage.
Syntax: disablebox()
The function turns the sprite by the specified amount of degrees counter-clockwise. This changes the direction the sprite is facing.
Syntax: left(angle = 15)
The function changes its sprite’s costume to a specified one.
Syntax: switchcostume(costume_name = “Tobi Jump”)
The function will stop any sounds currently being played on all sprites and the Stage. Pressing the Stop button will also stop all sounds, but is rarely used as it also stops all the other scripts running in the project.
Syntax: stopallsounds()
The function reports the Euclidean distance, in pixels, between it and the mouse-pointer or a specified sprite’s costume center.
Syntax: distance(object_name = “_edge_”)
The function will make its sprite continuously pen a trail wherever it moves until the up() function is used. The color, size, and transparency of the trail can be changed with other functions.
Syntax: down()
The function reads the digital value of the sensors connected to the specified pin. The function returns True or False.
Syntax: readdigitalinput(pin)
All articles loaded
No more articles to load

Python Coding Examples

All articles loaded
No more articles to load
Table of Contents