基于windows系统、RS485型传感器的节能灯控制

2023-10-09 06:50

本文主要是介绍基于windows系统、RS485型传感器的节能灯控制,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、准备操作
  • 二、软硬件设置
    • 1.硬件连接
    • 2.程序编辑
    • 运行程序即可


前言

提示:这里可以添加本文要记录的大概内容:
本文章是用windows系统基于pycharm软件、RS485型传感器的节能灯开发。以下有具体工具和实现代码,仅作参考。如硬件设备一致,则可使用。


提示:以下是本篇文章正文内容,下面案例可供参考

一、准备操作

一、准备操作
1.硬件:需要准备电脑一台,人体红外RS485型传感器,灯(我使用的是24V直流灯),RS485型继电器模块,传感器供电设备一个(与传感器供电电压一致),USB转RS485线一根
2.软件: 电脑安装python3.X版本,需要安装serial库,或者使用pycharm,Anoconda,Mu等软件都可以。RS485驱动,CRC(循环冗余校验)。
二、测试
1.通过卖家给的传感器测试软件测试传感器是否有问题。
2.通过传感器资料查看传感器问询码。
3.通过串口调试助手测试能否传感器通讯成功
4.如果重新设置传感器参数,需要重新计算校验码。
在线计算CRC链接:https://editor.csdn.net/md?not_checkout=1&articleId=122897495
参数模型详见传感器资料

二、软硬件设置

1.硬件连接

在这里插入图片描述
此图片涉及传感器校多,因此只需看相对应的传感器部分就行,此图片仅作参考,因RS485传感器不唯一,所以使用方式不固定。

2.程序编辑

代码如下(示例):

import serial
import timelist_hw = "02 03 00 03 00 01 74 39"           # 人体红外传感器问询帧
list_gz = "05 03 00 06 00 01 65 8F"        # 光照传感器问询帧ser = serial.Serial("COM6", 9600)  # 选择串口,设置波特率
temp_jc_hw = 0
temp_jc_gz = 0def read_data(temp) :global temp_jc_hwglobal temp_jc_gzif ser.is_open:
#        print("port open success")# hex16进制)转换为bytes(2进制),应注意python3.7与python2.7此处转换不同if temp:send_data = bytes.fromhex(list_hw)  # 发送数据转换为b'\xff\x01\x00U\x00\x00V'else:send_data = bytes.fromhex(list_gz)ser.write(send_data)  # 发送数据time.sleep(0.1)       # 延时,否则len_return_data将返回0,此处易忽视!!!len_return_data = ser.inWaiting()  # 将获取缓冲数据(接收数据)长度# print(len_return_data)if len_return_data:return_data = ser.read(len_return_data)    # 读取缓冲数据# bytes2进制)转换为hex(16进制),应注意python3.7与python2.7此处转换不同str_return_data = str(return_data.hex())# print(str_return_data)if temp:print("当前人体红外感应状态:", end="")if int(str_return_data[6:10]):  # 16进制转为整形   湿度print("有人")temp_jc_hw = 1else:print("无人")temp_jc_hw = 0else:print("当前光照度为:", end="")print(int(str_return_data[6:10], 16), end="")  # 16进制转为整形   光照print("Lux")temp_jc_gz = int(str_return_data[6:10],16)print(temp_jc_gz)
def w_data() :if ser.is_open:if temp_jc_hw == 1:if temp_jc_gz < 500:send_data = bytes.fromhex("06 05 00 00 FF 00 8D 8D")  # 发送数据转换为b'\xff\x01\x00U\x00\x00V'ser.write(send_data)  # 发送数据time.sleep(0.1)len_return_data = ser.inWaiting()  # 将获取缓冲数据(接收数据)长度# print(len_return_data)if len_return_data:return_data = ser.read(len_return_data)  # 读取缓冲数据# bytes2进制)转换为hex(16进制),应注意python3.7与python2.7此处转换不同str_return_data = str(return_data.hex())print(int(str_return_data, 16))print("开灯")else:send_data = bytes.fromhex("06 05 00 00 00 FF 8C 3D")  # 发送数据转换为b'\xff\x01\x00U\x00\x00V'ser.write(send_data)  # 发送数据time.sleep(0.1)len_return_data = ser.inWaiting()  # 将获取缓冲数据(接收数据)长度# print(len_return_data)if len_return_data:return_data = ser.read(len_return_data)  # 读取缓冲数据# bytes2进制)转换为hex(16进制),应注意python3.7与python2.7此处转换不同str_return_data = str(return_data.hex())print(int(str_return_data, 16))print("关灯")else:print("port open failed")
def main():read_data(1)time.sleep(0.5)read_data(0)time.sleep(0.5)
if __name__ == "__main__" :while True:w_data()main()

