Fermion: BMM350 Triple-Axis Magnetometer Sensor for AR / VR (Breakout) - แท้ DFRobot

Fermion: BMM350 Triple-Axis Magnetometer Sensor for AR / VR (Breakout) - แท้ DFRobot
Fermion: BMM350 Triple-Axis Magnetometer Sensor for AR / VR (Breakout) - แท้ DFRobotFermion: BMM350 Triple-Axis Magnetometer Sensor for AR / VR (Breakout) - แท้ DFRobotFermion: BMM350 Triple-Axis Magnetometer Sensor for AR / VR (Breakout) - แท้ DFRobotFermion: BMM350 Triple-Axis Magnetometer Sensor for AR / VR (Breakout) - แท้ DFRobotFermion: BMM350 Triple-Axis Magnetometer Sensor for AR / VR (Breakout) - แท้ DFRobotFermion: BMM350 Triple-Axis Magnetometer Sensor for AR / VR (Breakout) - แท้ DFRobot
รหัสสินค้า AS50115
หมวดหมู่ วัดความเร่ง/ไจโร/IMU
ราคา 385.00 บาท
สถานะสินค้า พร้อมส่ง
จำนวน
ชิ้น
หยิบลงตะกร้า
หนังสือรับรองบริษัท
บุ๊คแบ๊งค์
คุ้มครองโดย LnwPay


Introduction
The Fermion: BMM350 3-axis geomagnetic sensor is designed to measure magnetic fields across three vertical axes and functions as a compass. Utilizing Bosch's patented FlipCore technology, this sensor provides accurate spatial orientation without the need for calibration. It maintains compatibility with the previous BMM150 series while delivering enhanced performance, including lower power consumption and improved measurement capabilities. The BMM350 is powered by the groundbreaking TMR (tunnel magnetoresistance) technology, coupled with a distinctive field shock recovery feature that fortifies the device against interference from external magnetic fields, guaranteeing consistent high-precision measurements.
Applications of Fermion: BMM350 3-axis geomagnetic sensor
 
Field Shock Recovery for Stable Performance
The BMM350 is equipped with a robust field shock recovery function, powered by TMR technology. This ensures that the sensor maintains high performance even when exposed to external magnetic field disturbances. The shock recovery feature allows the sensor to provide consistent, reliable data in challenging environments, making it well-suited for use in mobile or dynamic systems.
 
High Sample Rate for Real-Time Data
Supporting a high sample rate of up to 400Hz, the BMM350 is capable of providing real-time, precise data critical for applications that demand rapid response times, such as AR/VR systems, geomagnetic navigation in AGVs, and drone flight control. The high sample rate ensures accurate spatial orientation and movement tracking.
 
Wide Measurement Range and High Resolution
With a measurement range of ±2000μT across all three axes (XYZ), the BMM350 can accurately capture magnetic fields over a broad spectrum. This expanded range is complemented by a high resolution of 0.1μT, allowing the sensor to detect even the smallest fluctuations in the magnetic field. This makes it ideal for high-precision applications in advanced technology systems.

Comparison Table of BMM150 and BMM350
Comparison Table of BMM150 and BMM350

Applications

  • AR / VR
  • E-compass
  • AGV Geomagnetic Navigation
  • Drones
Applications of Fermion: BMM350 3-axis geomagnetic sensor

Specification

  • Working voltage: 3.3~5V DC
  • Working current: 200μA (Normal mode@100Hz Sample Rate)
  • Zero-fild offset: ±25μT
  • Protocol: I2C
  • Working Temperature: -40~+85℃
  • Start-up time: 2.5ms
Documents
Shipping List
  • Fermion: BMM350 Triple Axis Magnetometer Sensor x1
  • XH2.54-10pin Header x1


7.Tutorial

7.1 Hardware

7.2 Software

7.3 Wire diagram

Fermion I2C BMM350 Sensor:VCC---(to)---ESP32-E dev board:3V3;

