• arduino使用GY-30光强度传感器


    arduino使用光强度传感器GY-30获取当前环境下的光强度并通过串口输出。

    GY-30是一款采用了ROHM-BH1750FVI芯片的数字输出的感光模块,可以测量的光照度范围为0~65535勒克斯,最小误差变动为±20%,分辨度为1勒克斯。

    GY-30是一个五针脚模块,包含VCC、SCL、SDA、ADDR、GND五个引脚。其中VCC接电源正极,其电压范围在3~5V之间;GND接地;SCL为时钟线;SDA为数据线;并且,SCL和SDA与单片机相连时接上一个5k阻值的上拉电阻;ADDR为寄存器的地址引脚,其接地时器件地址为0100011(默认接地,也就是说该引脚什么也不接的话,该模块的地址为0100011),接电源正极时器件地址为1011100。

    GY-30与STM32单片机之间的通讯采用IIC通讯协议,这里简单复习一下IIC通讯。

    上图中,左边是起始信号,拉高数据线,再拉高时钟线,然后在时钟线为高电平时将数据线拉低,产生起始信号,之后再将时钟线拉低,等待发送数据。右边是停止信号(数据传递结束时,时钟线和数据线都为低电平),先拉高时钟线,在时钟线为高电平时将数据线拉高,产生停止信号。

    数据的传递由数据线承载,保证时钟线拉高时,数据线保持稳定。发送数据1,保持时钟线为低电平,将数据线拉高;在数据线拉高过程中,将时钟线拉高,等待几us后,将时钟线拉低。发送数据0与其同理,只需要将数据线保持为低电平即可。

    IIC协议在每发送完一条指令之后都会由接受指令的设备产生一个应答;若应答则继续,不应答则停止。

     说完IIC同通讯,我们再来具体讲解一下BH1750芯片的通讯流程。

    测量流程为:单片机发送器地址(7位)和写命令(1位)→传感器应答→单片机发送测量指令→传感器应答

    其读取测量结果流程位:单片机发送器地址和读命令→传感器应答→传感器给单片机发送高8位数据→单片机应答→传感器发送低8为数据→单片机不应答(通讯结束)

    下面附上arduino代码,使用的是UNO R3

    #include <Wire.h>
    // GY-30
    // BH1750FVI
    // in ADDR 'L' mode 7bit addr
    #define ADDR 0b0100011
    // addr 'H' mode
    // #define ADDR 0b1011100
    void setup() {
      // put your setup code here, to run once:
      Serial.begin(9600);
      while (!Serial) {
        ; // wait for serial port to connect. Needed for Leonardo only
      }
      Wire.begin();
      Wire.beginTransmission(ADDR);
      Wire.write(0b00000001);
      Wire.endTransmission();
    }
    void loop() {
      // put your main code here, to run repeatedly:
      int val = 0;
      // reset
      Wire.beginTransmission(ADDR);
      Wire.write(0b00000111);
      Wire.endTransmission();
     
      Wire.beginTransmission(ADDR);
      Wire.write(0b00100000);
      Wire.endTransmission();
      // typical read delay 120ms
      delay(120);
      Wire.requestFrom(ADDR, 2); // 2byte every time
      for (val = 0; Wire.available() >= 1; ) {
        char c = Wire.read();
        //Serial.println(c, HEX);
        val = (val << 8) + (c & 0xFF);
      }
      val = val / 1.2;
      Serial.print("BRIGHTNESS: ");
      Serial.print(val);
      Serial.println("lux");
      delay(100);
    }
  • 相关阅读:
    滤波器组概念
    镜像滤波器
    fdatool 设计IIR滤波器
    虚拟立体环绕声
    浊音经验阈值和条件
    使用import简化spring的配置 spring import 标签的解析 使用import或加载spring配置时,报错误There is no ID/IDREF 多个Spring配置文件import resource路径配置
    投资大师索罗斯的人生轨迹 索氏投资理论 打跨英格兰银行的人 “魔鬼”索罗斯
    互联网究竟带来中心化还是去中心化 那些赚钱的模式 探讨下互联网会把社会改造成什么样子,到底是中心化还是去中心化
    cmd.exe_参数_启动参数 cmd加启动运行参数 命令
    O'Reilly总裁提姆-奥莱理:什么是Web 2.0
  • 原文地址:https://www.cnblogs.com/wind-under-the-wing/p/14224478.html
Copyright © 2020-2023  润新知