最近要自制一个检测二氧化碳浓度的小工具,在网上买了jw01二氧化碳传感器,但CSDN上很多都是别的传感器的示例,还有C语言的示例。所以就写一个在树莓派pico上用UART获取二氧化碳传感器的这个示例。
所用的硬件为树莓派pico、jw01二氧化碳传感器、ssd130612864液晶显示器,原理是传感器通过串口将数据发送给pico,pico进行数据处理之后,在显示器上打出数据。
连线图如下图。
代码如下:
import time
from machine import I2C, Pin, UART
from ssd1306 import SSD1306_I2C
i2cShow = I2C(0, scl=Pin(21), sda=Pin(20), freq=400000) # SCL接21号口,SDA接20号
oled = SSD1306_I2C(128, 64, i2cShow)
# 初始化UART
uartCO2 = UART(1, baudrate=9600, tx=Pin(8), rx=Pin(9))#注意传感器的TX要接树莓派的GP9(RX)
# 读取二氧化碳浓度数据的函数
def read_co2_concentration():
# 读取数据
data = uartCO2.read()
#print(data[0])
#print(data[1])
#print(data[2])
#print(data[3])
#print(data[4])
# 计算浓度数值
CO2 = data[1]*256 + data[2]
return CO2
while True: #主程序
oled.fill(0) # 清空屏幕
oled.text('CO2', 40, 10)
oled.text('ppm', 85, 30)
time.sleep_ms(1000)
if uartCO2.any() > 0: #如果有数据
print('有数据')
# 从传感器读取二氧化碳浓度数据并打印
co2_concentration = read_co2_concentration()
co2_concentration = str(co2_concentration)
#print(co2_concentration, "PPM")
oled.text(co2_concentration, 30, 30)
# 等待一段时间后再次读取
time.sleep(3)
oled.show() #oled屏幕显示
最终的效果如图:
这款二氧化碳传感器的型号是jw01-CO2-v2.2。I2C的资料确实没有找到,但UART方式就可以了,也非常简洁。
参考文章:
1329504532JW01-CO2-V2.2数字信号空气质量模块规格书 .pdf-原创力文档
https://blog.csdn.net/weixin_51684355/article/details/127033267