Fermion I2C BMM350 Sensor:GND---(to)---ESP32-E dev board:GND;

Fermion I2C BMM350 Sensor:SCL---(to)---ESP32-E dev board:SCL;

Fermion I2C BMM350 Sensor:SDA---(to)---ESP32-E dev board:SDA;

7.4 Sample code

Sample code1-(getAllState.ino)

  • Upload the code

    /*!
    * @file getAllState.ino
    * @brief Get all the config status, self test status; the sensor turns to sleep mode from normal mode after reset
    * @n Experimental phenomenon: serial print the sensor config information and the self-test information
    * @copyright Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com)
    * @license The MIT License (MIT)
    * @author [GDuang](yonglei.ren@dfrobot.com)
    * @version V1.0.0
    * @date 2024-05-06
    * @url https://github.com/dfrobot/DFRobot_BMM350
    */
    #include "DFRobot_BMM350.h"
    
    DFRobot_BMM350_I2C bmm350(&Wire, 0x14);
    
    void setup()
    {
    Serial.begin(115200);
    while(!Serial);
    while(bmm350.begin()){
    Serial.println("bmm350 init failed, Please try again!");
    delay(1000);
    } Serial.println("bmm350 init success!");
    
    /**!
    * Sensor self-test, returns a string indicating the result of the self-test.
    */
    Serial.println(bmm350.selfTest());
    
    /**!
    * Setting the sensor operating mode
    * opMode:
    * BMM350_SUSPEND_MODE // suspend mode: Suspend mode is the default power mode of BMM350 after the chip is powered, Current consumption in suspend mode is minimal,
    * so, this mode is useful for periods when data conversion is not needed. Read and write of all registers is possible.
    * BMM350_NORMAL_MODE // normal mode Get geomagnetic data normally.
    * BMM350_FORCED_MODE // forced mode Single measurement, the sensor restores to suspend mode when the measurement is done.
    * BMM350_FORCED_MODE_FAST // To reach ODR = 200Hz is only possible by using FM_ FAST.
    */
    bmm350.setOperationMode(BMM350_NORMAL_MODE);
    
    /**!
    * Setting the preset mode allows the user to easily configure the sensor to acquire geomagnetic data (the default rate for acquiring geomagnetic data is 12.5 Hz).
    * presetMode:
    * BMM350_PRESETMODE_LOWPOWER // Low power mode, get a fraction of data and take the mean value.
    * BMM350_PRESETMODE_REGULAR // Regular mode, get a number of data and take the mean value.
    * BMM350_PRESETMODE_ENHANCED // Enhanced mode, get a plenty of data and take the mean value.
    * BMM350_PRESETMODE_HIGHACCURACY // High accuracy mode, get a huge number of take and draw the mean value.
    */
    bmm350.setPresetMode(BMM350_PRESETMODE_HIGHACCURACY);
    
    /**!
    * Set the rate at which geomagnetic data is acquired, the higher the rate, the faster the speed (no delay function)
    * rate:
    * BMM350_DATA_RATE_1_5625HZ
    * BMM350_DATA_RATE_3_125HZ
    * BMM350_DATA_RATE_6_25HZ
    * BMM350_DATA_RATE_12_5HZ (default rate)
    * BMM350_DATA_RATE_25HZ
    * BMM350_DATA_RATE_50HZ
    * BMM350_DATA_RATE_100HZ
    * BMM350_DATA_RATE_200HZ
    * BMM350_DATA_RATE_400HZ
    */
    bmm350.setRate(BMM350_DATA_RATE_25HZ);
    
    /**!
    * Enable x-, y-, and z-axis measurements, enabled by default, no configuration required, when disabled geomagnetic data for x, y, and z-axis will be inaccurate.
    * To configure more parameters, see the setMeasurementXYZ() function in the .h file.
    */
    bmm350.setMeasurementXYZ();
    
    /**!
    * Get configuration data rate. Unit: Hz
    */
    float rate = bmm350.getRate();
    Serial.print("rate is "); Serial.print(rate); Serial.println(" HZ");
    
    /**!
    * Gets the measurement status of the x-, y-, and z-axes and returns the measurement status as a string.
    */
    Serial.println(bmm350.getMeasurementStateXYZ());
    
    /**!
    * Get the sensor operation mode and return the sensor operation status as a string
    */
    Serial.println(bmm350.getOperationMode());
    
    /**!
    * After a software reset, enter suspend mode.
    */
    bmm350.softReset();
    }
    
    void loop()
    {
    /**!
    * Get the sensor operation mode and return the sensor operation status as a string
    */
    Serial.println(bmm350.getOperationMode());
    delay(3000);
    }
    

    Result

    Upload the sample program and the serial monitor prints out the current configuration status of the sensor

    image-20240522140517442

