传感器实验——3.5寸串口屏幕
- MR开发板
- 3.5触屏型号:DC48320N035
- SHT20温湿度传感器
- 引脚说明
- 示例代码:串口屏显示获取的温湿度
- 效果
MR开发板
3.5触屏型号:DC48320N035
使用方法之前在ESP32中写过,今天来试试STM32的。使用方法如下建议康康。
咸鱼ESP32实例— 3.5寸串口触摸屏
咸鱼ESP32实例—3.5寸屏幕基础软件界面窗口
咸鱼ESP32实例—串口屏文字显示
工程文件可以自己做,嫌麻烦我这有个丑一点的测试一下。
工程文件 点我! 点我! 点我下载!
SHT20温湿度传感器
由瑞士推出的 SHT20数字温湿度传感器,基于领先世界的CMOSens ® 数字传感技术,具有极高的可靠性和卓越的长期稳定性。全量程标定,两线数字接口,可与单片机直接相连,大大缩短研发时间、简化外围电路并降低费用。此外,体积微小、响应迅速、低能耗、可浸没、抗干扰能力强、温湿一体,兼有露点测量,性价比高,使该产品能够适于多种场合的应用。
引脚说明
开发板 | sht20 |
---|---|
A1 | SCL |
A0 | SDA |
3.3v | VCC |
GND | GND |
开发板 | 3.5串口屏 |
---|---|
A2 | DIN (RX) |
A3 | DOUT(TX) |
5v | VCC |
GND | GND |
示例代码:串口屏显示获取的温湿度
main.py
主文件就这些东西了。。其他引用即可。
# main.py -- put your code here!
from SHT20 import SHT20
import pybimport zuart
u2 = pyb.UART(2, baudrate=115200)
xy = zuart.xycomm()WS=SHT20()
#lcd = lcd.LCD()
while True:T = WS.TEM() # 获取温度H=WS.HUM() # 获取湿度print('tem:',round(T,2),'hum:',round(H,2)) #获取的值保留2位小数xy.settxt(1, 4,str(round(T,2)),u2) xy.settxt(1, 5, " "+str(round(H, 2))+" ",u2)pyb.delay(500)
zuart.py
from machine import Pin, UARTclass xycomm:def settxt(self, pingid, kongjianid, str, u2): # 添加字符b = bytearray()b.append(0xEE)b.append(0xB1)b.append(0x10)b.append(0x00)# b.append(0x07)b.append(pingid)b.append(0x00)# b.append(0x02)b.append(kongjianid)b.extend(str.encode())b.append(0xFF)b.append(0xFC)b.append(0xFF)b.append(0xFF)# return bu2.write(b)def cleartxt(self, pingid, kongjianid, u2): # 清除字符b = bytearray()b.append(0xEE)b.append(0xB1)b.append(0x10)b.append(0x00)# b.append(0x07)b.append(pingid)b.append(0x00)# b.append(0x02)b.append(kongjianid)b.append(0xFF)b.append(0xFC)b.append(0xFF)b.append(0xFF)u2.write(b)
SHT20.py
from machine import Pin, I2C
from struct import unpack as unp
from time import sleep_ms# SHT20 地址
SHT20_I2CADDR = 64# SHT20 接口 选用16位
TRI_T_MEASURE_NO_HOLD = b'\xf3'
TRI_RH_MEASURE_NO_HOLD = b'\xf5'
READ_USER_REG = b'\xe7'
WRITE_USER_REG = b'\xe6' #地址有关
SOFT_RESET = b'\xfe'class SHT20(object):def __init__(self, scl=Pin.cpu.A1, sda=Pin.cpu.A0, clk_freq=400000): #修改引脚的地方。self._address = SHT20_I2CADDRpin_c = Pin(scl)pin_d = Pin(sda)self._bus = I2C(scl=pin_c, sda=pin_d, freq=clk_freq)def TEM(self):self._bus.writeto(self._address, TRI_T_MEASURE_NO_HOLD)sleep_ms(150)origin_data = self._bus.readfrom(self._address, 2)origin_value = unp('>h', origin_data)[0]value = -46.85 + 175.72 * (origin_value / 65536)return valuedef HUM(self):self._bus.writeto(self._address, TRI_RH_MEASURE_NO_HOLD)sleep_ms(150)origin_data = self._bus.readfrom(self._address, 2)origin_value = unp('>H', origin_data)[0]value = -6 + 125 * (origin_value / 65536)return value