環境:window10、Python3.7.9
依賴庫:pyserial
硬件:220V燈帶、220V吊燈、USB雙路繼電器、電筆
1、安裝Python第三方庫pyserial
2、清楚插座的零火線(用電筆去測試,燈亮為火線)
3、清楚燈的零火線(一般紅線為火線,藍線為零線)
4、按照下面的電路圖接線(繼電器的NO端接插座的火線,COM端接等的火線)
NO:常開端
NC:常閉端
COM:公共端
5、USB連接電腦后,需要安裝驅動,驅動可以直接找商家拿
6、安裝完驅動后,用自帶的軟件進行測試(指令為16進制的)
注意:上面的串口是驅動安裝成功后,會自動識別的,點擊上面的按鈕就能對繼電器進行上下電操作進而控制等的開閉啦
7、利用Python來控制繼電器來實現燈的開閉
代碼:
# -*- coding: utf-8 -*-
import serial
import binascii
import string
import time
#打開串口
serialPort="COM5" #串口
baudRate=9600 #波特率
s=serial.Serial(serialPort, baudRate, timeout=0.5)print("參數設置:串口={0} ,波特率={1}".format(serialPort,baudRate))#收發數據
#n = s.inWaiting()
#if n:
# data = str(binascii.b2a_hex(s.read(n)))[2:-1]
# print(data)
#通訊協議
#指令通過16進制形式發送
#數據(1)---啟始標識(默認為0xA0)
#數據(2)---開關地址碼(默認為0x01,標識第1路;0x02標識第2路…依次類推)
#數據(3)---操作數據(0x00為關不反饋,0x01為開不反饋,0x02為關并反饋,0x03為開并反饋,0x04為取反并反饋,0x05為查詢狀態0X06為閃斷并反饋)
#數據(4)---校驗碼(前面三個數據加和)#示例
#打開第1路USB開關不反饋:A0 01 01 A2,繼電器會吸合,但不會反饋數據
#關閉第1路USB開關不反饋:A0 01 00 A1,繼電器會釋放,但不會反饋數據
#打開第1路USB開關并反饋:A0 01 03 A4,繼電器會吸合,并反饋狀態A0 01 01 A2
#關閉第1路USB開關并反饋:A0 01 02 A3,繼電器會釋放,并反饋狀態A0 01 00 A1
#取反第1路USB開關并反饋:A0 01 04 A5,繼電器的狀態會變化,并反饋最終狀態
#關閉第1路USB開關不反饋:A0 01 05 A6,繼電器會反饋實時狀態
#打開第2路USB開關不反饋:A0 02 01 A3,繼電器會吸合,但不會反饋數據
#關閉第2路USB開關不反饋:A0 02 00 A2,繼電器會釋放,但不會反饋數據
#打開第3路USB開關不反饋:A0 03 01 A4,繼電器會吸合,但不會反饋數據
#關閉第3路USB開關不反饋:A0 03 00 A3,繼電器會釋放,但不會反饋數據
#打開第4路USB開關不反饋:A0 04 01 A5,繼電器會吸合,但不會反饋數據
#關閉第4路USB開關不反饋:A0 04 00 A4,繼電器會釋放,但不會反饋數據#發送
while(1):d=bytes.fromhex('A0 01 01 A2')s.write(d)print("打開1")time.sleep(2)d = bytes.fromhex('A0 01 00 A1')s.write(d)print("關閉1")time.sleep(2)d=bytes.fromhex('A0 02 01 A3')s.write(d)print("打開2")time.sleep(2)d = bytes.fromhex('A0 02 00 A2')s.write(d)print("關閉2")time.sleep(2)# d=bytes.fromhex('A0 03 01 A4')# s.write(d)# print("打開2")# time.sleep(1)# d = bytes.fromhex('A0 03 00 A3')# s.write(d)# print("關閉2")# time.sleep(1)s.close()
8、相關資源
作品展示:https://www.bilibili.com/video/BV1Wf4y1k7UV?t=9
打包文件(含源碼、驅動、說明):
https://pan.baidu.com/s/19my0Kyw92W_f3MBHCl6pTA
提取碼:6666
?
轉載請注明出處,謝謝~~~
?
?
?