Raspberry Pi是一款基于Linux的单板机电脑。它由英国的树莓派基金会所开发,目的是以低价硬件及自由软件刺激在学校的基本计算机科学教育。树莓派配备一枚博通(Broadcom)出产的ARM架构700MHz BCM2835处理器,256MB內存(B型已升级到512MB内存),使用SD卡当作存储媒体,且拥有一个Ethernet、两个USB接口、以及HDMI(支持声音输出)和RCA端子输出支持。树莓派只有一张信用卡大小,体积大概是一个火柴盒大小,可以运行像《雷神之锤III竞技场》的游戏和进行1080p视频的播放。操作系统采用开源的Linux系统如Debian、ArchLinux,自带的Iceweasel、KOffice等软件,能够满足基本的网络浏览、文字处理以及电脑学习的需要。

当然Raspberry Pi也可以成为最佳的IOT的终端设备,通过传感器收集数据,以供后台系统进行分析等。

一.Raspberry Pi的数据采集

本文采用Raspberry Pi 2B,有4个USB接口,一个Ethernet接口,一个HDMI接口,一个MicroSD插槽,一个3.5毫米音频插孔和复合视频,摄像头接口(CSI),显示接口(DSI),另外还有一个40Pin的GPIO接口。

我购买的淘宝链接:

https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-11372085286.12.V3rWzS&id=522217122138

价格在210元左右。

另外,Raspberry Pi的传感器有多种多样。可以通过GPIO的接口进行连接。本文采用的是集成的传感器: Sense Hat。

Sense Hat保护多种传感器:陀螺仪、加速度计、磁力仪、温度、气压、湿度。另外还包含一个8×8 RGB LED matrix和一个Joystick的活动手柄。

我购买的淘宝链接为:

https://item.taobao.com/item.htm?spm=a1z09.2.0.0.MivT32&id=522031087011&_u=7bp4gm8c97

价格在240元左右。

将Sense Hat与Pi连接,然后系统开机上电。默认的操作系统为Linux系统Raspbian,是从Debian演进来的。关于其由来可以参考:

http://arstechnica.com/information-technology/2013/03/how-two-volunteers-built-the-raspberry-pis-operating-system/2/

在Bash Shell中编写Python2.7的程序,获得温度传感器数据:

#!/usr/bin/python

from sense_hat import SenseHat

sense = SenseHat()

sense.clear()

temp = sense.get_temperature()

print(temp)

运行此程序,可以在屏幕上打印目前的温度。

同样,可以通过get_humidity()和get_pressure()等方法获得其他传感器的数值。

具体的Sense-hat的各种python方法,请参考:

https://pythonhosted.org/sense-hat/api/

 

二.在Azure上创建Event Hub、Stream Analytics和SQL Azure DB

1.创建Event hub:

选择Custom create:

填写相应的信息后输入:

这样就创建了Event Hub的一个PaaS的服务。在配置中,创建一个Shared Access Policies:

Save以后可以获得其SharedAccessKey:

2.创建SQL Azure Database

在Azure管理界面中选择SQL DB。在Server中选择Add:

输入用户名和密码。创建SQL Server。

然后选择创建SQL Database:

创建好后,把本机的地址加入SQL的白名单:

使用SQL的客户端连接数据库:

在Options中选择数据库:

登陆后创建table:

Create table [dbo].[hwtest1] (

Time Datetime2 (6) Null,

DeviceId Varchar (16) Null,

Temperature Float (53) Null,

Humidity Float (53) Null

);

GO

Create clustered index [hwtest1] on [dbo].[hwtest1] ([DeviceId] ASC);

3.创建Stream Analytics

创建成功后,在Input中添加Input:

选择Event Hub:

然后添加Event Hub的设置:

在事件格式中选择JSON和UTF8

创建Output:

选择SQL Database,添加SQL的配置:

在Query的设置中加入下面的配置:

这里的DeviceId,Temperature,Humidity等参数必须在Python程序、Stream Analytics和SQL中相同。否则数据将不能取到。

