«Странный» магнитометр (5883, но «не тот»)

Попался мне магнитометр на плате GY-271. Обзор информации по такому модулю показал наличие проблем с подключением к Arduino. 

В итоге удалось подключить модуль к контроллеру. И даже не обычному, а на ESP8266!

 

Признаки необычности магнитометра:

  • «Нормальный» имеет обозначение модуля GY-273 (у меня GY-271)
  • «Нормальный» выполнен на MEMS  HMC5883L (у меня на микросхеме написано DB5883)
  • «Нормальный» магнитометр «откликается» по шине I2C по адресу 0x1E (у меня 0x0D)

Обычная библиотека к моему датчику не подходит. Пришлось поискать в интернете. Стоит почитать следующие источники:

  • Довольно древний разговор на arduino.ru — можно почитать «для общего осознания проблемы». Использовать практические рекомендации — не стоит.
  • На robot-kit.ru мне понравилось наличие схемы модуля. Это полезно, т.к. на плате стоят «согласователи уровня» сигнала для шины I2C, что может быть неприятным открытием в разработке. Так же на плате есть стабилизатор напряжения 3,3В.
  • Сама библиотека для работы с DB5883 представлена на github.

Схема модуля такая (скорей всего примерно такая, т.к. тут «родной» HMC5883L)

Подключал к контроллеру WEMOS на ESP8266 (питание 3.3В). Никаких действий по согласованию не делал. Подключал SCL и SDA прямо к выводам контроллера. Питание на модуль брал 3.3В.

Пример compas из библиотеки заработал сразу.

Библиотека для модуля QMC5883L-master