- 2024-12-15
-
回复了主题帖:
【得捷电子Follow me第1期】-2- 驱动外设OLED屏幕
有C代码吗?
- 2024-12-09
-
回复了主题帖:
今天下午两点直播STM32全球线上峰会,STM32N6重磅发布,快来直播间【抽开发板】啦!
- 2024-12-06
-
回复了主题帖:
【一句】来一句话证明你干过嵌入式
IIC的写命令在地址字节末尾填0;读命令在地址末尾填1;
- 2024-11-28
-
加入了学习《FollowMe 第二季:3 - EK_RA6M5 开发板入门》,观看 EK-RA6M5 开发板入门
- 2024-11-03
-
回复了主题帖:
请问,洛蒙斯特这个压力变送器 作为流量 统计的原理是什么
流量不同导致的差压不同,将非线性进行线性化是个难点
- 2024-11-02
-
回复了主题帖:
笔记本都进化成这样了,感觉好炫酷啊
现在的电子产品都要不差钱才行啊
- 2024-10-27
-
发表了主题帖:
【2024 DigiKey创意大赛】基于STM32F411+BME680 家居气象台(完结)
本帖最后由 dwwzl 于 2024-10-28 21:08 编辑
基于STM32F411+BME680 家居气象台
作者:dwwzl
一、作品简介
图1.1
本作品能实时测量室内外空气的温度、湿度,大气压和空气质量指数,旨在服务于家居与外出,在室内外空气发生变化,能够及时提醒家人适时增减衣物,开关加湿器和空气清洁器。
本作品采用的物料如下表1.1:
表1.1
序号
名称
厂商
得捷零件编号
简介
1
NUCLEO-F411RE开发板
ST
497-14711-ND
NUCLEO-F411RE 是ST公司推出的一款针对STM32F4系列设计的Cortex-M4开发板,具有 mbed 功能,支持Arduino。同时还提供 ST Morpho 扩展排针,可连接微控制器的所有周边外设。开发板基于STM32F411RET6设计,开发板还集成了ST-LINK/V2-1仿真下载器(但仅对外提供SWD接口),免除您另外采购仿真器或下载器的麻烦。并且具备Arduino接口,可接入 Arduino 巨大生态系统的各种 Shield 扩展板,让您能够轻松快速增加特殊功能。
2
BME680
Adafruit Industries LLC
1528-2444-ND
BME680是Qwiic,STEMMA QT平台评估扩展板,可进行大气压力、环境温度、相对湿度、VOC 气体变化检测 (结合博世的软件包,可计算 IAQ 空气质量系数)。
3
D6T-1A-02
Omron Electronics Inc-EMC Div
Z10316-ND
欧姆龙红外热成像温度传感器D6T-1A-02可对静止人物也能检测的高灵敏度人体感应传感器。通过使用自制的MEMS、ASIC,达到了高水平的SNR。(D6T-32L-01A除外) 数字输出,抗干扰性优异。 通过低串扰的视野特性,实现更高精度的区域温度检测。
4
0.96寸OLED显示屏
中景园电子
另购
0.96寸的OLED液晶显示屏模块,显示区域是128X64的点阵(分辨率128*64),每个点都可以自己独立发光,所以不需要背光,可以显示汉字、ASIIC码、图案等。
二、系统框图
本作品的设计思路如下:
图2.1
首先从系统开发平台入手,熟悉本作品所要用到的NUCLEO-F411RE开发板,下载相关的编译软件和代码库文件,新建项目,编写并调试基础资源配置代码,点亮运行指示灯;
以BME680为例编写并调试IIC底层读写代码,同样的,移植到D6T-1A-02和0.96寸OLED显示屏的IIC读写驱动文件中,并调试通过;
根据要显示的数据内容,编写0.96寸OLED显示屏界面代码,并显示相关数据。
系统硬件展示如下:
NUCLEO-F411RE开发板,图2.2
NUCLEO-F411RE 是ST公司推出的一款针对STM32F4系列设计的Cortex-M4开发板,具有 mbed 功能,支持Arduino。同时还提供 ST Morpho 扩展排针,可连接微控制器的所有周边外设。开发板基于STM32F411RET6设计,开发板还集成了ST-LINK/V2-1仿真下载器(但仅对外提供SWD接口),免除您另外采购仿真器或下载器的麻烦。并且具备Arduino接口,可接入 Arduino 巨大生态系统的各种 Shield 扩展板,让您能够轻松快速增加特殊功能。
BME680模块,图2.3
BME680是Qwiic,STEMMA QT平台评估扩展板,可进行大气压力、环境温度、相对湿度、VOC 气体变化检测 (结合博世的软件包,可计算 IAQ 空气质量系数)。
D6T-1A-02模块,图2.4
欧姆龙红外热成像温度传感器D6T-1A-02可对静止人物也能检测的高灵敏度人体感应传感器。通过使用自制的MEMS、ASIC,达到了高水平的SNR。(D6T-32L-01A除外) 数字输出,抗干扰性优异。 通过低串扰的视野特性,实现更高精度的区域温度检测。
0.96寸OLED显示屏,图2.5
0.96寸的OLED液晶显示屏模块,显示区域是128X64的点阵(分辨率128*64),每个点都可以自己独立发光,所以不需要背光,可以显示汉字、ASIIC码、图案等。
系统框图如下:图2.6
三、各部分功能说明
室内外温湿度大气压和空气质量数据采集
利用BME680模块分别采集室内外的温湿度值,大气压力和空气参数。
如图3.1所示,
BME680模块采用4针IIC接口,3.3V~5V供电,功耗低至0.1mA,因此可以采用IO端口供电。
关键代码如下:
void BME680_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);
GPIO_InitStructure.GPIO_Pin = BME680_SCL1_Pin; // SCL
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(BME680_SCL1_GPIO_Port, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_ResetBits(GPIOC, GPIO_Pin_0); // 开通电源-
GPIO_SetBits(GPIOC, GPIO_Pin_1); // 开通电源+
}
int8_t bme680_iic_read(uint8_t dev_id, uint8_t reg_addr, uint8_t *data, uint16_t len)
{
u8 i=0;
BME_IIC_Start();
BME_IIC_Send_Byte(BME_IIC_ADDR);
BME_IIC_Wait_Ack();
BME_IIC_Send_Byte(reg_addr);
BME_IIC_Wait_Ack();
BME_IIC_Stop();
BME_IIC_Start();
BME_IIC_Send_Byte(BME_IIC_ADDR|0x01);
BME_IIC_Wait_Ack();
len--;
for(i= 0 ; i< len;i++)
{
data[i] = BME_IIC_Read_Byte(1);
}
data[i] = BME_IIC_Read_Byte(0);
BME_IIC_Stop();
return 0;
}
int8_t bme680_iic_write(uint8_t dev_id, uint8_t reg_addr, uint8_t *data, uint16_t len)
{
u8 cnt=0;
BME_IIC_Start();
BME_IIC_Send_Byte(BME_IIC_ADDR);
BME_IIC_Wait_Ack();
BME_IIC_Send_Byte(reg_addr);
BME_IIC_Wait_Ack();
while(len--)
{
BME_IIC_Send_Byte(data[cnt]);
BME_IIC_Wait_Ack();
cnt ++;
}
BME_IIC_Stop();
return 0;
}
void my_bme_init(void)
{
uint8_t set_required_settings;
u8 rslt;
BME680_Init(); // IO初始化
bme680_soft_reset(&gas_sensor);
gas_sensor.chip_id = BME680_CHIP_ID; // 芯片ID
gas_sensor.dev_id = BME680_I2C_ADDR_SECONDARY;
gas_sensor.amb_temp = 25;
gas_sensor.read = bme680_iic_read; // 数据读取函数的指针
gas_sensor.write = bme680_iic_write; // 写数据的指针
gas_sensor.intf = BME680_I2C_INTF; // 通讯方式的选择
gas_sensor.delay_ms = bme_delay_ms; // 延时函数的函数指针
gas_sensor.power_mode = BME680_FORCED_MODE; // 读取方式
gas_sensor.calib = calib_struct;
gas_sensor.tph_sett = tph_sett_struct;
gas_sensor.gas_sett = gas_sett_struct;
/* Set the temperature, pressure and humidity & filter settings */
gas_sensor.tph_sett.filter = BME680_FILTER_SIZE_1;
gas_sensor.tph_sett.os_hum = BME680_OS_1X; // 这里是 数据结构体下的 过采样率
gas_sensor.tph_sett.os_temp = BME680_OS_1X;
gas_sensor.tph_sett.os_pres = BME680_OS_1X;
/* Set the remaining gas sensor settings and link the heating profile */
gas_sensor.gas_sett.run_gas = BME680_ENABLE_GAS_MEAS;
/* Create a ramp heat waveform in 3 steps */
gas_sensor.gas_sett.heatr_temp = 350; // degree Celsius
gas_sensor.gas_sett.heatr_dur = 2000; // 150 milliseconds
/* Set the required sensor settings needed */
set_required_settings = (BME680_OST_SEL | BME680_OSP_SEL | BME680_OSH_SEL | BME680_FILTER_SEL| BME680_GAS_SENSOR_SEL);
rslt = bme680_init(&gas_sensor); // 调用初始化函数
if(rslt)printf("result of bme680_init() is %d",rslt); // 有问题的话输出调试信息
/* Set the desired sensor configuration */
rslt = bme680_set_sensor_settings(set_required_settings,&gas_sensor);
if(rslt)printf("result of bme680_set_sensor_settings() is %d",rslt);
/* Set the power mode */
rslt = bme680_set_sensor_mode(&gas_sensor);
if(rslt)printf("result of bme680_set_sensor_mode() is %d",rslt);
}
数据输出如下:
人体体温采集
利用D6T-1A-02模块感应并采集人体温度值。
如图3.2
D6T-1A-02模块采用4线IIC接口,供电电压为5V,工作电流3.5mA。
关键代码实现如下:
void D6T_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
// RCC
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB,
ENABLE );
// SCL
GPIO_InitStructure.GPIO_Pin = D6T_SCL_Pin;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_Init(D6T_SCL_GPIO_Port, &GPIO_InitStructure);
D6T_SDA_OUT();
D6T_IIC_SDA=1;
D6T_IIC_SCL=1;
}
/*
*******************************************************************************************
** =0 正常,=-1 传感器缺失,=1 时序异常
*******************************************************************************************
*/
int D6T_ReadData()
{
unsigned char D6Tbuff[5];
unsigned char D6T_Data;
unsigned char i;
unsigned int tPTAT_l;
unsigned int tP_l;
D6T_IIC_Start();
D6T_IIC_Send_Byte(D6T_Addr + 0);
D6T_IIC_Wait_Ack();
D6T_IIC_Send_Byte(D6T_CMD);
D6T_IIC_Wait_Ack();
D6T_IIC_Start();
D6T_IIC_Send_Byte(D6T_Addr + 1);
D6T_IIC_Wait_Ack();
// READ Data of Temperature
D6T_Data = 0;
for(i=0;i<(5-1);i++)
{
D6Tbuff[D6T_Data++] = D6T_IIC_Read_Byte(1);
}
D6Tbuff[D6T_Data] = D6T_IIC_Read_Byte(0);
D6T_IIC_Stop();
tPTAT_l = D6Tbuff[1] * 256 + D6Tbuff[0];
tP_l = D6Tbuff[3] * 256 + D6Tbuff[2];
D6T_Temp_f = (float)tPTAT_l / 10; // 单位 ℃
D6T_Temp_f = (float)tP_l / 10; // 单位 ℃
return 0;
}
数据输出如下:
数据显示
利用0.96寸OLED显示屏显示室内外的温湿度值,大气压力和空气参数和人体温度值。
如图3.3
0.96寸OLED显示屏采用7针IIC接口,供电电压3.3V,供电电流在全亮时约为25mA,全灭时约为1.5mA。
按照下表调整电阻配置。
关键代码实现如下:
//OLED的初始化
void OLED_Init(void)
{
// 端口配置
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);//使能GPIOA时钟
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);//使能GPIOB时钟
//初始化设置
GPIO_InitStructure.GPIO_Pin = OLED_G_Pin | OLED_V_Pin | OLED_D0_Pin;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//普通输出模式
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化
GPIO_ResetBits(GPIOA,OLED_G_Pin);//电源-
GPIO_SetBits(GPIOA,OLED_V_Pin);//电源+
GPIO_ResetBits(GPIOA,OLED_D0_Pin);//D0
GPIO_InitStructure.GPIO_Pin = OLED_D1_Pin | OLED_DC_Pin | OLED_RES_Pin | OLED_CS_Pin;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//普通输出模式
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化
GPIO_ResetBits(GPIOB,OLED_D1_Pin);//D1
GPIO_ResetBits(GPIOB,OLED_DC_Pin);//DC
GPIO_SetBits(GPIOB,OLED_RES_Pin);//RES
GPIO_ResetBits(GPIOB,OLED_CS_Pin);//CS
delay_ms(200);
//初始化命令
OLED_WR_Byte(0xAE,OLED_CMD);//关闭显示--turn off oled panel
OLED_WR_Byte(0x00,OLED_CMD);//第1点列地址---set low column address
OLED_WR_Byte(0x10,OLED_CMD);//高1点列地址---set high column address
OLED_WR_Byte(0x40,OLED_CMD);//显示开始线--set start line address Set Mapping RAM Display Start Line (0x00~0x3F)
OLED_WR_Byte(0x81,OLED_CMD);//设置对比度--set contrast control register
OLED_WR_Byte(0xCF,OLED_CMD);// Set SEG Output Current Brightness
OLED_WR_Byte(0xA1,OLED_CMD);//设置段复用--Set SEG/Column Mapping 0xa0左右反置 0xa1正常
OLED_WR_Byte(0xC8,OLED_CMD);//设置扫描方向--Set COM/Row Scan Direction 0xc0上下反置 0xc8正常
OLED_WR_Byte(0xA6,OLED_CMD);//设置正常显示或反显--set normal display
OLED_WR_Byte(0xA8,OLED_CMD);//设置复用比--set multiplex ratio(1 to 64)
OLED_WR_Byte(0x3f,OLED_CMD);//--1/64 duty
OLED_WR_Byte(0xD3,OLED_CMD);//设置显示偏移量--set display offset Shift Mapping RAM Counter (0x00~0x3F)
OLED_WR_Byte(0x00,OLED_CMD);//-not offset
OLED_WR_Byte(0xd5,OLED_CMD);//设置时钟分频因子--set display clock divide ratio/oscillator frequency
OLED_WR_Byte(0x80,OLED_CMD);//--set divide ratio, Set Clock as 100 Frames/Sec
OLED_WR_Byte(0xD9,OLED_CMD);//设置充电周期--set pre-charge period
OLED_WR_Byte(0xF1,OLED_CMD);//Set Pre-Charge as 15 Clocks & Discharge as 1 Clock
OLED_WR_Byte(0xDA,OLED_CMD);//设置引脚配置--set com pins hardware configuration
OLED_WR_Byte(0x12,OLED_CMD);
OLED_WR_Byte(0xDB,OLED_CMD);//设置取消等级--set vcomh
OLED_WR_Byte(0x30,OLED_CMD);//[6:4] 000,0.65*vcc;001,0.77*vcc;011,0.83*vcc;
OLED_WR_Byte(0x40,OLED_CMD);//显示开始线--Set VCOM Deselect Level
OLED_WR_Byte(0x20,OLED_CMD);//内存水平地址模式--Set Page Addressing Mode (0x00/0x01/0x02)
OLED_WR_Byte(0x02,OLED_CMD);//
OLED_WR_Byte(0x8D,OLED_CMD);//--set Charge Pump enable/disable
OLED_WR_Byte(0x14,OLED_CMD);//--set(0x10) disable
OLED_WR_Byte(0xA4,OLED_CMD);// Disable Entire Display On (0xa4/0xa5)
OLED_WR_Byte(0xA6,OLED_CMD);// Disable Inverse Display On (0xa6/a7)
OLED_WR_Byte(0xAF,OLED_CMD);
OLED_Clear();
}
//清屏函数
void OLED_Clear(void)
{
unsigned char i,n;
for(i=0;i<8;i++)
{
for(n=0;n<128;n++)
{
OLED_GRAM[n][i]=0;//清除所有数据
}
}
OLED_Refresh();//更新显示
}
//显示字符串
//x,y:起点坐标
//size1:字体大小
//*chr:字符串起始地址
void OLED_ShowString(unsigned char x,unsigned char y,unsigned char *chr,unsigned char size1)
{
while((*chr>=' ')&&(*chr<='~'))//判断是不是非法字符!
{
OLED_ShowChar(x,y,*chr,size1);
x+=size1/2;
if(x>128-size1) //换行
{
x=0;
y+=2;
}
chr++;
}
}
//显示汉字
//x,y:起点坐标
//num:汉字对应的序号
//取模方式 列行式
void OLED_ShowChinese(unsigned char x,unsigned char y,unsigned char num,unsigned char size1)
{
unsigned char i,m,n=0,temp,chr1;
unsigned char x0=x,y0=y;
unsigned char size3=size1/8;
while(size3--)
{
chr1=num*size1/8+n;
n++;
for(i=0;i<size1;i++)
{
if(size1==16)
{temp=Hzk1[chr1][i];}//调用16*16字体
else if(size1==24)
{temp=Hzk2[chr1][i];}//调用24*24字体
else if(size1==32)
{temp=Hzk3[chr1][i];}//调用32*32字体
else if(size1==64)
{temp=Hzk4[chr1][i];}//调用64*64字体
else return;
for(m=0;m<8;m++)
{
if(temp&0x01)OLED_DrawPoint(x,y);
else OLED_ClearPoint(x,y);
temp>>=1;
y++;
}
x++;
if((x-x0)==size1)
{x=x0;y0=y0+8;}
y=y0;
}
}
}
最终,显示界面如下:
四、作品源码
本作品源码链接如下:
https://download.eeworld.com.cn/detail/dwwzl/634616
五、作品功能演示视频
视频如下:
[localvideo]fa1ece3d07f922de004b32e6da02b8b8[/localvideo]
六、项目总结
在实现本作品的过程中,接触到了像BME680和D6T-1A-02一类的MEMS传感器,读写操作不难做到,难点在于将传感器的输出数据进行算法计算和实际应用起来,做到让先进的传感技术真正服务于生活和工作场景中去。
本作品后续可以考虑加入无线通信模块,采用锂电池供电,实现传感器分布式采集数据并上传到数据计算中心,经过综合计算判断后,得出合理的结论下发到人机接口终端,让输出结果一目了然。
分享帖链接如下:
【2024 DigiKey创意大赛】家居气象台-物料开箱 - DigiKey得捷技术专区 - 电子工程世界-论坛 https://bbs.eeworld.com.cn/thread-1291454-1-1.html
【2024 DigiKey创意大赛】家居气象台-备料 - DigiKey得捷技术专区 - 电子工程世界-论坛 https://bbs.eeworld.com.cn/thread-1293100-1-1.html
【2024 DigiKey创意大赛】家居气象台-调试iic接口通信 - DigiKey得捷技术专区 - 电子工程世界-论坛 https://bbs.eeworld.com.cn/thread-1296584-1-1.html
七、附件
- 2024-10-25
-
上传了资料:
STM32F411RE-OLED-BME-D6T源码
- 2024-10-23
-
上传了资料:
STM32F411RE-OLED-BME-D6T工程源代码
- 2024-10-22
-
上传了资料:
基于STM32F411+BME680家居气象台工程代码
-
回复了主题帖:
【2024 DigiKey创意大赛】家居气象台-调试iic接口通信
秦天qintian0303 发表于 2024-10-22 09:02
D6T-1A-01监测的到底是什么型号啊?
写错了,应该是D6T-1A-02,可以用来感应人体存在,也可以非接触测温,还没有对比准确度,温度值倒是蛮稳定的呢
-
回复了主题帖:
【2024 DigiKey创意大赛】家居气象台-调试iic接口通信
wangerxian 发表于 2024-10-21 15:30
抓IIC数据,还是逻辑分析仪好用,示波器看数据内容还有点麻烦
示波器用习惯了也还好吧,就是读每一位比较麻烦,不如逻辑分析仪来的直观
- 2024-10-20
-
加入了学习《得捷电子专区》,观看 【2024 DigiKey 创意大赛】红外温度检测及火灾报警器
-
发表了主题帖:
【2024 DigiKey创意大赛】家居气象台-调试iic接口通信
为了项目尽快落地,便于兼容和移植部分现成的代码,开发平台采用Keil MDK编译器,代码库采用STM32的基础库。图1
因为选用的OLED显示屏接口可以是4线SPI口,也可以是IIC接口;BME680可以是4线SPI口,也可以是IIC接口;D6T-1A-01只有IIC接口,因此,选择IIC接口作为统一的通信口。IIC接口的调试就成了重要的一部分。图2
另外,IIC接口需要用到的线较少,连接起来也比较简洁。考虑到各个模块是连接到NUCLEO-F411RE开发板的引脚插座上,而非重新绘制线路板,因而,考虑选择软件实现IIC的读写时序,这样做的好处就是模块的接线可以放在一起,而无须根据STM32F411RE的内部IIC的固定引脚分配不集中导致引线纷乱繁杂。图3
第1步,新建项目工程。
这个过程无需赘述了,想必大家都会的。工程建好后,尝试点亮指示灯LD2。图4
第2步,编写BME680模块的底层iic接口通信代码,设定延时时间,调试读写时序,验证数据是否正确等等。调试是个辛苦活,一旦卡到了哪儿,就只能上示波器或者逻辑分析仪了。图5
第3步,同样的底层通信代码,移植到D6T-1A-02模块和0.96寸OLED显示屏模块上,直到调试完成。
至此,所需要的底层硬件通信就已经基本完成了。
接下来就是人机交互的显示界面啦!
- 2024-10-14
-
回复了主题帖:
滑模(变结构)控制 究竟是甚么来着?!
起了个好机械结构的名字,不就是一个反馈稳压电路嘛!
- 2024-09-11
-
回复了主题帖:
【2024 DigiKey创意大赛】家居气象台-备料
还好吧,F4系列的属于中等
- 2024-09-08
-
发表了主题帖:
【2024 DigiKey创意大赛】家居气象台-备料
围绕项目需求购置了以下必要的附料,在此和大家进行一一分享。
第1个,NUCLEO-F411RE开发板的usb接口没有与时俱进采用type C接口,而是仍然采用的usb mini B接口,而且还不配usb线。
这种接口应用比较少,远不如micro接口和type C接口应用广泛。记得在数码相机或MP3播放器上应用过,好吧,经过努力,终于找到了一条。
第2个,BME680模块,采用的接口是1.0mm间距的4p连接端子。
第3个,D6T-1A-02模块,采用的接口是1.25mm间距的4p连接端子。
第4个,选用了一款0.96寸OLED显示屏作为数据显示终端。
至此,所需要的硬件已经基本俱备了。
接下来就该嵌入式代码上场啦!
- 2024-09-06
-
回复了主题帖:
恒流设计难点
你要的是高边恒流,你的图是底边恒流,拓扑就不一样,就别想着在现有的基础上修修补补了。得重新设计
-
回复了主题帖:
485通讯终端阻抗匹配和接法的联系
485通信要符合AB差分信号规程,只要这个有保证,通信就没有问题
- 2024-08-24
-
发表了主题帖:
【2024 DigiKey创意大赛】家居气象台-物料开箱
首先,感谢eeworld为大赛做的详细的物料购买指导,感谢DigiKey商城强大的平台。购买的物料已收到,展示如下,
可以说,物料的包装超出了我的预期,正规,严密,环保。
接下来,就需要围绕项目需求购置一些必要的附件了,后续进展再和大家分享,谢谢!