Input、Output和Query设置好后就可以启动此Job了。

三.将Raspberry Pi的数据上传到Azure的Event Hub

在Raspberry Pi上安装Azure的SDK:

pip install azure

安装完成后,更改Azure Service Bus的endpoint。请参考:

https://msdn.microsoft.com/en-us/library/azure/dn578439.aspx

对于Python的endpoint更改:

在/usr/local/lib/python2.7/dist-packages/azure/servicebus/constants.py

修改31行的配置

#SERVICE_BUS_HOST_BASE = '.servicebus.windows.net'

SERVICE_BUS_HOST_BASE = '.servicebus.chinacloudapi.cn'

 

创建Python程序:

#!/usr/bin/python

from azure.servicebus import ServiceBusService

from sense_hat import SenseHat

from time import sleep

import json;

sense = SenseHat()

sbs = ServiceBusService("hwtest", shared_access_key_name="hwtest", shared_access_key_value="xxxxxx=")

while True:

temp1 = sense.get_temperature()

humi = sense.get_humidity()

press = sense.get_pressure()

temp= {'DeviceId': 'dev-01', 'Temperature': temp1, 'Humidity': humi}

sbs.send_event('hwtest', json.dumps(temp))

sleep(60)

调试程序让其后台运行。

四.查看数据

Raspberry Pi运行后,数据将发送到Azure的Event Hub。

在Pi上可以通过tcpdump查看是否有https的包发送:

tcpdump port 443

 

在Stream Analytics上可以查看事件的情况:

如果既有input又有output,说明配置正常。

在Sql客户端上查询:

Select * from hwtest1;

五.通过Excel和PowerBI对数据进行分析

目前Raspberry Pi的数据已经上传到了Event Hub,经过Stream Analytics发送到了SQL Server的表中。用户的展现可以通过Exel,PowerBI实现。

1.Exel的展现:

在Excel中选择数据,选择"自其他来源",选择"来自SQL Server"。

设置SQL Server:

选择相应的数据库和相应的表:

导入数据后,可以选择"插入",选择"数据透视图":

在进行相应的选择后,将显示数据透视图:

2.通过PowerBI实现展现

打开网站: http://powerbi.microsoft.com

下载Desktop的软件,进行安装。

在客户端软件上进行SQL的连接配置:

此时可以看到SQL中的表:

选择import:

选择相应的配置,就可以把数据以折线的形式展现出来:

至此,所有的工作结束。

 

 

 

用Raspberry Pi搭建Azure IOT解决方案的更多相关文章

  1. “云中论道”之——使用开源技术和Azure公有云服务快速搭建云端IoT解决方案(上)

    “云中论道”技术课堂第一课开讲啦!微软各路技术咖们齐聚一堂,为大家带来干货不断!作为“云中论道“课堂的开课之作,我们首先邀请到了微软Azure专家级的架构师:槐长清,他为我们带来了关于“使用开源技术和 ...

  2. 树莓派(Raspberry Pi)搭建简单的lamp服务

    树莓派(Raspberry Pi)搭建简单的lamp服务: 1. LAMP 的安装 sudo apt-get install apache2 mysql-server mysql-client php ...

  3. 利用raspberry pi搭建typecho笔记(一) nginx PHP server quick start

    前言 因为一直对linux学习很有兴趣,就拿手头的树莓派做了实验,搭建一个简易的php服务器用来跑typecho. 但是过程却是异乎寻常的艰辛,几乎每一步能卡住得地方都卡住了.而且typecho的资料 ...

  4. 利用raspberry pi搭建typecho笔记(三) typecho nginx sqlite FAQ

    前言 这是一个汇总文,用来总结我在整个配置过程中遇到的各种问题.因为我在解决这些问题的过程中发现,typecho被部署在这种需要完全自己配置的平台上的情况是比较少的,相关的资料也比较少,所以我的解决过 ...

  5. 利用raspberry pi搭建typecho笔记(二) sqlite和typecho部署

    sqlite概述 typecho可以支持MYSQL和Sqlite两种数据库,因为Sqlite更为轻量,并且不需要额外的进程,而是直接对数据库文件进行读取,所以配置相对于MySQL也更为简单,仅需指定数 ...

  6. 2019 年在 Raspberry Pi 「树莓派」上运行的 10 个操作系统推荐

    原文:2019 年在 Raspberry Pi 「树莓派」上运行的 10 个操作系统推荐 image Raspberry Pi** 是一款基于 ARM 的单板计算机,默认运行一款称为 Raspbian ...

  7. Azure IoT Edge on Raspberry Pi 3 with Raspbian

    在<Azure IoT Edge on Windows 10 IoT Core>一文中,我们以运行Windows 10 IoT Core的MinnowBoard MAX为例,详细讲述了Wi ...

  8. 如何在Raspberry Pi 3B中安装Windows 10 IoT Core

    Windows 10 IoT Core简介 Windows 10 IoT是微软专门为物联网生态打造的操作系统,Windows 10 IoT Core则是Windows 10 IoT 操作系统的核心版本 ...

  9. Windows Iot:让Raspberry Pi跑起来(1)

    首先请大家原谅我的"不务正业",放着RabbitHub不写,各种系列的文章不写搞什么Iot,哈哈,最近心血来潮想搞个速度极快的遥控车玩,望着在角落的Raspberry Pi恶狠狠的 ...

