基于物联网的体感式智能腰带

Similar documents
1. 請 先 檢 查 包 裝 內 容 物 AC750 多 模 式 無 線 分 享 器 安 裝 指 南 安 裝 指 南 CD 光 碟 BR-6208AC 電 源 供 應 器 網 路 線 2. 將 設 備 接 上 電 源, 即 可 使 用 智 慧 型 無 線 裝 置 進 行 設 定 A. 接 上 電 源

untitled

自然辩证法索引

AN INTRODUCTION TO PHYSICAL COMPUTING USING ARDUINO, GRASSHOPPER, AND FIREFLY (CHINESE EDITION ) INTERACTIVE PROTOTYPING

Panaboard Overlayer help

Microsoft Word - Atmel-45136A-Pick-Best-Microcontroller-Strom-Eiland-Flodell_Article_CS

Applied Biosystems StepOne™ Real-Time PCR System Quick Reference Card for Installation

LH_Series_Rev2014.pdf

2

bingdian001.com

* * 2

an153f

(Load Project) (Save Project) (OffLine Mode) (Help) Intel Hex Motor

新・解きながら学ぶJava

Microsoft Word _4.doc

Microsoft PowerPoint - L17_Inheritance_v4.pptx

<4D F736F F D20D4D3D6BECEC4B8E5C4A3B0E52E646F63>

Arduino 1-1 Arduino 1-2 Arduino 1-3 Arduino IDE

Windows RTEMS 1 Danilliu MMI TCP/IP QEMU i386 QEMU ARM POWERPC i386 IPC PC104 uc/os-ii uc/os MMI TCP/IP i386 PORT Linux ecos Linux ecos ecos eco

Microsoft Word - Xinhua Far East_Methodology_gb_2003.doc

HMI COM1 RS SIEMENSE S7-200 RS485

LSC操作说明


Microsoft Word - A _ doc

:5-6

epub83-1

84

untitled

Chn 116 Neh.d.01.nis

ebook 86-15

MICROCHIP EVM Board : APP APP001 PICmicro Microchip APP001 40pin PDIP PICmicro Design Tips Character LCM Temperature Sensor Application I/O Pi

Microsoft Word - CX VMCO 3 easy step v1.doc

EPSON Easy Interactive Tools Ver.4.2 Operation Guide

C/C++ - 函数

Bus Hound 5

% 6.% 9.6% % 7.% 1.8% % 68.7% 14.5% : 15.8% 57.9% 4.7%

QQGQ2.E Power Supplies, Information Technology Equipment Including Ele... 1/10

软件自由法律中心 GPL 软件许可证合规指导

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File


电子技术基础 ( 第 版 ) 3. 图解单相桥式整流电路 ( 图 4-1-3) 电路名称电路原理图波形图 整流电路的工作原理 1. 单相半波整流电路 u 1 u u sin t a t 1 u 0 A B VD I A VD R B

C语言的应用.PDF

1 2

C++ 程式設計

C/C++ - 文件IO

( Version 0.4 ) 1

這 是 醫 生 在 小 兒 的 初 步 診 斷 的 判 語 這 樣 的 一 段 話, 令 我 望 子 成 龍 的 美 夢 碎 了 醣 豆 豆 大 夢 想 十 一 年 前 的 資 訊 沒 有 今 天 的 發 達, 互 聯 網 還 是 一 個 很 奢 侈 的 東 西, 加 上 黏 多 醣 症 這 個 罕

JLX

經濟部智慧財產局

2000 / / % 0.035% % % % 3 2 ETF creation / redemption TTT ETF 3 / -1 2

AI-AUTO-011 Saflex® Advanced PVB - Color Interlayer (Chinese)

C/C++程序设计 - 字符串与格式化输入/输出

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP: ******************* * 关于 Java 测试试题 ******

公共圖書館利用教育方案規劃之研究


<4D F736F F D B0EABB79A4E5B8D5C344BBBCB065AAA9>


康體藝術

ebook70-14

目 录

Tel: , Fax: STR-15 STR bps 2400bps 4800bps 9600bps STR : 500mW 2.ISM 433

Microsoft Word - GJPHV3N2-4.doc

% 29.9%.7% % 2% 2.1% % 45.2% 4.9% % 42.5% 14.8% % 41.5% 23.4%... 2

Microsoft Word - PHP7Ch01.docx

