Snímač polohy APDS-9930 je rozšiřovací modul pro Arduino. Tento modul obsahuje světelný senzor v kombinaci se senzorem přiblížení. Můžeme s ním tedy měřit nejen intenzitu okolního osvětlení, ale také detekovat vzdálenost od okolních předmětů v rozsahu přibližně 3-10 centimetrů.
Pro napájení tohoto snímače je možné využít napájecí napětí 3,3 nebo 5 Voltu. Proudový odběr se pak pohybuje v režimu spánku okolo 2,2 mikroAmpér, při měření pak asi 90 mikroAmpér. Co se týká komunikace s Arduinem, tak ta probíhá po sběrnici I2C. Modul obsahuje také přerušovací pin, který lze nakonfigurovat tak, že bude informovat o změnách světla či vzdálenosti od předmětů v okolí svojí aktivací.

Snímač polohy APDS-9930

Pro úspěšné propojení modulu APDS9930 a Arduino desky stačí zapojit celkem 4 vodiče. Propojíme VIN s 5V Arduina, GND se zemí Arduina, SCL s pinem A5 a SDA s pinem A4. Pro piny SDA a SCL musíme vybrat vždy vyhrazené I2C piny na námi vybrané desce, u Arduino UNO jsou to právě piny A4 a A5.

Snímač polohy APDS-9930

Pro úspěšné nahrání uvedeného ukázkového kódu je nutné stáhnout a naimportovat knihovnu APDS9930, návod, jak na to, je uveden zde.
Ukázkový kód obsahuje na svém začátku připojení potřebné knihovny společně s vytvořením objektu modulu z knihovny. A v dalším kroku si vytvoříme proměnné, do kterých budeme ukládat výsledky.
V podprogramu setup nejprve zahájíme komunikaci po sériové lince a poté provedeme inicializaci senzoru 9930. V dalších krocích zahájíme použití světelného senzoru a senzoru přiblížení, přičemž po každém kroku vytiskneme informační zprávu o úspěchu či neúspěchu po sériové lince.
Nekonečná smyčka loop obsahuje na svém začátku načtení hodnoty okolního osvětlení, opět s kontrolou správnosti, a vytištění výsledku na sériovou linku. Poté podobným způsobem načteme a vytiskneme hodnotu ze senzoru přiblížení a přidáme prázdný řádek pro odlišení výsledků. Na konci smyčky se nachází už jen pauza před novým měřením.

// Snímač polohy APDS 9930

// připojení potřebných knihoven
#include <APDS9930.h>

// vytvoření objektu modulu z knihovny
APDS9930 apds = APDS9930();
// vytvoření proměnných pro uložení výsledků
float osvetleni = 0;
uint16_t priblizeni = 0;

void setup() {
  // inicializace komunikace po sériové lince
  Serial.begin(9600);
  // inicializace senzoru APDS-9930
  if ( apds.init() ) {
    Serial.println("Inicializace APDS-9930 probehla v poradku.");
  } else {
    Serial.println("Inicializace APDS-9930 selhala!");
  }
  // zahájení použití APDS-9930 světelného senzoru
  if ( apds.enableLightSensor(false) ) {
    Serial.println("Svetelny senzor v poradku.");
  } else {
    Serial.println("Inicializace svetelneho senzoru selhala!");
  }
  // zahájení použití APDS-9930 senzoru přiblížení
  if ( apds.enableProximitySensor(false) ) {
    Serial.println("Senzor priblizeni v poradku.");
  } else {
    Serial.println("Inicializace senzoru priblizeni selhala!");
  }
}

void loop() {
  // načtení hodnoty okolního osvětlení
  if (!apds.readAmbientLightLux(osvetleni)) {
    Serial.println("Chyba pri cteni hodnoty ze senzoru osvetleni!");
  } else {
    Serial.print("Senzor osvetleni: ");
    Serial.println(osvetleni);
  }
  // načtení hodnoty senzoru přiblížení
  if ( !apds.readProximity(priblizeni) ) {
    Serial.println("Chyba pri cteni hodnoty ze senzoru priblizeni!");
  } else {
    Serial.print("Senzor priblizeni: ");
    Serial.println(priblizeni);
  }
  // vytištění prázdného řádku
  Serial.println();
  // pauza před novým během smyčky
  delay(500);
}

Po nahrání ukázkového kódu do Arduino desky s připojeným snímačem

Inicializace APDS-9930 probehla v poradku.
Svetelny senzor v poradku.
Senzor priblizeni v poradku.
Senzor osvetleni: 9.74
Senzor priblizeni: 90

Senzor osvetleni: 9.74
Senzor priblizeni: 96

Senzor osvetleni: 7270.67
Senzor priblizeni: 329

 

Snímač polohy APDS-9930 je zajímavý modul, který nám umožňuje obohatit Arduino nejen o detekci osvětlení, ale také nám přidá informaci o pohybu předmětů v krátké vzdálenosti. Může se tak hodit například při tvorbě Arduino ovladače či mobilního telefonu, protože zastává podobnou funkci jako přední senzory právě na telefonech. Můžeme tedy například pomocí senzoru osvětlení řídit sílu jasu displeje a pokud se přiblížíme dostatečně se senzorem k nějakému předmětu, tak vypneme jas displeje úplně. A díky svým malým rozměrům se senzor dobře umisťuje do hotových zařízení.

Seznam použitých komponent:
https://dratek.cz/arduino/974-arduino-uno-r3-atmega328p-1424115860.html
https://dratek.cz/arduino/2171-i2c-als-snimac-polohy-gy-9930-llc-apds-9930.html

FB tw

Další podobné články