Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Бесконтактный жестовый замок: APDS-9960 + Arduino для безопасного доступа

Компоненты и материалы

Программное обеспечение

О проекте

Простой в сборке жестовый замок на базе APDS-9960. Распознает 4 жеста: ВВЕРХ, ВНИЗ, ВЛЕВО, ВПРАВО. Пароль задается последовательностью жестов (до 6). При верном вводе сервопривод открывает замок на 16 секунд. Индикация на LCD и RGB-светодиоде (красный — ошибка, зеленый — верно). Питание от 9V батареи через DC-джек.

Сборка

  1. LCD: стандартная схема. Если нет 10к потенциометра — резистор 1к между VO и GND.
  2. APDS-9960: работает только от 3.3V! На UNO требуется сдвиг уровней: SDA/SCL (A4/A5) через резисторы 4.7к к 3.3V (см. схему). INT — на пин 2 (прерывание).
  3. RGB LED: R -> A1, G -> A2 (через резисторы), общий катод -> GND.
  4. Серво: сигнальный провод на пин 9.
  5. Корпус: картонная коробка с вырезами под компоненты. Можно собрать на макетке или спаять на перфоплате.

Алгоритм работы

  1. Режим ожидания (стр. 0): LCD «Locked — get 3 inches away». Мигает красным. При приближении (проксималити > 40) переход к вводу кода.
  2. Ввод кода (стр. 1): LCD «Enter code...». Ожидает жест через прерывание. Сравнивает с эталонным массивом secret[].
    • Верно: «Next», зеленый, счетчик++.
    • Неверно: «Wrong, return to main page», красный, сброс на стр. 0.
    • Не распознано: «Not recognized: Try again», повтор попытки.
  3. Доступ разрешен (стр. 2): LCD «Enter now». Серво поворачивается на 90° (открывает), мигает зеленым 16 сек с обратным отсчетом, затем закрывается (0°), возврат на стр. 0.

Код (основные моменты)


// Пароль: 6 жестов (только UP, DOWN, LEFT, RIGHT)
#define PINSIZE 6
String secret[PINSIZE] = {"UP","DOWN","UP","UP","RIGHT","LEFT"};

// В loop() — конечный автомат pageNum (0,1,2)
// Прерывание от APDS-9960 (пин 2, FALLING) ставит флаг isr_flag
// handleGesture() читает жест: DIR_UP, DIR_DOWN, DIR_LEFT, DIR_RIGHT, DIR_NEAR, DIR_FAR, NONE
// При полном совпадении (numRight == PINSIZE) -> pageNum = 2

Важные нюансы

Схема

Полная схема подключения (PNG) в разделе Schematics оригинала.

Производственный процесс

  1. Эволюция и производство современных цилиндровых замков с пин-тумблерами
  2. Комбинированный замок: дизайн, производство и историческая эволюция
  3. Умный датчик полива «Thirst Alert» на Arduino — DIY сигнализация засухи для растений
  4. Итальянские словесные часы на Arduino Nano, NeoPixel, LCD и RTC
  5. Экономия пинов Arduino: подключение 4×3 клавиатуры по трём аналоговым входам
  6. Надежный счетчик кВт·ч на Sigfox с Arduino MKR Fox 1200
  7. Bluetooth-монитор температуры на Arduino Nano с NTC-термистором
  8. Набор-компаньон для Arduino Nano — необходимые компоненты и инструменты для DIY-электроники
  9. Гальванически разделённый аналоговый вход для Arduino на LM331 и оптопаре 4N25
  10. Точный тест времени реакции на Arduino UNO