Sample code 2(getGeomagneticData.ino)

  • Upload the code

    /*!
    * @file getGeomagneticData.ino
    * @brief Get the geomagnetic data at 3 axis (x, y, z), get the compass degree
    * @n "Compass Degree", the angle formed when the needle rotates counterclockwise from the current position to the true north
    * @n Experimental phenomenon: serial print the geomagnetic data of x-axis, y-axis and z-axis and the compass degree
    * @copyright Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com)
    * @license The MIT License (MIT)
    * @author [GDuang](yonglei.ren@dfrobot.com)
    * @version V1.0.0
    * @date 2024-05-06
    * @url https://github.com/dfrobot/DFRobot_BMM350
    */
    #include "DFRobot_BMM350.h"
    
    DFRobot_BMM350_I2C bmm350(&Wire, 0x14);
    
    void setup()
    {
    Serial.begin(115200);
    while(!Serial);
    while(bmm350.begin()){
    Serial.println("bmm350 init failed, Please try again!");
    delay(1000);
    } Serial.println("bmm350 init success!");
    
    //Normal
    bmm350.setOperationMode(BMM350_NORMAL_MODE);
    
    /**!
    * Set preset mode, make it easier for users to configure sensor to get geomagnetic data (The default rate for obtaining geomagnetic data is 12.5Hz)
    * presetMode:
    * BMM350_PRESETMODE_LOWPOWER // Low power mode, get a fraction of data and take the mean value.
    * BMM350_PRESETMODE_REGULAR // Regular mode, get a number of data and take the mean value.
    * BMM350_PRESETMODE_ENHANCED // Enhanced mode, get a plenty of data and take the mean value.
    * BMM350_PRESETMODE_HIGHACCURACY // High accuracy mode, get a huge number of take and draw the mean value.
    */
    bmm350.setPresetMode(BMM350_PRESETMODE_HIGHACCURACY);
    
    /**!
    * Set the rate of obtaining geomagnetic data, the higher, the faster(without delay function)
    * rate:
    * BMM350_DATA_RATE_1_5625HZ
    * BMM350_DATA_RATE_3_125HZ
    * BMM350_DATA_RATE_6_25HZ
    * BMM350_DATA_RATE_12_5HZ (default rate)
    * BMM350_DATA_RATE_25HZ
    * BMM350_DATA_RATE_50HZ
    * BMM350_DATA_RATE_100HZ
    * BMM350_DATA_RATE_200HZ
    * BMM350_DATA_RATE_400HZ
    */
    bmm350.setRate(BMM350_DATA_RATE_25HZ);
    
    /**!
    * Enable the measurement at x-axis, y-axis and z-axis, default to be enabled, no config required, the geomagnetic data at x, y and z will be inaccurate when disabled.
    * Refer to setMeasurementXYZ() function in the .h file if you want to configure more parameters.
    */
    bmm350.setMeasurementXYZ();
    }
    
    void loop()
    {
    sBmm350MagData_t magData = bmm350.getGeomagneticData();
    Serial.print("mag x = "); Serial.print(magData.x); Serial.println(" uT");
    Serial.print("mag y = "); Serial.print(magData.y); Serial.println(" uT");
    Serial.print("mag z = "); Serial.print(magData.z); Serial.println(" uT");
    
    // float type data
    //Serial.print("mag x = "); Serial.print(magData.float_x); Serial.println(" uT");
    //Serial.print("mag y = "); Serial.print(magData.float_y); Serial.println(" uT");
    //Serial.print("mag z = "); Serial.print(magData.float_z); Serial.println(" uT");
    
    float compassDegree = bmm350.getCompassDegree();
    Serial.print("the angle between the pointing direction and north (counterclockwise) is:");
    Serial.println(compassDegree);
    Serial.println("--------------------------------");
    delay(3000);
    }

    Result

    Upload the sample code, the serial port prints out the geomagnetic data and compass angle data acquired by the sensor

    image-20240522141333573

