top of page
Writer's pictureMelina Soula

Using the BGT60LTR11 Radar Shield2Go with ESP32 for AI Applications

Updated: Jul 31

The BGT60LTR11 Radar Shield2Go is a compact and versatile radar sensor from Infineon, designed for a wide range of applications requiring motion detection and direction sensing. This guide will walk you through its features, setup, and integration with an ESP32 microcontroller, providing a solid foundation for developing AI applications such as home automation, security systems, and smart devices.


Overview of the BGT60LTR11 Radar Shield2Go

The BGT60LTR11 is a 60GHz radar sensor that employs Doppler radar technology. Unlike frequency-modulated continuous-wave (FMCW) radars, which can detect both the distance and speed of an object, the BGT60LTR11 is a non-frequency-modulated Doppler radar. This limitation means the radar can only provide binary information: whether there is motion and the direction of that motion (approaching or departing).


Key Features and Specifications:

  • Programming Compatibility: Can be programmed using Arduino IDE, with libraries provided by Infineon.

  • Detection Range: 0.5 m to 7 m, extendable to 14 m with an additional XMC1302 controller.

  • Adjustable Settings: Potentiometers and switches (QS1-QS4) allow manual adjustment of radar settings.

  • Compact Design: Small form factor of approximately 5 cm x 2.5 cm.

  • Core Components: Features a 60GHz transceiver BGT60LTR11AIP MMIC with one transmitter and one receiver.


Functional Overview

The BGT60LTR11 detects motion through the Doppler effect, where it measures the frequency shift of the reflected signal caused by a moving object. It provides binary information about the motion status (motion detected or not) and the direction of movement (approaching or departing).


Limitations:

  • Distance Measurement: Cannot determine the exact distance to an object.

  • Velocity Measurement: Limited to detecting the presence and direction of motion.


Hardware Setup

For this tutorial, we will connect the BGT60LTR11 Radar Shield2Go to an ESP32 microcontroller and use an SSD1306 0.96-inch OLED display for visual output. This setup will allow us to detect motion and display the detected data.


Connecting the Radar Shield2Go to ESP32

The radar shield requires specific pin connections for proper operation. Below are the required connections:

Shield2Go Pin

ESP32 Pin

TD

GPIO 17

PD

GPIO 16

GND

GND

Vin

VCC (3.3V)

Connecting the OLED Display to ESP32

The OLED display communicates with the ESP32 using the I2C protocol. The connections are as follows:

OLED Pin

ESP32 Pin

SCL

GPIO 21

SDA

GPIO 22

GND

GND

VCC

VCC (3.3V)


Detailed Sensor Configuration

The radar module can be configured using the quad state signal (QS) switches. These allow fine-tuning of the sensor's performance characteristics.

QS1 (Mode Selection):

  • Left: Autonomous mode

  • Right: SPI mode (sensor communicates via SPI interface) QS2 (Sensitivity/Range Adjustment):

  • Sets detection range from 0.45 m to 7.66 m.

  • Example settings: 0.45 m (leftmost), 5.8 m (middle), 7.66 m (rightmost).

QS3 (Hold Time Adjustment):

  • Defines the duration for which the detection signal remains active.

  • Example settings: 1 second (rightmost), 2 minutes (middle), 15 minutes (leftmost). QS4 (Frequency Selection):

  • Sets the radar's operating frequency.

  • 3 Positions: 61.1 GHz (left), 61.2 GHz (middle), 61.4 GHz (right).


Important: Always adjust these settings with the radar powered off to avoid damaging the sensor.

Example Code for Motion and Direction Detection

The following Arduino code initializes the radar and OLED display, then continuously monitors for motion and direction, displaying the results on the OLED screen.


/*!
 * \name        motionANDdirectionDetection_Display
 * \brief       This example detects the motion and direction of an object
 * \details     This example demonstrates how to detect a moving object and its direction while the
 *              BGT60LTR11AIP shield is connected to an ESP32 board.
 *
 *               Connection details:
 *              --------------------------------------------------
 *              Pin on shield   Connected to pin on ESP32
 *              --------------------------------------------------
 *              TD                  17
 *              PD                  16
 *              GND                 GND
 *              Vin                 VCC (3.3V )
 *              --------------------------------------------------
 *
 *              Decoding on-board LED output of BGT60LTR11AIP shield:
 * 
 *              - Red LED indicates the output of direction of motion once target is detected (PD)
 *              ---------------------------------------------
 *              LED    State    Output explanation
 *              ---------------------------------------------
 *              Red     ON       Departing target
 *                      OFF      Approaching target
 *              ---------------------------------------------
 *
 *              - Green LED indicates the output of target in motion detection (TD)
 *              ---------------------------------------------
 *              LED    State    Output explanation
 *              ---------------------------------------------
 *              Green    ON       Moving target detected
 *                       OFF      No target detected
 *              ---------------------------------------------
 */

