Snacky — диспенсер закусок для домашнего робота Astro


Интересный проект, расширяющий возможности стандартной док-станции домашнего робота Astro (от Amazon) диспенсером закусок и тем самым позволяющий автоматизировать доставку вкусняшек.

Как мы помним, робот Astro не оборудован манипулятором и поэтому не способен что-либо сделать самостоятельно. Фактически, робот может  разъезжать по дому и способен только что-нибудь посмотреть.

Однако, оказывается и стандартную комплектацию робота можно использовать для некоторой домашней автоматизации.

Snacky — это диспенсер закусок, прикрепленный к зарядной док-станции робота Astro, что позволяет заказывать закуски командой отправки робота на подзарядку. Когда робот заезжает на док-станцию, диспенсер выгружает пакет с закусками в нишу на спине робота  и пользователю остаётся только позвать робота к себе.

В основе Snacky лежит контроллер Arduino Uno и мотор-шилд. Для контроля присутствия робота используются два модуля инфракрасных датчиков, а спираль диспенсера вращает сервомашинка непрерывного вращения. Алгоритм работы очень простой: Arduino обнаруживает присутствие робота Astro при помощи инфракрасных датчиков и начинает  вращать сервомашинку, чтобы спираль дозатора выбросила пакет.

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

//snacky 020123

int wait=0;//wait=1 means delivery has been made
int snack=1;//no snack detected
int astro=1;//no astro request detected

void setup() {
  pinMode(12,OUTPUT);//Motor channel A
  pinMode(9,OUTPUT);//Brake channel A

  pinMode(2,INPUT_PULLUP);//snack detector
  pinMode(6,INPUT_PULLUP);//astro request detector

  delay(1000);
  astro=digitalRead(6);

  if (astro==0) {
    wait=1;
  }

}

void loop() {
  if (wait==0) {
    astro=digitalRead(6);
    if (astro==0) {//snack request initiated)
      delay(2000);

      astro=digitalRead(6);//read again
      if (astro==0) {//time to start motor and dispense

        digitalWrite(12,HIGH);//set motor direction
        digitalWrite(9,LOW);//disengage brake
        analogWrite(3,50);//turn on motor

        snack=digitalRead(2);//read snack sensor
        while(snack==1) {//keep running until detected
          snack=digitalRead(2);
        }
        delay(500);//keep motor running a bit
        analogWrite(3,0);//turn motor off

        wait=1;
      }
    }
  }
  astro=digitalRead(6);
  if (astro==1) {//left the charger
    delay(15000);
    astro=digitalRead(6);
    if (astro==1) {//reset and wait
      wait=0;
    }
  }
}

далее: Amazon предложила использовать своего домашнего робота Astro в роли робота-сторожа для малого бизнеса

Ссылки

По теме


Добавить комментарий

Arduino

Что такое Arduino?
Зачем мне Arduino?
Начало работы с Arduino
Для начинающих ардуинщиков
Радиодетали (точка входа для начинающих ардуинщиков)
Первые шаги с Arduino

Разделы

  1. Преимуществ нет, за исключением читабельности: тип bool обычно имеет размер 1 байт, как и uint8_t. Думаю, компилятор в обоих случаях…

  2. Добрый день! Я недавно начал изучать программирование под STM32 и ваши уроки просто бесценны! Хотел узнать зачем использовать переменную типа…

3D-печать AI Android Arduino Bluetooth CraftDuino DIY IDE iRobot Kinect LEGO OpenCV Open Source Python Raspberry Pi RoboCraft ROS swarm ИК автоматизация андроид балансировать бионика версия видео военный датчик дрон интерфейс камера кибервесна манипулятор машинное обучение наше нейронная сеть подводный пылесос работа распознавание робот робототехника светодиод сервомашинка собака управление ходить шаг за шагом шаговый двигатель шилд юмор

OpenCV
Робототехника
Будущее за бионическими роботами?
Нейронная сеть - введение