| 注册
home doc ppt pdf
请输入搜索内容

热门搜索

年终总结个人简历事迹材料租赁合同演讲稿项目管理职场社交

基于安卓Android智能家居详细设计毕业论文

文***享

贡献于2020-12-09

字数:26228

基Android智家居
目 录
第 1 章 项目概述 1
11 项目背景 1
12 术语定义 2
第 2 章 技术方案 3
21 系统描述 3
22 功描述 3
23 项目功图 4
24 涉系统工具 4
第 3 章 前端数中心(A8)总体设计 5
31 程序设计流程图 5
32 线程定义 5
33 类定义 6
第 4 章 前端A8模块设计 7
41 A8Android Application层设计 7
411 数流分析 7
412 Application层详细设计实现 9
42 A8数传递架构模块 16
421 层次接口表 16
422 HAL层 17
423 JNI层 19
424 Framework层 20
425 整体流程 21
426 关键代码分析 22
43 传输协议模块设计 32
431 A8接收数格式 32
432 M0接收命令数结构 33
第 5 章 终端M0模块设计 35
51 终端设备方案描述 35
52 终端设备工作流程 35
53 功模块描述 36
531 温湿度传感器DHT10 36
532 ZigBee通信部分 37
533 RFID读卡模块 40
534 IIC接口部分 41
第 6 章 系统测试 45
61 项目演示 45

第 1 章 项目概述
11 项目背景
着社会电子信息化断发展家居中电器越越带安全隐患明显增电器中旦出现异常便会带损失降低电器合理带异常情况求异常发生时户时信息通实时监控采取定操作排异常远程监控系统作非常巨
90年代末着媒体技术视频压缩编码技术网络通讯技术发展数字视频监控系统迅速崛起现市场两种数字视频监控系统类型种数字录设备核心视频监控系统种嵌入式视频web服务器核心视频监控系统数字录设备核心视频监控系统采PC机作媒体监控机综合视频矩阵图分割器录机等众功系统结构简化采计算机网络技术数字媒体远程网络监控受距离限制采容量磁盘阵列存盘器光盘存储器节省量磁盘介质时利系统实现媒体信息查询着基PC机视频监控录系统发展实际程中暴露出足系统工作稳定性
嵌入式视频web服务器核心视频监控系统采嵌入式实时务操作系统摄头采集图片信息压缩通部总线送置web服务器网络户直接浏览器观web服务器摄头采集图图片采集web功集中体积设备直接连入局域网户需安装硬件设备仅浏览器观时具优点:
布控区域广阔嵌入式视频web服务器监控系统web服务器直接连入网络没线缆长度信号衰减限制时网络没距离概念彻底抛弃域概念扩展布控区域系统具限缝扩展力设备IP址进行标示增加设备意味着IP址扩充性稳定需专理嵌入式web服务器实际基嵌入式微处理器技术采嵌入式实时务操作系统户讲网进行登陆便家中情况进行监控WEB服务器实时控制外前智手机发展趋势已愈加明显智手机(Smartphone)指电脑样具独立操作系统户行安装软件游戏等第三方服务商提供程序通类程序断手机功进行扩充通移动通讯网络实现线网络接入样类手机总称前应智手机操作系统中Android操作系统占相例
Android( 中文名:安卓) 基Linux台开源手机操作系统名称该台操作系统中间件户界面应软件组成号称首移动终端造真正开放完整移动软件着Android应更见广泛解Android完成智家居控制已显愈加重
现监控系统发展第三代前端体化视频十字化监控网络化系统集成化成视频监控系统公认发展方网络托数字视频压缩传输存放播放核心智实图分析特点报警系统门禁系统完美整合台引发视频控制行业次技术革命
12 术语定义
Android Android种Linux基础开放源码操作系统便携设备
HAL:硬件抽象层
JNI:JNIJava Native Interface缩写中文JAVA调
RFID:射频识RFID(Radio Frequency IDentification)技术称电子标签线射频识种通信技术通线电讯号识特定目标读写相关数需识系统特定目标间建立机械光学接触
A8 ARM CortexA8处理器第款基ARMv7架构应处理器史ARM开发性高具功率效率处理器
M0:CortexM0处理器市场现耗低节ARM处理器
第 2 章 技术方案
21 系统描述
Android开放源码操作系统专门移动电话设计系统Android手机开辟新应家居智化运普通家庭
Android 界面显示(Cortex_A8)Cortex_m0模拟量Cortex_m0进行控制操作
系统做裁减项目实现M0采集房间信息通线方式发送A8进行监控控制A8作移动终端设备(phonepad等)作中央监控服务器设备项目采者方案作中央监控需作移动设备需程序移植移动设备中央端移植web服务器移动设备登陆服务器查房屋信息
22 功描述
1检测室温度湿度光感电压情况(通Cortex_m0采集信息)
2通温度湿度情况应调节风扇开关(控制Cortex_m0)
3根光敏传感器情况应调节led灯亮灭(控制Cortex_m0)
4根三轴加速度情况应调节蜂鸣器开关(控制Cortex_m0)
5显示Rfid信息等功(通Cortex_m0采集)
23 项目功图

图21 项目功图
24 涉系统工具
表21 系统工具
系统名称
系统版
备注
Linux核
Linux308

Android文件系统
Android40版

工具链
armnonelinuxgnueabigcc

Android程序开发
Eclipse

第 3 章 前端数中心(A8)总体设计
31 程序设计流程图

图31 程序设计流程图
32 线程定义
1 SmartHomeActivity程序Activity界面开程序首先运行
2 NodeInfoActivity界面Activity显示详细设备采集信息控制键
3 MainReadThread读数线程该线程负责通Zigbee获取数转发读进程进行数操作
4 MainHandlerThread处理数线程该线程读进程传数进行数校验转发
5 NodeWriteThread控制线程该线程负责处理户设备操作
33 类定义
1 Data存储处理设备采集数
2 NodeCmd定义操作方法实现设备读操作控制操作
3 NodeInfo定义设备采集信息控制器状态WatchDog
4 NodeList链表存储设备信息……………………………………
5 MyUartService:提供底层接口读写串口
第 4 章 前端A8模块设计
41 A8Android Application层设计
411 数流分析
4111 NEWNODE新节点加入
1数处理流程图
图41 NEWNODE数流程图
2数格式
NEWNODE数格式

格式
NEWNODE
S4FnI1

3数处理详细描述
CortexM0开启通Zigbee发送NEWNODE数CortexA8程序通MainReadThread线程读取数交MainHandlerThread线程处理MainHandlerThreadNOEWNODE进行校验判断否合法果数误通发送Handler消息交SmartHomeActivity界面UI线程SmartHomeActivity 判断链表否已存该节点存加入链表创建节点……………………
4112 NODEINFO节点信息更新
1数处理流程图
图42 NODEINFO数流程图
2数格式
NODEINFO数

