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

Кот Павлова

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

Пакет Arduino MKR IoT
× 1

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

Telegram

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

Примечание. Возможно, это руководство устарело, перейдите здесь для более актуальной версии .

Если вы когда-нибудь пытались дрессировать кошку, вы знаете, как это сложно. Кошки сами себе хозяева, но теперь у вас есть возможность позволить кошкам делать ваши приказы с помощью этого устройства с поддержкой Интернета вещей.

Добро пожаловать в эксперимент Павлова с кошками!

В этом проекте вы узнаете, как научить свою кошку, когда время обеда (и когда его нет), используя только компоненты MKR IoT Bundle и немного картона.

А все мы знаем, что кошки уже любят картонные коробки!

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

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

Отказ от ответственности:ни одна кошка не пострадала во время проведения этого эксперимента. Кроме того, нет гарантии, что кошка съест еду, но вы понимаете, верно?

В двух словах

Вы сможете создать свой собственный диспенсер для еды, следуя этим простым пошаговым инструкциям. Диспенсер - это просто картон и серводвигатель с добавленной магией Arduino.

Используя службу обмена сообщениями Telegram, вы можете установить количество подаваемой еды и включить мелодию, воспроизводимую с помощью зуммера.

Датчик освещенности определяет, отреагировала ли кошка на мелодию и добралась ли до еды.

Совет: Вы можете разместить веб-страницу на MKR1000 и отображать собранные данные в удобной таблице.

Компоненты

  • Серводвигатель
  • Фототранзистор
  • резистор 220 Ом.
  • Зуммер

Цели обучения

В этом эксперименте вы научитесь:

  • Управляйте ботами Telegram с помощью настраиваемой клавиатуры.
  • Настройте и управляйте функциональностью веб-сервера с самого MKR1000. #ProTip

Советы профессионалов полезные, но не совсем необходимые шаги, которые добавляют уровень сложности проекту.

Хотите узнать больше?

Это руководство является частью серии экспериментов, знакомящих вас с MKR1000 и IoT. Все эксперименты могут быть построены с использованием компонентов, содержащихся в MKR IoT Bundle.

  • Подушка "Я тебя люблю"
  • Головоломка
  • Кот Павлова
  • Ботан
  • Заводской коммуникатор

Telegram и Arduino

Telegram - популярное приложение для обмена сообщениями как для мобильных, так и для настольных компьютеров. Помимо возможности общаться с друзьями, он также позволяет нам создавать удобных и мощных чат-ботов!

Библиотека TelegramBot для Arduino дает нам простой способ реализовать логику чат-бота.

Чтобы узнать, как создать бота и управлять основными функциями, ознакомьтесь с учебным курсом I Love You Pillow.

Создайте свою собственную клавиатуру

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

Наша настраиваемая клавиатура выглядит так:

Мы будем использовать первый ряд кнопок для воспроизведения мелодии и выдачи еды, в то время как второй ряд кнопок будет использоваться для установки скорости серводвигателя и, следовательно, количества выдаваемой еды.

Чтобы создать настраиваемую клавиатуру, сначала нужно ее объявить:

  TelegramKeyboard keyboard_one;  

Затем определите строки:

  const char * row_one [] ={MusicAndFood, MusicNoFood}; const char * row_two [] ={одна часть, две части, три части};  

И, наконец, назначьте строки клавиатуре:

  keyboard_one.addRow (row_one, 2); // присваиваем строку одной или нескольким клавиатурам keyboard_one.addRow (row_two, 3); // второй аргумент - длина строки  

Помните, что эмодзи нужно отправлять с использованием UNICODE. Например, чтобы отправить смайлик в виде сердца, мы будем использовать: \ U00002764

Вы можете увидеть полный список кодов смайликов Unicode здесь. Это означает, что для определения наших кнопок мы будем использовать это:

  const char * MusicAndFood ="\ U0001F3B6 + \ U0001F36A"; // Примечание + Cookie const char * MusicNoFood ="\ U0001F3B6 NO \ U0001F36A"; // Примечание НЕТ Cookie const char * OnePortion ="\ U0001F408"; // CAT const char * TwoPortion ="\ U0001F408 \ U0001F408"; // 2 КОШКИ const char * ThreePortion ="\ U0001F408 \ U0001F408 \ U0001F408"; // 3 КОШКИ  

