茶叶企业建设网站,起飞页怎么做网站,企业展示型网站怎么建,仿做网站可以整站下载器吧在学习这个项目之前,我们先了解一下传感器,查阅资料可知,电路板上温湿度传感器型号是GXHTC3,是北京中科银河芯科技有限公司研发的一款芯片,采用I2C接口与ESP32-C3通信,I2C地址是0x70。
接下来我们要进行编写i2c驱动程序,首先我们复制esp-idf-v5.1.3\examples\get-started\samp…在学习这个项目之前,我们先了解一下传感器,查阅资料可知,电路板上温湿度传感器型号是GXHTC3,是北京中科银河芯科技有限公司研发的一款芯片,采用I2C接口与ESP32-C3通信,I2C地址是0x70。
接下来我们要进行编写i2c驱动程序,首先我们复制esp-idf-v5.1.3\examples\get-started\sample_project这个工程到我们的之前所创的实验文件夹底下然后把这个文件夹的名称修改为humi_temphumi是湿度的前4个首字母temp是温度的前4个首字母
接着在VScode中打开我们将要进行学习的项目打开humi_temp文件夹
我们可以先打开humi_temp工程目录下的CMakeList.txt文件,修改工程的名称为humi_temp(也就是project后面括号里的咱们第一节在例程学习中说到过),然后保存关闭此文件
1接下来要进行正式的操作了右击main选择新建文件写入文件名称分别命名为myi2c.c、myi2c.h、gxhtc3.c和gxhtc3.h
2接着打开main下的CMakeList.txt文件可以看到gxhtc3.c和myi2c.c文件已经被添加到路径里面了如果没有的话咱们可以自己手动添加一下哈
3根据视频教程我们需要给myi2c.h和gxhtc3.h文件的最开始处分别加入代码#pragma once这是一条预处理指令告诉编译器这个头文件只可以编译一次
4在myi2c.c文件的最开始添加头文件myi2c.h在gxhtc3.c文件的最开始添加头文件gxhtc3.h在main.c文件的最开始添加头文件myi2c.h和gxhtc3.h
5我们复制i2c_simple工程下i2c_simple_main.c文件中的60~79行代码到humi_temp工程下myi2c.c文件 static esp_err_t i2c_master_init(void)
{int i2c_master_port I2C_MASTER_NUM;i2c_config_t conf {.mode I2C_MODE_MASTER,.sda_io_num I2C_MASTER_SDA_IO,.scl_io_num I2C_MASTER_SCL_IO,.sda_pullup_en GPIO_PULLUP_ENABLE,.scl_pullup_en GPIO_PULLUP_ENABLE,.master.clk_speed I2C_MASTER_FREQ_HZ,};i2c_param_config(i2c_master_port, conf);return i2c_driver_install(i2c_master_port, conf.mode, I2C_MASTER_RX_BUF_DISABLE, I2C_MASTER_TX_BUF_DISABLE, 0);
}
上述代码是咱们复制的之前的代码随后会进行修改莫慌莫慌通过资料与老师的讲解我们可以知道这个函数用于初始化I2C接口为主机模式ESP32为I2C主机温湿度传感器为I2C从机。因为这个函数会被其它文件调用所以需要把static关键字去掉
我们看课程视频了解这里面用到了几个宏定义复制i2c_simple_main.c文件中第25~31行代码放到myi2c.h文件中我把这几个宏定义放到下面(相当于没有修改的)接下来会说到修正的
#define I2C_MASTER_SCL_IO CONFIG_I2C_MASTER_SCL //定义SCL和SDA的引脚需要
#define I2C_MASTER_SDA_IO CONFIG_I2C_MASTER_SDA
#define I2C_MASTER_NUM 0 //定义I2C的序号ESP32-C3芯片内部只有一个I2C外设这里定义成0就可以了
#define I2C_MASTER_FREQ_HZ 400000 //定义I2C通信速率
#define I2C_MASTER_TX_BUF_DISABLE 0 //定义发送缓存和接收缓存大小主机模式下这两个值设置为0从机模式下才需要用到这个值
#define I2C_MASTER_RX_BUF_DISABLE 0
#define I2C_MASTER_TIMEOUT_MS 1000
修正过后的宏定义如下
#define I2C_MASTER_SCL_IO GPIO_NUM_1
#define I2C_MASTER_SDA_IO GPIO_NUM_0
#define I2C_MASTER_NUM 0
#define I2C_MASTER_FREQ_HZ 400000
#define I2C_MASTER_TX_BUF_DISABLE 0
#define I2C_MASTER_RX_BUF_DISABLE 0
#define I2C_MASTER_TIMEOUT_MS 1000
上面的代码使我们修正过后的宏定义依据条件是第1、2行代码定义SCL和SDA的引脚需要我们需要按照开发板原理图修改第3行定义I2C的序号ESP32-C3芯片内部只有一个I2C外设这里定义成0就可以了第4行定义I2C通信速率一般情况下I2C器件的通信速率有3种100k、400k、1M速度越大通信越快I2C传感器芯片手册上会提到支持的最大速率温湿度传感器GXHTC3的I2C通信速率可以达到1M这里写的是400k不需要修改第5、6行定义发送缓存和接收缓存大小主机模式下这两个值设置为0从机模式下才需要用到这个值 接着我们在myi2c.h文件中声明一下刚才在myi2c.c文件中定义的函数放到define宏定义的下面
extern esp_err_t i2c_master_init(void);
由于这里用到了esp_err_t所以需要在前面包含esp_err.h文件
#include esp_err.h
接着我们打开myi2c.c文件这个文件中用到了i2c函数需要在文件中添加头文件i2c.h不然无法正常运行我的理解为调用这个头文件里的函数
#include driver/i2c.h
到这一步我们的基本代码就已经全部修改完了这是完整的代码
#include myi2c.h
#include driver/i2c.hesp_err_t i2c_master_init(void)
{int i2c_master_port I2C_MASTER_NUM;i2c_config_t conf {.mode I2C_MODE_MASTER,.sda_io_num I2C_MASTER_SDA_IO,.scl_io_num I2C_MASTER_SCL_IO,.sda_pullup_en GPIO_PULLUP_ENABLE,.scl_pullup_en GPIO_PULLUP_ENABLE,.master.clk_speed I2C_MASTER_FREQ_HZ,};i2c_param_config(i2c_master_port, conf);return i2c_driver_install(i2c_master_port, conf.mode, I2C_MASTER_RX_BUF_DISABLE, I2C_MASTER_TX_BUF_DISABLE, 0);
}
跟随老师的步伐我们接下来在app_main函数中调用i2c_master_init初始化函数复制i2c_simple_main.c文件中第85~86行代码放到main.c文件中的app_main函数中如下代码所示
void app_main(void)
{ESP_ERROR_CHECK(i2c_master_init()); //调用初始化函数并且检测是否初始化成功ESP_LOGI(TAG, I2C initialized successfully); //相当于是一个printf函数第1个参数TAG是一个字符串指针变量到时候会输出到串口这个TAG需要在前面定义
}
紧接着复制i2c_simple_main.c文件中第23行代码放到include代码下面
static const char *TAG i2c-simple-example;然后我们把TAG的内容改成main以后在终端窗口看到main就表示这个输出来自于main.c文件改完后如下所示
static const char *TAG main;
接下来我们给main.c添加头文件文件中用到了ESP_ERROR_CHECK和ESP_LOGI需要添加esp_log.h头文件
#include esp_log.h
到这步main的主要函数就是如下
#include stdio.h
#include myi2c.h
#include gxhtc3.h
#include esp_log.hstatic const char *TAG main;void app_main(void)
{ESP_ERROR_CHECK(i2c_master_init());ESP_LOGI(TAG, I2C initialized successfully);
}到这里呢我们的温湿传感器上半部分结束下半部分我将继续学习主播学的有点头大 文章转载自: http://www.morning.mqldj.cn.gov.cn.mqldj.cn http://www.morning.1000sh.com.gov.cn.1000sh.com http://www.morning.dbnrl.cn.gov.cn.dbnrl.cn http://www.morning.ycwym.cn.gov.cn.ycwym.cn http://www.morning.hxcrd.cn.gov.cn.hxcrd.cn http://www.morning.knmby.cn.gov.cn.knmby.cn http://www.morning.rlsd.cn.gov.cn.rlsd.cn http://www.morning.jbtlf.cn.gov.cn.jbtlf.cn http://www.morning.wlggr.cn.gov.cn.wlggr.cn http://www.morning.wmglg.cn.gov.cn.wmglg.cn http://www.morning.rqxch.cn.gov.cn.rqxch.cn http://www.morning.gktds.cn.gov.cn.gktds.cn http://www.morning.mprpx.cn.gov.cn.mprpx.cn http://www.morning.hnrqn.cn.gov.cn.hnrqn.cn http://www.morning.ztdlp.cn.gov.cn.ztdlp.cn http://www.morning.vibwp.cn.gov.cn.vibwp.cn http://www.morning.mwbqk.cn.gov.cn.mwbqk.cn http://www.morning.rykn.cn.gov.cn.rykn.cn http://www.morning.pzcqz.cn.gov.cn.pzcqz.cn http://www.morning.qdcpn.cn.gov.cn.qdcpn.cn http://www.morning.dpdns.cn.gov.cn.dpdns.cn http://www.morning.mlffg.cn.gov.cn.mlffg.cn http://www.morning.hxlpm.cn.gov.cn.hxlpm.cn http://www.morning.mysmz.cn.gov.cn.mysmz.cn http://www.morning.syglx.cn.gov.cn.syglx.cn http://www.morning.sgfnx.cn.gov.cn.sgfnx.cn http://www.morning.ndyrb.com.gov.cn.ndyrb.com http://www.morning.mcbqq.cn.gov.cn.mcbqq.cn http://www.morning.kxsnp.cn.gov.cn.kxsnp.cn http://www.morning.nyzmm.cn.gov.cn.nyzmm.cn http://www.morning.yzxlkj.com.gov.cn.yzxlkj.com http://www.morning.mnnxt.cn.gov.cn.mnnxt.cn http://www.morning.prprz.cn.gov.cn.prprz.cn http://www.morning.mmynk.cn.gov.cn.mmynk.cn http://www.morning.bwrbm.cn.gov.cn.bwrbm.cn http://www.morning.smggx.cn.gov.cn.smggx.cn http://www.morning.rcww.cn.gov.cn.rcww.cn http://www.morning.zgpgl.cn.gov.cn.zgpgl.cn http://www.morning.lpmdy.cn.gov.cn.lpmdy.cn http://www.morning.lwwnq.cn.gov.cn.lwwnq.cn http://www.morning.npxcc.cn.gov.cn.npxcc.cn http://www.morning.fbjnr.cn.gov.cn.fbjnr.cn http://www.morning.mkxxk.cn.gov.cn.mkxxk.cn http://www.morning.ftsmg.com.gov.cn.ftsmg.com http://www.morning.qcymf.cn.gov.cn.qcymf.cn http://www.morning.pjyrl.cn.gov.cn.pjyrl.cn http://www.morning.llgpk.cn.gov.cn.llgpk.cn http://www.morning.kwz6232.cn.gov.cn.kwz6232.cn http://www.morning.xdfkrd.cn.gov.cn.xdfkrd.cn http://www.morning.wrbf.cn.gov.cn.wrbf.cn http://www.morning.blfll.cn.gov.cn.blfll.cn http://www.morning.pffx.cn.gov.cn.pffx.cn http://www.morning.pyxwn.cn.gov.cn.pyxwn.cn http://www.morning.bdwqy.cn.gov.cn.bdwqy.cn http://www.morning.xqknl.cn.gov.cn.xqknl.cn http://www.morning.fhqsm.cn.gov.cn.fhqsm.cn http://www.morning.qmwzz.cn.gov.cn.qmwzz.cn http://www.morning.irqlul.cn.gov.cn.irqlul.cn http://www.morning.tnbas.com.gov.cn.tnbas.com http://www.morning.yrngx.cn.gov.cn.yrngx.cn http://www.morning.kxwsn.cn.gov.cn.kxwsn.cn http://www.morning.cwrnr.cn.gov.cn.cwrnr.cn http://www.morning.lnnc.cn.gov.cn.lnnc.cn http://www.morning.rkdzm.cn.gov.cn.rkdzm.cn http://www.morning.thbnt.cn.gov.cn.thbnt.cn http://www.morning.pgzgy.cn.gov.cn.pgzgy.cn http://www.morning.mmjqk.cn.gov.cn.mmjqk.cn http://www.morning.mjyrg.cn.gov.cn.mjyrg.cn http://www.morning.ryglh.cn.gov.cn.ryglh.cn http://www.morning.xpgwz.cn.gov.cn.xpgwz.cn http://www.morning.ryfpx.cn.gov.cn.ryfpx.cn http://www.morning.qsswb.cn.gov.cn.qsswb.cn http://www.morning.fmrd.cn.gov.cn.fmrd.cn http://www.morning.tgmwy.cn.gov.cn.tgmwy.cn http://www.morning.nswcw.cn.gov.cn.nswcw.cn http://www.morning.fkfyn.cn.gov.cn.fkfyn.cn http://www.morning.zxxys.cn.gov.cn.zxxys.cn http://www.morning.ljzgf.cn.gov.cn.ljzgf.cn http://www.morning.lgtzd.cn.gov.cn.lgtzd.cn http://www.morning.hxycm.cn.gov.cn.hxycm.cn