格式
NODEINFO
S23FiI1T24H30L6V220X1Y1Z60
3数处理详细描述
CortexM0开启通Zigbee发送NEWNODE数CortexA8程序通MainReadThread线程读取数交MainHandlerThread线程处理MainHandlerThreadNODEINFO进行校验判断否合法果数误通发送Handler消息交SmartHomeActivity界面UI线程SmartHomeActivity 判断链表否已存该节点存更新该链表信息判断否进入该节点界面果进入发送Broadcast通知界面更新数
4113 RFID户登录退出
1数处理流程图
图43 RFID数流程图
2数格式
RFID数格式

格式
RFID
S11FrI1R103132
3数处理详细描述
CortexM0开启通Zigbee发送NEWNODE数CortexA8程序通MainReadThread线程读取数交MainHandlerThread线程处理MainHandlerThreadRFID进行校验判断否合法果数误通发送Handler消息交SmartHomeActivity界面UI线程SmartHomeActivity发送Broadcast通知界面界面判断否设备更新数
412 Application层详细设计实现
4121 类象详细描述
1 Data类负责接受数进行处理
表41 Data成员属性表
属性
类型
描述
serialVersionUID
long
序列化时保持版兼容性版升级时反序列化保持象唯性
data
String
存储串口数
表42 Data成员方法表
方法
参数
返回值
描述
getDataSize
Void
String
传数获取数
isValidData
Void
boolean
数效性校验包括数空完整等
getDataType
Void
int
传数获取数类型
getDataTarget
Void
String
传数获取数设备号
getRfid
Void
String
传数获取Rfid信息
getTemperature
Void
String
传数获取温度
getHumidity
Void
String
传数获取湿度
getLight
Void
String
传数获取光感
getAd
Void
String
传数获取AD值
getX
Void
String
传数获取三轴加速度x值
getY
Void
String
传数获取三轴加速度y值
getZ
Void
String
传数获取三轴加速度z值
2 NodeCmd类负责底层进行交互实现硬件设备读写操作
表43 NodeCmd成员属性表
属性
类型
描述
DevCmd
enum
枚举命令声明组命名常数方便函数调
myUartService
MyUartService
串口操作框架
表44 NodeCmd成员方法表
方法
参数
返回值
描述
devControl
int DevCmd
String
串口发送数
readNode
Void
String
串口获取数
3 NodeInfo类负责存储设备信息
表45 NodeInfo成员属性表
属性
类型
描述
serialVersionUID
long
序列化时保持版兼容性版升级时反序列化保持象唯性
temperature
String
存储节点象温度值
humidity
String
存储节点象湿度
light
String
存储节点象光感值
x
String
存储节点象三轴加速度x值
y
String
存储节点象三轴加速度y值
z
String
存储节点象三轴加速度z值
ad
String
存储节点象ad值
led
int
存储节点象led灯状态(0灭1亮)
fun
int
存储节点象风扇状态(0关1开2加速)
beep
int
存储节点象报警器状态(0关1开)
nixietub
int
存储节点象数码状态(0关1开)
rfid
rfid
存储节点象rfid信息
devNum
int
存储节点象设备号
next
NodeInfo
便生成链表
watchDog
int
门狗监控节点生命值
表46 NodeInfo成员方法表
方法
参数
返回值
描述
NodeInfo
void
void
构造函数初始化节点象
NodeInfo
void
int
参数构造函数参数节点设备号
getNext
void
NodeInfo
获取节点返回节点信息
setNext
NodeInfo
void

getTemperature
void
String
获取该象温度值
setTemperature
String
void
设置该象温度值
getHumidity
void
String
获取该象湿度值
setHumidity
String
void
设置该象湿度值
getLight
void
String
获取该象光感值
setLight
String
void
设置该象光感值
getAd
void
String
获取该象AD值
setAd
String
void
设置该象AD值
getX
void
String
获取该象三轴加速度x值
setX
String
void
设置该象三轴加速度x值
getY
void
String
获取该象三轴加速度y值
setY
String
void
设置该象三轴加速度y值
getZ
void
String
获取该象三轴加速度z值
setZ
String
void
设置该象三轴加速度z值
getLed
void
int
获取该象Led状态值
setLed
int
void
设置该象Led状态值
getFun
void
int
获取该象Fun状态值
setFun
int
void
设置该象Fun状态值
getBeep
void
int
获取该象Beep状态值
setBeep
int
void
设置该象Beep状态值
getNixietub
void
int
获取该象Nixietub状态值
setNixietub
int
void
设置该象Nixietub状态值
getDevNum
void
int
获取该象DevNum值
setDevNum
int
void
设置该象DevNum值
getRfid
void
String
获取该象Rfid值
setRfid
String
void
设置该象Rfid值
getWatchDog
void
int
获取该象WatchDog值
setWatchDog
int
void
设置该象WatchDog值
ledOn
void
void
开灯
ledOff
void
void
关灯
funOn
void
void
开风扇
FunOn1
void
void
风扇加速
funOff
void
void
关风扇
beepOn
void
void
开蜂鸣器
beepOff
void
void
关蜂鸣器
nixietubeOn
void
void
开数码
nixietubeOff
void
void
关数码
4 NodeList类存储连接设备信息便进行界面节点更新删添加操作
表47 NodeList成员属性表
属性
类型
描述
head
NodeInfo
链表头结点
len
Long
链表长度
表48 NodeList成员方法表
方法
参数
返回值
描述
getHead
NodeInfo
void
获取链表头结点
setHead
void
NodeInfo
设置链表头结点
createNodeList
void
void
创建设备节点链表
insertNode
NodeInfo
void
插入节点
delNode
NodeInfo
void
删节点
allNode
void
void
遍历链表节点
findByDevNum
int
NodeInfo
通设备号找节点
nodeIsNotExisted
int
boolean
通设备号查找节点否存链表
delByDevNum
int
void
通设备号删节点
allNodeSetWatchDog
void
String
设备节点门狗减
oneNodeFeedWatchDog
int
void
通设备号找设备节点喂狗
findNodeDogDie
void
int
遍历设备节点查否节点生命结束
getLen
void
int
链表长度
findNodeByPos
int
NodeInfo
通链表中位置查找设备节点
4122 线程类详细描述
1 MainReadThread类
启动MainReadThread线程执行run方法run方法先通running判断否执行读操作果runningtrue进行设备读操作判断MainHandlerThread处理线程否创建未创建创建读出数传MainHandlerThread启动线程循环执行

图44 MainReadThread RUN流程图
2 MainHandlerThread类
MainReadThread线程读取数传MainHandlerThread先数进行效性认证果数误handler传递发送SmartHomeActivity界面UI线程进行处理果数误判断数类型handler传递发送SmartHomeActivity进行处理

图45 MainHandlerThread RUN流程图
3 NodeWriteThread类
负责执行设备控制命令线程程序次独立线程执行影响

