====== LamaPLC: CJMCU-3216 / AP-3216 integrated digital ambient light and proximity sensor module/IC with I²C communication ======
{{ :sensor:ap3216_1.png?140|CJMCU-3216 / AP-3216 integrated digital ambient light and proximity sensor module/IC with I2C communication}}
The **AP-3216** (commonly found on the **CJMCU-3216** module) is an integrated digital ambient light sensor and proximity sensor with a built-in infrared (IR) LED, communicating via an I²C interface. It is designed for applications such as mobile devices and smart home systems to manage screen brightness and detect nearby objects.
**Key Features and Specifications**
* **Chip:** AP3216C
* **Interface:** I²C (Fast Mode, up to 400kHz), default I²C address: **0x1E**
* **Operating Voltage:** **2.8V to 3.8V DC** (Note: the module typically has no internal voltage regulator, so do not use 5V directly).
* **Operating Temperature:** -30°C to +80°C.
**Ambient Light Sensor (ALS)**
* **Output:** 16-bit effective linear output (0 to 65535).
* **Dynamic Range:** Four user-selectable ranges are available: 365, 1460, 5840, and 23360 lux.
* **Features:** Includes anti-flicker rejection (for 50/60Hz sources) and high sensitivity for use behind darkened glass.
**Proximity Sensor (PS)**
* **Output:** 10-bit effective linear output (0 to 1023).
* **Features:** Incorporates high ambient light suppression, cross-talk compensation, and programmable IR LED current control to handle low-reflective objects like black hair.
==== Module Pinout ====
{{ :sensor:ap3216_2.png?140|CJMCU-3216 / AP-3216 integrated digital ambient light and proximity sensor module/IC with I2C communication}}
The CJMCU-3216 module is typically a 6-pin board:
^Pin^Description|
^VCC|Power supply input (2.8V-3.8V)|
^GND|Ground connection|
^SCL|I²C Clock line|
^SDA|I²C Data line|
^VL|Used to turn on the integrated IR LED on the module|
^INT|Interrupt pin to improve system efficiency|
==== Arduino wiring ====
^CJMCU-3216 Pin^Arduino Pin (Uno/Nano)^Notes|
^VCC|3.3V|Do not use 5V; the chip may be damaged|
^GND|GND|Common ground|
^SCL|A5|I²C Clock|
^SDA|A4|I²C Data|
^VLED|3.3V (via resistor)|Powers the IR LED; use a ~330Ω resistor for protection|
==== Arduino code ====
Install the **AP3216_WE library** via the Arduino Library Manager (//Tools > Manage Libraries//).
#include
#include
AP3216_WE myAP3216 = AP3216_WE();
void setup() {
Serial.begin(9600);
Wire.begin();
if (!myAP3216.init()) {
Serial.println("AP3216 not found!");
while (1);
}
// Set mode to Ambient Light and Proximity Sensor continuous
myAP3216.setMode(AP3216_ALS_PS);
delay(200);
}
void loop() {
float als = myAP3216.getAmbientLight(); // Light in Lux
unsigned int prox = myAP3216.getProximity(); // Proximity value (0-1023)
Serial.print("Lux: ");
Serial.print(als);
Serial.print(" | Proximity: ");
Serial.println(prox);
delay(500);
}
{{tag>CJMCU-3216 CJMCU AP-3216 AP3216 ambient_light proximity sensor arduino code I2C communication}}
This page has been accessed for: Today: {{counter|today}}, Until now: {{counter|total}}