Все модули ESP32 имеют встроенный датчик Холла. Датчик Холла может обнаруживать изменения магнитного поля в окружающей среде. Чем больше магнитное поле, тем выше выходное напряжение датчика Холла.
В Arduino есть функция HallRead(), которая возвращает разницу напряжений, создаваемую магнитным полем, в виде аналогового значения. Чем сильнее внешнее магнитное поле, тем выше аналоговое значение, возвращаемое функцией. Откройте Arduino IDE, выберите соответствующую плату и порт ESP32, затем загрузите следующий код.
int hallValue;
void setup()
{
Serial.begin(115200);
}
void loop()
{
hallValue = hallRead();
Serial.print("ESP32 Hall effect sensor value: ");
Serial.println(hallValue);
delay(1000);
}

Когда загрузка завершится, откройте последовательный монитор. Приблизьте магнит к датчику Холла ESP32 и посмотрите, как меняются значения, возвращаемые функцией HallRead.

Если перевернуть магнит, знак значений изменится. В зависимости от полярности магнита значение, возвращаемое датчиком Холла, будет положительным или отрицательным. Чем ближе магнит к датчику, тем выше абсолютные значения.

В следующем примере показано, как сделать датчик открытия двери/окна с помощью ESP32 и магнита.
int hallValue;
const int thresholdValue = 40;
void setup()
{
Serial.begin(115200);
}
void loop()
{
hallValue = hallRead();
Serial.print("ESP32 Hall effect sensor value: ");
Serial.print(hallValue);
if(abs(hallValue) < thresholdValue)
{
Serial.println(" - The door is open!");
}
else
{
Serial.println(" - The door is closed!");
}
Serial.println();
delay(1000);
}
В приведенном выше примере пороговое значение определяется и сохраняется в константе thresholdValue. Сравните это значение со значением HallValue, и если оно ниже порогового значения, магнит, вероятно, был удален из области чувствительности встроенного датчика Холла ESP32. Уведомление, соответствующее этому значению, отображается в последовательном мониторе.
ESP-WROOM-32 DevKit
Плата ESP-WROOM-32 DevKit на основе популярного Wi-Fi/Bluetooth модуля ESP32