Grove - Sensor de Luz, Gestos, Cor e Proximidade (TMG39931)

O sensor Grove - Light & Gesture & Color & proximity é um produto baseado no TMG39931, que apresenta detecção avançada de gestos, detecção de proximidade, detecção digital de luz ambiente (ALS), detecção de cor (RGBC) e geração/transmissão de padrões ópticos para broadcast. Este sensor quatro‑em‑um permite coletar dados do ambiente ao redor e transferi‑los pelo barramento I2C.
Atualizável para Sensores Industriais
Com o controlador S2110 SenseCAP e o data logger S2100, você pode facilmente transformar o Grove em um sensor LoRaWAN®. A Seeed não apenas ajuda você na prototipagem, mas também oferece a possibilidade de expandir seu projeto com a linha SenseCAP de robustos sensores industriais.
A série de sensores industriais SenseCAP S210x oferece uma experiência pronta para uso para medição ambiental. Consulte o Sensor Sem Fio de Intensidade de Luz S2102, com maior desempenho e robustez para detecção de intensidade luminosa. A série inclui sensores para umidade do solo, temperatura e umidade do ar, intensidade de luz, CO2, EC e uma estação meteorológica 8‑em‑1. Experimente o mais recente SenseCAP S210x em seu próximo projeto industrial de sucesso.
| Sensor Industrial SenseCAP |
| S2102 Light |
Características
- Solução óptica integrada em um único dispositivo
- Detecção de luz ambiente
- Filtros de bloqueio UV e IV
- Detecção de gestos complexos
- Ideal para operação atrás de vidro escuro - alta sensibilidade
- Detecção de proximidade
- Geração e transmissão de padrões de código de barras
- Uso duplo de um único LED interno
- Ajustado para fornecer leitura consistente
Especificação
| Item | Valor |
|---|---|
| Tensão de alimentação | 3.3V / 5V |
| Temperatura de operação | -30~85℃ |
| Temperatura de armazenamento | -40~85℃ |
| Lux máx. [klx] | 60 |
| Interface | I2C |
| Endereço I2C | 0x39 |
Aplicações típicas
- Detecção de gestos
- Detecção de cor
- Detecção de luz ambiente
- Desativação de tela sensível ao toque de celular
- Substituição de interruptor mecânico
- Emulação de código de barras impresso
Princípio de Funcionamento
Detecção de gestos
A detecção de gestos utiliza quatro fotodiodos direcionais para detectar a energia IR refletida (proveniente do LED integrado) e converter informações de movimento físico em informações digitais.
Detecção de proximidade
Os recursos de detecção de proximidade fornecem detecção de objetos por meio da detecção, via fotodiodo, da energia IR refletida (proveniente do LED integrado).
Detecção Digital de Luz Ambiente e Cor
O recurso de detecção de cor e ALS fornece dados de intensidade de luz vermelha, verde, azul e clara. Cada um dos canais R, G, B, C possui um filtro de bloqueio UV e IR e um conversor de dados dedicado que produz dados de 16 bits simultaneamente. Esta arquitetura permite que as aplicações meçam com precisão a luz ambiente e detectem a cor, o que possibilita aos dispositivos calcular iluminância e temperatura de cor, controlar a luz de fundo do display e a cromaticidade.
Plataformas Suportadas
| Arduino | Raspberry Pi | |||
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Primeiros Passos
Brincar com Arduino
Hardware
Materiais necessários
| Seeeduino V4.2 | Base Shield | Grove - Light&Gesture&Color&Proximity Sensor(TMG39931) |
|---|---|---|
![]() | ![]() | |
| Adquira agora | Adquira agora | Adquira agora |
1 Conecte o cabo USB com cuidado, caso contrário você pode danificar a porta. Use o cabo USB com 4 fios internos; o cabo de 2 fios não consegue transferir dados. Se você não tiver certeza sobre o cabo que possui, pode clicar aqui para comprar.
2 Cada módulo Grove vem com um cabo Grove quando você o compra. Caso você perca o cabo Grove, pode clicar aqui para comprar.
-
Passo 1. Conecte o Grove - Light&Gesture&Color&Proximity Sensor(TMG39931) à porta I2C do Grove-Base Shield.
-
Passo 2. Conecte o Grove - Base Shield ao Seeeduino.
-
Passo 3. Conecte o Seeeduino ao PC através de um cabo USB.

