最新案例教程点击下方链接跳转,CSDN已停止更新
点
击
跳
转
案例说明
使用hx711串口模块制作简易电子称
- 模块购买链接:
- hx711串口模块可以简化hx711传感器的使用,通过串口发送指令就可以读取到对应的数据,使用非常方便。
- hx711串口模块有两种工作方式:一种发指令返回电信号数据,获取数据后需要再计算;一种是发指令直接获取物体重量
- 每种工作方式又有两种收发方式:被动发送(发送一次指令返回一次数据),主动发送(发送一次指令后,每隔100ms自动返回一次数据)
- 案例使用工作方式2,发送一次指令返回一次数据。
- 相关指令
连线
hx711安装焊接参考使用说明
hx711模块需要使用5v供电,注意vcc连线
代码
main.py
import utime as time
from driver import UART
from driver import GPIO
from ssd1306 import SSD1306_128_64
disp=SSD1306_128_64()
'''
A通道采集数据增益128倍,精度更高.B通道增益只有32倍
波特率9600bps,无校验位,停止位1,返回数据10字节.
串口模块只需发送对应指令即可控制HX711.
工作方式1只读取数据,需要自己计算重量
工作方式2需要调整系数k
案例使用工作方式2,被动发送
'''
#A通道指令
MODEL1_PASSIVITY_A = b'\xA1'
MODEL1_INITIATIVE_A = b'\xA2'
MODEL2_PASSIVITY_A = b'\xA3'
MODEL2_INITIATIVE_A = b'\xA4'
RECTIFY_A = b'\xA5'
QUPI_A = b'\xAA'
ADD_A = b'\xAB'
SUBTRACT_A = b'\xA5'
K_430 = b'\xA6'
K_210 = b'\xA7'
K_106 = b'\xA8'
K_26 = b'\xA9'
#B通道指令
MODEL1_PASSIVITY_B = b'\xB1'
MODEL1_INITIATIVE_B = b'\xB2'
MODEL2_PASSIVITY_B = b'\xB3'
MODEL2_INITIATIVE_B = b'\xB4'
RECTIFY_B = b'\xB5'
QUPI_B = b'\xBA'
#中断回调函数
def key1_callback(args):
time.sleep(1)
uart0.write(bytearray(MODEL2_PASSIVITY_A))
ret = uart0.read(readBuf)
print(readBuf)
if (readBuf[0]==0XAA and readBuf[9]==0XFF):
if((readBuf[7]*256+readBuf[8])==(readBuf[1]+readBuf[2]+readBuf[3]+readBuf[4]+readBuf[5]+readBuf[6])):
Weight=readBuf[4]*65536+readBuf[5]*256+readBuf[6]
print('Weight',Weight)
disp.oled_showStr(0,0,"Weight:",2)
disp.oled_showStr(55,0,str(Weight),2)
key1.disableIrq()
key1.clearIrq()
def enable_key():
#开启中断
key1.enableIrq(key1_callback)
if __name__ == '__main__':
#实例化key1
key1=GPIO(10,10)
key1.open("KEY1")
#串口实例化
uart0=UART()
uart0.open("serial1")
# 初始化oled
disp.begin()
disp.clear() #清屏
readBuf=bytearray(10)
#uart0.write(bytearray(MODEL2_INITIATIVE_A))
time.sleep(2)
#打开按键使能
enable_key()
while True:
time.sleep_ms(300)
测试
按下开发板自定义key键,OLED显示屏上会显示对应的重量。