Sample Code 3 (thresholdInterrupt.ino)

  • Upload the code

    /*!
    * @file thresholdInterrupt.ino
    * @brief Set the interrupt to be triggered when beyond/below threshold, when the interrupt at a axis occur, the relevant data will be printed in the serial port.
    * @n Experimental phenomenon: when the geomagnetic data at 3 axis (x, y, z) beyond/below threshold, serial print the geomagnetic data, unit (uT)
    * @n Experimental phenomenon: the main controller interrupt will be triggered by level change caused by INT pin interrupt, then the geomagnetic data can be obtained
    * @copyright Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com)
    * @license The MIT License (MIT)
    * @author [GDuang](yonglei.ren@dfrobot.com)
    * @version V1.0.0
    * @date 2024-05-06
    * @url https://github.com/dfrobot/DFRobot_BMM350
    */
    #include "DFRobot_BMM350.h"
    
    DFRobot_BMM350_I2C bmm350(&Wire, 0x14);
    
    volatile uint8_t interruptFlag = 0;
    void myInterrupt(void)
    {
    interruptFlag = 1; // Interrupt flag
    #if defined(ESP32) || defined(ESP8266) || defined(ARDUINO_SAM_ZERO)
    detachInterrupt(13); // Detach interrupt
    #else
    detachInterrupt(0); // Detach interrupt
    #endif
    }
    
    void setup()
    {
    Serial.begin(115200);
    while(!Serial);
    delay(5000);
    while(bmm350.begin()){
    Serial.println("bmm350 init failed, Please try again!");
    delay(1000);
    } Serial.println("bmm350 init success!");
    
    /**!
    * Set sensor operation mode
    * opMode:
    * BMM350_SUSPEND_MODE // suspend mode: Suspend mode is the default power mode of BMM350 after the chip is powered, Current consumption in suspend mode is minimal,
    * so, this mode is useful for periods when data conversion is not needed. Read and write of all registers is possible.
    * BMM350_NORMAL_MODE // normal mode Get geomagnetic data normally.
    * BMM350_FORCED_MODE // forced mode Single measurement, the sensor restores to suspend mode when the measurement is done.
    * BMM350_FORCED_MODE_FAST // To reach ODR = 200Hz is only possible by using FM_ FAST.
    */
    bmm350.setOperationMode(BMM350_NORMAL_MODE);
    
    /**!
    * Set preset mode, make it easier for users to configure sensor to get geomagnetic data (The default rate for obtaining geomagnetic data is 12.5Hz)
    * presetMode:
    * BMM350_PRESETMODE_LOWPOWER // Low power mode, get a fraction of data and take the mean value.
    * BMM350_PRESETMODE_REGULAR // Regular mode, get a number of data and take the mean value.
    * BMM350_PRESETMODE_ENHANCED // Enhanced mode, get a plenty of data and take the mean value.
    * BMM350_PRESETMODE_HIGHACCURACY // High accuracy mode, get a huge number of take and draw the mean value.
    */
    bmm350.setPresetMode(BMM350_PRESETMODE_HIGHACCURACY);
    
    /**!
    * Set the rate of obtaining geomagnetic data, the higher, the faster(without delay function)
    * rate:
    * BMM350_DATA_RATE_1_5625HZ
    * BMM350_DATA_RATE_3_125HZ
    * BMM350_DATA_RATE_6_25HZ
    * BMM350_DATA_RATE_12_5HZ (default rate)
    * BMM350_DATA_RATE_25HZ
    * BMM350_DATA_RATE_50HZ
    * BMM350_DATA_RATE_100HZ
    * BMM350_DATA_RATE_200HZ
    * BMM350_DATA_RATE_400HZ
    */
    bmm350.setRate(BMM350_DATA_RATE_25HZ);
    
    /**!
    * Enable the measurement at x-axis, y-axis and z-axis, default to be enabled, no config required, the geomagnetic data at x, y and z will be inaccurate when disabled.
    * Refer to setMeasurementXYZ() function in the .h file if you want to configure more parameters.
    */
    bmm350.setMeasurementXYZ();
    
    /*!
    * HIGH_THRESHOLD_INTERRUPT:The interrupt is triggered only if the set threshold range is exceeded.
    * 4:This parameter is a 16-fold parameter, for example, if this parameter is set to 1, then an interrupt will be triggered when the geomagnetic parameter exceeds 16
    * BMM350_ACTIVE_HIGH:Interrupt pin set to high trigger
    */
    bmm350.setThresholdInterrupt(HIGH_THRESHOLD_INTERRUPT, 4, BMM350_ACTIVE_HIGH);
    
    #if defined(ESP32) || defined(ESP8266)
    /**!
    Select according to the set DADY pin polarity
    INPUT_PULLUP // Low polarity, set pin 13 to pull-up input
    INPUT_PULLDOWN // High polarity, set pin 13 to pull-down input
    interput io
    All pins can be used. Pin 13 is recommended
    */
    pinMode(/*Pin */13 ,INPUT_PULLUP);
    attachInterrupt(/*interput io*/13, myInterrupt, ONLOW);
    #elif defined(ARDUINO_SAM_ZERO)
    pinMode(/*Pin */13 ,INPUT_PULLUP);
    attachInterrupt(/*interput io*/13, myInterrupt, LOW);
    #else
    /**! The Correspondence Table of AVR Series Arduino Interrupt Pins And Terminal Numbers
    * ---------------------------------------------------------------------------------------
    * | | Pin | 2 | 3 | |
    * | Uno, Nano, Mini, other 328-based |--------------------------------------------|
    * | | Interrupt No | 0 | 1 | |
    * |-------------------------------------------------------------------------------------|
    * | | Pin | 2 | 3 | 21 | 20 | 19 | 18 |
    * | Mega2560 |--------------------------------------------|
    * | | Interrupt No | 0 | 1 | 2 | 3 | 4 | 5 |
    * |-------------------------------------------------------------------------------------|
    * | | Pin | 3 | 2 | 0 | 1 | 7 | |
    * | Leonardo, other 32u4-based |--------------------------------------------|
    * | | Interrupt No | 0 | 1 | 2 | 3 | 4 | |
    * |--------------------------------------------------------------------------------------
    */
    
    /**! The Correspondence Table of micro:bit Interrupt Pins And Terminal Numbers
    * ---------------------------------------------------------------------------------------------------------------------------------------------
    * | micro:bit | DigitalPin |P0-P20 can be used as an external interrupt |
    * | (When using as an external interrupt, |---------------------------------------------------------------------------------------------|
    * |no need to set it to input mode with pinMode)|Interrupt No|Interrupt number is a pin digital value, such as P0 interrupt number 0, P1 is 1 |
    * |-------------------------------------------------------------------------------------------------------------------------------------------|
    */
    /**!
    Select according to the set DADY pin polarity
    INPUT_PULLUP // Low polarity, set pin 2 to pull-up input
    */
    pinMode(/*Pin */2 ,INPUT_PULLUP);
    
    /**!
    Set the pin to interrupt mode
    // Open the external interrupt 0, connect INT1/2 to the digital pin of the main control:
    function
    callback function
    state
    LOW // When the pin is at low level, the interrupt occur, enter interrupt function
    */
    attachInterrupt(/*Interrupt No*/0, /*function*/myInterrupt ,/*state*/LOW );
    #endif
    
    }
    
    void loop()
    {
    /**!
    * Get the data that threshold interrupt occured and interrupt status (get the data ready status through software)
    * Returns the structure for storing geomagnetic data, the structure stores the data of 3 axis and interrupt status,
    * No interrupt triggered when the data at x-axis, y-axis and z-axis is NO_DATA
    * Refer to .h file if you want to check interrupt status.
    */
    /*
    sBmm350ThresholdData_t thresholdData = bmm350.getThresholdData();
    if(thresholdData.mag_x != NO_DATA){
    Serial.print("mag x = "); Serial.print(thresholdData.mag_x); Serial.println(" uT");
    }
    if(thresholdData.mag_y != NO_DATA){
    Serial.print("mag y = "); Serial.print(thresholdData.mag_y); Serial.println(" uT");
    }
    if(thresholdData.mag_z != NO_DATA){
    Serial.print("mag z = "); Serial.print(thresholdData.mag_z); Serial.println(" uT");
    }
    Serial.println();
    */
    
    /**!
    When the interrupt occur in INT IO, get the threshold interrupt data (get the threshold interrupt status through hardware)
    */
    if(interruptFlag == 1){
    sBmm350ThresholdData_t thresholdData = bmm350.getThresholdData();
    if(thresholdData.mag_x != NO_DATA){
    Serial.print("mag x = "); Serial.print(thresholdData.mag_x); Serial.println(" uT");
    }
    if(thresholdData.mag_y != NO_DATA){
    Serial.print("mag y = "); Serial.print(thresholdData.mag_y); Serial.println(" uT");
    }
    if(thresholdData.mag_z != NO_DATA){
    Serial.print("mag z = "); Serial.print(thresholdData.mag_z); Serial.println(" uT");
    }
    Serial.println();
    interruptFlag = 0;
    #if defined(ESP32) || defined(ESP8266)
    attachInterrupt(13, myInterrupt, ONLOW);
    #elif defined(ARDUINO_SAM_ZERO)
    attachInterrupt(13, myInterrupt, LOW);
    #else
    attachInterrupt(0, myInterrupt, LOW);
    #endif
    
    }
    delay(3000);
    }

    Result

    Upload sample code, bring magnet close to sensor, serial port prints change data

    image-20240522141333573