Software
Se esta é a primeira vez que você trabalha com Arduino, recomendamos fortemente que veja Getting Started with Arduino antes de começar.
A funcionalidade de gestos ainda não é suportada, pois essa funcionalidade precisa de algoritmos fornecidos pela AMS. Atualizaremos esta biblioteca assim que obtivermos suporte da AMS.
Exemplo 1
-
Passo 1. Baixe a biblioteca Seeed_TMG3993 do Github.
-
Passo 2. Consulte How to install library para instalar a biblioteca para Arduino.
-
Passo 3. Reinicie a IDE do Arduino. Abra o exemplo; você pode abri‑lo das três formas a seguir:
- Abra diretamente na IDE do Arduino pelo caminho: File --> Examples -->Seeed TMG3993(Grove - Light&Gesture&Color&Proximity Sensor)-->Example1-ProximityPullRaw.

- Abra no seu computador clicando em basic_demo.ino, que você pode encontrar na pasta XXXX\Arduino\libraries\Seeed_TMG3993-master\examples\Example1-ProximityPullRaw\Example1-ProximityPullRaw.ino, em que XXXX é o local onde você instalou a IDE do Arduino.

- Ou, você pode simplesmente clicar no ícone
no canto superior direito do bloco de código para copiar o código a seguir em um novo sketch na IDE do Arduino.
#include <Wire.h>
#include "Seeed_TMG3993.h"
TMG3993 tmg3993;
void setup()
{
Serial.begin(9600);
Serial.println("TMG3993 Proximity Example");
Wire.begin();
if (tmg3993.initialize() == false)
{
Serial.println("Device not found. Check wiring.");
while (1);
}
tmg3993.setupRecommendedConfigForProximity();
tmg3993.enableEngines(ENABLE_PON | ENABLE_PEN | ENABLE_PIEN);
}
void loop()
{
if (tmg3993.getSTATUS() & STATUS_PVALID)
{
uint8_t proximity_raw = tmg3993.getProximityRaw(); //read the Proximity data will clear the status bit
Serial.print("Proximity Raw: ");
Serial.println(proximity_raw);
}
delay(1);
}
O arquivo da biblioteca pode ser atualizado. Este código pode não ser aplicável ao arquivo de biblioteca atualizado, portanto recomendamos que você use os dois primeiros métodos.
Se tudo correr bem, os dados brutos (uint16_t) do sensor de proximidade deverão poder ser lidos a partir do Serial Monitor.

Se você quiser executar outros exemplos, pode seguir processos semelhantes.
Exemplo 2
Este exemplo também é usado para detectar proximidade, mas de forma interrompida.
Dois limiares precisam ser configurados - baixo e alto. Qualquer valor de proximidade que esteja dentro dessa faixa não acionará nada, mas o valor fora dessa faixa acionará eventos. Em detalhe, quando os valores do sensor de proximidade estiverem abaixo do limiar baixo mais de 10 vezes, um evento de proximidade removida será emitido; quando os valores do sensor de proximidade estiverem acima do limiar alto mais de 10 vezes, um evento de proximidade detectada será emitido. As 10 vezes aqui podem ser configuradas via setInterruptPersistenceReg (veja setupRecommendedConfigForProximity para um exemplo).
-
Passo 1. Baixe a biblioteca Seeed_TMG3993 do Github.
-
Passo 2. Consulte How to install library para instalar a biblioteca para Arduino.
-
Passo 3. Reinicie a IDE do Arduino. Abra o exemplo, da mesma forma que no Exemplo 1, mas desta vez escolha "Example2-ProximityInterrupt" em vez de "Example1". Ou copie o código a seguir para a IDE do Arduino:
#include <Wire.h>
#include "Seeed_TMG3993.h"
TMG3993 tmg3993;
int last_interrupt_state = -1;
void setup()
{
Serial.begin(9600);
Serial.println("TMG3993 Proximity Example");
Wire.begin();
if (tmg3993.initialize() == false)
{
Serial.println("Device not found. Check wiring.");
while (1);
}
tmg3993.setupRecommendedConfigForProximity();
tmg3993.setProximityInterruptThreshold(25, 150); //less than 5cm will trigger the proximity event
tmg3993.enableEngines(ENABLE_PON | ENABLE_PEN | ENABLE_PIEN);
}
void loop()
{
if (tmg3993.getSTATUS() & STATUS_PINT)
{
uint8_t proximity_raw = tmg3993.getProximityRaw(); //read the Proximity data will clear the status bit
if (proximity_raw >= 150 && last_interrupt_state != 1) {
Serial.println("Proximity detected!!!");
Serial.print("Proximity Raw: ");
Serial.println(proximity_raw);
last_interrupt_state = 1;
} else if (proximity_raw <= 25 && last_interrupt_state != 0) {
Serial.println("Proximity removed!!!");
Serial.print("Proximity Raw: ");
Serial.println(proximity_raw);
last_interrupt_state = 0;
}
// don't forget to clear the interrupt bits
tmg3993.clearProximityInterrupts();
}
delay(10);
}
O arquivo da biblioteca pode ser atualizado. Este código pode não ser aplicável ao arquivo de biblioteca atualizado, portanto recomendamos que você use os dois primeiros métodos.
Você deverá ver algo como isto no Serial Monitor depois de enviar o código para o Seeeduino.

