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

J.A.R.V.I.S. :Виртуальный домашний помощник

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

Arduino 101
× 1
Arduino 4 Relays Shield
× 1
Arduino GSM shield V2
× 1

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

Паяльник (универсальный)
Пистолет для горячего клея (общий)

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

Unity
Android Studio
Vuforia
Adobe Illustrator
IDE Arduino

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

Зачем решать проблему умного дома?

Что нового?

Почему мы решили это сделать?

Работает

Цифровой счетчик энергии

Виртуальный помощник AI

Поток сигналов следующий:

  • 1. Голосовой ввод в приложение для Android
  • 2. Обработка в приложении для Android
  • 3. Отправка зашифрованных данных в Arduino через Bluetooth.
  • 4. Обработка на Arduino 101
  • 5. Цифровые сигналы для реле

Пин-соединения:

  • Контакт 8 -> PulseIn [цифровой вход]
  • Контакт 6 -> IN1 -> Выход вентилятора
  • Контакт 4 -> IN2 -> Световой выход
  • Контакт 5 -> IN3 -> Кофеварка

Подключение счетчика энергии:

  • Подключите счетчик к источнику питания.
  • Закройте счетчик энергии черной лентой, чтобы на LDR внутри счетчика не попал внешний свет.
  • Подключите нейтральный провод непосредственно к нагрузке, а фазный провод - к реле.
  • Пропустите провода от LDR за пределами счетчика к цепи счетчика.
  • Теперь переведите выходной сигнал схемы счетчика на назначенный импульсный вывод 8, как в коде.
  • Подключите контакты TX, RX Arduino 101 к контактам RX, TX модуля GSM.
  • Теперь включите платы после записи кода.

Принципиальная схема

Используемое оборудование и оборудование:

  • Измеритель внутренней энергии:светозависимый резистор LDR
  • GSM модуль
  • Схема счетчика:потенциометр, IC LM358N
  • Arduino 101
  • Модуль BlueTooth-HC05
  • 4-канальный модуль платы управления реле 12 В 10 А с оптопарой для PIC AVR ARM

Платформы программирования

  • · Для программирования Arduino 101 мы использовали Arduino IDE по умолчанию.
  • · Мы разработали наше приложение для Android с помощью Android Studio (JAVA и XML).
  • · Подключение к базе данных осуществляется с помощью Google Firebase.
  • · Для дополненной реальности мы использовали Unity вместе с Vuforia SDK.

Реализация:

  • Все компоненты выдают показания в Arduino, где мы конвертируем эти показания в символьный код, чтобы эффективно и быстро отправлять байты на компьютер. Внутри бесконечного цикла каждое чтение соответствует символу.
  • На компьютере должен выполняться код, чтобы получать данные, отправляемые Arduino через последовательные порты.
  • Для разработки приложения для Android мы используем студию Android, а для преобразования голоса в текст мы используем стандартный API Google.
  • Для распознавания речи мы используем акустико-фонетические параметры речи для независимого от говорящего распознавания речи в приложении для Android.
  • У нас есть виртуальный помощник AI (искусственный интеллект), который использует методы глубокого обучения, такие как CNN (сверточная нейронная сеть), с использованием Python для реализации обработки естественного языка.
  • Для приложения дополненной реальности мы используем Unity IDE и VuforiaSDK (это комплект для разработки программного обеспечения дополненной реальности (SDK) для мобильных устройств, который позволяет создавать приложения дополненной реальности).

Видео

Полезные ссылки:

Код

  • Код Arduino для цифрового считывания энергии и расчета стоимости.
  • Arduino реализует соединение JARVIS с реле с помощью Arduino