湖 南 蓝 皮 书 电 子 政 务 障 体 系 项 目 建 设 提 出 了 明 确 的 要 求, 制 订 了 具 体 的 实 施 方 案 目 前, 全 省 资 金 场 地 人 员 已 按 要 求 基 本 到 位, 省 局 正 在 全 力 组 织 督 促 和 实 施 2 完 成 全 省 统 计 联 网

CC213

输电线路智能监测系统通信技术应用研究

PowerPoint Presentation

国学思想与大学数学

Microsoft Word - A_Daily

Microsoft Word - A_Daily

CC213

Microsoft Word - 01李惠玲ok.doc

用户大会 论文集2.2.doc

Contents

哺 餵 母 乳 - 對 媽 咪 的 好 處 1. 藉 由 寶 寶 吸 吮 乳 房, 可 刺 激 媽 咪 子 宮 收 縮 預 防 產 後 出 血 及 幫 助 子 宮 的 恢 復 2. 幫 助 媽 咪 儘 快 恢 復 窈 窕 好 身 材 3. 母 乳 餵 越 久 者, 停 經 前 乳 癌 機 會 越 少

Microsoft Word - Functional_Notes_3.90_CN.doc

目录 一 项目背景 背景及创新点 功能简介... 3 二 作品介绍 基于手机的蓝牙控制 ) 硬件设计 ) 电路原理图 ) 软件设计 ) 软件流程图 ) Arduino 程序源代码

SPMC75F2413A_EVM_使用说明_V1.2.doc

FY.DOC

外围器件-new.cdr

Microsoft Word - A_Daily

A Preliminary Implementation of Linux Kernel Virus and Process Hiding

chp6.ppt

三維空間之機械手臂虛擬實境模擬

穨control.PDF

恩 典 课 堂 教 学 概 览 课 堂 环 节 持 续 时 间 活 动 所 需 材 料 1 欢 迎 持 续 在 门 口 欢 迎 学 生, 聆 听 他 们 分 享 本 周 开 心 或 烦 恼 的 事 预 备 活 动 <10 分 钟 A 猜 猜 是 谁 B 上 帝 的 礼 物 无 孩 子 们 的 儿 时

团 契 就 体 力 来 说, 参 孙 乃 是 地 上 极 强 壮 的 人 ; 但 在 自 制 忠 贞 和 坚 稳 上, 他 却 是 人 间 最 软 弱 的 了 先 祖 与 先 知 第 页 教 室 布 置 见 第 一 课 课 堂 教 学 概 览 课 堂 环 节 持 续 时 间 活 动

TangBeilee_EBOOK-29MAY12

次世代のITインフラ“Compute”を先取り!HPが統合型アプライアンス「HP ConvergedSystem」を推進する理由

國立中山大學學位論文典藏.PDF

AL-M200 Series

V. PID PID...0

WTO

「人名權威檔」資料庫欄位建置表

大陸教育部等6個部門公佈「現代職業教育體系建設規劃 ( 年)」規劃到2015年初步形成現代職業教育體系框架,到2020年基本建成「中國」特色現代職業教育體系

资 讯 速 递 台 基 于 大 数 据 的 学 校 督 导 评 估 系 统 建 设 上 海 市 闵 行 区 人 民 政 府 教 育 督 导 室 ( 摘 要 ) 闵 行 教 育 在 深 化 教 育 改 革 探 索 管 办 评 分 离 的 背 景 下, 把 教 育 督 导 评 估 系 统 建 设 作 为

浙江师范大学2014年度毕业生就业质量报告

目 录 监 管 资 讯 2016 年 全 国 保 险 监 管 工 作 会 议 召 开...3 协 会 动 态 赤 峰 保 险 行 业 协 会 召 开 数 据 统 计 和 信 息 宣 传 总 结 表 彰 会 议...5 赤 峰 市 保 险 行 业 协 会 秘 书 处 召 开 2015 年 度 述 职

Transcription:

基于 arduino 的多功能智能腰带 课程设计报告 目录 : 摘要 I ABSTRACT I 一课程设计目的 1 二用途与功能 1 三硬件设计思想 电路图及硬件单元设计 1 四 软件设计思想及代码参考资料 2 五 系统测试过程及测试数据 7 六 设计所需的全部资源 9 七 最终成果 9 组内成员 : 闫姣婕 费小靓 张涵 I

