Category Archives: Uncategorized

Microbit

IoT Using Raspberry Pi 3 and Thunderboard Sense

I am going to share with you something amazing using Silicon Labs Thunderboard Sense Kit, Thingspeak IoT Platform and My favorite Raspberry Pi 3.

Thunderboard Sense is tiny but Swiss Knife of Sensors. Trust me it is! It has Relative Humidity and Temperature Sensor, UV and Ambient Light Sensor, Pressure Sensor, Indoor Air Quality and Gas Sensor, 6-axis Inertial Sensor and MEMS Microphone including BLE capability.

Here I am going to show you how to get Temperature, Humidity and Battery Level data from Thunderboard Sense to Thingspeak through Raspberry Pi’s BLE and Internet connectivity. Check out this video.

Thunderboard Sense transmits all the Sensor values with its original shipped firmware. You can try to connect with it using following Thunderboard Android or iPhone App. It will shows all the Sensor values periodically.

Thingspeak is very easy to use platform. I have created my channel there with three fields. It gives you unique API key using which you can push data to cloud and on Thingspeak you can view the graph of your logged data. There is limit on it so you can push data once at every 15 seconds only.

As I want to read Battery Level, Temperature and Humidity, I have found out those three BLE characteristics first and then read it. It will read parameters at every 1 second from device and collect it and then after push to cloud at 15 second interval.

Here is the python code for Raspberry Pi 3 to connect with Thunderboard Sense Kit using BLE, Read data and push to Cloud.

from __future__ import division
import sys
from bluepy.btle import *
import struct
import thread
from time import sleep
import urllib2

PRIVATE_KEY = 'Your unique API Key Goes Here'

#Base URL of Thingspeak
baseURL = 'https://api.thingspeak.com/update?api_key='

def vReadSENSE():
	scanner = Scanner(0)
	devices = scanner.scan(3)
	for dev in devices:
		print "Device %s (%s), RSSI=%d dB" % (dev.addr, dev.addrType, dev.rssi)

		for (adtype, desc, value) in dev.getScanData():
			print "  %s = %s" % (desc, value)
	num_ble = len(devices)
	print num_ble
	if num_ble==0:
		return None
	ble_service = []
	char_sensor = 0
	non_sensor = 0
	bat_char = Characteristic
	temperature_char = Characteristic
	humidity_char = Characteristic
	count = 15
    
	for i in range(num_ble):
		try:
			devices[i].getScanData()
			ble_service.append(Peripheral())
			ble_service[char_sensor].connect(devices[i].addr,devices[i].addrType)
			char_sensor = char_sensor + 1
			print "Connected %s device with addr %s " % (char_sensor, devices[i].addr)
		except:
			non_sensor = non_sensor + 1
	try:
		for i in range(char_sensor):
			
			services = ble_service[i].getServices()
			characteristics = ble_service[i].getCharacteristics()
			for k in characteristics:
				print k
				if k.uuid=="2a19":
					print "Battery Level"
					bat_char = k
				if k.uuid == "2a6e":
					print "Temperature"
					temperature_char = k
				if k.uuid == "2a6f":
					print "Humidity"
					humidity_char = k
			
	except:
		return None
	while True:
		bat_data = bat_char.read()
		bat_data_value = ord(bat_data[0])
		
		temperature_data = temperature_char.read()
		temperature_data_value =(ord(temperature_data[1])<<8)+ord(temperature_data[0])
		float_temperature_data_value = (temperature_data_value / 100)
		
		humidity_data = humidity_char.read()
		humidity_data_value =(ord(humidity_data[1])< 14:
			f = urllib2.urlopen(baseURL + PRIVATE_KEY +"&field1=%s&field2=%s&field3=%s" % (bat_data_value, float_temperature_data_value, humidity_data_value))
			print f.read()
			f.close()
			count = 0
		count = count + 1 
		sleep(1)

while True:
	vReadSENSE()

Testimonial – Client, Malaysia

Good work

-Client, Malaysia

RF Bridge

RF Bridge is a small-sized device which replaces wired serial data connection between two node/device with wireless communication. Design includes Microchip PIC18 microcontroller interfaced with wireless module to establish wireless link. It is designed to support Hope RF wireless modules specifically Sub GHz RFM22B, RFM12B and 2.4 GHz RFM70.
RF Bridge Top viewDifferent connectors on board provides easy replacement of Hope RF wireless modules. Developer can program firmware according to Hope RF wireless module they want to select based on application area, desired range and permitted frequency. On board LEDs can be used to indicate the communication status between two wireless nodes.

RF Bridge is highly suitable for various application areas like,

  • Home security and automation
  • Industrial control
  • Wireless data logging
  • Small scale wireless display
  • Health monitoring
  • Toy control via PC