随机推荐

  1. AFN多文件进度下载

    AFN参考资料 http://www.jianshu.com/p/c36159094e24 http://blog.cnbang.net/tech/2320/http://blog.cnbang.ne ...

  2. 【android】在Service的onStartCommand()中调用stopself()应该注意的问题

    在Service的onStartCommand()中调用stopself()后并不会立马destroy掉service,而是等onStartCommand()运行完才destroy. public c ...

  3. 还原sqlserver2008 r2 数据库步骤

    1: 有备份文件bak 文件(是在sqlserver2008 r2上备份的) 数据库下载地址(讯雷) ed2k://|file|cn_sql_server_2008_r2_express_with_m ...

  4. 【HTTP】HTPP学习笔记

    1.了解web及网络基础 HTTP的诞生 TCP/IP协议族 应用层 FTP文件传输协议 HTTP超文本传输协议 DNS域名系统:IP地址<--->域名 传输层 TCP传输控制协议 三次握 ...

  5. 使用基本 SQL 命令

    概述 在本教程中,将学习结构化查询语言 (SQL),包括: 使用基本 SQL 命令 执行基本数据操做 数据库和 SQL 在本系列教程中,目前我们使用平面文本文件来存储数据.平面文本文件可能适合相对较少 ...

  6. 阿里云 rails nginx 配置https访问

    1.申请免费型dv ssl证书:https://common-buy.aliyun.com/?spm=a2c4e.11155515.0.0.7zzvOZ&commodityCode=cas#/ ...

  7. Python lambda 匿名函数

    lambda [arg1[, arg2, ... argN]]: expression Python使用lambda关键字创造匿名函数.所谓匿名,意即不再使用def语句这样标准的形式定义一个函数.这种 ...

  8. castle windsor学习-----XML Inline Parameters 内联参数

    当使用XML配置的时候,可能要给组件指定各种各样的依赖 1.简单的参数 参数名称不区分大小写 <component id="ping" type="Acme.Crm ...

  9. 算法(Algorithms)第4版 练习 1.3.3

    (a) 4 3 2 1 0 9 8 7 6 5 (b) 4 6 8 7 5 3 2 9 0 1 (c) 2 5 6 7 4 8 9 3 1 0 (d) 4 3 2 1 0 5 6 7 8 9 (e) ...

  10. 英语发音规则---字母组合oo的发音规律

    英语发音规则---字母组合oo的发音规律 一.总结 一句话总结:在英语单词中,字母组合oo多数读长音/u:/,少数读短音/ʊ/.另外,还有极少数的特殊情况读/ʌ/, 在英语单词中,字母组合oo多数读长 ...