关键词 :Arduino 导航 蓝牙 电子罗盘 摘要 用户在手机客户段规划好行驶路线后, 蓝牙模块将实时传递路线信息至 Arduino, 结合电子罗盘测量到的人体实时方位信息, 单片机可发出适当的转向命令, 控制智能腰带中不同方位的震动马达工作以提醒用户 同时, 该腰带还可提示用户来电和新短消息 ABSTRACT After users planned route on the mobile client, a real information will transmit to Arduino via Bluetooth module, combined with the real-time location information of human body measured by electronic compass module, the MCU may issue appropriate steering commands to control the vibration motors which are fixed in certain directions of intelligent belt to alert users. Meanwhile, the belt may also inform users of incoming calls and new short messages. I

一 课程设计目的 通过课程设计的实践, 进一步提高我们的动手实践能力, 查找资料的能力, 自我纠错的能力 掌握单片机应用系统的知识, 锻炼团队分工合作与协调能力 二 用途与功能 人们在马路上行进时查看地图并不是很方便, 尤其是在车辆较多的地方查找地图会分散注意力, 甚至会引发安全问题 因此, 我们设计了一款可以通过振动给行人指路的的智能腰带, 以方便人们的出行 使用者可以通过手机客户端规划好行驶路线, 然后带上智能腰带就可以上路啦 在没有提示的时候保持直行, 需要拐弯的时候会有相应一侧的振动提示, 这样就避免了行人在陌生的地域里需要经常停下来查看地图以判断自己是否需要拐弯, 也进而在一定程度上保障了行人的安全 同时, 该腰带还可以提示用户有来电和新短信消息 静音模式下人们不易察觉手机信息提示, 设计腰带震动功能, 可有效避免手机离身体太远而察觉不到手机机体震动, 且设计了不同的方式以方便区别是来电还是短信息 ( 一 ) 硬件设计思想 : 三 硬件设计思想 电路原理图及硬件单元设计 利用百度地图 API 里的 Android 导航 SDK, 通过写 APP, 接收百度地图 API 提供的路径信息, 通过电子罗盘可以及时输入你面前的方向与北的夹角大小, 将数据传输入 Arduino 同手机 APP 里传输出路线信息相比较, 经过微控制器处理就可以得出需要向左转或者向右转的信息, 将该信息输入至振动模块, 改变振动模块的开关状态 通过手机客户端 APP 判断手机是否有来电或者新的短消息, 此信息被传入 Arduino 进行处理,Arduino 控制振动马达的开关及振动方式表达该信息, 提醒用户是否有来电或者新消息 ( 二 ) 电路原理图 : 1

( 三 ) 硬件单元的指标参数与使用 : 电子罗盘传入 当前方向 蓝牙模块传入 规划路线 Arduio mega2560 处 理信息 震动模块 1.Arduino 单片机 我们采用了 Arduino Mega2560 作为该设计的微控制器 Arduino Mega2560 2

是采用 USB 接口的核心电路板, 它最大的特点就是具有多达 54 路数字输入输出, 特别适合需要大量 IO 接口的设计 我们并不需要这么多的 IO 口, 但既然实验室里已有 Arduino Mega2560 的电路板, 为了降低成本, 我们直接借用了它作为微型控制器 2. 电子罗盘 本设计采用的电子罗盘为三轴数字罗盘 HMC5883L, 高度集成, 体积较小, 且精度较高, 可精确至 2 使用时, 需要用杜邦线将其与微控制器连接在一起 连接方法为 : 1Arduino GND 连接至 HMC5883L GND 2Arduino 3.3V 连接至 HMC5883L VCC 3 Arduino SDA20 连接至 HMC5883L SDA 4Arduino SCL21 连接至 HMC5883L SCL 3. 蓝牙模块 我们选用的蓝牙模块型号为 HC06, 该产品成本与功耗都较低, 且体积较小 与 Arduino 单片机的连接方法 :1HC06 VCC 连接 Arduino 5V 2HC06 GND 连接 Arduino GND 3HC06 TXD 连接 Arduino 的 RX 4HC06 RXD 连接 Arduino 的 TX 4. 振动马达 为了便于携带, 我们选用了体积较小的扁平状振动马达, 额定电压为 3.7V 由于 Arduino mega 2560 引脚的输出电压为 5V, 我们将马达先其串联了一个 10 欧的电阻, 再连接到了 Arduino 的 DIGITAL 引脚上 四 软件设计思想及代码参考资料 1. 电子罗盘程序 : 可及时读出电子罗盘 x y z 轴的方向 #include <Wire.h> #include <HMC5883L.h> HMC5883L compass; void setup() Serial.begin(9600); Wire.begin(); compass = HMC5883L(); compass.setscale(1.3); compass.setmeasurementmode(measurement_continuous); void loop() MagnetometerRaw raw = compass.readrawaxis(); 3

