Want to build your own Real Time Clock using Arduino? Click here!
Recent Blog Posts
Arduino Alarm Clock
Arduino Alarm Clock
20/09/2017 0

IoT: Door Sensor
IoT: Door Sensor
14/09/2017 0

Getting Started with robotics and mBot
Getting Started with robotics and mBot
06/09/2017 0

IoT: Smart Intercom
IoT: Smart Intercom
30/08/2017 0

IoT with Raspberry Pi using Blynk

Posted by Momen 22/08/2017 0 Comment(s)

Welcome to Zeroohm Raspberry Pi Training series. In this series of Raspberry Pi Training, Zeroohm will focus its efforts on helping the community learn more about Raspberry Pi fundamentals and basics starting with basic control of LED's, motors, sensors and utilizing of wirless communication. We hope that you find this useful, Please, leave a comment for any questions or comments or reviews!

We provide all our trainings for groups from schools, universities, public sector and private sector in Abu Dhabi, Dubai, Sharjah, Fujairah, RAK or anywhere in UAE. Please,click here to contact us directly for any training inquires.

Overview:

Getting started: 

- To download Blynk app and install the library follow the following steps: 

        1- Download Blynk app on your mobile from Google play or Apple store 

        2- get the Auth token : 

         - Create a new account in Blynk App.

         - Create a New Project. Then choose the board and connection you will use.

         - After the project was created, you will received Auth Token over email.

          -  Check your email inbox and find the Auth Token. 

now install Blynk library in Raspberry Pi by open it’s command using puTTY and typ the following command:

$ sudo apt-get purge node nodejs node.js -y

$ sudo apt-get autoremove

Add repositories:

curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -

Install Node.js:

$ sudo apt-get update && sudo apt-get upgrade

$ sudo apt-get install build-essential nodejs –y

Check your Node.js and npm installation

$ node --version

$ npm -v

Download and build Blynk JS library using npm:

 $ sudo npm install -g npm

 $ sudo npm install -g onoff

 $ sudo npm install -g blynk-library

Run Blynk test script (put your auth token):

 

blynk-client YOUR AUTH TOKEN

 

  • Experiment 1: LED blinking using Raspberry Pi.

A light-emitting diode (LED) is a semiconductor device that produces light from electricity.  LEDs last a long time and do not break easily compared to incandescent light bulbs. They can produce many different colours.

 

In this task you will control the switching of an LED through the Raspberry Pi by the following steps: 

 

  1. Connect the following Circuit using the shown components in Fig. 

 

raspberry-circuit-with-led

  1. On the raspberry, open Python 2 (IDLE) and write the following code:

 

from blynkapi import Blynk

import RPi.GPIO as GPIO

 

GPIO.setmode(GPIO.BCM)

GPIO.setup(18,GPIO.OUT)

# vars

auth_token = "YOUR TOKEN"

 

led = Blynk(auth_token, pin = "V3")

 

while True:

    blink = led.get_val()

    if blink[0] == u'0':

        GPIO.output(14,GPIO.LOW)

    elif blink[0] == u'1':

        GPIO.output(14,GPIO.HIGH)

  1.  Check that your code is correct.
  2. Choose button on blynk App, click on it and choose V3 as pin. 
  3. Run the code.
  4. Click on the button and notice what happens to the LED.

 

Discussion :

  •  GPIO.BCM  Broadcom chip-specific pin numbers. These pin numbers follow the lower-level numbering system defined by the Raspberry Pi’s Broadcom-chip brain.
  • get_val() returns a value for the given key. If key is not available then returns default value None.

 

  • Experiment 2: Servomotor using blynk

A servomotor is a rotary actuator or linear actuator that allows for precise control of angular or linear position, velocity and acceleration.  It consists of a suitable motor coupled to a sensor for position feedback.

In this task you will control the servomotor rotation using Slider by the following steps: 

  1.  Connect the following Circuit using the shown components in Fig 

raspberry-pi-circuit-using-servo-motor

 

2. On the raspberry, open Python 2 (IDLE) and write the following code:

from blynkapi import Blynk

import RPi.GPIO as GPIO

 

GPIO.setmode(GPIO.BCM)

GPIO.setup(14,GPIO.PWM_OUT)

 

auth_token = "YOUR TOKEN"

servo = Blynk(auth_token, pin = "gp18")

servo.pwmSetRange(2000)

 

while True:

    res = servo.get_val()

    for res in range(50, 250, 1):

            servo.pwmWrite(18, pulse)  

    for res in range(250, 50, -1):

            servo.pwmWrite(18, pulse)

 

  1. Check that your code is correct.
  2. Choose silder on blynk App, click on it and choose gp18 as pin. 
  3. Run the code
  4. Rotate it to left and right and notice what happens to the Servo.

