luzAI - роботизированная лампа отслеживает руку


luzAI — это проект роботизированной лампы, которая отслеживает положение руки, чтобы на ней всегда было освещение.
Для изготовления робо-лампы использовался контроллер Arduino Nano и пара небольших шаговых двигателей.
Захват видео с USB-камеры осуществляется скриптом на питоне (интерфейс на tkinter) с помощью OpenCV.
Для распознавания руки используется библиотека ImageAI.
При детекции объекта, отправляются команды для Arduino через последовательный порт (serial), которые приводят в движение шаговые двигатели, выдвигающие и вращающие штанги лампы.

Скетч для Arduino — arduinoCode.ino

#include <Stepper.h>

int numSteps = 2038;
Stepper stepperX(numSteps, 8, 10, 9, 11);
Stepper stepperZ(numSteps, 2, 4, 3, 5);
int incoming[3];


void setup()
{
  pinMode(7, OUTPUT);
  Serial.begin(9600);
  stepperX.setSpeed(15);
  stepperZ.setSpeed(15);
}

void loop()
{
  while(Serial.available() >= 3)
  {
    //incoming data
    for (int i = 0; i < 3; i++)
    {
      incoming[i] = Serial.read();
    }

    //light toggle
    if (incoming[2]==1)
    {
      digitalWrite(7,HIGH);
    }
    else
    {
      digitalWrite(7, LOW);
    }

    //motor control
    if (incoming[0]==0)
    {
      if (incoming[1]==0)
      {
        for(int i=0; i<150; i++)
        {
          stepperX.step(-1);
          stepperZ.step(1);
        }
      }
      else if (incoming[1]==1)
      {
        for(int i=0; i<150; i++)
        {
          stepperZ.step(1);
        }
      }
      else if (incoming[1]==2)
      {
        for(int i=0; i<150; i++)
        {
          stepperX.step(1);
          stepperZ.step(1);
        }
      }
    }
    else if (incoming[0]==1)
    {
      if (incoming[1]==0)
      {
        for(int i=0; i<150; i++)
        {
          stepperX.step(-1);
        }
      }
      else if (incoming[1]==2)
      {
        for(int i=0; i<150; i++)
        {
          stepperX.step(1);
        }
      }
    }
    else if (incoming[0]==2)
    {
      if (incoming[1]==0)
      {
        for(int i=0; i<150; i++)
        {
          stepperX.step(-1);
          stepperZ.step(-1);
        }
      }
      else if (incoming[1]==1)
      {
        for(int i=0; i<150; i++)
        {
          stepperZ.step(-1);
        }
      }
      else if (incoming[1]==2)
      {
        for(int i=0; i<150; i++)
        {
          stepperX.step(1);
          stepperZ.step(-1);
        }
      }
    }
  }
}


Ссылки
3D Printed Hand-Following AI Task Light
luzAI GitHub
ImageAI GitHub

По теме
Luci — робо-лампа с функцией распознавания лиц
Очень милая роболампа
Lili — забавная робот-лампа на Arduino
Pinokio — робо-лампа в стиле Pixar
Роболампа на Arduino
Роботизированная лампа
Лампа настроения из Arduino
Автоматизация стола IKEA SKARSTA при помощи Arduino
  • 0
  • 16 июля 2020, 09:38
  • admin

Комментарии (0)

RSS свернуть / развернуть

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.