Код Arduino для цифрового считывания энергии и расчета стоимости Arduino
Этот код реализует единицы энергии, потребляемые устройством, подключенным к Arduino.
Инструкции :
1. Выполните подключения и вставьте номер мобильного телефона в код Arduino.
2. Загрузите код в Arduino 101.
3. Запустите код.
4. Отправьте SMS с любого мобильного телефона на номер мобильного телефона, указанный в коде, в формате # anytext *
5. Будет получен ответ, содержащий израсходованные единицы и стоимость
 #include  LiquidCrystal lcd (7,6,5,4,3,2); int led =13; // светодиод подавления на 13-м контакте # define pulsein 8 // определение входного импульсного контакта 8unsigned int pusle_count =0; // Объявление типа счетчика импульсов как integer float units =0; // Объявление единиц как Floatunsigned int rupees =0; // объявление типов рупий как целого числа без знакаunsigned int temp =0, i =0; // объявление temp &i как целого числа без знакаchar str [70], flag1 =0, flag2 =0; // длина символа в виде строки и объявление flagsvoid setup () {lcd.begin (16,2); // инициализируем тип ЖК-дисплея как 16x2 Serial.begin (9600); // инициализация последовательной скорости передачи данных как 9600 pinMode (led, OUTPUT); pinMode (Pulsein, ВХОД); digitalWrite (Pulsein, HIGH); lcd.setCursor (0,0); lcd.print («Беспроводная энергия»); lcd.setCursor (0,1); lcd.print («Счетчик»); задержка (2000); lcd.clear (); lcd.print («Автор»); задержка (2000); lcd.clear (); lcd.print («Запуск GSM ...»); gsm_init (); lcd.clear (); lcd.print («Система готова»); Serial.println («AT + CNMI =2,2,0,0,0»); init_sms (); send_data («Система готова»); Отправить смс(); задержка (1000); digitalWrite (светодиод, НИЗКИЙ); lcd.clear ();} недействительный цикл () {serialEvent (); // проверка серийных событий units =rupees / 5.0; // расчет единицы lcd.setCursor (0,0); lcd.print ("Единицы:"); lcd.print (шт.); lcd.print (""); lcd.setCursor (0,1); lcd.print ("Рупии:"); жк. принт (рупии); lcd.print (""); read_pulse (); если (темп ==1) {проверка (); }} void serialEvent () // серийное событие для приема и проверки входящих sms {while (Serial.available ()) {if (Serial.find ("#")) {digitalWrite (led, HIGH); задержка (1000); digitalWrite (светодиод, НИЗКИЙ); в то время как (Serial.available ()) {char inChar =Serial.read (); стр [я ++] =inChar; если (inChar =='*') {temp =1; возвращение; }}}}} void init_sms () // инициализация и настройка отправки сообщения {Serial.println ("AT + CMGF =1"); задержка (200); Serial.println ("AT + CMGS =\" УКАЗАТЬ ЗДЕСЬ МОБИЛЬНЫЙ НОМЕР \ ""); delay (200);} void send_data (String message) {Serial.println (сообщение); delay (200);} void send_sms () {Serial.write (26);} // Чтение импульса из счетчика энергииvoid read_pulse () {if (! digitalRead (pulsein)) {digitalWrite (led, HIGH); единицы ++; рупии =единицы * 5; в то время как (! digitalRead (pulsein)); digitalWrite (светодиод, НИЗКИЙ); }} // Проверка статуса сообщения void check () {if (! (Strncmp (str, "units", 5))) {Serial.println ("AT + CMGF =1"); задержка (200); Serial.println ("AT + CMGS =\" УКАЗАТЬ ЗДЕСЬ МОБИЛЬНЫЙ НОМЕР \ ""); задержка (200); lcd.setCursor (0,1); send_data ("Единица измерения энергии:"); Serial.println (единицы); send_data ("\ nРупии:"); Serial.println (рупии); задержка (200); Serial.write (26); flag1 =1; flag2 =1; темп =0; }} void message_sent () {lcd.clear (); lcd.print («Сообщение отправлено»); задержка (1000);} void gsm_init () {lcd.clear (); lcd.print ("Модуль поиска .."); логическое at_flag =1; в то время как (at_flag) {Serial.println ("AT"); while (Serial.available ()> 0) {если (Serial.find ("OK")) at_flag =0; } задержка (1000); } lcd.clear (); lcd.print («Модуль подключен ..»); задержка (1000); lcd.clear (); lcd.print («Отключение ECHO»); логическое echo_flag =1; while (echo_flag) {Serial.println ("ATE0"); while (Serial.available ()> 0) {если (Serial.find ("OK")) echo_flag =0; } задержка (1000); } lcd.clear (); lcd.print («Эхо выключено»); задержка (1000); lcd.clear (); lcd.print («В поисках сети ..»); логический net_flag =1; в то время как (net_flag) {Serial.println ("AT + CPIN?"); while (Serial.available ()> 0) {if (Serial.find ("+ CPIN:READY")) net_flag =0; } задержка (1000); } lcd.clear (); lcd.print ("Сеть обнаружена ..."); задержка (1000); lcd.clear ();} 