#include <Arduino.h>
#include <bgt60-ino.hpp>
#include <bgt60-platf-ino.hpp>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

/* TD : Target Detect Pin
 * PD : Phase Detect Pin */

#ifndef TD
#define TD  17
#endif

#ifndef PD
#define PD  16
#endif

Bgt60Ino radarShield(TD, PD);

/* OLED */
#define SCREEN_WIDTH 128 // OLED width, in pixels
#define SCREEN_HEIGHT 64 // OLED height, in pixels

Adafruit_SSD1306 oled(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

void setup() {
    Serial.begin(9600);
    Error_t init_status = radarShield.init();
    if (OK != init_status) {
        Serial.println("Init failed.");
    } else {
        Serial.println("Init successful.");
    }
  
    if (!oled.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
        Serial.println(F("Failed to start SSD1306 OLED"));
        while (1);
    }

    delay(2000); // wait two seconds for initializing
    oled.clearDisplay();
    oled.setTextColor(WHITE);
    oled.display();
}


void loop() {
    oled.clearDisplay();
    oled.drawRect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, WHITE);

    oled.setTextSize(1);
    oled.setCursor(26, 5);
    oled.println("BGT60 - Radar");
    oled.drawLine(0, 15, SCREEN_WIDTH, 15, WHITE);
    
    /* Initialize the variable to NO_MOTION */
    Bgt60::Motion_t motion = Bgt60::NO_MOTION;
    /* Initialize the variable to NO_DIR */
    Bgt60::Direction_t direction = Bgt60::NO_DIR;

    /* The getMotion() API does two things:
        1. Returns the success or failure to detect the moving or the direction of an object as a message of type Error_t.
           Any value other than OK indicates failure
        2. Sets recent event in "motion" and "direction" variable, respectively. Events can be: NO_MOTION or MOTION 
        and APPROACHING, DEPARTING or NO_DIR, respectively */
    Error_t err1 = radarShield.getMotion(motion);
    Error_t err2 = radarShield.getDirection(direction);

    /* Check if API execution is successful */
    if (err1 == OK && err2 == OK) {
        /* Combined cases based on value set in motion and direction variables */
        switch (motion) {
            case Bgt60::MOTION:
                Serial.print("Target in motion detected and ");
               
                oled.setTextSize(1);
                oled.setCursor(16,25);
                oled.println("Motion Detected!");
                

                switch (direction) {
                    case Bgt60::APPROACHING:
                        Serial.println("is approaching!");
                        
                        oled.setTextSize(1);
                        oled.setCursor(28, 40);
                        oled.print("Approaching ");
                        oled.write(30);
                        
                        
                        break;
                    case Bgt60::DEPARTING:
                        Serial.println("is departing!");

                        oled.setTextSize(1);
                        oled.setCursor(33, 40);
                        oled.print("Departing ");
                        oled.write(31);
                        

                        break;
                    case Bgt60::NO_DIR:
                        Serial.println("direction cannot be determined.");

                        oled.setTextSize(1);
                        oled.setCursor(34, 40);
                        oled.println("Unknown");
                        break;
                }
                break;
            case Bgt60::NO_MOTION:
                Serial.println("No target in motion detected.");

                oled.setTextSize(1);
                oled.setCursor(35, 35);
                oled.println("No Motion");
                    break;
        }
    } else {
        /* API execution returned error */
        Serial.println("Error occurred!");
        oled.setTextSize(1);
        oled.setCursor(35, 41);
        oled.println("Error occurred!");
    }

    /* Reducing the frequency of the measurements */
    oled.display();
    delay(2000);
}

Additional Considerations and Project Ideas


Presence Detection: Although the sensor does not directly detect presence (only motion), setting it to maximum sensitivity can make it highly responsive to slight movements, effectively simulating presence detection.


LED Indicators: The radar module has onboard LEDs for basic status indication:

  • Green LED (PWR): Indicates power status.

  • Blue LED: Lights up when motion is detected.

  • Red LED: Indicates the direction of motion—on for departing, off for approaching.


Project Ideas:

  1. Smart Lighting: Integrate the radar sensor to turn lights on/off based on motion detection.

  2. Security Systems: Use the sensor to detect unauthorized movements in restricted areas.

  3. Interactive Displays: Create touchless interaction systems for public information kiosks.


For more inspiration and detailed project implementations, visit Hackster.io's projects on BGT60LTR11AIP.

This guide covers the essential setup and usage of the BGT60LTR11 Radar Shield2Go with an ESP32 microcontroller. By following these instructions, you can begin experimenting with radar-based motion and direction sensing for various AI applications.

53 views

Comentários


bottom of page