Beginner
10 min

Create contactless switches for applications where physical contact is impractical or undesirable with NMH1000 and STM32F303VC

Hall-effect magnetic switch

Hall Switch 3 Click with Discovery kit with STM32F303VC MCU

Published Feb 14, 2024

Click board™

Hall Switch 3 Click

Dev. board

Discovery kit with STM32F303VC MCU

Compiler

NECTO Studio

MCU

STM32F303VC

Detect changes in vertical magnetic fields and achieve unparalleled sensitivity to specific magnet orientations

A

A

Hardware Overview

How does it work?

Hall Switch 3 Click is based on the NMH1000, a Hall-effect magnetic switch from NXP Semiconductor. The switch processes its input over the functional blocks that consist of a configurable state machine, an analog-to-voltage conversion of the input, and a comparison to generate the bi-state output. The output is arranged in a linear succession. The NMH1000 has a transducer that generates a small charge proportional to the

proximal magnetic flux density. The Hall-effect charge is converted to voltage and compared with the pre-defined threshold voltage. This determines the state of the switch's output. Hall Switch 3 Click uses a standard 2-wire I2C interface to communicate with the host MCU, supporting a clock frequency of up to 1MHz. The output of the switch, according to the pre-defined threshold, is available over the output OUT pin. This Click

board™ can be operated only with a 3.3V logic voltage level. The board must perform appropriate logic voltage level conversion before using MCUs with different logic levels. Also, it comes equipped with a library containing functions and an example code that can be used as a reference for further development.

Hall Switch 3 Click hardware overview image

Features overview

Development board

Discovery kit with STM32F303VC MCU streamlines application development with the STM32F3 Series microcontroller, harnessing the robustness of Arm® Cortex®-M4 architecture to provide an optimal development experience. It caters to both beginners and experts, offering essential components for swift initiation. Powered by the STM32F303VCT6, it boasts features like ST-

LINK/V2 or ST-LINK/V2-B for debugging, accelerometer, gyroscope, e-compass ST MEMS, USB connectivity, LED indicators, and push-buttons. Key specifications include a 256-Kbyte Flash memory, 48-Kbyte RAM, USB FS support, and a comprehensive array of motion sensors. The board includes ten LEDs for various statuses, including power indication and USB

communication. With user-friendly connectors and flexible power-supply options, it enables easy integration with prototype boards. Equipped with an on-board debugger/programmer and support for various Integrated Development Environments (IDEs) like IAR™, Keil®, and STM32CubeIDE, it ensures smooth and efficient development cycles.

Discovery kit with STM32F303VC MCU double side image

Microcontroller Overview

MCU Card / MCU

default

Architecture

ARM Cortex-M4

MCU Memory (KB)

256

Silicon Vendor

STMicroelectronics

Pin count

100

RAM (Bytes)

40960

You complete me!

Accessories

STM32F3 Discovery Shield is the perfect extension for your STM32F3 Discovery Board from STMicroelectronics. This versatile shield features four mikroBUS™ host sockets, a USB-UART module, and a CAN transceiver, expanding the capabilities of your Discovery board. Acting as a docking station, the STM32F3 Discovery Shield enables you to effortlessly transform your board into various applications, whether it's an RFID lock, SMS-triggered control switch, GPS tracking device, full-blown weather station, or any other idea you have in mind. With its seamless integration and enhanced functionality, this shield empowers you to explore endless possibilities and quickly bring your projects to life.

STM32F3 Discovery Shield accessories 1 image

Used MCU Pins

mikroBUS™ mapper

NC
NC
AN
NC
NC
RST
ID COMM
PB12
CS
NC
NC
SCK
NC
NC
MISO
NC
NC
MOSI
Power Supply
3.3V
3.3V
Ground
GND
GND
NC
NC
PWM
Hall Switch Output
PC2
INT
NC
NC
TX
NC
NC
RX
I2C Clock
PB8
SCL
I2C Data
PB9
SDA
NC
NC
5V
Ground
GND
GND
1

Take a closer look

Click board™ Schematic

Hall Switch 3 Click Schematic schematic

Step by step

Project assembly

STM32F3 Discovery Shield front image hardware assembly

Start by selecting your development board and Click board™. Begin with the Discovery kit with STM32F303VC MCU as your development board.

STM32F3 Discovery Shield front image hardware assembly
Discovery kit with STM32F303VC MCU front image hardware assembly
Charger 27 Click front image hardware assembly
Prog-cut hardware assembly
Charger 27 Click complete accessories setup image hardware assembly
Board mapper by product8 hardware assembly
Necto image step 2 hardware assembly
Necto image step 3 hardware assembly
Necto image step 4 hardware assembly
Necto image step 5 hardware assembly
Necto image step 6 hardware assembly
STM32F303VC Discovery MCU Step hardware assembly
Necto No Display image step 8 hardware assembly
Necto image step 9 hardware assembly
Necto image step 10 hardware assembly
Debug Image Necto Step hardware assembly