图46 NodeWriteThread RUN流程图
4123 UI类详细描述
1 SmartHomeActivity类
(1) onCreate
a) 初始化节点列表nodeList
b) 设置界面标题setTitle
c) 设置视图setContentView
d) 获取界面控件引findViewById
e) 设置GridView适配器BaseAdapter
f) 设置选项单击监听器setOnItemClickListener
g) 设置线程 Handler重写handleMessage方法
h) 开程序读线程
i) 注册返回广播接收器
(2) onDestroy
a) 卸载广播接收器unregisterReceiver
b) 关闭读线程mainReadThreadstop
c) 关闭界面Activitythisfinish
a) 设置节点门狗减allNodeSetWatchDog
b) 判断否节点门狗死亡findNodeDogDie果存删Node节点链表delByDevNum判断否进入该节点界面果进入发送广播退出该死亡设备发送确认命令ISEXIT果未死亡重新发送添加节点NewNode数………………
c) 更新适配器notifyDataSetChanged>>>>>>>>>>>>>>>>>>
(4) BackReceiver 广播接受器
a) 节点列表删界面返回节点原象nodeListdelByDevNum()
b) 节点列表插入界面返回新节点象nodeListinsertNode()
c) 关闭界面Activity finishActivity()
2 NodeInfoActivity类
(1) onCreate
a) 创建节点象NodeInfo
b) 设置视图setContentView
c) 获取界面控件引findViewById
d) 通Intent象获取界面传nodeInfo象赋界面象
e) 设置界面标题setTitle
f) 界面获取nodeInfo象反馈界面setText
g) 注册广播接收器
h) 设置返回键监听器
i) 设置风扇监听器设置Led监听器设置蜂鸣器监听器设置数码监听器
(2) onDestroy
卸载广播接收器unregisterReceiver
4124 数库详细描述
1 RfidRecordDBHelper类
继承SQLiteOpenHelper类重写onCreate方法
·表新建
SQLiteDatabase象execSQL方法添加表命令:
create table if not exists rfidTable (id INTEGER primary key autoincrement devId varchar rfId varchar)
·增加
SQLiteDatabase象execSQL方法增加数命令:
insert into rfidTable(devId rfId) values ()
·删
SQLiteDatabase象execSQL方法删数命令:
delete from rfidTable where rfId
2 数库表设计
表49 rfidTable数库表
字段名
类型
属性
描述
id
INTEGER
primary key autoincrement
ID键
devId
VARCHAR
Null
设备号
rfId
VARCHAR
Null
RFID号
4125 框架详细描述
· MyUartService类
1 加载库SystemloadLibrary(uart_runtime)
2 重写构造函数调 __init方法设备进行初始化
3 通调方法实现java方法
42 A8数传递架构模块
421 层次接口表

数传递(串口操作)
应层
UartDataUpdate
New

UartSendCmd

framework层
_uart_send_cmd
_uart_data_update
_init

JNI层
Uart_write
Uart_init
Uart_read

Hal层
Uart_write_hal
Uart_read_drv
Uart_device_open
Uart_read_hal
Uart_write_drv

驱动
Write
Open
Read

图461 接口层次图


图462 结构图
422 HAL层
1 宏
表410 HAL层宏定义表
名称


UART_HARDWARE_MODULE_ID
uart
定义hal 模块id
START
0xAA
数包开始符
NEW
0x01
新节点加入发包
INFO
0x02
采集信息包
RFID
0x04
刷卡时发包
2 全局变量
表411 HAL层全局变量表
名称
类型

fd
int
操作设备文件描述符
3 结构体
表412 HAL层结构体表
struct uart_module_t
成员名
类型

common
struct hw_module_t
记录stub基信息入口
struct uart_control_device_t
成员名
类型

common
struct hw_device_t
记录stub操作设备时需包括接口
uart_read_hal
函数指针
指实际读串口函数
uart_write_hal
函数指针
指实际写串口函数
4流程图

图47 HAL层结构图
423 JNI层
1 宏
表413 JNI层宏定义表
名称


UART_HARDWARE_MODULE_ID
uart
定义HAL 模块ID
2 全局变量
表414 JNI层全局变量表
名称
类型

sUartDevice
uart_control_device_t *
保存通调stub中open接口devices handle
sUartModule
uart_module_t*
保存通调Android HAL标准函数hw_get_module传入UART_HARDWARE_MODULE_IDUART stub句柄
3 流程图
JNI层实现Javacc++间渡涉复杂逻辑根规层函数调相应层接口参见整体流程
424 Framework层
表415 Framework层类表
public class MyUartService
方法

SystemloadLibrary
装载编译JNI层享库
public MyUartService
构造函数开初始化串口
public String UartDataUpdate
读取前串口信息数包
public int UartSendCmd
串口传送命令数包
425 整体流程

续:hal层

图48 整体流程图
426 关键代码分析
1. NodeCmdjava
static MyUartService myUartService new MyUartService() 新建象初始化
String s myUartServiceUartDataUpdate() 更新采集数
myUartServiceUartSendCmd(1 LED_ON) 点亮1号设备灯
2. MyUartServicejava
package cncomsmarthomeuart

import androidutilLog