8. API list

 /**
* @fn softReset
* @brief Software reset, reset to suspend mode after software reset.
*/
void softReset(void);

/**
* @fn setOperationMode
* @brief Setting the sensor's execution mode
* @param opMode mode
* @n BMM350_SUSPEND_MODE Suspend Mode:Suspend mode is the default power mode of the BMM350 after the chip is powered up, the current consumption is minimized in suspend mode, so this mode is suitable for the period when no data conversion is required (all register reads and writes are possible)
* @n BMM350_NORMAL_MODE Normal mode: Acquisition of geomagnetic data
* @n BMM350_FORCED_MODE Forced mode: single measurement, sensor returns to pause mode when measurement is complete
* @n BMM350_FORCED_MODE_FAST ODR up to 200Hz only when using FM_FAST
*/
void setOperationMode(uint8_t opMode);

/**
* @fn getOperationMode
* @brief Get the sensor's execution mode
* @return String is the execution mode of the sensor
*/
String getOperationMode(void);

/**
* @fn setPresetMode
* @brief Setting the preset mode makes it easier for the user to configure the sensor to acquire geomagnetic data (the default acquisition rate is 12.5 Hz).
* @param presetMode
* @n BMM350_PRESETMODE_LOWPOWER Low power mode, get a small amount of data, take the mean.
* @n BMM350_PRESETMODE_REGULAR Normal mode, get medium data, take the mean.
* @n BMM350_PRESETMODE_ENHANCED Enhanced mode, get a lot of data, take the mean.
* @n BMM350_PRESETMODE_HIGHACCURACY High-precision mode, obtaining a large amount of data Taking the average value
*/
void setPresetMode(uint8_t presetMode, uint8_t rate = BMM350_DATA_RATE_12_5HZ);