Вот полный набросок:

  #include  #include  #include  const char * ssid =SECRET_SSID; // SSID вашей сети (имя) const char * password =SECRET_PSWD; // ваш сетевой пароль const char BotToken [] =SECRET_BOT_TOKEN; Клиент WiFiSSLClient; Бот TelegramBot (BotToken, клиент); TelegramKeyboard keyboard_one; Строка OldChatId =""; void setup () {Serial.begin (115200); задержка (3000); // пытаемся подключиться к сети Wi-Fi:Serial.print ("Подключение к Wi-Fi:"); Serial.println (ssid); while (WiFi.begin (ssid, пароль)! =WL_CONNECTED) {Serial.print ("."); задержка (500); } Serial.println (""); Serial.println («WiFi подключен»); // выбираем понравившиеся смайлы с помощью UNICODE // вот список https://unicode.org/emoji/charts/full-emoji-list.html const char * MusicAndFood ="\ U0001F3B6 + \ U0001F36A"; // Примечание + Cookie const char * MusicNoFood ="\ U0001F3B6 NO \ U0001F36A"; // Примечание НЕТ Cookie const char * OnePortion ="\ U0001F408"; // CAT const char * TwoPortion ="\ U0001F408 \ U0001F408"; // 2 КОШКИ const char * ThreePortion ="\ U0001F408 \ U0001F408 \ U0001F408"; // 3 КОШКИ // определяем вашу строку const char * row_one [] ={MusicAndFood, MusicNoFood}; const char * row_two [] ={одна часть, две части, три части}; keyboard_one.addRow (row_one, 2); // присвоение строки одной или нескольким клавиатурам keyboard_one.addRow (row_two, 3); // второй аргумент - длина строки bot.begin (); } void loop () {сообщение m =bot.getUpdates (); // Чтение новых сообщений if (m.chat_id! =0) {// Проверяет наличие обновлений OldChatId =m.chat_id; Serial.println (m.text); bot.sendMessage (m.chat_id, «Привет!», keyboard_one); } задержка (1000); }  

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

Например, смайлы, которые мы будем использовать, будут получены следующим образом:

  ud83cudfb6 // Мелодия ud83cudf6a // Cookieud83dudc08 // Кот  

Обнаружить кошку!

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

Обратите внимание, что мы использовали резистор 220 Ом.

Для считывания значений с датчика нам понадобится только analogRead (A6).

Поскольку нас интересует обнаружение присутствия кошки только после мелодии и только в течение определенного времени, мы можем использовать следующую логику:

  длинный таймер без знака; bool startDetecting =true; int threshold =200; // произвольное значениеvoid setup () {timer =millis () Serial.begin (9600);} void loop () {if (startDetecting) {int value =analogRead (A6); if (значение <порог) {Serial.println («кошка обнаружена!»); startDetecting =false; } else if (millis () - timer> 120000) {Serial.println ("за последние две минуты кошка не обнаружена"); startDetecting =false; }}}  

Обратите внимание, что мы используем миллис () функция установки таймера . Миллис () дает нам время в миллисекундах с момента запуска платы. Мы можем использовать его для установки таймеров и запуска событий по прошествии определенного времени.

Мы также используем порог чтобы определить, была ли обнаружена кошка. Этот порог является произвольным, вы можете установить его в соответствии с вашими условиями освещения.

Воспроизвести песню

Чтобы воспроизвести песню, мы будем использовать зуммер и tone () . функция.

Мы будем использовать слегка измененную версию стандартного примера toneMelody. Вы можете найти его в раскрывающемся меню:

  examples> digital> toneMelody. . 

Добавьте серводвигатель

Сервопривод используется для открытия коробки и доставки еды.

Обратите внимание, что мы используем переменную int PortionAmount =1; чтобы установить время, в течение которого сервопривод должен оставаться повернутым на 90 градусов. Мы сможем изменить его значение через Telegram.

