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

Amazon Echo на базе Arduino с использованием 1Sheeld

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

Arduino 101
× 1
1Sheeld
× 1
1Sheeld
× 1
Лампочка
× 1
Светодиодная лента RGB
× 1
Плата реле
× 1
Apple iPhone
× 1
Макет (общий)
× 1
Кабель USB-A - B
× 1
Перемычки (общие)
× 30
NPN-транзистор общего назначения
× 3

Необходимые инструменты и машины

Бурильщик
Труба из ПВХ

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

IDE Arduino

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

Несколько месяцев назад я навестил своего друга и был поражен принадлежащим ему Amazon Echo.

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

В этот момент создатель внутри меня крикнул:«Почему бы мне не сделать это самому!»

И с того дня я начал искать компоненты, которые помогли бы мне создать Amazon Echo на базе Arduino, пока не нашел потрясающий 1Sheeld.

1Sheeld - это платформа для Arduino, которая позволяет вам использовать датчики и возможности вашего смартфона и использовать их в своих проектах Arduino.

По сути, это аппаратный щит, который находится поверх вашей платы Arduino и связывается через Bluetooth с этим приложением Android для передачи данных между ним и вашим смартфоном.

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

Я использовал в этом проекте пять щитов из более чем 40 щитов в 1Sheeld.

Первый - Экран распознавания голоса . который я использовал для управления всей системой с помощью голосовых команд, это очень простой щит, который я могу активировать с помощью только одной строки кода: VoiceRecognition.start ();

Затем я использовал Music Player Shield . который позволяет мне подключиться к музыкальному плееру на смартфоне и выбрать треки, которые я хочу воспроизводить очень плавно, на самом деле очень просто, я использовал эту строку только для воспроизведения экрана музыкального плеера: MusicPlayer.play ();

Третий щит, который я использовал, - один из самых важных в проекте, это щит преобразования текста в речь . которые добавляют к проекту гуманоидного взаимодействия, когда кто-то отвечает за то, что вы говорите, было так легко сделать систему отзывчивой: TextToSpeech.say ("время в Каире");

После активации экрана преобразования текста в речь я активировал экран часов . которые возвращают часы в режиме реального времени, а затем система может ответить с указанием времени, как только я его попросил, потрясающе! не так ли :), и я могу легко узнать текущее время в моем телефоне с помощью этой функции: Clock.queryDateAndTime ();

Последний щит, который я использовал, - это Интернет-щит . который, на мой взгляд, является самым мощным щитом в 1Sheeld, я использовал этот щит, чтобы получить текущий статус погоды в моем родном городе, используя API с веб-сайта openweathermap, где я могу вызвать API с помощью этой строки: HttpRequest request1 ("/ * адрес API * /");

Шаг 1. Соберите компоненты

  • Arduino 101 - 30,99 доллара США.
  • 1Sheeld + доска 54,94 доллара США.
  • iPhone 155,5 долл. США.
  • Труба ПВХ 2 доллара США.
  • Светодиодная лента 5 долларов США.
  • Блок питания 12 В 7 долларов США.
  • Релейная плата 3 доллара США.
  • Перемычки и провода 3 доллара США.
  • 3 NPN транзистора 1 доллар США

Шаг 2:

Проделайте в трубе отверстия, чтобы звук не выходил

Шаг 3:

Покрасьте ПВХ трубу черной краской

Шаг 4. Выполните электромонтаж

  • Подключите светодиодные ленты к транзисторам и блоку питания.
  • Подключите лампу к плате реле и клеммам переменного тока.
  • Подключите релейную плату и светодиодные ленты к плате Arduino 101, как указано в приведенном ниже коде.
  • Закрепите все это так, чтобы iPhone находился внутри трубы из ПВХ.

Шаг 5. Настройте библиотеку 1Sheeld

Вы можете управлять любыми библиотеками из IDE Arduino. Просто нажмите Sketch>> Include library>> Manage libraries>> type OneSheeld>>, затем нажмите install, и все готово. Или вы можете загрузить библиотеку отсюда:http://1sheeld.com/downloads/ Затем откройте свою Arduino IDE, затем выберите эскиз в строке меню>> Включить библиотеку>> добавить файл .zip> > затем выберите файл zip yo только что скачал.

