Попался мне магнитометр на плате 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