Для электронщиков и радиолюбителей

Как использовать встроенный датчик Холла в ESP32

Как использовать встроенный датчик Холла в ESP32

Все модули 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. Уведомление, соответствующее этому значению, отображается в последовательном мониторе.