Присоедините сервопривод к контакту 7 и загрузите этот эскиз, чтобы увидеть, как он работает.

  #include  Серво-резервуар; // создаем сервообъект для управления серво int pos =0; // переменная для хранения положения сервопривода int PortionAmount =1; // Устанавливаем количество еды по умолчанию на 1 порцию void setup () {myservo.attach (7); // подключает сервопривод на выводе 6 к сервообъекту} void loop () {moveServo (); задержка (2000); } void moveServo () {Serial.println ("движущийся сервопривод"); for (pos =0; pos <=90; pos + =1) {// изменяется от 0 до 90 градусов myservo.write (pos); // сообщаем сервоприводу перейти в позицию в переменной 'pos' delay (15); // ожидает 15 мсек, пока сервопривод достигнет позиции} delay (PortionAmount * 300); // держать коробку открытой в течение определенного периода времени в зависимости от количества еды, за которую вы хотите доставить (pos =90; pos> =0; pos - =1) {// изменяется от 90 градусов до 0 градусов myservo.write ( поз); / сказать сервоприводу перейти в позицию с переменной задержкой 'pos' (15); // ожидает 15 мсек, пока сервопривод достигнет позиции}}  

#ProTip:Добавить веб-сервер

Одной из самых мощных функций MKR1000 является Режим точки доступа .

Это позволяет нам размещать веб-страницу на MKR1000, к которой мы можем получить доступ, используя IP-адрес платы и будучи подключенными к той же сети .

Мы будем использовать этот инструмент для печати данных, собранных дозатором еды.

Этот шаг требует базовых знаний HTML и CSS . (или большое доверие к примеру скетча. Вы можете проверить базовый пример веб-сервера по адресу:

 > пример> WiFi101> AP_SimpleWebServer  

Мы активируем режим точки доступа, отправив определенное слово нашему боту Telegram, который ответит ссылкой для перехода на веб-страницу. После этого клиент Telegram будет отключен и веб-сервер будет запущен .

  else if (m.text =="Сервер") {IP-адрес ip =WiFi.localIP (); web_server_mode =true; String message ="Чтобы увидеть веб-страницу, перейдите по адресу http://" + IpToString (ip); bot.sendMessage (m.chat_id, message, keyboard_one); telegram_client.stop (); задержка (1000); server.begin (); // запускаем веб-сервер на порту 80}  

На веб-странице есть кнопка, которая выключит режим веб-сервера и вернется в качестве клиента телеграммы:

  if (currentLine.endsWith ("GET / BACKBUTTON")) {// если кнопка нажата web_server_mode =false; client.stop (); задержка (1000); bot.begin (); bot.sendMessage (OldChatId, «Снова в сети!», keyboard_one); }  

Каждый раз, когда обнаружение кошек заканчивается, в таблицу добавляется новая ячейка с собранными данными:доставили ли корм, появилась ли кошка в течение двух минут и сколько времени потребовалось, чтобы добраться до раздаточного устройства.

  AddTableCell (food / noFood, Yes / No, TimeValue);  

Затем строка, содержащая все ячейки таблицы, обновляется и интегрируется в остальную часть основного HTML.

  table_cells + =ячейка; // добавляем новую ячейку html =html_1 + table_cells + html_2; // добавляем ячейки в основной HTML  

Посмотрите последний пример Pro, чтобы увидеть, как интегрировать все эти новые функции!

Совет. если вы хотите, чтобы ваши данные пережили сброс платы, посмотрите библиотеку Flash Storage или проверьте проект Nerd!

Код

Полный набросок
#ProTips полный набросок

Изготовленные на заказ детали и корпуса

Картон 2 мм pavlovcase_ShVm1OJRIF.dxf

Схема


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

  1. Замороженные овощи
  2. ТВ-ужин
  3. Сканер CAT
  4. Наполнитель для кошачьего туалета
  5. Замороженные продукты
  6. Корм ​​для домашних животных
  7. Ваш путеводитель по Shop.Cat.Com
  8. Начало работы с My.Cat.com
  9. Автоматические торговые автоматы для продажи продуктов питания – универсальность продукта
  10. Еда стала еще быстрее