MagnetometerScaled scaled = compass.readscaledaxis(); float xheading = atan2(scaled.yaxis, scaled.xaxis); float yheading = atan2(scaled.zaxis, scaled.xaxis); float zheading = atan2(scaled.zaxis, scaled.yaxis); if(xheading < 0) xheading += 2*PI; if(xheading > 2*PI) xheading -= 2*PI; if(yheading < 0) yheading += 2*PI; if(yheading > 2*PI) yheading -= 2*PI; if(zheading < 0) zheading += 2*PI; if(zheading > 2*PI) zheading -= 2*PI; float xdegrees = xheading * 180/M_PI; float ydegrees = yheading * 180/M_PI; float zdegrees = zheading * 180/M_PI; Serial.print(xDegrees); Serial.print(","); Serial.print(yDegrees); Serial.print(","); Serial.print(zDegrees); Serial.println(";"); delay(100); cpp 文件 : /* HMC5883L.cpp - Class file for the HMC5883L Triple Axis Magnetometer Arduino Library. Copyright (C) 2011 Love Electronics (loveelectronics.co.uk) This program is free software: you can redistribute it and/or modify it under the terms of the version 3 GNU General Public License as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. WARNING: THE HMC5883L IS NOT IDENTICAL TO THE HMC5883! Datasheet for HMC5883L: 4

http://www51.honeywell.com/aero/common/documents/myaerospacecatalog-d ocuments/defense_brochures-documents/hmc5883l_3-axis_digital_compass_ IC.pdf */ #include <Arduino.h> #include "HMC5883L.h" HMC5883L::HMC5883L() m_scale = 1; MagnetometerRaw HMC5883L::ReadRawAxis() uint8_t* buffer = Read(DataRegisterBegin, 6); MagnetometerRaw raw = MagnetometerRaw(); raw.xaxis = (buffer[0] << 8) buffer[1]; raw.zaxis = (buffer[2] << 8) buffer[3]; raw.yaxis = (buffer[4] << 8) buffer[5]; return raw; MagnetometerScaled HMC5883L::ReadScaledAxis() MagnetometerRaw raw = ReadRawAxis(); MagnetometerScaled scaled = MagnetometerScaled(); scaled.xaxis = raw.xaxis * m_scale; scaled.zaxis = raw.zaxis * m_scale; scaled.yaxis = raw.yaxis * m_scale; return scaled; int HMC5883L::SetScale(float gauss) uint8_t regvalue = 0x00; if(gauss == 0.88) regvalue = 0x00; m_scale = 0.73; else if(gauss == 1.3) 5

regvalue = 0x01; m_scale = 0.92; else if(gauss == 1.9) regvalue = 0x02; m_scale = 1.22; else if(gauss == 2.5) regvalue = 0x03; m_scale = 1.52; else if(gauss == 4.0) regvalue = 0x04; m_scale = 2.27; else if(gauss == 4.7) regvalue = 0x05; m_scale = 2.56; else if(gauss == 5.6) regvalue = 0x06; m_scale = 3.03; else if(gauss == 8.1) regvalue = 0x07; m_scale = 4.35; else return ErrorCode_1_Num; // Setting is in the top 3 bits of the register. regvalue = regvalue << 5; Write(ConfigurationRegisterB, regvalue); int HMC5883L::SetMeasurementMode(uint8_t mode) Write(ModeRegister, mode); 6