Arduino реализует соединение JARVIS с реле с помощью Arduino Arduino
Это код, реализующий последовательную передачу символов по Bluetooth между приложением Android и Arduino.
 # define CH3 7 # define CH4 4 # define CH5 5 # define CH6 6 void setup () {Serial.begin (9600); pinMode (CH3, ВЫХОД); pinMode (CH4, ВЫХОД); pinMode (CH5, ВЫХОД); pinMode (CH6, ВЫХОД); // Подать питание на оба светодиода // Отключить питание релейных каналов digitalWrite (CH3, HIGH); digitalWrite (CH4, HIGH); digitalWrite (CH5, HIGH); digitalWrite (CH6, HIGH); задержка (2000); // Подождите 2 секунды перед запуском последовательности} void loop () {delay (100); if (Serial.available ()) {//Serial.println(sum1); char c =Serial.read (); Serial.print (c); if (c =='b') {// кофе выключен} else if (c =='c') // свет включен {digitalWrite (CH4, LOW); delay (100);} else if (c =='d') // вентилятор включен {digitalWrite (CH6, LOW); delay (100);} else if (c =='k') // кофе на {digitalWrite (CH5, LOW); delay (100);} else if (c =='g') // отключение кофе {digitalWrite (CH5, HIGH); delay (100);} else if (c =='e') // погаснет {digitalWrite (CH4, HIGH); delay (100);} else if (c =='f') // отключение вентилятора {digitalWrite (CH6, HIGH); delay (100);} else if (c =='z') // до свидания {digitalWrite (CH6, HIGH); digitalWrite (CH4, HIGH); digitalWrite (CH3, HIGH); digitalWrite (CH5, HIGH); задержка (500); digitalWrite (CH5, LOW); задержка (500); digitalWrite (CH5, HIGH); задержка (500); digitalWrite (CH5, LOW); задержка (500); digitalWrite (CH5, HIGH); задержка (10000); }}} 

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

Инструкции :

1. Загрузите и установите приложение.
2. Убедитесь, что телефон подключен к Интернету.
3. Запустите приложение и укажите его на устройство, настроенное с помощью Vuforia (здесь используется маркер Vuforia по умолчанию).
4. Прибор должен запуститься.
5. Чтобы выключить устройство, нажмите виртуальную кнопку, которая появляется на экране всякий раз, когда телефон направлен на устройство jarvisaugmented_I2zWAu2jGG.apk

Схема

Обратите внимание:на телефоне всегда требуется активное подключение к Интернету.
Инструкции :
1. Установите приложение на телефон Android.
2. После настройки оборудования и его успешного запуска запустите приложение.
3. Для использования виртуального помощника (голос) произнесите ключевое слово «Listen Up JARVIS». Это должно активировать агент
3.1 Четко произносите свою команду
3.2 Агент должен предоставить ответ
4. Чтобы запустить приложение дополненной реальности, нажмите кнопку дополненной реальности; должен появиться пустой экран
4.1 Откройте приложение Jarvis Augmented на другом телефоне (ПРИМЕЧАНИЕ:приложение для Android J.A.R.V.I.S. должно быть на другом телефоне)
4.2 Следуйте инструкциям в JarvisAugmented для реализации дополненной реальности.

ПРИМЕЧАНИЕ:1. Если приложение зависает в какой-либо момент, попробуйте перезапустить приложение.
2. Если на экране появляется сообщение, подобное «Не удалось открыть микрофон», перезапустите приложение.
3. Это приложение реализовано с использованием модуля Bluetooth HC05 для увеличения масштабов проекта. Следовательно, рекомендуется использовать модуль Bluetooth HC05 app-release_eo3LK2AsLV.apk

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

  1. Создание сети беспроводных датчиков в вашем доме
  2. Сделайте машинку для письма домашнего задания дома
  3. Веб-контроллер DMX
  4. Arduino Spybot
  5. Скейтборд виртуальной реальности «Сделай сам»
  6. Автономный домашний робот-помощник
  7. Домашний контроллер Arduino, активированный Alexa
  8. BLUE_P:беспроводной экран программирования Arduino
  9. TFT Shield для Arduino Nano - запуск
  10. Arduino Shield NCS314 Tubes Clock IN-14