Discussion :

 

  • PWM.write() is a way to get an artificial analog output on a digital pin. It achieves this by rapidly toggling the pin from low to high.
  • pwmSetRange() sets the range register in the PWM generator. The default is 1024.

 

  • Experiment 3: RGB LED using blynk

RGB LED : means red, blue and green LEDs. RGB LED products combine these three colors to produce over 16 million hues of light, Some colors are “outside” the triangle formed by the RGB LEDs. Also, pigment colors such as brown or pink are difficult, or impossible, to achieve.

  1.  Connect the following Circuit using the shown components in Fig

raspberry-pi-circuit-using-rgb-led

  1. On the raspberry, open Python 2 (IDLE) and write the following code:

from blynkapi import Blynk

import RPi.GPIO as GPIO

 

GPIO.setmode(GPIO.BCM)

red = 18 

green = 23 

blue = 24 

GPIO.setup(red,GPIO.OUT)

GPIO.setup(green,GPIO.OUT)

GPIO.setup(blue,GPIO.OUT)

 

auth_token = "YOUR TOKEN"

 

red1 = Blynk(auth_token, pin = "V3")

green1 = Blynk(auth_token, pin = "V4")

blue1 = Blynk(auth_token, pin = "V5")

while True:

    res = red1.get_val()

    res2 = green1.get_val()

    res3 = blue1.get_val() 

    if res[0] == u'0':

        GPIO.output(18,GPIO.LOW)

    elif res[0] == u'1':

        GPIO.output(18,GPIO.HIGH)

    if res2[0] == u'0':

        GPIO.output(23,GPIO.LOW)

    elif res2[0] == u'1':

        GPIO.output(23,GPIO.HIGH)

    if res3[0] == u'0':

        GPIO.output(24,GPIO.LOW)

    elif res3[0] == u'1':

        GPIO.output(24,GPIO.HIGH)

 

  1. Check that your code is correct.
  2. Choose 3 buttons on blynk App, click on each one and choose V3, V4 and V5 as pin. 
  3. Run the code
  4. Click on each button and notice what happen to RGB LED.

 

Discussion:

  • elif : allows you to check multiple expressions for TRUE and execute a block of code as soon as one of the conditions evaluates to TRUE.

 

Experiment 4: Temperature Sensor using blynk

Temperature: Changes its voltage output depending on the temperature of the component. The outside legs connect to power and ground. The voltage on the center pin changes as it gets warmer or cooler.

In this task you will read value of Temperature sensor using blynk by the following steps:

  1. Connect the following Circuit using the shown components in Fig

raspberry-pi-circuit-using-tempreture-sensor

Now open the terminal and type the following command: 

 

sudo nano /boot/config.txt

And add      dtoverlay=w1-gpio,gpiopin=4

And save (Ctrl+X)

 

Then type: 

 

sudo modprobe w1-gpio

sudo modprobe w1-therm

cd /sys/bus/w1/devices/

ls 

cd address 

where address is the unique address of the device required. For eg.cd 28-00042d8165ff

  1. On the raspberry, open Python 2 (IDLE) and write the following code:

from blynkapi import Blynk

import RPi.GPIO as GPIO

import os                                                  

import glob                                                

os.system('modprobe w1-gpio')

os.system('modprobe w1-therm')                                                 

base_dir = '/sys/bus/w1/devices/'                          

device_folder = glob.glob(base_dir + '28*')[0]             

device_file = device_folder + '/w1_slave'                  

GPIO.setmode(GPIO.BCM)

GPIO.setmode(GPIO.BOARD)

auth_token = "YOUR TOKEN"

 

temp = Blynk(auth_token, pin = "V3")

 

def read_temp_raw():

   f = open(device_file, 'r')

   lines = f.readlines()                                   

   f.close()

   return lines

 

def read_temp():

   temp = read_temp_raw()

   while lines[0].strip()[-3:] != 'YES':

       temp = read_temp_raw()

   equals_pos = lines[1].find('t=')                        

   if equals_pos != -1:

      temp_string = lines[1][equals_pos+2:]

      temp_c = float(temp_string) / 1000.0                 

                         

      return temp_c

 

  1. Check that your code is correct.
  2. Choose Gauge on blynk App, click on it and choose V3 as pin. 
  3. Run the code
  4. Read the data that appear on Gauge. 

 

Discussion:

  • GPIO.BOARD: Board numbering scheme. The pin numbers follow the pin numbers on header P1.
  • While loop: like the ForLoop, are used for repeating sections of code - but unlike for loop, the while loop will not run n times, but until a defined condition is no longer met. If the condition is initially false, the loop body will not be executed at all.

 

 

 

 

 

 

Leave a Comment