loading

This time we will display some sensor values (DHT11 in example) on the Smartphone using Blynk App.
You will need:

  1. Raspberry Pi with internet connection
  2. Temperature and humidity sensors: DHT11 or DHT22 or AM2302
  3. Jumper wires

Please check my tutorial about getting Blynk and Node.JS running on Raspberry Pi and other single-board computers (BeagleBone, Intel Edison, Galileo, VoCore, OpenWrt... ):

After you get Blynk JavaScript library running, we can move on to reading sensor values.

Step 1: Install Sensor Libraries

For DHT11/DHT22/AM2302 sensors, you need to download and install:

Here are the commands I run on my Raspberry to do this (it may take some time to execute...):

wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.46.tar.gz
tar zxvf bcm2835-1.46.tar.gz
cd bcm2835-1.46
./configure
make
sudo make check
sudo make install
sudo npm install -g node-dht-sensor

Note: You may want to read the node-dht-sensor Readme, and run "First Example" ;)

Step 2: Scan/create Blynk Project

After logging in to the Blynk App, you can scan the QR code and get the project I have prepared for you (only Android, for now...).

Alternatively, you can create it manually:

  1. Create a new dashboard of type Generic, and send yourself an Auth Token.
  2. Add a Graph widget and bind it to V3
    Set range to 10..40,
    reading frequency to "PUSH"
  3. Add a Value Display widget and bind it to V4
  4. Press Run (triangle in the upper right corner)

Step 3: Blynk Script for DHT11

Wire Raspberry Pi and DHT11:

  • GND to GND
  • sensor Signal to gpio4
  • sensor VCC to 3.3v

On the board, create a new file (call it blynk-sensor-test.js):

var blynkLib = require('blynk-library');
var sensorLib = require('node-dht-sensor');

var AUTH = 'YOUR_AUTH_TOKEN';

// Setup Blynk
var blynk = new blynkLib.Blynk(AUTH);

// Setup sensor, exit if failed
var sensorType = 11; // 11 for DHT11, 22 for DHT22 and AM2302
var sensorPin  = 4;  // The GPIO pin number for sensor signal
if (!sensorLib.initialize(sensorType, sensorPin)) {
    console.warn('Failed to initialize sensor');
    process.exit(1);
}

// Automatically update sensor value every 2 seconds
setInterval(function() {
    var readout = sensorLib.read();
    blynk.virtualWrite(3, readout.temperature.toFixed(1));
    blynk.virtualWrite(4, readout.humidity.toFixed(1));
    
    console.log('Temperature:', readout.temperature.toFixed(1) + 'C');
    console.log('Humidity:   ', readout.humidity.toFixed(1)    + '%');
}, 2000);

Replace YOUR_AUTH_TOKEN with your token from the App.
You may also want to change sensorType and sensorPin.

Now run it:

sudo NODE_PATH=/usr/local/lib/node_modules node ./blynk-sensor-test.js

The output should look like this:

OnOff mode
Connecting to TCP: cloud.blynk.cc 8442
Connected
Temperature: 18.0C
Humidity:    26.0%
Temperature: 18.0C
Humidity:    26.0%

Note:

  • You need to run our script with sudo as the sensor library requires privileged access to the hardware
  • NODE_PATH=.. is set because Node.js may fail to locate global modules otherwise

Step 4: Enjoy Sensor Values in the Blynk App

Now, check the Blynk App on your smartphone, it should display a nice plot of temperature and current value of humidity. Congratulations! ;)

<p>By far one of the most frustrating things I've ever tried to do is to get my DHT22 sensor to display on anything! I've tried at least 4 different tutorials using different platforms. They all fail in one form or another. This one looked easy, but it also fails! I've installed, re-installed, read the readme's, whatever you can think of. Can you help? I'm running an RPi 2 Model B v1.1. Here's a screen shot of the result of running &quot;the sudo npm install -g node-dht-sensor&quot; command. </p>
<p>Thanx. How add autostart to rc.local?</p>
<p>Excellent, thanks works like a charm!</p>
<p>Hi </p><p>After following </p><p><a href="https://www.instructables.com/id/Blynk-JavaScript-in-20-minutes-Raspberry-Pi-Edison/?ALLSTEPS" rel="nofollow">https://www.instructables.com/id/Blynk-JavaScript-i...</a></p><p>i get </p><p>module.js:339<br> throw err;<br> ^<br><br>Error: Cannot find module 'node-dht-sensor'</p><p>please help what do I do to fix this.</p><p>Pi2</p>
<p>The problem is with node-dht-sensor 0.0.11 , However 0.0.8 works fine.</p><p>So install the package as </p><p>sudo npm install -g node-dht-sensor@0.0.8 --unsafe-perm=true </p><p>and it should work as charm.</p>
<p>Hi, </p><p>I'm having trouble running any examples and tutorials I've tried, including this one. I keep getting the following output...</p><p>module.js:338<br> throw err;<br> ^<br>Error: Cannot find module 'blynk-library'<br> at Function.Module._resolveFilename (module.js:336:15)<br> at Function.Module._load (module.js:278:25)<br> at Module.require (module.js:365:17)<br> at require (module.js:384:17)<br> at Object.&lt;anonymous&gt; (/usr/local/lib/node_modules/firstjs.js:1:75)<br> at Module._compile (module.js:460:26)<br> at Object.Module._extensions..js (module.js:478:10)<br> at Module.load (module.js:355:32)<br> at Function.Module._load (module.js:310:12)<br> at Function.Module.runMain (module.js:501:10)</p><p>any ideas or tips? :/ </p>
<p>Follow the steps as in http://docs.blynk.cc/#hardware-set-ups-raspberry-pi</p><p>sudo apt-get update &amp;&amp; sudo apt-get upgrade<br>sudo apt-get install build-essential<br>sudo npm install -g npm<br>sudo npm install -g onoff<br>sudo npm install -g blynk-library</p>
<p>If i want to use the blynk local server, how do I enter the local server IP in</p><p> var blynk = new blynkLib.Blynk(AUTH); <br><br>I tried AUTH,&quot;LocalServerIP&quot; but its not working. On the blynk community page they have mentioned about Arduino but not RPI and nodeJS.<br></p>
<p>Hey thanks for the Instructable! Worked great. This was my first time coding on the Raspberry Pi (I'm not good at baby steps). I even managed to convert Celsius to Fahrenheit.</p><p>...</p><p>// Automatically update sensor value every 2 seconds</p><p>setInterval(function() {</p><p> var readout = sensorLib.read();</p><p> var tempF = ((readout.temperature.toFixed(1))*1.8))+32</p><p> blynk.virtualWrite(3, tempF);</p><p> blynk.virtualWrite(4, readout.humidity.toFixed(1));</p><p> console.log('Temperature:', tempF + 'F');</p><p> console.log('Humidity: ', readout.humidity.toFixed(1) + '%');</p><p>}, 2000);</p>

About This Instructable

33,667views

69favorites

License:

More by vshymanskyy:Raspberry Pi + Node.js + Blynk App + DHT11/DHT22/AM2302 Blynk + JavaScript in 20 minutes [Raspberry Pi, Edison, Espruino ...] Control quadcopter from your phone in 30 minutes! [ESP8266 + A7105 + Blynk App for iOS/Android] 
Add instructable to: