5oliuLt0 发表于 2024-4-6 21:22:51

FireBeetle 2 ESP32 C6-I2C 驱动GY-30 光强度传感器;

有幸收到FireBeetle 2 ESP32 C6 板子,先体验下相关性能;


先测试I2C 接口功能:
从FireBeetle 2 ESP32 C6 引脚分别可以知道,I2C 默认是19,20;
      

再看GY-30 的硬件;
   总共有5个引脚,其中ADDR 接到GND则Address 为0x23;


GY-30 板载芯片为BH1750FVI 数字环境光感应芯片,内置16bit 的ADC 进行采样, 可以直接输出lx 的数字,内部框图如图所示;

GY-30 的模组原理图:

将GY-30 与FireBeetle 2 ESP32 C6 通过杜邦线连接起来;(主要ADDRESS 需要与GND连在一起);


软件编写:
   软件采用Arduino IDE 和C6 的库,代码如下:
#include "Wire.h"
#include "math.h"

int BH1750address = 0x23;
byte buff;
uint16_t val=0;

void setup() {
pinMode(15,OUT_PUT);

        Serial.begin(115200); //Debug UART
Serial1.begin(115200); //UART Print

Wire.begin(); //I2C Init
BH1750_Init(BH1750address);
}

void loop() {
        int i=0;

if(2 == BH1750_Read(BH1750address))
{
      if(buff==255 && buff==255)
      {
      val=65535;
      }else{
      val = (buff<<8 | buff)/1.2;
      Serial1.print(val,DEC);
      Serial1.println("");
      }
      
}
delay(500);

for (int i=0; i <= 255; i++){
      analogWrite(15, i);
      delay(10);
   }
Serial.print("helloWorld");
        Serial1.print("123");
}


int BH1750_Read(int address)
{
    int i=0;
    Wire.beginTransmission(address);
    Wire.requestFrom(address,2);

    while(Wire.available())
    {
      buff = Wire.read();
      i++;
    }
    Wire.endTransmission();
    return i;
}

void BH1750_Init(int address)
{
    Wire.beginTransmission(address);
    Wire.write(0x10);
    Wire.endTransmission();
    //delay(500);
}

最终显示采用串口1 通过串口工具显示;




最终所得数据:

页: [1]
查看完整版本: FireBeetle 2 ESP32 C6-I2C 驱动GY-30 光强度传感器;