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

Блокировка, управляемая жестами

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

SparkFun APDS-9960
× 1
Arduino UNO
× 1
Общий катод, рассеянный RGB
× 1
Стандартный ЖК-экран Adafruit - 16x2, белый на синем
× 1
Резистор 4,75 кОм
× 2
Перемычки (общие)
× 1
Резистор 1 кОм
× 1

Приложения и онлайн-сервисы

IDE Arduino

Об этом проекте

* Датчик APDS-9960 не работает с Arduino Nano или Mega 2560 (в моем тестировании).

Этот проект легко создать и использовать. Не стесняйтесь использовать в этом проекте любой сервопривод или фиксирующий механизм. Это должно быть стартовой платформой для блокировки на основе жестов. На строительство!

Материалы

Я получил большую часть своих запчастей на Amazon.com и датчик APDS-9960 от Sparkfun. Пока вы можете использовать только Arduino Uno или Micro 3.3v, так как любая другая плата не будет работать по какой-то странной причине.

Сборка

Прикрепите ЖК-дисплей, как показано. Если у вас нет потенциометра 10 кОм, используйте резистор 1 кОм, идущий от контраста к GND. Датчик APDS-9960 необходимо будет сместить при использовании Arduino Uno, поэтому я взял SCL и SDA и подключил их к резистору 4,7 кОм, а затем поднял их, установив резистор 4,7 кОм на 3,3 В. Затем подключите их к A4 и A5 соответственно (см. Схему). Arduino может работать от 9-вольтовой батареи с подключенным блоком питания постоянного тока.

Корпус

Я использовал простую картонную коробку и вырезал из нее отверстия, чтобы они совпадали с тем, где будут размещаться компоненты. Вы можете припаять все это к монтажной плате, но я просто оставил это на макетной плате и подключил перемычки к компонентам. Когда я закончил, это выглядело так.

Код

  • Код Arduino
Код Arduino C / C ++
 / * Аппаратные соединения:ВАЖНО:APDS-9960 может принимать только 3,3 В! Вывод Arduino APDS-9960 Функция платы 3.3 В VCC Питание GND GND Земля A4 SDA I2C Data A5 SCL I2C Clock 2 INT InterruptResources:Include Wire.h и SparkFun_APDS-9960.h * / # include  #include  #include  #include  #define PINSIZE 6 #define SERVOPIN 9 // Сколько жестов длина вашего пароля // Пины # define APDS9960_INT 2 // Должен быть прерыванием pinLiquidCrystal lcd ( 12,11,6,5,4,3); Сервопривод; uint8_t near_data =0; int red_led =A1; int green_led =A2; int pageNum =0; // ЖКИ "страница" String secret [PINSIZE] ={"ВВЕРХ", "ВНИЗ", "ВВЕРХ", "ВВЕРХ", "ВПРАВО", "ВЛЕВО"}; // Пароль идет сюда. Должен быть ЗАГЛАВНЫМ. Может принимать значения «ВВЕРХ», «ВНИЗ», «ВЛЕВО» или «ВПРАВО». Строка currentGesture =""; int numRight =0; SparkFun_APDS9960 apds =SparkFun_APDS9960 (); // Инициализация библиотеки APDS-9960int isr_flag =0; void setup () {// Установить вывод прерывания как входной pinMode (APDS9960_INT, INPUT); lcd.begin (16,2); servo.attach (SERVOPIN); servo.write ( 0); servo.detach (); // Инициализируем последовательный порт Serial.begin (9600); Serial.print («Ваш пароль -»); Серийный.печать (PINSIZE); Serial.println («жестикулирует долго»); Serial.println (); Serial.println (F ("----------------")); Serial.println (F («Замок APDS-9960»)); Serial.println (F ("----------------")); // Инициализируем подпрограмму обслуживания прерывания attachInterrupt (0, interruptRoutine, FALLING); // Инициализируем APDS-9960 (настраиваем I2C и начальные значения) if (apds.init ()) {Serial.println (F ("Инициализация APDS-9960 завершена")); } else {Serial.println (F ("Что-то пошло не так во время инициализации APDS-9960!")); } if (! apds.setProximityGain (PGAIN_1X)) {Serial.println (F («Что-то пошло не так при попытке установить PGAIN»)); } if (apds.enableProximitySensor (false)) {Serial.println (F («Датчик приближения запущен»)); } else {Serial.println (F ("Что-то пошло не так во время инициализации датчика!")); } // Запускаем механизм датчика жестов APDS-9960 if (apds.enableGestureSensor (true)) {Serial.println (F («Датчик жестов запущен»)); } else {Serial.println (F ("Что-то пошло не так во время инициализации датчика жестов!")); }} void loop () {if (pageNum ==0) {if (! apds.readProximity (inity_data)) {Serial.println ("Ошибка чтения значения близости"); } else {Serial.println (близость_данных); если ((близость_данные> =40) &&(pageNum ==0)) {pageNum =1; задержка (2000); }}} переключатель (pageNum) {case 0:LCDClear (); lcd.print («Заблокировано - получить»); lcd.setCursor (0,1); lcd.print ("3 дюйма"); blinkRed (); LCDClear (); ломать; случай 1:numRight =0; lcd.print («Введите код ...»); lcd.setCursor (0,0); для (int x =0; x  0; x -) {LCDClear (); lcd.print ("Закрытие:"); lcd.setCursor (0,1); lcd.print (x); lcd.setCursor (1,1); lcd.print ("секунды ..."); delay (1000);} LCDClear (); lcd.print ("Закрытие");} 

Схема


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

  1. Заблокировать
  2. Кодовый замок
  3. Сигнал тревоги для растений, предупреждающий о жажде
  4. Итальянские часы со словами
  5. Только три контакта для клавиатуры 4x3
  6. Счетчик кВтч Sigfox
  7. Монитор температуры Bluetooth
  8. Компаньон IC
  9. Изолированный аналоговый вход для Arduino
  10. Измерьте время реакции