void HMC5883L::Write(int address, int data) Wire.beginTransmission(HMC5883L_Address); Wire.write(address); Wire.write(data); Wire.endTransmission(); uint8_t* HMC5883L::Read(int address, int length) Wire.beginTransmission(HMC5883L_Address); Wire.write(address); Wire.endTransmission(); Wire.beginTransmission(HMC5883L_Address); Wire.requestFrom(HMC5883L_Address, length); uint8_t buffer[length]; if(wire.available() == length) for(uint8_t i = 0; i < length; i++) buffer[i] = Wire.read(); Wire.endTransmission(); return buffer; char* HMC5883L::GetErrorText(int errorcode) if(errorcode_1_num == 1) return ErrorCode_1; return "Error not defined."; 2. 蓝牙模块 : void setup() 7

Serial2.begin(9600); void loop() while(serial2.available()) char c=serial2.read(); if(c=='a') Serial2.println("Hello I am amarino"); 3. 总程序 : #include <Wire.h> #include <HMC5883L.h> HMC5883L compass; void setup() Serial2.begin(9600); Serial.begin(9600); Wire.begin(); compass = HMC5883L(); compass.setscale(1.3); compass.setmeasurementmode(measurement_continuous); pinmode(22,output); pinmode(24,output); pinmode(26,output); pinmode(28,output); pinmode(30,output); pinmode(32,output); pinmode(34,output); pinmode(36,output); void loop() while(serial2.available()) char c=serial2.read(); if(c=='p') digitalwrite(22,high); digitalwrite(26,high); digitalwrite(30,high); digitalwrite(34,high); 8

if(c=='t') digitalwrite(22,high); digitalwrite(30,high); if(c=='n') digitalwrite(22,low); digitalwrite(26,low); digitalwrite(30,low); digitalwrite(34,low); if(c=='s') digitalwrite(24,low); digitalwrite(28,low); digitalwrite(32,low); digitalwrite(36,low); MagnetometerRaw raw = compass.readrawaxis(); MagnetometerScaled scaled = compass.readscaledaxis(); float xheading = atan2(scaled.yaxis, scaled.xaxis); float yheading = atan2(scaled.zaxis, scaled.xaxis); float zheading = atan2(scaled.zaxis, scaled.yaxis); if(xheading < 0) xheading += 2*PI; if(xheading > 2*PI) xheading -= 2*PI; if(yheading < 0) yheading += 2*PI; if(yheading > 2*PI) yheading -= 2*PI; if(zheading < 0) zheading += 2*PI; if(zheading > 2*PI) zheading -= 2*PI; float xdegrees = xheading * 180/M_PI; float ydegrees = yheading * 180/M_PI; float zdegrees = zheading * 180/M_PI; if (xdegrees < 45 xdegrees > 315) digitalwrite(34,high); delay(1000); digitalwrite(34,low); if(45<xdegrees&&xdegrees<135) 9

digitalwrite(26,high); delay(1000); digitalwrite(26,low); if(135<xdegrees&&xdegrees<225) digitalwrite(30,high); delay(1000); digitalwrite(30,low); if(225<xdegrees&&xdegrees<315) digitalwrite(22,high); delay(1000); digitalwrite(22,low); Serial2.println(xDegrees); delay(100); 4. 10

利用 app inventor2 实现的手机端程序 五 系统测试过程及测试数据 : 我们将不同的模块分开进行了单独测试 1. 测试电子罗盘 : 将电子罗盘与 Arduino 正确连接, 下载 HMC5883L 库文件到 Arduino 下文件夹, 在 Arduino Software 里编译程序使串口监视器中每隔 1 秒显示一次方向数据, 验证并上传程序 11

测试数据 : 2. 测试蓝牙模块与振动马达 : 将蓝牙模块和振动马达与 Arduino 正确连接, 编译一段程序使得通过手机上的蓝牙串口传输入的字符为 : a 时, 振动马达振动一秒后停止 若马达正常振动, 则说明蓝牙模块与振动马达正常 六 设计所需的全部资源 Arduino mega2560 震动马达 蓝牙模块 电子罗盘, 安卓手机 松紧带 电木板 杜邦线 七 最终成果 由于制作 app 的过程中出现了一些问题, 未能实在从百度地图中获取数据, 最终只实现 了指北针与来电提示功能 12

( 我们的 app 界面 ) ( 实物图 ) 13

参考文献 : http://people.ece.cornell.edu/land/courses/ece4760/finalprojects/f2013/jch325_kdk58 /jch325_kdk58/jch325_kdk58/main_page.html 马潮. AVR 单片机嵌入式系统原理与应用实践 [M]. 北京 : 北京航空航天大学, 2007. 14