这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 板卡试用 » Grove Creator Kit开发指南【室内环境状态监测显示】

共1条 1/1 1 跳转至

Grove Creator Kit开发指南【室内环境状态监测显示】

菜鸟
2026-08-24 22:37:58     打赏

一、硬件介绍

1、主控开发板

使用的是XIAO ESP32S3开发板,集成ESP32S3 32位双核处理器芯片,最高运行频率240MHz,板载8MB PSRAM和8MB FLASH

1787576271514383.png





功能引脚示意图

1787576305327340.png


2、扩展底板

一款支持XIAO系列的功能扩展板,具有丰富的外设:包括OLED、RTC、可扩展内存、无源蜂鸣器、RESET/用户按钮、5V舵机连接器等;

image.png


主要特性

image.png


功能引脚示意图

image.png


3、Grove Creator Kit 器件

在本次开发中,使用到的 `Grove Creator Kit 套件` 中的器件如下:


Grove - Temperature & Humidity Sensor (DHT11)

这款温湿度传感器提供预校准的数字输出,独特的电容式传感器元件测量相对湿度,温度通过负温度系数 (NTC) 热敏电阻测量;

image-20260822212659884.png



主要特性

image.png


Grove - Light Sensor

Grove - 光传感器集成了一个光敏电阻来检测光强度,当光强度增加时,光敏电阻的阻值会减小,板载的双运放芯片LM358产生与光强度相对应的电压;

输出信号是模拟值,光线越亮,数值越大;

image-20260822213401386.png


主要特性

image.png



Grove - Temperature Sensor

Grove - 温度传感器使用热敏电阻来检测环境温度,当环境温度降低时,热敏电阻的阻值会增加;

检测范围:-40 - 125ºC;

精度: ±1.5ºC;

image-20260822213532384.png



主要特性

电压:3.3 ~ 5V

25℃时最大功率额定值:300mW

零功率电阻:10 KΩ

工作温度范围:-40 ~ +125 ℃



二、功能实现

1、硬件搭建

将光传感器、温湿度传感器、温度传感器模块,通过Grove接口连接到开发板对应的引脚上;

image.png


实物搭建效果:

image-20260823112844243.png



2、功能效果

分别通过温湿度传感器、温度传感器、光传感器模块检测室内环境的湿度、温度、光照强度等信息;

并将检测到的数值分别显示到扩展板的OLED屏幕上;



三、代码编写

主要相关代码

>  温度、光照强度数值每500ms更新一次;

>  湿度数值每2s更新一次;

#include <DHT11.h>
#include <U8x8lib.h>
#include <Wire.h>


#define LIGHT_PIN A1
#define HUM_PIN   D7    //DHT11 只读湿度
#define TEM_PIN   A0    //NTC热敏电阻温度

U8X8_SSD1306_128X64_NONAME_HW_I2C u8x8(/* reset=*/ U8X8_PIN_NONE, /* clock=*/ SCL, /* data=*/ SDA );

DHT11 dht11(HUM_PIN);


int lightValue = 0;
int lightPercent = 0;
float temperature = 0.0;
int humidity = 0;

const int B = 3975;         //NTC B值
const float R0 = 10000.0;   //25℃标称电阻10k

unsigned long timerLT = 0;
const unsigned long intervalLT = 500;   //光照、温度 500ms

unsigned long timerHum = 0;
const unsigned long intervalHum = 2000;  //DHT11湿度 2000ms

void setup()
{
    u8x8.begin();
    u8x8.setFlipMode(0);
    u8x8.setFont(u8x8_font_7x14_1x2_r);

    pinMode(HUM_PIN, INPUT);
    pinMode(TEM_PIN, INPUT);
    pinMode(LIGHT_PIN, INPUT);
    delay(500);
    u8x8.clear(); 
}

void loop()
{
    unsigned long now = millis();
    // 光照/NTC温度:500ms更新
    if(now - timerLT >= intervalLT)
    {
        timerLT = now;
        lightValue = analogRead(LIGHT_PIN);
        lightPercent = map(lightValue, 0, 4095, 0, 100);
        lightPercent = constrain(lightPercent,0,100);   // 转换为百分比

        int temValue = analogRead(TEM_PIN);
        float resistance = (float)(4095 - temValue) * R0 / temValue;
        temperature = 1.0 / (log(resistance / R0) / B + 1.0 / 298.15) - 273.15;
    }

    // DHT11湿度:2s更新
    if(now - timerHum >= intervalHum)
    {
        timerHum = now;
        humidity = dht11.readHumidity();
    }

    // 屏幕显示
    u8x8.setCursor(3,1);
    u8x8.print("Light:");
    u8x8.print(lightPercent);
    u8x8.print("%   ");

    u8x8.setCursor(3,3);
    u8x8.print("Temp:");
    u8x8.print(temperature,1);
    u8x8.print("C   ");

    u8x8.setCursor(3,5);
    u8x8.print("Humi:");
    if (humidity != DHT11::ERROR_CHECKSUM && humidity != DHT11::ERROR_TIMEOUT)
    {
        u8x8.print(humidity);
        u8x8.print("%   ");
    }
    else
    {
        u8x8.print("--   ");
    }
}



四、程序烧录

1、连接USB数据线至开发板;

2、选择端口号对应的开发板;

3、点击 `上传` 烧录程序到开发板上;

image-20260818173949849.png



五、效果演示


9.gif








共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]