Keyestudio APDS-9930 Durum-Obje Algılama Sensör Modülü
Keyestudio APDS-9930 Durum-Obje Algılama Sensör Modülü
Tanıtım
Keyestudio APDS-9930 tutum sensörü modülü temel olarak APDS-9930 çipini kullanır. Tek bir 8 pimli paketteki APDS-9930, I2C arayüzü ve kızılötesi LED yakınlık sensörü ile uyumlu ortam ışığı sensörünü sağlayabilir. Ortam ışığı sensörü, 0,01 lüks aydınlatma altında düşük lümenli insanın görsel tepkisini yaklaşık olarak belirlemek için çift ışık diyot kullanır ve yüksek hassasiyeti, cihazın koyu camın arkasında çalışmasına izin verir.
Tamamen ayarlanmış olan yakınlık sensörü, 100 mm'lik bir nesneyi algılayabilir ve terminal ekipmanının ve alt bileşenlerin fabrika kalibrasyon gereksinimlerini muaf tutabilir. Parlak güneş ışığından karanlık odaya, yakınlık sensörünün yakınlık algılama işlevi iyi çalışabilir. Bu modül eklenen mikro optik lens, genel güç tüketimini azaltabilen kızılötesi enerji verimli iletim ve alım sağlayabilir. Buna ek olarak, dahili durum makinesi cihazı düşük güç moduna getirebilir ve normalde çok düşük bir ortalama güç tüketimi sağlar.
Performans Parametreleri
- Çalışma Gerilimi: DC 3.3-3.8V
Çıkış Akımı : 0-20mA
Sıcaklık Aralığı : -40 ℃ ila + 85 ℃
Özellikleri
ALS, kızılötesi LED ve yakınlık dedektörü ile entegre optik modül;
Ortam Işığı Algılama the insan gözünün görsel yanıtına benzer;
Üst ve alt eşiklerle programlanabilir kesinti fonksiyonu;
16 bit çözünürlüğe kadar;
Koyu camın arkasında yüksek çalışma hassasiyeti;
0.01lux düşük lümen performansı;
100 mm algılama için tamamen kalibre edilmiş yakınlık algılama;
Kızılötesi LED ve senkron LED sürücüsünü entegre edin;
Yakınlık sensörleri için fabrika kalibrasyonunu ortadan kaldırın;
Programlanabilir bekleme zamanlayıcısı, bekleme durumunun güç tüketimi - 90μA (tipik değer);
Programlanabilir aralık 2,7 milisaniyeden 8 saniyeye kadardır;
I2C arayüzü ile uyumlu, 400kHz'e kadar (I2C hızlı mod);
Özel kesinti pimi;
Uyku modu gücü - 2,2μA (tipik değer)
Bağlantı Diagramı
Örnek Kodu
APDS9930 Kitaplıklarını İndirme: [1]
Hardware Connections:
IMPORTANT: The APDS-9960 can only accept 3.3V!
Arduino Pin APDS-9960 Board Function
3.3V - VCC - Power
GND - GND - Ground
A4 - SDA - I2C Data
A5 - SCL - I2C Clock
2 - INT - Interrupt
13 - - - LED
Resources:
Include Wire.h and SparkFun_APDS-9960.h
Development environment specifics:
Written in Arduino 1.0.5
#include#include // Pins #define APDS9960_INT 2 // Needs to be an interrupt pin #define LED_PIN 13 // LED for showing interrupt // Constants #define LIGHT_INT_HIGH 1000 // High light level for interrupt #define LIGHT_INT_LOW 10 // Low light level for interrupt // Global variables SparkFun_APDS9960 apds = SparkFun_APDS9960(); uint16_t ambient_light = 0; uint16_t red_light = 0; uint16_t green_light = 0; uint16_t blue_light = 0; int isr_flag = 0; uint16_t threshold = 0; void setup() { // Set LED as output pinMode(LED_PIN, OUTPUT); pinMode(APDS9960_INT, INPUT); // Initialize Serial port Serial.begin(9600); Serial.println(); Serial.println(F("-------------------------------------")); Serial.println(F("SparkFun APDS-9960 - Light Interrupts")); Serial.println(F("-------------------------------------")); // Initialize interrupt service routine attachInterrupt(0, interruptRoutine, FALLING); // Initialize APDS-9960 (configure I2C and initial values) if ( apds.init() ) { Serial.println(F("APDS-9960 initialization complete")); } else { Serial.println(F("Something went wrong during APDS-9960 init!")); } // Set high and low interrupt thresholds if ( !apds.setLightIntLowThreshold(LIGHT_INT_LOW) ) { Serial.println(F("Error writing low threshold")); } if ( !apds.setLightIntHighThreshold(LIGHT_INT_HIGH) ) { Serial.println(F("Error writing high threshold")); } // Start running the APDS-9960 light sensor (no interrupts) if ( apds.enableLightSensor(false) ) { Serial.println(F("Light sensor is now running")); } else { Serial.println(F("Something went wrong during light sensor init!")); } // Read high and low interrupt thresholds if ( !apds.getLightIntLowThreshold(threshold) ) { Serial.println(F("Error reading low threshold")); } else { Serial.print(F("Low Threshold: ")); Serial.println(threshold); } if ( !apds.getLightIntHighThreshold(threshold) ) { Serial.println(F("Error reading high threshold")); } else { Serial.print(F("High Threshold: ")); Serial.println(threshold); } // Enable interrupts if ( !apds.setAmbientLightIntEnable(1) ) { Serial.println(F("Error enabling interrupts")); } // Wait for initialization and calibration to finish delay(500); } void loop() { // If interrupt occurs, print out the light levels if ( isr_flag == 1 ) { // Read the light levels (ambient, red, green, blue) and print if ( !apds.readAmbientLight(ambient_light) || !apds.readRedLight(red_light) || !apds.readGreenLight(green_light) || !apds.readBlueLight(blue_light) ) { Serial.println("Error reading light values"); } else { Serial.print("Interrupt! Ambient: "); Serial.print(ambient_light); Serial.print(" R: "); Serial.print(red_light); Serial.print(" G: "); Serial.print(green_light); Serial.print(" B: "); Serial.println(blue_light); } // Turn on LED for a half a second digitalWrite(LED_PIN, HIGH); delay(500); digitalWrite(LED_PIN, LOW); // Reset flag and clear APDS-9960 interrupt (IMPORTANT!) isr_flag = 0; if ( !apds.clearAmbientLightInt() ) { Serial.println("Error clearing interrupt"); } } } void interruptRoutine() { isr_flag = 1; }
Test Sonucu
Yukarıdaki şema gibi kablolama ve kodu yaktıktan sonra, aşağıda gösterildiği gibi seri monitörü açın.
Kaynaklar
PDF File:
https://drive.google.com/open?id=1ZSws4Ww5R1F5aEAzZwMNtE9nDMVk-bT4
Libraries Download of APDS9930:
https://drive.google.com/open?id=1Iw3ljNsSaBYz9_ME26FdcWGYr8ZC8Kmc
Libraries Download of Wire:
https://drive.google.com/open?id=1IqajQoYHxiMB0JFUj6A-9gRcNChsVF7E