Track your results in real time

Application Output

1. Application Output - In Debug mode, the 'Application Output' window enables real-time data monitoring, offering direct insight into execution results. Ensure proper data display by configuring the environment correctly using the provided tutorial.

2. UART Terminal - Use the UART Terminal to monitor data transmission via a USB to UART converter, allowing direct communication between the Click board™ and your development system. Configure the baud rate and other serial settings according to your project's requirements to ensure proper functionality. For step-by-step setup instructions, refer to the provided tutorial.

3. Plot Output - The Plot feature offers a powerful way to visualize real-time sensor data, enabling trend analysis, debugging, and comparison of multiple data points. To set it up correctly, follow the provided tutorial, which includes a step-by-step example of using the Plot feature to display Click board™ readings. To use the Plot feature in your code, use the function: plot(*insert_graph_name*, variable_name);. This is a general format, and it is up to the user to replace 'insert_graph_name' with the actual graph name and 'variable_name' with the parameter to be displayed.

Software Support

Library Description

This library contains API for Hall Switch 3 Click Click driver.

Key functions:

  • hallswitch3_get_mag_data - This function is used to indicates a relative magnetic field strength.

  • hallswitch3_set_out_data_rate - This function provides the capability for the user to override the fixed sample rate controlling the sleep-compare-Vout cycle time.

  • hallswitch3_get_status - This function reads a status reporting of modes and selections.

Open Source

Code example

The complete application code and a ready-to-use project are available through the NECTO Studio Package Manager for direct installation in the NECTO Studio. The application code can also be found on the MIKROE GitHub account.

/*!
 * @file main.c
 * @brief Hall Switch 3 Click example
 *
 * # Description
 * This example demonstrates the use of Hall Switch 3 Click board 
 * by reading and displaying the magnetic field strength value.
 *
 * The demo application is composed of two sections :
 *
 * ## Application Init
 * Initialization of I2C module and log UART.
 * After driver initialization, the app executes a default configuration.
 *
 * ## Application Task
 * This example demonstrates the use of the Hall Switch 3 Click board.
 * The demo application reads and displays the relative magnetic field strength value [Gaussian units] 
 * and detects when the magnetic field strength is not in the configured range. 
 * The results are sent to the UART terminal, where you can monitor their changes.
 *
 * @author Nenad Filipovic
 *
 */

#include "board.h"
#include "log.h"
#include "hallswitch3.h"

static hallswitch3_t hallswitch3;
static log_t logger;

void application_init ( void ) 
{
    log_cfg_t log_cfg;  /**< Logger config object. */
    hallswitch3_cfg_t hallswitch3_cfg;  /**< Click config object. */

    /** 
     * Logger initialization.
     * Default baud rate: 115200
     * Default log level: LOG_LEVEL_DEBUG
     * @note If USB_UART_RX and USB_UART_TX 
     * are defined as HAL_PIN_NC, you will 
     * need to define them manually for log to work. 
     * See @b LOG_MAP_USB_UART macro definition for detailed explanation.
     */
    LOG_MAP_USB_UART( log_cfg );
    log_init( &logger, &log_cfg );
    log_info( &logger, " Application Init " );

    // Click initialization.
    hallswitch3_cfg_setup( &hallswitch3_cfg );
    HALLSWITCH3_MAP_MIKROBUS( hallswitch3_cfg, MIKROBUS_1 );
    if ( I2C_MASTER_ERROR == hallswitch3_init( &hallswitch3, &hallswitch3_cfg ) ) 
    {
        log_error( &logger, " Communication init." );
        for ( ; ; );
    }
    
    if ( HALLSWITCH3_ERROR == hallswitch3_default_cfg ( &hallswitch3 ) )
    {
        log_error( &logger, " Default configuration." );
        for ( ; ; );
    }
    
    log_info( &logger, " Application Task " );
}

void application_task ( void ) 
{
    int8_t mag_data = 0;
    if ( HALLSWITCH3_OK == hallswitch3_get_mag_data( &hallswitch3, &mag_data ) )
    {
        log_printf( &logger, " Magnetic Field: %d [Gs]\r\n", ( int16_t ) mag_data );
        if ( HALLSWITCH3_OUT_STATE_LOW == hallswitch3_check_mag_field( &hallswitch3 ) )
        {
            log_printf( &logger, " The switch is open.\r\n" );
        }
    }
    Delay_ms ( 1000 );
}

int main ( void ) 
{
    /* Do not remove this line or clock might not be set correctly. */
    #ifdef PREINIT_SUPPORTED
    preinit();
    #endif
    
    application_init( );
    
    for ( ; ; ) 
    {
        application_task( );
    }

    return 0;
}

// ------------------------------------------------------------------------ END

Additional Support

Resources

Love this project?

'Buy This Kit' button takes you directly to the shopping cart where you can easily add or remove products.