毕设二:老年人摔倒检测及报警装置

毕设二:老年人摔倒检测及报警装置

在上一篇文章中说了大致的思路,在这里补充一些在调试过程中遇到的问题,由于当时水平有限,对于STM32理解的还不是很透彻,代码都是东拼西凑的移植,规范性不是很好,后面会分享出各个模块的代码,以及App的代码,还有服务器这么搭建的过程。

1. 倾斜角加速度传感器模块

倾斜角加速度传感器采集人体运动时的加速度以及倾斜角,用来作为跌倒的判断依据。我在这里采用的是 ADXL345,该芯片能测量静态重力加速度、测量剧烈运动的动态加速和微小的倾斜角度变化。当时自己的检测准确率一般般 加速度运用的不是很好,只运用了倾斜角度。本来还想着加一个足底压力传感器的,后面由于时间紧迫没有加。这里给出ADXL345模块的资料以及能在STM32F1下运行显示出倾斜角度以及加速度的代码。

ADXL345在STM32F1下运行显示出倾斜角度以及加速度的代码地址

2.定位导航模块

本课题使用了 ATGM336H-5N BDS/GNSS 全星座定位导航模块通过串口与单片机进行通信,该模块能接收到 6 个卫星 型号,并结合这 6 个信号进行联合定位。某宝上有,还挺贵的30多吧,它上面有一个小电池,当时不知道为什么突然就用不了了,我怀疑是这个小电池有问题,主要是这个小电磁是焊上去的不能换,吐了…,于是又买了一个。 这个定位导航模块还行,主要是进了房子里就定位不到了,不像手机里的GPS,各种算法各种基站定位啥的,这个模块进房子里就不管用了,在窗口旁边还能定位到一些。这也是个坑。

GPRS 模块

该模块可以实时发送数据到云服务器,定位老年人跌倒的地方。我使用的是GA6-B mini GPRS/GSM 模块。我用这个模块与腾讯云服务器进行通信,将定位导航模块定位得到的经纬度传到服务器,服务器再转发出去给App。

服务器

服务器我买的是腾讯云的,因为学长的推荐,腾讯云服务器有学生验证,一个月才10块钱,很便宜。腾讯云服务器端采用Ubuntu 操作系统,CPU 为1 核,内存为 2GB,公网带宽为 1Mbps。接下来就是服务器下面运行基于 Workman 的 Worker 应用进程。主要目的是监听端口,将GPRS 模块上传上来的数据转发给APP。

Workerman

Workerman是一款开源高性能异步PHP socket框架。支持高并发,超高稳定性,被广泛的用于手机app、移动通讯,微信小程序,手游服务端、网络游戏、PHP聊天室、硬件通讯、智能家居、车联网、物联网等领域的开发。 支持TCP长连接,支持Websocket、HTTP等协议,支持自定义协议。拥有异步Mysql、异步Redis、异步Http、MQTT物联网客户端、异步消息队列等众多高性能组件。

我当时也不知道这是啥,问了学长学长给了我一个文件,应该是要实现的话就是基于这个文件,学长说你去看看php语言,实现服务器转发数据只需要几十行代码就行,能看懂就行。
在这里插入图片描述

<?php
use Workerman\Worker;
require_once __DIR__ . '/Autoloader.php';

$global_uid = 0;

// 当客户端连上来时分配uid,并保存连接,并通知所有客户端
function handle_connection($connection)
{
    global $text_worker, $global_uid;
    // 为这个连接分配一个uid
    $connection->uid = ++$global_uid;
}

// 当客户端发送消息过来时,转发给所有人
function handle_message($connection, $data)
{
    global $text_worker;
    foreach($text_worker->connections as $conn)
    {
		if($conn->uid==$connection->uid){
			
		}else{
			$conn->send("$data");
		}
        
    }
}

// 当客户端断开时,广播给所有客户端
function handle_close($connection)
{
    global $text_worker;
    foreach($text_worker->connections as $conn)
    {
     //   $conn->send("user[{$connection->uid}] logout");
    }
}

// 创建一个文本协议的Worker监听2347接口
$text_worker = new Worker("tcp://0.0.0.0:6610");

// 只启动1个进程,这样方便客户端之间传输数据
$text_worker->count = 1;

$text_worker->onConnect = 'handle_connection';
while($i<=5)
{
   
$text_worker->onMessage = 'handle_message';
 $i++;
}

$text_worker->onClose = 'handle_close';

Worker::runAll();

我就去看了看PHP语言,大致理解了这个代码。

按照学长说的步骤,将这个代码文件port-6610.php放入Workerman-master这个文件夹里面
在这里插入图片描述
在这里插入图片描述
然后将Workerman-master放到买好的虚拟服务器上,这里我是通过Bitvise SSH Client这个软件将本地文件放到服务器上的。在这里插入图片描述
在这里插入图片描述
或者也可以通过后台端上传上去,具体操作我有些记不清了。

然后就在服务器下运行 port-6610.php文件。
在这里插入图片描述
首先找到文件夹,通过cd 等操作,如上图,然后通过 php port-6610.php start -d 这一句运行, -d表示在后台运行,你退出服务器后也能运行。

今天先说到这,有哪里不对的地方请大家指出,谢谢啦~~~

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值