基于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

相关文章

Redis在windows环境下如何启动

《Redis在windows环境下如何启动》:本文主要介绍Redis在windows环境下如何启动的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Redis在Windows环境下启动1.在redis的安装目录下2.输入·redis-server.exe

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

Linux系统之主机网络配置方式

《Linux系统之主机网络配置方式》:本文主要介绍Linux系统之主机网络配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、查看主机的网络参数1、查看主机名2、查看IP地址3、查看网关4、查看DNS二、配置网卡1、修改网卡配置文件2、nmcli工具【通用

Linux系统之dns域名解析全过程

《Linux系统之dns域名解析全过程》:本文主要介绍Linux系统之dns域名解析全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、dns域名解析介绍1、DNS核心概念1.1 区域 zone1.2 记录 record二、DNS服务的配置1、正向解析的配置

Python异步编程中asyncio.gather的并发控制详解

《Python异步编程中asyncio.gather的并发控制详解》在Python异步编程生态中,asyncio.gather是并发任务调度的核心工具,本文将通过实际场景和代码示例,展示如何结合信号量... 目录一、asyncio.gather的原始行为解析二、信号量控制法:给并发装上"节流阀"三、进阶控制

使用DrissionPage控制360浏览器的完美解决方案

《使用DrissionPage控制360浏览器的完美解决方案》在网页自动化领域,经常遇到需要保持登录状态、保留Cookie等场景,今天要分享的方案可以完美解决这个问题:使用DrissionPage直接... 目录完整代码引言为什么要使用已有用户数据?核心代码实现1. 导入必要模块2. 关键配置(重点!)3.

Windows Server服务器上配置FileZilla后,FTP连接不上?

《WindowsServer服务器上配置FileZilla后,FTP连接不上?》WindowsServer服务器上配置FileZilla后,FTP连接错误和操作超时的问题,应该如何解决?首先,通过... 目录在Windohttp://www.chinasem.cnws防火墙开启的情况下,遇到的错误如下:无法与