本作品由安信可社區(qū)用戶
wukong50制作
作者說:
我有一個(gè)兒子
他經(jīng)常用電腦看動(dòng)畫片
稍不注意他就趴電腦屏幕上了
所以我就用安信可的雷達(dá)模組做了距離提醒工具
模組通過TTL直接與電腦通信
上位機(jī)通過Python開發(fā)實(shí)現(xiàn)
當(dāng)檢測到孩子趴在電腦前距離太近,則會(huì)播放語音(“距離太近了”)
以便提醒孩子自己往后挪
如果超過 3 次
孩子還不動(dòng),則直接鎖定屏幕
另外還添加了MQTT服務(wù)器連接
將每次檢測到的距離信息傳到MQT服務(wù)器上,方便和其他設(shè)備聯(lián)動(dòng)
來看看是怎么實(shí)現(xiàn)的?
1、接線
直接使用 USB 轉(zhuǎn) TTL 連接即可
2、UART.py
# pip install pyserial
import os
import time
import serial
from playsound import playsound
import mmqtt
num = 0 # 用于判斷第幾次觸發(fā)
zhen_len = 7
# 打開串行端口
ser = serial.Serial('COM7', 256000, timeout=1)
if ser.isOpen():
print("串行端口已打開")
else:
print("無法打開串行端口")
exit()
# MQTT配置
client = mmqtt.mqtt_init()
while True:
try:
data = ser.read(7 * 11)
print(type(data))
print(data.hex())
except:
data = []
# 解析數(shù)據(jù)并存儲(chǔ)
juli_list = [] # 索引0 運(yùn)動(dòng)1還是微動(dòng)2 ,索引1,距離
for i in range(len(data)):
if data[i] == 0xAA and data[i+1] == 0xAA: # 第1,2位是AA
if data[i+5] == 0x55 and data[i+6] == 0x55: # 第6,7位是55
# 數(shù)據(jù)驗(yàn)證成功 加入列表
juli = data[i+4]*256+data[i+3] # 小端
print(juli)
juli_list.append(juli)
# 過濾數(shù)據(jù)
# print(juli_list)
juli_list = sorted(juli_list) # 排序
# print(juli_list)
# 計(jì)算需要去除的元素?cái)?shù)量
remove_count = 3
juli_list = juli_list[remove_count:-remove_count]
print(juli_list)
juli = sum(juli_list) / len(juli_list)
mmqtt.publish_msg(client, str(juli))
if juli < 40 and juli > 0:
num += 1
if num < 4:
# 播放音頻
playsound(r'D:.wav')
else:
num = 0
# 鎖定計(jì)算機(jī)
# os.system('rundll32.exe user32.dll,LockWorkStation')
elif juli > 100 or juli == 0:
num = 0
# 鎖定計(jì)算機(jī)
# os.system('rundll32.exe user32.dll,LockWorkStation')
time.sleep(10)
ser.close()
3、mmqtt.py
import paho.mqtt.client as mqtt
# 配置MQTT連接參數(shù)
MQTT_BROKER = "" # 替換為你的EMQX服務(wù)器地址
MQTT_PORT = 8883 # MQTT默認(rèn)端口,如果EMQX配置了其他端口,請(qǐng)相應(yīng)修改
MQTT_TOPIC = "RD03E" # 要發(fā)布的MQTT主題
MQTT_CLIENT_ID = "" # MQTT客戶端ID
username = ''
password = ''
# MQTT回調(diào)函數(shù)
def on_connect(client, userdata, flags, rc):
print(f"Connected with result code {rc}")
# 訂閱主題
client.subscribe(MQTT_TOPIC)
def on_message(client, userdata, msg):
print(f"Received message '{msg.payload}' on topic '{msg.topic}' with QoS {msg.qos}")
def mqtt_init():
# 創(chuàng)建MQTT客戶端實(shí)例
client = mqtt.Client(MQTT_CLIENT_ID)
# 綁定連接回調(diào)函數(shù)
client.on_connect = on_connect
# 綁定消息回調(diào)函數(shù)
client.on_message = on_message
client.tls_set(ca_certs='./emqxsl-ca.crt')
client.username_pw_set(username, password)
# 連接到MQTT代理
client.connect(MQTT_BROKER, MQTT_PORT)
# 開始MQTT客戶端循環(huán)
client.loop_start()
return client
# # 發(fā)布消息
def publish_msg(client, msg):
client.publish(MQTT_TOPIC, msg)
def mqtt_end(client):
client.disconnect()
client.loop_stop(
4、代碼輸出
5、MQTT 消息
6
數(shù)據(jù)過濾
在數(shù)據(jù)采集方面,每次采集 10 次數(shù)據(jù),并把距離信息從小到大排序,剔除三個(gè)最高分,剔除三個(gè)最低分,最后才把剩下的數(shù)據(jù)進(jìn)行平均,這樣可以稍微確保得到的數(shù)據(jù)更準(zhǔn)確些。
安信可目前已發(fā)布Rd-01、Rd-03、Rd-03D、Rd-03E、Rd-03L和Rd-04這6款雷達(dá)模組,抗干擾性好,不受溫度、濕度、水霧、塵埃等環(huán)境因素影響。
安信可雷達(dá)模組可實(shí)現(xiàn)對(duì)于人體狀態(tài)目標(biāo)的感應(yīng)、測量等,可廣泛應(yīng)用于智能家居、智慧安防、智慧照明、智能商業(yè)和新能源充電/停車監(jiān)測設(shè)施等場景中。
審核編輯 黃宇
-
服務(wù)器
+關(guān)注
關(guān)注
12文章
9160瀏覽量
85426 -
模組
+關(guān)注
關(guān)注
6文章
1492瀏覽量
30392 -
MQTT
+關(guān)注
關(guān)注
5文章
651瀏覽量
22507
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論