Exemplo 3
Este exemplo lê os valores dos sensores R, G, B, C. C é definido como o canal claro sem filtro de cor no datasheet do chip. Este exemplo também calcula o valor de Lux para a luz ambiente com base na equação na Application Note deste sensor.
-
Passo 1. Baixe a biblioteca Seeed_TMG3993 do Github.
-
Passo 2. Consulte How to install library para instalar a biblioteca para Arduino.
-
Passo 3. Reinicie a IDE do Arduino. Abra o exemplo, da mesma forma que no Exemplo 1, mas desta vez escolha "Example3-Color-Light" em vez de "Example1". Ou copie o código a seguir para a IDE do Arduino:
#include <Wire.h>
#include "Seeed_TMG3993.h"
TMG3993 tmg3993;
void setup()
{
Serial.begin(9600);
Serial.println("TMG3993 Color Example");
Wire.begin();
if (tmg3993.initialize() == false)
{
Serial.println("Device not found. Check wiring.");
while (1);
}
tmg3993.setADCIntegrationTime(0xdb); // the integration time: 103ms
tmg3993.enableEngines(ENABLE_PON | ENABLE_AEN | ENABLE_AIEN);
}
void loop()
{
if (tmg3993.getSTATUS() & STATUS_AVALID)
{
uint16_t r,g,b,c;
int32_t lux, cct;
tmg3993.getRGBCRaw(&r, &g, &b, &c);
lux = tmg3993.getLux(r, g, b, c);
//the calculation of CCT is just from the `Application Note`,
//from the result of our test, it might have error.
cct = tmg3993.getCCT(r, g, b, c);
Serial.print("RGBC Data: ");
Serial.print(r);
Serial.print("\t");
Serial.print(g);
Serial.print("\t");
Serial.print(b);
Serial.print("\t");
Serial.println(c);
Serial.print("Lux: ");
Serial.print(lux);
Serial.print("\tCCT: ");
Serial.println(cct);
Serial.println("----");
// don't forget to clear the interrupt bits
tmg3993.clearALSInterrupts();
}
delay(100);
}
O arquivo da biblioteca pode ser atualizado. Este código pode não ser aplicável ao arquivo de biblioteca atualizado, portanto recomendamos que você use os dois primeiros métodos.
Você deverá ver algo como isto no Serial Monitor depois de enviar o código para o Seeeduino.

Visualizador de Esquemático Online
Recursos
-
[Zip] Grove - Light&Gesture&Color&Proximity Sensor(TMG39931) Arquivos Eagle
-
[Zip] Grove - Light&Gesture&Color&Proximity Sensor(TMG39931) Biblioteca
-
[PDF] Datasheet TMG39931
-
[PDF] Versão em PDF da WIKI
Suporte Técnico & Discussão de Produto
Obrigado por escolher nossos produtos! Estamos aqui para fornecer diferentes tipos de suporte para garantir que sua experiência com nossos produtos seja a mais tranquila possível. Oferecemos vários canais de comunicação para atender a diferentes preferências e necessidades.








