Arduino MPR121
тел. +7(499)347-04-82
Описание Arduino MPR121
Отличный выбор! MPR121 — это один из самых популярных и доступных сенсорных контроллеров для проектов на Arduino. Вот подробное описание, характеристики и совместимость.
Описание
MPR121 — это специализированная микросхема от компании NXP Semiconductors, представляющая собой 12-канальный емкостной сенсорный контроллер с расширенными функциями.
Его основная задача — определять прикосновение или приближение человека (пальца) к электроду, измеряя изменение электрической емкости. Он полностью избавляет Arduino от необходимости выполнять сложные вычисления по отслеживанию емкости, работая по принципу "установил и забыл".
Ключевые преимущества для Arduino:
- Простота подключения: Работает по шине I2C, занимая всего 2 аналоговых вывода (SDA, SCL).
- Не требует сложных компонентов: Для каждого сенсорного электрода нужен только один токоограничивающий резистор.
- Высокая точность и помехоустойчивость: Встроенные алгоритмы фильтрации и автоматической калибровки.
- Независимая работа: Настраивается один раз, после чего самостоятельно отслеживает все 12 каналов и генерирует прерывание при изменении состояния.
- Гибкость: Можно использовать не только для кнопок, но и для создания ползунков, колес прокрутки и даже определения приближения (proximity).
Типичные применения с Arduino:
- Сенсорные клавиатуры и кнопки.
- Интерактивные панели управления.
- Сенсорные музыкальные инструменты (например, "Терменвокс").
- Замена механических кнопок в условиях влажности или для дизайнерских решений.
Технические характеристики
| Параметр | Значение / Описание | | :--- | :--- | | Количество сенсорных каналов | 12 независимых входов | | Интерфейс связи | I2C (до 400 кГц, Fast Mode) | | Адреса I2C | По умолчанию 0x5A. При подаче напряжения на вывод ADDR — 0x5B. Всего 4 возможных адреса. | | Напряжение питания | 1.71В — 3.6В (для самой микросхемы). ВАЖНО: Логические уровни должны соответствовать этому напряжению. | | Ток потребления | ~ 29 мкА в спящем режиме, ~ 70 мкА в режиме отслеживания (очень низкий) | | Разрешение отслеживания | До 16 бит (регулируется) | | Встроенные функции | Автокалибровка, фильтрация от помех (FFI, AFI), отслеживание скорости изменения (повторные нажатия), определение приближения (Proximity) | | Вывод прерывания | 1 вывод (IRQ). Активно-низкий уровень. Позволяет Arduino не опрашивать датчик постоянно, а реагировать на событие. | | Корпус | QFN-20 (для чипа), модули обычно имеют формат для макетичной платы |
Важное примечание по питанию: Чип MPR121 работает ТОЛЬКО от напряжения 1.71-3.6В. Прямое подключение к выводу Arduino 5V уничтожит его. Поэтому для работы с 5V Arduino (Uno, Mega, Nano) обязательно需要使用:
- Модуль с логическим преобразователем: Большинство готовых модулей на рынке уже содержат схему преобразования уровней (например, на микросхеме TXS0102 или резисторах).
- Самостоятельная схема: Делитель напряжения или специализированный преобразователь для линий SDA, SCL и IRQ.
Парт-номера и совместимые модели
1. Сама микросхема (IC)
- MPR121QR2 — основной и самый распространенный парт-номер в корпусе QFN-20.
2. Готовые модули для Arduino (наиболее популярный вариант)
Эти модули содержат чип MPR121, всю обвязку, стабилизатор напряжения и главное — преобразователь логических уровней 3.3V <-> 5V. Они идеально подходят для быстрого старта.
-
Оригинальные / Клоны от Adafruit / SparkFun:
- Adafruit MPR121 Capacitive Touch Sensor Breakout (ID: 1982) — "золотой стандарт" с отличной документацией и библиотекой.
- SparkFun Capacitive Touch Sensor Breakout - MPR121 (DEV-15977) — аналогичный качественный модуль.
-
Бюджетные модули с AliExpress / eBay:
- Обычно маркируются как "MPR121 Capacitive Touch Sensor Module I2C Interface For Arduino".
- Внешний вид: синяя или черная печатная плата, 2 ряда по 7 пинов (12 для электродов + IRQ + ADDR), 4 пина для подключения к Arduino (VCC, GND, SDA, SCL).
- Полностью совместимы с оригинальными модулями по распиновке и протоколу.
3. Модули с интегрированными электродами
- Grove - 12 Key Capacitive I2C Touch Sensor V2 (MPR121) — модуль от Seeed Studio с 12 готовыми сенсорными площадками и разъемом Grove.
Совместимость с платами Arduino
Полная совместимость (при использовании готового модуля с преобразователем уровней):
- Arduino Uno, Nano, Mega, Leonardo, Duemilanove, Diecimila — любые 5V платы.
- ESP8266 (NodeMCU, Wemos D1) и ESP32 — отлично работают, так как являются 3.3V устройствами. Можно подключать напрямую к чипу MPR121.
- Raspberry Pi Pico (RP2040) — совместима через I2C.
- Платы на 3.3V логике (Arduino Due, большинство плат от Adafruit, Teensy 3.x) — могут работать с чипом MPR121 напрямую.
Библиотеки для Arduino IDE:
- Adafruit_MPR121 — самая простая и популярная библиотека. Идеальна для быстрого начала работы.
- SparkFun_MPR121_Arduino_Library — альтернативная библиотека от SparkFun.
- mpr121 — более низкоуровневая библиотека, позволяющая тонкую настройку параметров.
Краткий пример кода (с использованием библиотеки Adafruit_MPR121)
#include <Wire.h>
#include "Adafruit_MPR121.h"
Adafruit_MPR121 cap = Adafruit_MPR121();
uint16_t lastTouched = 0; // Состояние в прошлый раз
uint16_t curTouched = 0; // Текущее состояние
void setup() {
Serial.begin(9600);
if (!cap.begin(0x5A)) { // Инициализация с адресом 0x5A
Serial.println("MPR121 не найден. Проверьте соединение!");
while (1);
}
Serial.println("MPR121 готов!");
}
void loop() {
curTouched = cap.touched(); // Получаем битовую маску нажатых электродов
for (uint8_t i = 0; i < 12; i++) {
// Проверяем каждый электрод
if ((curTouched & _BV(i)) && !(lastTouched & _BV(i))) {
Serial.print("Электрод "); Serial.print(i); Serial.println(" нажат");
}
if (!(curTouched & _BV(i)) && (lastTouched & _BV(i))) {
Serial.print("Электрод "); Serial.print(i); Serial.println(" отпущен");
}
}
lastTouched = curTouched;
delay(50);
}
Итог: MPR121 — это идеальное решение для добавления профессиональной емкостной сенсорной функциональности в ваш Arduino-проект. Для работы с 5V Arduino обязательно выбирайте готовый модуль со встроенным преобразователем уровней.