Шаг 6. Установите приложение 1Sheeld

Загрузите мобильное приложение 1Sheeld с веб-сайта или посетите магазин Apple Play или Google Play, чтобы загрузить приложение.

Шаг 7. Доступ к экранам

Следуйте инструкциям по началу работы с 1Sheeld и в конце выберите следующие щиты

  • Распознавание голоса
  • Преобразование текста в речь
  • Часы
  • Интернет
  • Музыкальный проигрыватель

Затем нажмите кнопку с несколькими экранами.

Код

  • Эхо-код Amazon
Эхо-код Amazon Arduino
 / * ДОПОЛНИТЕЛЬНО:Чтобы уменьшить размер скомпилированной библиотеки и ограничить использование ею памяти, вы можете указать, какие экраны вы хотите включить в свой скетч, задав CUSTOM_SETTINGS и соответствующие экраны INCLUDE_ define. * / # определить CUSTOM_SETTINGS # определить INCLUDE_INTERNET_SHIELD # определить INCLUDE_VOICE_RECOGNIZER_SHIELD # определить INCLUDE_TEXT_TO_SPEECH_SHIELD # определить INCLUDE_MUSIC_PLAYER_SHIELD * / # include  / * создать начальное значение для счетчика миллисекунд. * / unsigned long previousMillis =0; / * создать начальное состояние для вызова alexa. * / bool state =0; / * Вызвать api, который вернет статус погоды в Каире, Египте. * / HttpRequest request1 ("http://api.openweathermap.org/data/2.5/weather?q=Cairo,EG&appid=43d95b4cf5d0573e2dfe5186c160017a"); / * определяем 3 транзистора на контактах 3,5 и 6. * / # define strip1 3 # define strip2 6 # define strip3 5 / * определение лампы на выводе 13. * / int lamp =13; / * определение переменной, которая будет содержать часы и миниуты. * / int hour, minute; / * Создайте 2 символа arry, чтобы поймать нужную строку из предложения. * / char b [4]; char c [4]; / ​​* определяем переменные для хранения часа и минут в строке. * / String strh, strm; / * определяем переменную для хранения статуса дня am или pm. * / String noon; / * Голосовые команды, задаваемые пользователем. * / const char mainCommand [] ="alexa"; const char weatherCommand [] ="какая сегодня погода"; const char playCommand [] ="играть музыку"; const char clockCommand [] ="который час"; const char stopCommand [] ="стоп"; const char lightonCommand [] ="включить свет"; const char lightoffCommand [] ="выключить свет"; void setup () {/ * Начать общение. * / OneSheeld.begin (); / * устанавливаем светодиодные ленты и лампу на вывод. * / pinMode (strip1, ВЫХОД); pinMode (strip2, ВЫХОД); pinMode (strip3, ВЫХОД); pinMode (лампа, ВЫХОД); / * Подпишемся на успешный обратный вызов запроса. * / request1.setOnSuccess (&onSuccess1); / * Подписка на ответы со значениями json. * / request1.getResponse (). setOnJsonResponse (&onJsonReply1); / * при распознавании голоса вызовите функцию myfunction. * / VoiceRecognition.setOnNewCommand (&myFunction);} void loop () {/ * сделайте задержку на 5 секунд, используя счетчик миллисекунд, чтобы поддерживать обнаружение голоса. * / unsigned long currentMillis =millis (); если (текущийМиллис - предыдущийМиллис> =5000) {предыдущийМиллис =текущийМиллис; / * получаем текущее время в вашем телефоне. * / Clock.queryDateAndTime (); / * запускаем распознавание голоса. * / VoiceRecognition.start (); } / * сохраняем часы и минуты смартфона в переменных. * / час =Clock.getHours (); минута =Clock.getMinutes (); / * определить статус времени, будь то утро или вечер. * / if (hour> 12) {hour - =12; полдень ="ПМ"; } еще {полдень ="АМ"; } / * сохраняем часы и минуты как строку. * / strh =String (час); strm =String (minute); / * сохраняем строку в массиве charchter. * / strh.toCharArray (b, 4); strm.toCharArray (c, 4);} / * Эта функция будет вызываться каждый раз, когда дается новая команда. * / void myFunction (char * commandSpoken) {/ * проверить, вызывает ли кто-нибудь alexa или нет. * / if (! strcmp (mainCommand, VoiceRecognition.getLastCommand ())) {alexon (); MusicPlayer.setVolume (5); / * если да, делаем состояние =1. * / состояние =1; } / * проверяем, просили ли вы проиграть музыку после вызова alexa. * / if (! strcmp (playCommand, VoiceRecognition.getLastCommand ()) &&state ==1) {alexoff (); MusicPlayer.play (); задержка (10000); MusicPlayer.stop (); состояние =0; } / * проверяем, запрашивали ли вы статус погоды после звонка alexa. * / else if (! strcmp (weatherCommand, VoiceRecognition.getLastCommand ()) &&state ==1) {alexoff (); Internet.performGet (request1); / * Подождите 5 секунд. * / OneSheeld.delay (5000); состояние =0; } / * проверяем, спрашивали ли вы время после вызова alexa. * / if (! strcmp (clockCommand, VoiceRecognition.getLastCommand ()) &&state ==1) {alexoff (); / * 1Sheeld отвечает, используя преобразование текста в речь. * / TextToSpeech.say («время в Каире есть»); задержка (1300); TextToSpeech.say (б); задержка (600); TextToSpeech.say (c); задержка (800); TextToSpeech.say (полдень); задержка (500); состояние =0; } / * проверяем, просили ли вы включить лампу после вызова alexa. * / if (! strcmp (lightonCommand, VoiceRecognition.getLastCommand ()) &&state ==1) {alexoff (); digitalWrite (лампа, ВЫСОКИЙ); TextToSpeech.say («свет включился»); задержка (6000); состояние =0; } / * проверяем, просили ли вы выключить лампу после вызова alexa. * / else if (! strcmp (lightoffCommand, VoiceRecognition.getLastCommand ()) &&state ==1) {alexoff (); digitalWrite (лампа, НИЗКИЙ); TextToSpeech.say («свет выключен»); задержка (3000); состояние =0; }} void onSuccess1 (HttpResponse &response1) {/ * Использование ответа для запроса цепочки Json до требуемого значения. * / / * т.е. получить значение main в первом объекте массива weather в ответе. * / / * При условии, что ответ в формате JSON. * / response1 ["погода"] [0] ["main"]. query (); delay (200); } void onJsonReply1 (JsonKeyChain &hell, char * output) {if (hell ==request1.getResponse () ["погода"] [0] ["main"]) {TextToSpeech.say ("погода сегодня в Каире такая" ); задержка (2000); / * 1 Шилд отвечает, используя экран преобразования текста в речь. * / TextToSpeech.say (вывод); }} void alexon () {/ * Включите полоски в том же порядке, что и в amazon echo. * / digitalWrite (strip1, HIGH); задержка (200); digitalWrite (strip2, ВЫСОКИЙ); задержка (200); digitalWrite (strip3, HIGH); } void alexoff () {/ * Отключить полоски. * / digitalWrite (strip1, LOW); digitalWrite (strip2, LOW); digitalWrite (strip3, LOW); } 

Схема


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

  1. Отправка данных датчика от одного Arduino к другому с помощью Firebase
  2. Цифровые игральные кости Arduino
  3. Универсальный пульт дистанционного управления с использованием Arduino, 1Sheeld и Android
  4. Игровой контроллер Arduino
  5. Сонар с использованием Arduino и отображение при обработке IDE
  6. Игра Pixel Chaser
  7. Управление яркостью светодиода с помощью Bolt и Arduino
  8. Простая и умная роботизированная рука с использованием Arduino
  9. Танк WalaBeer
  10. FM-радио с использованием Arduino и RDA8057M