
#第九届立创电赛#GD32E230C8与SHT40温湿度传感器
简介
本次学习目标:GD32E230的RT-thread使用,SHT40使用,蜂鸣器,屏幕 摸鱼不可怕,可怕的是摸的心安理得
简介:本次学习目标:GD32E230的RT-thread使用,SHT40使用,蜂鸣器,屏幕 摸鱼不可怕,可怕的是摸的心安理得开源协议
:GPL 3.0
描述
* 1、项目功能介绍
感觉不如小米温湿度计2(X
想象中的效果图是下面这样的
实际因为先天鸽子体质发作,没还写屏幕UI,实际是下图所示。但起码也算是完成一半了(心虚。
*2、项目属性
学习通途大于实际用途
所以我把这当成笔记来写
*5、硬件与软件部分
这里讲解一下板子到手后怎么处理
1.先焊接电源相关电路
以作者项目原理图为例,如下图所示,焊接这两部分后,确认5V与GND、3.3V与GND之间不短路。LED灯亮表示电源一切正常。
2.焊接MCU相关电路
确认MCU及其周围电路正常,代码里写一个让LED1(PB2)灯1Hz频率闪烁来证明MCU一切正常(老点灯大师了
3.挨个确认外设正常
这里确认外设不分先后,都可以
3.1蜂鸣器这外围电路最简单
这里需要先查看这种蜂鸣器的规格书,如下图,点开规格书后,翻到第4页,从下图可以知道4KHz频率左右蜂鸣器声音最大
用4KHz,占空比50%的PWM,确认蜂鸣器能否正常工作。下图R7电阻是保证MCU没工作前,mos管是关断状态。经测试(马虎)蜂鸣器长时间通电,会发烫。
后续可以更改PWM的频率,找个一个听起来较舒服的声音当作提示音。
3.2SHT40电路
这一部分硬件电路很简单,难的是软件I2C外设部分
老样子,和蜂鸣器一样右键SHT40元器件,打开规格书,第十页的指令表,这里不急着直接用0xFD指令开始读温湿度,因为你无法确定SHT40芯片的好坏,如果数据异常,会让你排查到怀疑人生
先用0x89指令读取芯片的序列号,目的有两个:1.确认i2c能正常通信,SHT40芯片是正常能用的
下图是作者用串口打印出0x89指令下SHT40的返回值:0x12 0x29 0x38 0x3c 0x6e 0x23
如何确认数据是正常的呢?是的,我们可以根据规格书第九页下图的CRC校验码来确认
根据上图的CRC规格,填写算法,然后根据examples里的(0xbe 0xef)=0x92来确定我们的CRC算法设置对了
最后根据0x86指令读出来的数据进行CRC确认就可以知道芯片是否正常工作
(作者的吐槽:CRC校验只是校验前两位数据,并不包含地址和指令,让作者折腾了一阵)
最后就可以愉快的温湿度了,以小米温湿度计2做参考,误差还可以(因为不知道哪个误差更大233
one mroe:最后的最后,0xFD指令是让SHT40温湿度以最高时长读温湿度,所以在发送完0xFD指令后,需要至少等8.2ms毫秒后在读数据(第八页)
还有一件事:SHT40的I2C数据协议和eeprom的AT24C02一样,不懂的可以查一下,代码可以直接抄参考野火的AT24C02例程,小改一下就可以了。
未完结(指屏幕还没写),撒花(想鸽)
设计图

BOM


评论