/**
* @fn setRate
* @brief Set the rate of acquiring geomagnetic data, the larger the rate, the faster the acquisition (without the delay function).
* @param rate
* @n BMM350_DATA_RATE_1_5625HZ
* @n BMM350_DATA_RATE_3_125HZ
* @n BMM350_DATA_RATE_6_25HZ
* @n BMM350_DATA_RATE_12_5HZ (default speed)
* @n BMM350_DATA_RATE_25HZ
* @n BMM350_DATA_RATE_50HZ
* @n BMM350_DATA_RATE_100HZ
* @n BMM350_DATA_RATE_200HZ
* @n BMM350_DATA_RATE_400HZ
*/
void setRate(uint8_t rate);

/**
* @fn getRate
* @brief Get the configured data rate.Unit: HZ
* @return rate
*/
uint8_t getRate(void);

/**
* @fn selfTest
* @brief Sensor self-test, return value indicates self-test result
* @param testMode:
* @n eBMM350_SELF_TEST_NORMAL Routine self-test, check x-axis, y-axis, z-axis for on or short circuit
* @return result The returned string is the result of the self-test
*/
String selfTest(eBMM350_SELFTEST testMode = eBMM350_SELF_TEST_NORMAL);

/**
* @fn setMeasurementXYZ
* @brief Enable x, y and z-axis measurement, the default setting is enable, the geomagnetic data of xyz-axis is not accurate after disable.
* @param en_x
* @n BMM350_X_EN Enable x-axis measurement
* @n BMM350_X_DIS Disable x-axis measurement
* @param en_y
* @n BMM350_Y_EN Enable y-axis measurement
* @n BMM350_Y_DIS Disable y-axis measurement
* @param en_z
* @n BMM350_Z_EN Enable z-axis measurement
* @n BMM350_Z_DIS Disable x-axis measurement
*/
void setMeasurementXYZ(enum bmm350_x_axis_en_dis en_x = BMM350_X_EN, enum bmm350_y_axis_en_dis en_y = BMM350_Y_EN, enum bmm350_z_axis_en_dis en_z = BMM350_Z_EN);

