1、嵌入式综合实践设计报告目录一、 树莓派简介 .3二、 配置树莓派 .31. 树莓派供电 32. 手动对 SD存储卡进行写操作(windows) .33. 连接笔记本电脑显示器 .3三、 硬件电路连接 7四、 DHT11简介 7五、 获取 DHT11传感器温湿度 .8六、 安装本地 MYSQL10七、 连接阿里云 RDS数据库 .11八、 上传数据到传感云 .13九、 Cron 实现定时功能 14一、 树莓派简介Raspberry Pi(中文名为“树莓派”,简写为 RPi,或者 RasPi/RPi)是为学生计算机编程教育而设计,只有信用卡大小的卡片式电脑,其系统基于 Linux。随着 Windo
2、ws 10 IoT 的发布,我们也将可以用上运行 Windows 的树莓派。自问世以来,受众多计算机发烧友和创客的追捧,曾经一“派”难求。别看其外表“娇小”,内“心”却很强大,视频、音频等功能通通皆有,可谓是“麻雀虽小,五脏俱全”。二、 配置树莓派1. 树莓派供电树莓派的供电装置与智能手机的充电器是一样的。基本规格为 DC 5V(直流电),至少达到 700mA 的输出电流,树莓派 2 的输出电流应该更大,比如 1.5A 或 2A。2. 手动对 SD存储卡进行写操作(windows)选择一张 4GB 以上的 SD 存储卡,SD 卡插入笔记本电脑卡槽(或者需要一个读卡器)。下载官方发行的树莓派操作
3、系统发行包(http:/www.raspberrypi.org/downloads),并解压到本地。用管理员权限打开 Fedora ARM Installer(http:/bit.ly/ISLPc4 下载),将下载的镜像写入 SD 存储卡。如下图:3. 连接笔记本电脑显示器 网络设置:SD 卡插入树莓派的 SD 卡插槽,把树莓派和路由器用网线连接。打开电脑“网络和共享中心”,点击“WLAN(*)”点击“属性”,点击“共享”,在“允许其他网络用户通过此计算机的 Internet 来连接”前打勾。 查找树莓派 IP 地址:打开“运行”(win+R 键),输入 cmd”,输入“arp -a”,在下图
4、中的 0x4 接口下的动态地址就为树莓派的 IP 地址。 下 载PuTTy,在 Host Name 中输入树莓派 IP, 登入树莓派:在下图页面中 login 处输入树莓派账号(pi),在 password 处输入密码(raspberry)。回车进入下图页面 树莓派的桌面环境配置:在上 putty 中输入 sudo apt-get update; sudo apt-get install tightvncserver。安装完成 vnc 服务后,在上图中继续输入以下命令:vncserver :1 (一定要创建连接端口)。在第一次运行时,会提示你创建密码。在连接时就需要此密码。下载 RealVNC
5、(http:/),在下图中输入树莓派 IP:1(如 192.168.0.113:1。在下图中输入上面创建的密码进入树莓派桌面三、 硬件电路连接DHT11 与树莓派引脚图如下:具体电路连接如下 DHT11 的 VDD 连接树莓派 17 号管脚,GND 连接 20 号管脚,DATA 连接18 号管脚。实物图如下:四、 DHT11 简介数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。DATA 用于微处理器与 DHT11 之间的通讯和同步,采用单总线数据格式,一次通讯时间 4ms 左右,数据分小数
6、部分和整数部分,具体格式在下面说明,当前小数部分用于以后扩展,现读出为零.操作流程如下:一次完整的数据传输为 40bit,高位先出。数据格式:8bit 湿度整数数据+8bit 湿度小数数据+8bi 温度整数数据+8bit 温度小数数据+8bit 校验和数据传送正确时校验和数据等于“8bit 湿度整数数据+8bit 湿度小数数据+8bi 温度整数数据+8bit 温度小数数据”所得结果的末 8 位。DHT11 发送响应信号,送出 40bit 的数据,并触发一次信号采集,用户可选择读取部分数据.从模式下,DHT11 接收到开始信号触发一次温湿度采集,如果没有接收到主机发送开始信号,DHT11 不会主
7、动进行温湿度采集.采集数据后转换到低速模式。通讯过程如图所示五、 获取 DHT11 传感器温湿度采用 Python 语言实现温湿度的获取,每执行一次程序读取一次温湿度的值。采用putty 中的 nano 编辑器完成汇编。步骤如下: 登入树莓派,获取 root 权限 进入 nano 编辑器,编辑 Python 程序,程序如下:#! /usr/bin/env pythonimport RPi.GPIO as GPIO import time channel = 12data = j = 0GPIO.setmode(GPIO.BCM)time.sleep(1)GPIO.setup(channel,
8、GPIO.OUT)GPIO.output(channel, GPIO.LOW)time.sleep(0.02)GPIO.output(channel, GPIO.HIGH)GPIO.setup(channel, GPIO.IN)while GPIO.input(channel) = GPIO.LOW:continuewhile GPIO.input(channel) = GPIO.HIGH:continuewhile j 100:breakif k 8:data.append(0)else:data.append(1)j += 1print “sensor is working.“print
9、datahumidity_bit = data0:8humidity_point_bit = data8:16temperature_bit = data16:24temperature_point_bit = data24:32check_bit = data32:40humidity = 0humidity_point = 0temperature = 0temperature_point = 0check = 0for i in range(8):humidity += humidity_biti * 2 * (7 - i)humidity_point += humidity_point
10、_biti * 2 * (7 - i)temperature += temperature_biti * 2 * (7 - i)temperature_point += temperature_point_biti * 2 * (7 - i)check += check_biti * 2 * (7 - i)tmp = humidity + humidity_point + temperature + temperature_pointif check = tmp:print “temperature : “, temperature, “, humidity : “ , humidityels
11、e:print “wrong“print “temperature : “, temperature, “, humidity : “ , humidity, “ check : “, check, “ tmp : “, tmpGPIO.cleanup() 保存(Ctrl+O)并退出(Ctrl+X) 执行此程序(dht11.py):python dht11.py六、 安装本地 MYSQL 使用管理员权限运行 apt-get 获取最新的 MySQL 及 Python 编程接口(之后用于数据库编程):sudo apt-get install mysql-server python-mysqldb安
12、装过程中需要输入 root 管理员的密码,该密码之后用于访问数据库系统。在本地 MYSQL 创建库“test”,表“dht”和三个列“dht_tem”,“dht_hum”,“dht_time”。mysql -u root p ;登入本地 MySQLcreate database test ; 创建数据库”test”USE test ; 选择数据库”test”create table dht ;创建表“dht”CREATE TABLE dht(dht_tem DECIMAL(4,1), dht_hum DECIMAL(4,1),dht_time char(25) ;创建列“dht_tem”,“d
13、ht_hum”,“dht_time”完成后查看建好的表“dht”,如下图所示: 在之前的 dht11.py 中添加如下几段语句:import MySQLdbconn = MySQLdb.connect(host=localhost,port=3306,user=root,passwd=QAZQAZ,db=test)cur = conn.cursor()value = temperature,humidity,str(time.strftime(%A %X %Z,time.localtime(time.time()cur.execute(“insert into dht (dht_tem,dht
14、_hum,dht_time) values(%s,%s,%s)“,value)mit()conn.rollback() 执行 dht11.py:python dht11.py 按照之前数据库的操作方法,可在本地数据库 MySQL 查看到新插入的温湿度数据。如下图所示(已执行多次程序):七、 连接阿里云 RDS 数据库云服务器和云数据库 RDS:云服务上安装了下 mysql,在云盾里开放 3306 端口,远程同样能够正常连接数据库,但云服务器里搭建数据库可能不如云数据库来的稳定,云数据库更易维护。利用实名账户在阿里云试用一个月的免费云数据库。具体操作如下: 申请阿里云试用一个月的免费云数据库 登
15、入阿里云 RDS,创建账号”dht_zzx”和创建数据库”dht” 登入自己创建的数据库“dht”,创建表“dht11”和三个列“dht_tem”,“dht_hum”,“dht_time”。结果如下: 设置白名单:0.0.0.0/0 即不设置访问限制;连接信息改为切换外网模式,并将外网地址 保存好。 在 dht11.py 中添加如下程序:import requestsimport jsondb = MySQLdb.connect(host=,port=3306,user=dht_zzx,passwd=qaz123,db=dht)cur_db = db.cursor()cur_db.execu
16、te(“insert into tb_dht (dht_tem,dht_hum,dht_time) values (%s,%s,%s)“,value)mit()运行程序,打开阿里云数据库,观察结果,如下:八、 上传数据到传感云 申请传感云账号 添加一个设备“dht11 温湿度采集”,添加两传感器“dht11 温度”,“dht11 湿度”,得到传感器 ID 分别为:565274cce4b0932584ded623,5652756ee4b0932584ded624; 在个人中心查看自己的密钥:c0b419675b8955d2866e224e448b06e1;在 API 文档的插入数值型传感器数据点
17、查看URL:http:/ dht11.py 中添加如下程序:#wenduapiurl = http:/ temperaturer = requests.post(apiurl, params=apiheaders)Print (r.text)# shiduapiurl = http:/ humidityr = requests.post(apiurl, params=apiheaders)Print (r.text)运行程序,打开阿里云数据库,观察结果,如下:九、 Cron 实现定时功能Putty 下运行如下程序:Sudo crontab e */1 * * * * /home/pi/zzx/dht.py ;每分钟后台运行 dht11.py 一次。