« SEN0562 » : différence entre les versions

De NCad Wiki
Aller à la navigation Aller à la recherche
Ligne 58 : Ligne 58 :


== Programme ==
== Programme ==
Ce programme permet de lire la '''valeur mesurée''' par le '''capteur de lumière'''. Cette valeur est ensuite transmise via l''''interface série'''. Elle peut être lue via le '''moniteur série''' du compilateur.


  #include "Wire.h"
  #include "Wire.h"

Version du 1 février 2026 à 00:12

Présentation

Le SEN0562 est un capteur de lumière étanche (IP68) communiquant sur le bus série I²C. Le capteur fonctionne sous une tension de 5 VCC.

Caractéristiques
Type de mesure Lumière
Plage de mesure 1 - 65535lx
Température de fonctionnement -40 to 85°C
Indice de protection IP68
Protocole de communication I2C
Tension d'alimentation 5 VCC
Consommation courant 1 µA
Connectique
Fil vert SDA (Entrée I²C)
Fil jaune SCL (Entrée I²C)
Fil rouge VCC (Alim. +)
Fil noir GND (Alim. -)

Fonctionnement du capteur

Câblage

Arduino UNO

ARDUINO UNO R3 PINS.jpg

Le capteur se branche directement à l'Arduino Uno R3 comme ceci :

  • Fil vert du SEN0562 sur le port SDA/D18 de l'Arduino Uno R3.
  • Fil jaune du SEN0562 sur le port SCL/D19 de l'Arduino Uno R3.
  • Fil rouge du SEN0562 sur le port +5V OUT de l'Arduino Uno R3.
  • Fil noir du SEN0562 sur le port GND de l'Arduino Uno R3.

Arduino Nano R4

ARDUINO NANO R4 PINS.jpg

Arduino Nano ESP32

Les E/S de cette carte fonctionnent sous 3.3V.

ARDUINO NANO ESP32 PINS.jpg

Programme

Ce programme permet de lire la valeur mesurée par le capteur de lumière. Cette valeur est ensuite transmise via l'interface série. Elle peut être lue via le moniteur série du compilateur.

#include "Wire.h"
#define address 0x23                 //I2C address 0x23

void setup()
{
  Serial.begin(9600);
  Wire.begin();
}

uint8_t buf[4] = {0};
uint16_t data, data1;
float Lux;

void loop()
{
  readReg(0x10, buf, 2);              //Register address 0x10
  data = buf[0] << 8 | buf[1];
  Lux = (((float)data )/1.2);
  Serial.print("LUX:");
  Serial.print(Lux);
  Serial.print("lx");
  Serial.print("\n");
  delay(500);
}

uint8_t readReg(uint8_t reg, const void* pBuf, size_t size)
{
  if (pBuf == NULL) {
    Serial.println("pBuf ERROR!! : null pointer");
  }
  uint8_t * _pBuf = (uint8_t *)pBuf;
  Wire.beginTransmission(address);
  Wire.write(reg);
  if ( Wire.endTransmission() != 0) {
    return 0;
  }
  delay(20);
  Wire.requestFrom(address, (uint8_t) size);
  for (uint16_t i = 0; i < size; i++) {
    _pBuf[i] = Wire.read();
  }
  return size;
}

Liens connexes