public class MyUartService {
*
* load native service
*
static {
SystemloadLibrary(uart_runtime) 装载库
}

public MyUartService() {
_init() 注册方法开串口初始化
}

*
* uart native methods
*
public String UartDataUpdate() {
String s _uart_data_update()
return sv
}更新采集数

public int UartSendCmd(int n int c) {
_uart_send_cmd(n c)
return 0
} 发送命令控制M0板
private static native boolean _init() 声明jni库提供方法
private static native String _uart_data_update()
private static native int _uart_send_cmd(int n int c)
3. uart_stub\include\uarth
struct uart_module_t {
struct hw_module_t common
}HAL 规定直接hw_module_t结构需做继承

struct uart_control_device_t {
定义针Uart控制结构包含hw_device_t支持API操作
struct hw_device_t common
* attributes *

* supporting control APIs go here *
int (*uart_read_hal)(struct uart_control_device_t *dev char *buf int count)
int (*uart_write_hal)(struct uart_control_device_t *dev const char *cmd)
}
#define UART_HARDWARE_MODULE_ID uart 定义MODULE_IDHAL层根ID找HAL stub
4. cn_com_smarthome_uart_MyUartServicecpp
#define LOG_TAG MyUartService #include utilsLogh #include #include #include #include #include #include uart_stubincludeuarth

static uart_control_device_t *sUartDevice 0
static uart_module_t* sUartModule0 JNINativeMethod jni层注册方法Framework层方法 *_init uart_readuart_write Framework中调方法名称函数类型返回值:
*()Z参数 返回值bool型 * ()LjavalangString 参数 返回值String型
* (II)I 参数2int型 返回值int型

static const JNINativeMethod gMethods[] {
{_init ()Z (void*)uart_init} { _uart_data_update ()LjavalangString (void*)uart_read }
{ _uart_send_cmd (II)I (void*)uart_write }
}

static int registerMethods(JNIEnv* env) {
static const char* const kClassName
cncomsmarthomeuartMyUartService 注意:必须Framework层service类名相
jclass clazz
* look up the class *
clazz env>FindClass(kClassName) 查找注册类
if (clazz NULL) {
LOGE(Can't find class s\n kClassName)
return 1
}

* register all the methods *
if (env>RegisterNatives(clazz gMethods
sizeof(gMethods) sizeof(gMethods[0])) JNI_OK)
{
LOGE(Failed registering methods for s\n kClassName)
return 1
} 类中注册SO中Native接口接口定义gMethods数组中
* fill out the rest of the ID cache *
return 0
}
*
*
* * This is called by the VM when the shared library is first loaded
* Android系统初始化时会动加载该JNI方法调表
* 第次加载库时调函数注册方法 *
jint JNI_OnLoad(JavaVM* vm void* reserved) {
JNIEnv* env NULL
jint result 1
LOGI(zzs_JNI_OnLoad)

if (vm>GetEnv((void**) &env JNI_VERSION_1_4) JNI_OK) {
LOGE(ERROR GetEnv failed\n)
goto fail
} 获取前VM环境保存env变量中

assert(env NULL)
if (registerMethods(env) 0) {
LOGE(ERROR PlatformLibrary native registration failed\n)
goto fail
} 写函数前JAVA环境中注册接口
* success return valid version number *
result JNI_VERSION_1_4

fail
return result
} * JNI_OnLoad()函数完成:
  (1) 虚拟机环境信息保存库结构体JNIEnv实例中
  (2) 建立应层中UART控制服务库JNI函数表
(3) 返回虚拟机库JNI版
*



5 uart_stub\module\uartc
#define LOG_TAG UartStub
#include
#include
#include
#include
#include
#include
#include
#include includeuarth
#include crc16h
#define N 6
#define START 0xAA 传输协议宏
#define NEW 0x01
#define INFO 0x02
#define RFID 0x04

int fd

typedef struct {
char head
char dev_no
char type_data
char length
char temp[2]
char hum[2]
char bright[2]
char adc[2]
char acc[3]
char rfid[N]
short crc16
}dev_data 传输协议格式

CRC16校验函数查表法表crc16h
static unsigned short get_crc16(const char * crc_head int crc_lenth )
{

unsigned char ucCRCHi 0x0
unsigned char ucCRCLo 0x0
int iIndex

while ( crc_lenth ) {
iIndex ucCRCLo ^ *( crc_head++ )
ucCRCLo ( unsigned char )( ucCRCHi ^ aucCRCHi[iIndex] )
ucCRCHi aucCRCLo[iIndex]
}
return ( unsigned short )( ucCRCHi << 8 | ucCRCLo )

}

static int uart_device_close(struct hw_device_t* device)
{
struct uart_control_device_t* ctx (struct uart_control_device_t*)device
if (ctx) {
free(ctx)
}
close(fd)
return 0
}

static int uart_read_drv(struct uart_control_device_t *dev char *buf int count)
{
dev_data info_buf
char rev_buf[40] {0} 存放整消息包
char data_buf[40] {0} 存放消息包数段
char ch

ssize_t cur_size 0
ssize_t r_size 0

char data_lenth 0 数段长度
char data_type 数类型
char *data_head 数段头
int dev_no 设备号
char *crc_head CRC校验头
int crc_lenth crc校验长度消息包头数段尾
unsigned short crc16 校验值

int timeout 10 超时处理长时间读消息timeout减0时返回层

while (1)
{
timeout 采轮询读方法果没消息会直循环设置超时值超出没数话退出次读消息
if (timeout) {
LOGI(No start info_buf)
return 1
}
if (read (fd &info_bufhead 1) < 0) {
LOGE(read START err)
continue
} 判断否帧头继续循环判断

if (info_bufhead START) {
LOGI(head is x info_bufhead)
continue

} else { 判断否帧头继续循环判断 
timeout 40
if (read (fd &info_bufdev_no 1) < 0) {
LOGE(read dev_no err)
return 1
} 读出设备号

if (read (fd &info_buftype_data 1) < 0) {
LOGE(read type_data err)
return 1
} 读出数类型

if (read (fd &info_buflength 1) < 0) {
LOGE(read length err)
return 1
} 读出数长度

while (cur_size < (info_buflength+2)) {
if ((r_size read (fd (rev_buf + 4) + cur_size (info_buflength + 2) cur_size)) < 0) {
LOGI(read data err)
continue
}
cur_size + r_size 累加总已读数应数长度较

} 读出数

break
}
}

rev_buf[0] info_bufhead
rev_buf[1] info_bufdev_no
rev_buf[2] info_buftype_data
rev_buf[3] info_buflength

data_lenth info_buflength

crc16 ((rev_buf[4+data_lenth] & 0xffff) << 8) | rev_buf[5+data_lenth]
crc_head rev_buf
crc_lenth data_lenth + 4

CRC16校验
if (crc16 get_crc16(crc_head crc_lenth)) {
switch (info_buftype_data) {
case NEW
sprintf(buf SdFnId 4info_bufdev_no) 传递层传buf
break

case INFO
sprintf(data_bufTddHddLdVddXdYdZd rev_buf[4]rev_buf[5]
rev_buf[6]rev_buf[7] ((rev_buf[8] << 8) | rev_buf[9]) rev_buf[10] rev_buf[11]
rev_buf[12] rev_buf[13] rev_buf[14])

传递层传buf
sprintf(buf SdFiIds strlen(data_buf) + 4 info_bufdev_no data_buf)
break

case RFID
for (i0 i< data_lenth i++) {
sprintf(data_buf+i*2 x rev_buf[i+4] >> 4)
sprintf(data_buf+i*2+1 x rev_buf[i+4] & 0xf)
}
传递层传buf
sprintf(buf SdFrIdRs strlen(data_buf)+5 info_bufdev_no data_buf)
break
} 收数包成适合传格式传递

LOGI(HAL buf is s buf)
} else {
LOGE(CRC error)
}

return 0
}

static int uart_write_drv(struct uart_control_device_t *dev const char *cmd)
{
ssize_t w_size 0

char cmd_buf[10] {0}
char *crc_head
char crc_lenth
unsigned short crc16
cmd_buf[0] 'S'
cmd_buf[1] cmd[0] dev_no
cmd_buf[2] 'c' cmd flag
cmd_buf[3] '1' size of cmd
cmd_buf[4] cmd[1] cmd

crc16 get_crc16(cmd_buf 5)
sprintf(cmd_buf + 5 cc crc16 >> 8 crc16 &0xff)
eg:S1c105656

if ((w_size write(fd cmd_buf strlen(cmd_buf))) < 0) {
LOGE(write erro write d bytes w_size)
return 1
}

LOGI(Hal write d bytes cmd s w_size cmd_buf)

return 0
}

static int uart_device_open(const struct hw_module_t* module const char* name
struct hw_device_t** device)
{
struct uart_control_device_t *dev
struct termios options

LOGD(HALuart_device_open)
dev (struct uart_control_device_t *)malloc(sizeof(*dev))
memset(dev 0 sizeof(*dev))

HAL must init property
dev>commontag HARDWARE_DEVICE_TAG 必须写
dev>commonversion 0
dev>commonmodule module
dev>commonclose uart_device_close 关联关闭函数

实例化支持操作
dev>uart_read_hal uart_read_drv
dev>uart_write_hal uart_write_drv

*device &dev>common
实例化uart_control_device_t址返回jni层
样jni层直接调uart_read_drvuart_write_drvuart_device_close方法


开硬件设备层需求底层阻塞非阻塞方式开
if((fd open(devttyUSB0O_RDWR | O_NOCTTY | O_NDELAY)) < 0)
{
LOGE(open error)
return 1
}else {
LOGI(open ok\n)
}

初始化串口
tcgetattr(fd &options)
optionsc_cflag | (CLOCAL | CREAD)
optionsc_cflag & ~CSIZE
optionsc_cflag & ~CRTSCTS 数流控制
optionsc_cflag | CS8 数位修改8bit
optionsc_cflag & ~CSTOPB 结束位
optionsc_iflag | IGNPAR

*网许流行linux串口编程版中没c_iflag(termios成员变量)变量进行效设置
样传送ASCII码时没什问题传送二进制数时遇0x0d0x110x13会丢掉
说知道肯定特殊字符作特殊控制关掉ICRNLIXON选项解决*
c_iflag & ~(ICRNL | IXON)
*0x0d 回车符CR
0x11 ^Q VSTART字符
0x13 ^S VSTOP字符
ICRNL 输入CR转换NL
IXON 起动停止输出控制流起作*


optionsc_oflag 0
optionsc_lflag 0

cfsetispeed(&options B115200) 指定输入波特率115200bps
cfsetospeed(&options B115200) 指定输出波特率115200bps
tcsetattr(fdTCSANOW&options)

return 0
}

定hw_module_methods_t结构体关联入口函数
static struct hw_module_methods_t uart_module_methods {
open uart_device_open
}

定义Stub入口
注意必须:
1hw_module_t继承类
2必须HAL_MODULE_INFO_SYM名字

const struct uart_module_t HAL_MODULE_INFO_SYM {
common {
tag HARDWARE_MODULE_TAG
version_major 1
version_minor 0
id UART_HARDWARE_MODULE_ID
模块ID层Service通ID应前Stub
name uart HAL module
author farsight
methods &uart_module_methods 入口函数理结构体
}
* supporting APIs go here *
}

43 传输协议模块设计
431 A8接收数格式
表416 数格式表
buf[0]
buf[1]
buf[2]
buf[3]
buf[length]
send_buf[n]
数包头
设备号
数类型
数长度

校验
0xAA
dev_no
type_data
length
data
Crc16校验
1byte
1byte
1byte
1byte
length bytes
2bytes
数包头:M0A8发送数包头0xAA
A8M0发送数包头0x55
设备号: M0设备号(房间号)
数类型:0x01 M0开机(房间开启监控)
0x02 温度湿度光度类型数
0x04RFID卡类数
数长度:数域字节数
校验:crc16校
M0采集数结构体
#define N 6
typedef struct
{
char head 数包头
char dev_no 设备号
char type_data 数类型 0x02般温度湿度类型数 0x04卡类数类型
char length 数长度 温湿度数长度
char temp[2] 温度数
char hum[2] 湿度数
char bright[2] 光度数
char adc[2] ADC 转换数
char acc[3] 三轴加速xyz
char rfid[N] 卡类数
short crc16 crc校验值
}dev_data
表417 M0发送数类型
命令类型
0x01
命令
Crc16校验

0x01 开机
高位
低位

Buf[4]
Buf[5]
Buf[6]

温湿度数
0x02
温度
湿度
光度
AD转换
高位
低位位
高位
低位
高位
低位
高位
低位
Buf[4]
Buf[5]
Buf[6]
Buf[7]
Buf[8]
Buf[9]
Buf[10]
Buf[11]
16位
16位
16位
16位
三轴加速
Crc16校验

X
Y
Z
高位
低位

Buf[12]
Buf[13]
Buf[14]
Buf[15]
Buf[16]

8位
8位
8位
16位

卡类信息
0x04
RFID卡号
Crc16校验
高位
低位
高位
低位
高位
低位
高位
低位
Buf[4]
Buf[5]
Buf[6]
Buf[7]
Buf[8]
Buf[9]
Buf[10]
Buf[11]
16位
16位
16位
16位
432 M0接收命令数结构
Typedef struct
{
char head 数包头 S’
char dev_no 设备号(房间号)
char type_data 数类型c’
char length 数长度 数长度
char cmd 命令 温湿度数长度
short crc16
}dev_cmd
表418 M0接收数类型
命令
Crc16校验
M0接收数
高位
低位
8位
8位
8位
Buf[5]
Buf[6]
Buf[7]
表419 数应命令
命令
动作
0x30
LED_ON(开灯)
0x31
LED_OFF(关灯)
0x32
Fan_ON(开风扇)
0x33
Fan_OFF(关风扇)
0x34
Nixietube_ON(开数码)
0x35
Nixietube _OFF(关数码)
0x36
BEEP_ON(开蜂鸣器)
0x37
BEEP_OFF(关蜂鸣器
第 5 章 终端M0模块设计
51 终端设备方案描述
智家居终端设备负责室种信息进行采集信息传终端设备终端设备发出指令进行时响应室相关信息包括温湿度光感度三轴加速度电压信息进出室刷卡信息
控制器选择NXPLPC11C14(简称M0)ARM CortexM0系列低功耗32位处理器高工作50MHZ速度功耗抗干扰力完全够胜终端数采集重
前端设备终端设备通信采ZigBee通信模块功耗低成低具优良网络拓扑结构便组网M0间连接采双SPIIICUART转换芯片SC16IS752节省片限UART资源器件里做赘述整体方案图51示:

图51 终端设备整体方案图
52 终端设备工作流程
1) 系统电初始化系统时钟IO时钟配置LEDFANSPEAKER7LEDIO端口初始化SPI0SPI1系统滴答定时器设置中断时间1ms中断处理函数中1S全局变量counter1counter2加1
2) 终端发送新设备注册节点信息
3) 判断counter1否4S收集数信息指定协议发送终端设备时counter1清零
4) 判断counter1否3S喂狗时counter2清零
5) 读取 SPI752_rbuf_1[]果数存储指定数组中然判断否接收完毕接受完毕进行数校验校验正确根协议中指定位判断否发指令果执行相应指令处理函数数未接受完毕继续步操作
6) 查否刷卡信息进行相应卡操作没返回步骤3继续操作
M0工作流程图52示