/**
* @fn getMeasurementStateXYZ
* @brief Get the state of the x, y, and z axes
* @return result Returns the string as state
*/
String getMeasurementStateXYZ(void);

/**
* @fn getGeomagneticData
* @brief Obtain geomagnetic data in the x, y, and z axes.
* @return Structures of geomagnetic data. Unit: uT
*/
sBmm350MagData_t getGeomagneticData(void);

/**
* @fn getCompassDegree
* @brief Getting Compass Directions
* @return compass angle (0° - 360°)
* @n 0° = North, 90° = East, 180° = South, 270° = West.
*/
float getCompassDegree(void);

/**
* @fn setDataReadyPin
* @brief Enable or disable the data ready interrupt pin
* @n Data coming to DRDY pin after enable.
* @n Data won't coming to DRDY pin after disable.
* @n high polarity:High level is the active level, the default is low level, the level becomes high when the interrupt is triggered.
* @n low polarity:Low level is the active level, default is high, the level changes to low when the interrupt is triggered.
* @param modes
* @n BMM350_ENABLE_INTERRUPT Enable DRDY
* @n BMM350_DISABLE_INTERRUPT Disable DRDY
* @param polarity
* @n BMM350_ACTIVE_HIGH high polarity
* @n BMM350_ACTIVE_LOW low polarity
*/
void setDataReadyPin(uint8_t modes, uint8_t polarity=POLARITY_HIGH);

