
基于树莓派温度采集存储显示系统.pdf
51页《嵌入式综合实践》《嵌入式综合实践》 设计报告设计报告 设计题目:设计题目: 基于基于 RaspberryRaspberry PiPi B+B+的温度采集、存储、显示系统的温度采集、存储、显示系统 班 级: 信息工程 2012-04 班 姓 名: 陈 岩 学 号: 04121471 姓 名: 陈灿坚 学 号: 04121470 姓 名: 郭镭斌 学 号: 04121474 姓 名: 刘 杨 学 号: 04121494 指导教师: 李 健 时 间: 2015 年 6 月 目录 一、 设计任务 . 3 二、 设计方案 . 3 三、设计原理及内容 . 5 (一)树莓派初始配置 . 5 (二)数据的采集 . 13 (三)数据的存储 . 15 (五)数据的显示 . 20 (六)数据的修改 . 26 (七)新浪云端应用申请创建 . 27 (八)数据上传与云端接收 . 30 (九)本地和云端数据库实现同步删除与修改 . 33 (十)互联网显示数据折线图 . 34 (十一)Android 客户端 . 38 四、 设计成果 . 40 五、 设计总结 . 41 六、 参考文献 . 43 附录 1:实践日志: 44 附录 2:源程序,见文件夹 51 一、一、 设计任务设计任务 开发一套基于树莓派 2、及 DS18B20 温度传感器的信息采集存储显示系统, 相关参数要求如下: 1.在 Linux 下每隔 30 秒自动采集一次温湿度信号; 2.使用数据库 MySQL 在本地存储 8 个小时的温度信号; 3.使用新浪云的 MySQL 数据库存储温湿度信号; 4.编写客户端(PC 或 Android 与网页形式)访问数据库实现读取数据、删 除数据等操作,并以曲线表方式显示。
二、二、 设计方案设计方案 系统整体框图如图 2-1 所示 图 2-1 系统硬件框图 为实现项目设计要求,本次设计采用 Python、PHP、MySQL、Apache2、HTML 等相关软件及编程语言进行开发 开发硬件要求: 树莓派 B+板一块、DS18B20 温度传感器及驱动板一块、网线一根、路由器一 个、电源设备 软件及编程要求: Python 语言、PHP 编程语言、Apache2、MySQL 语言、MySQL 数据库、新浪云 SAE 环境,HTML 本系统采用主要采用 Python 语言编写,对 DS18B20 温度传感器进行读取并 路由器 PC 用户 Android终端 ………… ………… ………… …… 树莓派 DS18B20 网线 互联网 写入本地 MySQL 数据库和新浪云数据库另外在本地利用 Python 语言编写客户 端对本地数据库进行读取并以折线图形式绘制出温度记录变化趋势图利用 PHP 语言结合 LAMP(Linux+Apache+MySQL+PHP/Python)环境实现对本地数据库内的 记录进行显示数值显示与修改删除等操作另外, 在新浪云端利用 PHP 语言编写 程序对本地上传数据进行存储,并结合 HTML 技术实现数据的显示操作,在最终 为方便远程显示,结合 Android 客户端,实现对新浪云应用网页的固定显示,达 到观察温度数据变化的目的。
软件实现框图如图 2-2 所示 图 2-2 软件实现框图 数 据 新浪云 PHP 接收指令 指令 Python 语言 读取温度数据 本地MySQL数据库 新浪云 MySQL 数据库 新浪云 PHP 语言 接收温度数据 Python 客户端 折线显示 PHP 网页数值显 示、修改、删除 PHP 网页折线图 显示 HTML+Javascript Android WebView 控件 三、三、设计原理及内容设计原理及内容 (一)(一)树莓派树莓派初始初始配置配置 1. 系统下载 登陆https://www.raspberrypi.org/downloads/,点击 DOWNLOADS, 下载树莓派的系统 2. 解压 系统下载完成后,将得到的压缩文件进行解压,得到名为“win32diskimager (镜像写 U 盘工具) ”的文件夹 3. 烧写系统 打 开 “ win32diskmigager ( 镜 像 写 U 盘 工 具 ) ” 文 件 夹 , 找 到 Win32DiskImager.exe 可执行文件,双击运行 说明: 此处最好采用完全版,网上有部分仅有.exe 文件,无法使用 选择刚下载的镜像文件,病选择目标内存卡,点击“写”按钮,等待烧写完 成。
4. 硬件搭建 将 SD 卡插入树莓派卡槽,连接网线至路由器接口,并给电源供电 5. 查看树莓派 IP 地址: 通过路由管理器查看名为 raspberry 的 IP 地址 绑定树莓派的 MAC 地址和 IP 6. Putty 配置 首次登陆需要用 SSH,双击“putty.exe”文件,在弹出的对话框中输入主机 IP 地址:192.168.1.110 7. 安装远程桌面 在命令窗口中 login as:后输入 pi,输入密码:raspberry 输入 sudo apt-get install xrdp,安装远程桌面 8. 设置 root 用户及密码 sudo passwd 9. 远程登陆 1)利用 Windows 搜索运行 “远程桌面” 2) 在弹出的对话框中输入计算机 IP 地址, 即树莓派 IP 地址: 192.168.1.110, 点击“连接” 3)输入 username:root,password:********,点击“OK”按钮,出现如 下图所示的界面,随后进入到树莓派的远程桌面 10. 使用 SD 卡剩余空间 方法一: 8GB microSD 在 Windows 下使用 Win32 Disk Imager 下载映像后,在 RPi 中只 能识别出 2.9GB,如下图所示。
通过下面 11 条命令剩余的空间还原出来: 命令解释: ① 查看当前磁盘大小,总大小只有 2.9GB ② 查看第二分区的起始地址,后面会用到 ③ 使用 fdisk 操作磁盘 ④ d,删除分区 ⑤ 2,删除第二分区 ⑥ 创建一个新分区 ⑦ 创建主分区 ⑧ 分区 2 ⑨ 输入第一次得到的第二分区起始扇区 ⑩ 最后一个 sector,默认即可 ⑪ 将上面的操作写入分区表 设置完成需要重启,sudo reboot 重启完成,使用 df -h 查看发现空间并没有增大,还需要输入 resize2fs /dev/mmcblk0p2等待一会儿操作完成,再次使用 df -h 查看发现空间已变大成 7.2GB 方法二: 输入命令 raspi-config,选择第一项,回车确认 11. 配置服务器环境 (1)安装 Apache Apache 可以用下面的命令来安装: sudo apt-get install apache2 Apache 默认路径是/var/www/,其配置文件路径为: /etc/apache2/重启服 务生效:sudo service apache2 restart (2)安装 mysql sudo apt-get install mysql-server 安装过程中,会出现一个提示符让你输入一个密码,这个密码是 mysql root 用户的密码。
(3)安装 PHP 输入下面的命令,就可以安装 PHP 5,以及 PHP 访问 mysql 数据库所需要的 库 sudo apt-get install php5 sudo apt-get install php5-mysql (4)测试 装完成后, 可以在连接到树莓派所在局域网的其他电脑或的浏览器中输 入树莓派的 IP 地址,就可以访问网站了此时能看到一个页面显示“It works”, 但是没有其它内容 创建一个/var/www/index.php (二)数据的采集(二)数据的采集 由于树莓派操作系统 Dccidentalis 和 2012 年 12 月以后 Raspbian 系统已经能 够支持 DS18B20 单总线(1-wire)温度传感器DS18B20 温度传感器是由半导体 包装的头和三个引脚组成的一种精确的数字设备 1. 硬件部分硬件部分 温湿度传感器的硬件部分包括:树莓派开发板,DS18B20 传感器,杜邦线 3 根 接线: VCC 接 5V 的 GPIO 接口 GND 接 GND 的 GPIO 接口 DQ 接 GPIO18 的 GPIO 接口 2. 软件部分:软件部分: 本次项目设计选用 Python 语言操作 GPIO 口,可简化程序结构,方便后面的 数据存储显示以及程数据的上传功能的实 (1)修改 Config.txt 配置文件: 由于升级后的内核, 为防止 GPIO 冲突, 使用了新的 dt 策略, 可能找不到 28- ***文件夹,所以通过修改 Config.txt 配置文件解决这个问题,修改如下: boot/config.txt 配置文件的最后添加:dtoverlay=w1-gpio-pullup,gpiopin=18(根据 自己实际接的管脚而定) 。
(2)安装单总线驱动: 在 网站下载单总线设备驱动压 缩包并解压(在 Linux 下可用 unzip 命令解压 zip 压缩包)安装 (3)升级内核(如果已经升级过可直接逃过此步) : apt-get updata apt-get upgrade (4)确认设备生效:生效后可找到 28-*****的文件夹 sudomodprobe w1-gpio sudomodprobe w1-therm cd /sys/bus/w1/devices/ ls (5)查看当前温度: cd 28-****(此为 ls 查看的文件夹,各个 DS18B20 设备有自己的设备号) cat w1_slave(t/1000 即为当前温度值) (6)测试成功后,编写连续监测程序,采用 Python 语言操作 GPIO: import glob import time device_folder = glob.glob('/sys/bus/w1/devices/'+ '28*')[0] device_file = device_folder + '/w1_slave' def read_temp(): f = open(device_file, 'r') lines = f.readlines() f.close() equals = lines[1].find('t=') temp_string = lines[1][equals+2:] temperature = float(temp_string) / 1000.0 return temperature while True: print(‘Current temperature: %.2f’ %read_temp()) time.sleep(1) (三)(三)数据的存储数据的存储 1. MySQL 简介简介 (1) 数据在数据库中的存储方式: 表中的一行称之为一条记录,表中的一条记录对应一个对象的数据。
(2) 常用操作的实现 1)数据库操作 创建数据库: create database [if not exeits] db_name 查看、删除数据库: 显示数据库语句:show databases 显示数据库创建语句:show create databases db_name 数据库删除语句:drop datebase[if exeits] db_name 修改、备份、回复数据库:alter database [if not exeits] db_name 2)表操作 创建表:creat table table_name (field1 datatype, field2 datatype, field3 data。