图52 M0整体工作流程图
53 功模块描述
531 温湿度传感器DHT10
5311 基概述
DHT10数字温湿度传感器款含已校准数字信号输出温湿度传感器具成低性稳定抗干扰力强等优点
采简化单总线通信机通特定时序进行访问次传送机40位数高位先出数格式:
8bit温度整数数 + 8bit温度数数 + 8bit湿度整数数 + 8bit湿度数数 + 8bit校验位
中8bit校验位前面4Byte数
M0连接图53示中拉电阻R30保证总线空闲时状态高电

图53 DHT11原理图
5312 操作流程时序
户机发起开始信号数时序图54示:

图54 DHT11数时序图
M0读取数步骤:
1) DHT11电(DHT11电等1S越稳定状态期间做操作)测试环境温湿度记录数时DHT11DATA数线拉电阻拉高引脚处输入状态时刻检测外部起始信号
2) M0设置输出输出低电保持18ms然M0设置输入时DATA数线拉高等DHT11响应信号
3) DHT11接收M0低电起始信号延时段时间M0发送80us低电响应信号接继续发送80us高电信号通知M0准备接收数M0接受低电响应信号延时80us接受数
4) DHT11DATA引脚输出40位数MO根电变化获数位数0格式50us低电加2628us高电位数1格式50us低电加70us高电
5) DHT11输出40位数继续输出50us低电转输入状态
532 ZigBee通信部分
5321 ZigBee通信模块
ZigBee模块采周立功公司代理ZICM2410模块提供种数接口里选择UART串口M0间通SC16IS752转换芯片进行连接图55示