/**
* @fn getDataReadyState
* @brief Get the status of data readiness and use it to determine whether the data is ready or not.
* @return status
* @n true The data is ready.
* @n false The data is not ready.
*/
bool getDataReadyState(void);

/**
* @fn setThresholdInterrupt(uint8_t modes, int8_t threshold, uint8_t polarity)
* @brief Threshold interrupt, triggered when the geomagnetic value of a channel is above/below the threshold.
* @n High polarity: high level is active level, default is low level, level becomes high when interrupt is triggered.
* @n Low polarity: low level is active level, default is high level, the level changes to low when interrupt is triggered.
* @param modes
* @n LOW_THRESHOLD_INTERRUPT Low Threshold Interrupt Mode
* @n HIGH_THRESHOLD_INTERRUPT High Threshold Interrupt Mode
* @param threshold
* @n Threshold, the default expansion is 16 times, e.g., if the threshold 1 is passed in the low threshold mode, the actual geomagnetic data lower than 16 will trigger an interrupt.
* @param polarity
* @n POLARITY_HIGH high polarity
* @n POLARITY_LOW low polarity
*/
void setThresholdInterrupt(uint8_t modes, int8_t threshold, enum bmm350_intr_polarity polarity);

/**
* @fn getThresholdData
* @brief Get the data where a threshold interrupt occurred
* @return Returns the structure that holds the geomagnetic data, which holds the three-axis data and the interrupt status.
* @n No interrupt is triggered when the xyz-axis data is NO_DATA.
* @n Mag_x, mag_y, mag_z Stores geomagnetic data.
* @n Interrupt_x, interrupt_y, interrupt_z Stores axis interrupt status.
*/
sBmm350ThresholdData_t getThresholdData(void);

วิธีการชำระเงิน

ชำระเงินค่าสินค้าโดยการโอนเงินเข้าบัญชีธนาคาร KBANK, SCB, BBL,TMB

กรุณาเก็บหลักฐานการโอนเงินของท่านไว้เพื่อแจ้งการชำระเงินด้วยค่ะ

 

ท่านสามารถแจ้งการชำระเงินผ่านระบบอัตโนมัติได้โดย Click Link ข้างล่างค่ะ

https://www.arduitronics.com/informpayment

 

บมจ. ธนาคารกสิกรไทย สาขาเซ็นทรัล แจ้งวัฒนะ ออมทรัพย์
ธนาคารไทยพาณิชย์ จำกัด (มหาชน) สาขาเซ็นทรัล แจ้งวัฒนะ ออมทรัพย์
ธนาคารกรุงเทพ จำกัด (มหาชน) สาขาเซนทรัล พระราม 3 สะสมทรัพย์
ธนาคารทหารไทยธนชาต จำกัด (มหาชน) สาขาเซนทรัล พระราม 3 กระแสรายวัน

เพิ่มเพื่อน

@rfm0967y

ติดต่อสอบถาม

เพิ่มเพื่อน

CATEGORY

Sensors / Modules [1704]

CONTACT US

มือถือ 0887823467 แฟกซ์ 02-0153201

Join เป็นสมาชิกร้านค้า

ร้านArduitronics
ร้านArduitronics
/www.arduitronics.com/
Join เป็นสมาชิกร้าน
2146
สมัครสมาชิกร้านนี้ เพื่อรับสิทธิพิเศษ

STATISTICS

หน้าที่เข้าชม15,430,170 ครั้ง
ผู้ชมทั้งหมด5,933,248 ครั้ง
เปิดร้าน21 พ.ค. 2556
ร้านค้าอัพเดท12 ต.ค. 2568

MEMBER

พูดคุย-สอบถาม