运行程序即可

这篇关于基于windows系统、RS485型传感器的节能灯控制的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/171073

相关文章

Linux查询服务器系统版本号的多种方法

《Linux查询服务器系统版本号的多种方法》在Linux系统管理和维护工作中,了解当前操作系统的版本信息是最基础也是最重要的操作之一,系统版本不仅关系到软件兼容性、安全更新策略,还直接影响到故障排查和... 目录一、引言:系统版本查询的重要性二、基础命令解析:cat /etc/Centos-release详

更改linux系统的默认Python版本方式

《更改linux系统的默认Python版本方式》通过删除原Python软链接并创建指向python3.6的新链接,可切换系统默认Python版本,需注意版本冲突、环境混乱及维护问题,建议使用pyenv... 目录更改系统的默认python版本软链接软链接的特点创建软链接的命令使用场景注意事项总结更改系统的默

在Linux系统上连接GitHub的方法步骤(适用2025年)

《在Linux系统上连接GitHub的方法步骤(适用2025年)》在2025年,使用Linux系统连接GitHub的推荐方式是通过SSH(SecureShell)协议进行身份验证,这种方式不仅安全,还... 目录步骤一:检查并安装 Git步骤二:生成 SSH 密钥步骤三:将 SSH 公钥添加到 github

Spring Boot集成/输出/日志级别控制/持久化开发实践

《SpringBoot集成/输出/日志级别控制/持久化开发实践》SpringBoot默认集成Logback,支持灵活日志级别配置(INFO/DEBUG等),输出包含时间戳、级别、类名等信息,并可通过... 目录一、日志概述1.1、Spring Boot日志简介1.2、日志框架与默认配置1.3、日志的核心作用

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方

Linux系统之lvcreate命令使用解读

《Linux系统之lvcreate命令使用解读》lvcreate是LVM中创建逻辑卷的核心命令,支持线性、条带化、RAID、镜像、快照、瘦池和缓存池等多种类型,实现灵活存储资源管理,需注意空间分配、R... 目录lvcreate命令详解一、命令概述二、语法格式三、核心功能四、选项详解五、使用示例1. 创建逻

使用Python构建一个高效的日志处理系统

《使用Python构建一个高效的日志处理系统》这篇文章主要为大家详细讲解了如何使用Python开发一个专业的日志分析工具,能够自动化处理、分析和可视化各类日志文件,大幅提升运维效率,需要的可以了解下... 目录环境准备工具功能概述完整代码实现代码深度解析1. 类设计与初始化2. 日志解析核心逻辑3. 文件处

Windows环境下解决Matplotlib中文字体显示问题的详细教程

《Windows环境下解决Matplotlib中文字体显示问题的详细教程》本文详细介绍了在Windows下解决Matplotlib中文显示问题的方法,包括安装字体、更新缓存、配置文件设置及编码調整,并... 目录引言问题分析解决方案详解1. 检查系统已安装字体2. 手动添加中文字体(以SimHei为例)步骤

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

浅析Spring如何控制Bean的加载顺序

《浅析Spring如何控制Bean的加载顺序》在大多数情况下,我们不需要手动控制Bean的加载顺序,因为Spring的IoC容器足够智能,但在某些特殊场景下,这种隐式的依赖关系可能不存在,下面我们就来... 目录核心原则:依赖驱动加载手动控制 Bean 加载顺序的方法方法 1:使用@DependsOn(最直