图55 ZigBeeM0连接图
ZICM2410模块方便需数接口进行读写里做赘述网络配置参操作手册
5322 SC16IS752操作流程
SC16IS752款双SPIIIC转UART芯片里选择SPI转UART种模式做机MO机分含64Byte发送接收FIFO默认情况FIFO未FIFO第字节接收数含七种优先级中断里RHR(数接收)中断数时产生RHR中断时IRQ引脚拉低相连MO脚设置降触发中断时M0产生中断中断处理函数中通读取IS752中断标识寄存器(IIR)判断否数接收中断读取数接收保持寄存器(RHR)读取出数保存全局数接收循环队列SPI752_rbuf_1[MAX]中时队尾全局变量SPI752_rbuf_0_ip加1超位置MAX 1置0时存队头全局变量SPI752_rbuf_0_op指前读取数位置开始时队头队尾指位置函数中通轮询查否数队头队尾否相等等读取队头数队头加1超MAX 1置0M0ZigBee接收中断程序流程图56示
5323 SPI串行外设接口
1概述
M0两SPI控制器分SPI0SPI1ZigBee相连SPI1SPI0RFID模块相连
SPI接口四引脚分SCKSSELMISOMOSI功:
● SCK串行时钟信号步数传输机驱动机接收发送数时会处激活状态
● SSEL作机时发送数前该脚发送数结束释放该脚
● MISO机输入机输出
● MOSI机输出机输入

图56 ZigBee接收中断函数流程图
2SPI操作流程
SPI前先SPI时钟单元M0说初始状态单元时钟模块未接SPI进行基设置设置数帧长度捕获方式等外M0设置机模式接进行数收发操作分析SPI数传输双数发送接受时步方数效操作时般发送接收封装函数中
发送数前先判断TX FIFO否满满发送数写入DR寄存器低16位DATA寄存器果时总线SPI控制器忙数会立发送否写入DATA寄存器数直等直前数发送完止果发送数足16位需软件进行纠正
接收数时先判断RX FIFO否空空读取DATA寄存器里数里返回数新帧数果数长度足16位高位补零
SPI数发送接收图57示:

图57 SPI数发送接收流程图
533 RFID读卡模块
RFID读卡模块通SPI0接口M0进行连接中断引脚M0IO 口相连程序中判断该IO口电高低判断否卡果卡进行相应读卡操作
RFID命令格式:前导头 + 通讯长度 + 命令字 + 数域 + 校检码
中前导头固定0XAA 0XBB通讯长度掉前导头通讯长度身数帧字节数命令字数域详见模块说明里读取卡号命令字0X20返回数域4字节卡号cpu发送命令帧需等读取返回值返回值格式:
前导头+数长度+次发送命令字+数域+校检码
RFID读卡流程图58示:

图58 RFID读卡流程
534 IIC接口部分
5341 IIC概述
根方位状态(RW)IIC总线存两种数传输状态:
1)发送器接收器发送数机发送第字节机址接发送机数机接收字节发回ACK 应答
2)发送器接收器发送数接收器先发送发送器址发送器接收返回ACK接发送器接收器发送数字节外接收器接收字节返回ACK字节返回非应答位
发送接收串行时钟信号起始停止位机发起发送字节状态寄存器中会相应状态SI位会置位时SI中断处理函数中根寄存器状态作相应处理具体状态相应操作详见数手册
5342 IIC操作流程分析
1) IIC初始化:复位IICIIC时钟单元设置相应I0口IIC功清应答位起始位中断位IIC位设置IIC传输速率果机话设置机址IIC中断启动IIC
2) IIC启动
uint32_t I2CStart( void )
{
uint32_t timeout 0
uint32_t retVal FALSE
LPC_I2C>CONSET I2CONSET_STA 设置起始位
*循环等起始位发送设置超时时间*
while( 1 )
{
if ( I2CMasterState I2C_STARTED ) 起始位发送成功中断中设置
{
retVal TRUE
break
}
if ( timeout > I2C_MAX_TIMEOUT ) 起始位发送超时
{ retVal FALSE
break
}
timeout++
}
return( retVal )
}
3)IIC停止
uint32_t I2CStop( void )
{
LPC_I2C>CONSET I2CONSET_STO 设置停止位
LPC_I2C>CONCLR I2CONCLR_SIC 清中断标志
*等停止位发送*
while( LPC_I2C>CONSET & I2CONSET_STO )
return TRUE
}
4)IIC次完整通信
uint32_t I2CEngine( void )
{
I2CMasterState I2C_IDLE 初始状态
RdIndex 0
WrIndex 0
if ( I2CStart() TRUE ) 发送启动信号
{
I2CStop()
return ( FALSE )
}

while ( 1 )
{
if ( I2CMasterState DATA_NACK ) 判断数否传输完毕
{
I2CStop() IIC停止
break
}
}
return ( TRUE )
}
5)发送代码
void I2CWrite(uint8_t addr uint8_t* buf uint32_t len)
{

I2CAddr addr 设置机址
I2CMasterBuffer buf 发送Buffer指传输数
I2CWriteLength len 发送数长度
I2CReadLength 0

I2CEngine() 启动IIC完整通信程

I2CWriteLength I2CWriteLength
}
6)中断处理函数
次状态改变SI位会置位中断处理函数中根状态码进行相应操作操作中清SI位必须做里列出发送中断处理函数部分部分根数手册操作流程进行相应操作
void I2C_IRQHandler(void)
{
uint8_t StatValue
* 仅列出发送方式处理*
StatValue LPC_I2C>STAT 读取状态码
switch ( StatValue ) 根状态码执行操作
{
case 0x08 已发送起始条件
WrIndex 0
LPC_I2C>DAT I2CAddr SLA + W装入数寄存器
LPC_I2C>CONCLR (I2CONCLR_SIC | I2CONCLR_STAC)请吃SICSTAC位
I2CMasterState I2C_STARTED
break

case 0x10 已发送重复起始条件
RdIndex 0
* 发送SLA + R状态位 *
LPC_I2C>DAT I2CAddr
LPC_I2C>CONCLR (I2CONCLR_SIC | I2CONCLR_STAC)
I2CMasterState I2C_RESTARTED
break

case 0x18 发送SLA + W已接受ACK
if ( I2CMasterState I2C_STARTED )
{
LPC_I2C>DAT I2CMasterBuffer[WrIndex++] 发送数写入DATA寄存器
I2CMasterState DATA_ACK
}
LPC_I2C>CONCLR I2CONCLR_SIC
break

case 0x28 * 数已发送返回ACK非ACK*
case 0x30
if ( WrIndex < I2CWriteLength ) 判断否发送完未完继续发送
{
LPC_I2C>DAT I2CMasterBuffer[WrIndex++]
I2CMasterState DATA_ACK
}
Else 指定长度数已发送完
{
if ( I2CReadLength 0 )
{
LPC_I2C>CONSET I2CONSET_STA 设置重复起始条件
I2CMasterState I2C_REPEATED_START
}
else
{
I2CMasterState DATA_NACK
LPC_I2C>CONSET I2CONSET_STO 置位停止位
}
}
LPC_I2C>CONCLR I2CONCLR_SIC
break
……
}
第 6 章 系统测试
61 项目演示
1 开A8设备启动SmartHome程序图61示

图61 启动SmartHome
2 开M0设备(NO2) SmartHome程序检测设备添加图62示开M0设备(NO1)SmartHome程序会动排序添加图63示

图62 启动M0(No2)

图63 启动M0(No2)
3 测试M0控制器点击风扇键图64示M0风扇正常开点击Led灯键图65示M0 Led灯正常开点击蜂鸣器键图66示M0蜂鸣器正常开点击数码键图67示M0数码正常开
6
图64 开风扇
图65 开电灯
图66 开蜂鸣器
图67 开数码
4 测试M0传感器未调节M0 ADC前AD值图68示调节M0 ADCAD值图69示图例观测程序左角机器会根M0 三轴加速器(xy)值进行位置改变

图68 未调整AD值

图69调整AD值
4 测试RFID磁卡M0进行刷卡操作模拟户进入效果图610示磁卡次M0进行刷卡操作模拟户退出效果图611示

图610户进入
图611户退出
5 测试设备离线关闭设备模拟设备退出等35秒相应设备图标消失效果图612示开设备设备重新添加效果图613示

图612关闭设备
图613关闭设备

文档香网(httpswwwxiangdangnet)户传

《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 5 香币 [ 分享文档获得香币 ]

该文档为用户出售和定价!

购买文档

相关文档

毕业论文(设计)基于安卓的多功能时钟app设计与实现

目 录摘 要 1ABSTRACT 2第1章 绪论 31.1 开发背景 31.2 研究现状 51.3 本文的主要工作 61.4 论文的组织结构 6第2章 安卓相关介绍 72.1 安卓系统介绍 72.1.1 安卓技术简介 72.1.2 安卓应用程序组件 82.2 Android Studio简介 102.2.1架构组成 102.2.2主要功能 10第3章 需求分

小***卷 4年前 上传1072   0

基于Android Studio的饼图账单的设计与开发Android毕业论文

毕 业 论 文 基于Android Studio的饼图账单的设计与开发Design and Development of PieChart Billing Based on Android Studio所在系院: 计算机信息工程系 专业班级: 计算机应用技术 学生学号:

文***享 4年前 上传790   0

基于安卓系统的点餐系统毕业设计

 本科毕业论文(设计) 题 目: 基于安卓系统的点餐系统 专 业: 姓 名: 指导教师: 职 称: 答辩日期: 基于安卓系统的点餐系统 摘 要 现如今我们生活在一个信息化的时代,信息数据随处可见。特别是无线数据传输

z***u 5年前 上传1690   0

基于Android智能风扇的设计

由于科技越来越发达,智能硬件也使用越来越多,基于蓝牙的技术开发以及应用也是快速的发展。其使用在Android系统和Windows系统等平台上都可以使用蓝牙无线模块。可以实现了主蓝牙设备和从设备它们互相通信,它们拥有方便、快捷、操作方便等好处。

王***朝 3年前 上传971   0

基于Android的网上订餐系统毕业论文

XX 大 学 毕 业 设 计( 论 文 ) 题目 基于Android的网上订餐系统 作者 学院 专业 学号 指导教师 二〇XX 年 X月 X日 摘 要 随着科技的发展,二十一世纪成为了以网络化,信息化为核心的社会。网络商业化也成为了时下最热门的词汇。随着信息技术的不断更新,特别是07年谷歌公司推出了Android开放源码,让Android操作系统成为了移

z***u 5年前 上传1806   0

基于安卓系统的一款音乐APP设计与实现

近年来,在移动设备市场中,手机逐渐成为了用户的第一选择。随着移动应用技术和互联网技术的深入发展,人们对手机应用的功能和性能也就有了更加高的要求,一些音乐App已经不能满足人们对个性化、简洁化的需求。

平***苏 3年前 上传991   0

基于Android的教学课程系统设计与开发

摘 要移动应用已经成为人们生活必不可缺的一部分,大学生身为移动应用的最大用户群体,在生活学习娱乐各个方面都与移动应用有着紧密联系,然而针对大学生校园学习的移动应用却寥寥无几,因为不同的学校,甚至不同的院系,都有着自己独特的情况。该项目借鉴了现有的一些和学习相关的移动应用,结合软件学院的特点,针对软件学院的学生,提供了学生日常学习生活常用的一些功能。主要分为我的课表,我的日程,我的学习

平***苏 3年前 上传612   0

基于Android的中国象棋毕业设计

基于Android的中国象棋毕业设计 摘 要 现在智能操作系统迅速发展,使得智能手机和其他的智能移动设备得到广泛普及,因此,智能操作系统的应用软件开发及其需要的服务将有广阔的发展前景。而Android是开放性体系架构,不仅具有非常好的开发、调试环境,而且还支持各种可扩展的用户体验,包括丰富的图形组件、多媒体支持功能以及强大的浏览器。因此,对于软件从业人员来说,Android平台具有无限

文***享 5年前 上传1216   0

基于android的物业管理系统的设计与实现19.8

 目录基于android的物业管理系统的设计与实现 3摘 要 3Android property managemengt system 5Abstract 51 绪论 61.1 选题背景 61.2 课题研究现状 61.3 设计研究主要内容 71.4 系统主要设计思想 82 开发环境 82.1 Android系统的结构 8图2-1 Android系统架构图 92.2

平***苏 3年前 上传801   0

基于Android的志愿活动平台的设计与实现

 基于Android的志愿活动平台的设计与实现 内容摘要伴随着移动互联网的迅速发展,“互联网+志愿服务“方式出现并衍生了许多相关应用与产品,志愿服务方式也更为多元。诸如“志愿汇”、“i志愿”

平***苏 1年前 上传476   0

基于Android的外卖点餐类的app的设计与开发

基于Android的外卖点餐类app的开发与设计 摘 要:在这千变万化的岁月中,手机已不是稀奇之物。规矩的传统订餐已经不能在我们生活中得到满足,用户们需要一个可以在家查看餐厅以及点餐的服务。由此,外卖订餐体系就呈现了,本体系操纵Android体系,来实现订餐。本系统操作十分简单,给用户一个全新的体验,也有助于商家往更好的方向发展,促进经济的发展。关键词:android;数据库;客户端;服

平***苏 8个月前 上传193   0

基于安卓手机平台的视频播放器的设计与实现毕业设计

本科毕业设计 题目:基于安卓手机平台的视频播放器的设计与实现 Title:Design and implementation of the Android mobile phone platform video player 学 号: 姓 名: 学 院: 物理与通信电子学院

z***u 5年前 上传1275   0

基于Android的FTP文件传输

 毕业设计(论文) 题 目 基于Android的FTP文件传输 姓 名 学 号 专业班级 所在学院 指导教师(职称)

山***1 5年前 上传1060   0

基于Android植物大战僵尸

摘要 手机游戏,顾名思义就是指在手机上运行的游戏软件。目前用来编写手机程序使用最多的是 Java 语言。随着科技的发展,手机的硬件更新速度越来越快,功能也越来越强大。现在的手机游戏具有很强的娱乐性和交互性的复杂形态。 安卓版本的游戏有三大优势。第一:技术优势。一方面是其稳定性,现在已有公认最稳定版本的操作系统——Gingerbread。另一方面是程序员技术入门快,特别是对有一定java语言基

山***1 5年前 上传1303   0

基于Zigbee的智能家居系统毕业设计

学 号_______ ___ henhuangmahenshuang毕 业 论 文 课 题基于Zigbee的智能家居系统设计 学生姓名 基于Zigbee的智能家居系统设计 系 别基于Zigbee的智能家居系统设计

文***品 3年前 上传861   0

基于智能家居供应链管理的智能合约设计研究

科技在发展,时代在进步,随着物联网、大数据、5G技术等信息技术的飞速发展,智能家居等以柔性化生产为主的产业发展尤为迅速,但是其供应链的上下游结构变得日益复杂,因此将会导致的供应链上出现首尾信息难以一致、关键决策延迟等情况,长此以往便带来了难以预估的蝴蝶效应。

爱***享 3年前 上传667   0

基于物联网的智能家居控制系统设计与实现

物联网是在信息社会发达的今所衍生的产品,他是基于互联网的模块上,利用射频识别技术、无线网等技术,打造一个联系世界不同物体,不同模块的“Internet of Things”。在这个模块网络中,人们所需要的或不需要的物品等等能够相互的进行“沟通”,机械化,不需要人类去操作。其根本是使用射频自动识别(RFID)这种技术,通过信息网络(互联网)来实现物品的互相识别和不同 信息的互通与共享。

z***u 5年前 上传6142   0

基于语音识别技术的智能家居控制系统的设计

21世纪经济快速发展,人们对物质文化的需求也越来越高。在信息科技的支持下,事物在朝着简单化、便捷化、智能化的方向发展。在此背景下应运而生而生的智能家居,正是信息时代的典型产物。

王***朝 4年前 上传1200   0

论文开题报告:定稿基于Android的快递APP设计与实现

目前,为了提高取件效率,快递公司在一些快递密集型的投放点放置了智能云柜,取件人通过快递公司发送的密码来开启云柜。虽然这种方式大大提高了取件效率,让取件人的取件时间更加自由,但是云柜只能存放一些体积较小的快递,不能存放大型包裹,而且对于快递公司来说对智能云柜的投资是一笔巨大的支出,智能云柜的普及势必将增加快递公司的业务成本,也就是意味着减少快递公司的利润。

邋***。 5年前 上传2907   0

基于Android的电子书阅读器的设计与实现

毕业设计说明书(论文)中文摘要Android平台现在非常的火,我们平时使用的智能手机,平板电脑,还有新的智能电视,有很大部分是基于Android平台的,很显然,它在人们生活中的表现得越来越重要。本文详细介绍了采用JAVA语言,设计并开发一个基于Android平台的电子书阅读器的过程。从一开始的准备工作、系统的需求分析和设计、系统的实施、系统的测试和部署等方面介绍了该阅读器的开发过程。本文实现

平***苏 3年前 上传636   0

基于Android的天气预报查询系统的实现毕业设计

 基于Android的天气预报查询系统的实现 摘要:随着智能手机一步步走进人们的生活,它将成为人们获取信息的主要设备,相关应用越来越广泛,并在人们的日常生活中扮演着越来越重要的角色。因此,关键应用程序的开发成为影响移动智能终端普及的重要因素,设计并开发实用、方便的应用程序具有重要的意义和良好的市场前景。Android作为当前最流行的操作平台,自然也存在着大量的应用服务需求。 Android

z***u 5年前 上传1963   0

基于Android的智能停车系统的设计与开发(修改版)

在对城市停车位供给紧缺、停车难以及乱停车等问题进行解决时,可以研究其根源,对城市的有效停车位进行增加,构建现代化停车场,另外也可以针对目前已有的停车场进行科学合理的配置、控制以及调度。

爱***享 3年前 上传490   0

Android实训报告基于Android的游戏开发

通信与电子信息专业实训报告项目名称:基于Android的游戏开发 班 级 通信班 姓 名 学 号 指导教师 成 绩

文***品 3年前 上传1081   0

基于Android手机的NFC开发与应用

基于Android手机的NFC开发与应用摘 要随着信息时代的快速发展,NFC作为一种由RFID演变来的新型近距离无线通信技术也受到人们的关注,相较于红外、Wifi等其他无线通信有启动速度快、安全、低功耗等优点从而受到众多商家的青睐。虽然在Android系统中已经有了NFC技术以及相关协议,但是由于与NFC相关的基础设施并未普及,导致NFC在手机端使用率较低。因此本文设计一款综合性强的

平***苏 1年前 上传371   0

基于ASP技术的网站的设计与开发毕业论文

基于ASP技术的网站的设计与开发毕业论文 目录 第一章 绪论 1 1.1引言 1 1.2网站的简介 1 1.3网站开发的意义 2 1.4网站的特点及实现目标 2 1.4.1网站的特点 2 1.4.2网站的实现目标 2 1.5本文的主要工作 3 第二章 相关理论与关键技术介绍 4 2.1软件工程 4 2.2 HTML简介 4 2.3 ASP技术 5 2.3.1ASP技术的优点 5 2.3.2AS

文***品 5年前 上传1935   0