산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

Arduino와 대화하고 Google 어시스턴트로 제어

구성품 및 소모품

Arduino UNO
× 1
Espressif ESP8266 ESP-01
× 1

앱 및 온라인 서비스

Arduino IDE
Microsoft Visual Studio 2017

이 프로젝트 정보

이 프로젝트에서는 인터넷 서비스와 Arduino 보드를 연결하는 방법을 배웁니다. 이 기사의 끝에서 다음을 수행하게 됩니다.

<울>
  • Google 어시스턴트에서 데이터를 가져오는 방법 알아보기
  • IFTTT 프로토콜 사용 방법 이해
  • 웹훅 및 http 요청에 익숙해지기
  • Arduino와 대화 가능
  • Google 어시스턴트 및 IFTTT 애플릿

    Google Assistant는 Google에서 개발한 인공 지능 기반 가상 비서로 주로 모바일 및 스마트 홈 기기에서 사용할 수 있습니다. 구글의 이전 가상 비서인 구글 나우와 달리 구글 어시스턴트는 양방향 대화가 가능하다. 그것은 어떤 장치보다 당신의 단어를 더 잘 인식하고 명령에 빠르고 정확하게 응답할 수 있습니다. 사용자는 기본적으로 자연스러운 음성을 통해 Google 어시스턴트와 상호 작용하지만 키보드 입력도 지원됩니다. Google Now와 동일한 성격과 방식으로 어시스턴트는 인터넷 검색, 이벤트 및 알람 예약, 사용자 기기의 하드웨어 설정 조정, 사용자 Google 계정의 정보 표시를 수행할 수 있습니다. Google은 또한 어시스턴트가 기기의 카메라를 통해 사물을 식별하고 시각적 정보를 수집할 수 있으며 제품 구매 및 송금, 노래 식별을 지원할 수 있다고 발표했습니다.

    If This Then That은 IFTTT라고도 하며 애플릿이라고 하는 간단한 조건문 체인을 생성하는 무료 웹 기반 서비스입니다. 애플릿은 Gmail, Facebook, Telegram, Instagram 또는 Pinterest와 같은 다른 웹 서비스 내에서 발생하는 변경 사항에 의해 트리거됩니다. 예를 들어, 애플릿은 사용자가 해시태그를 사용하여 트윗하면 이메일 메시지를 보내고, 누군가가 사진에서 사용자를 태그하면 Facebook의 사진을 사용자 아카이브로 복사할 수 있습니다. 웹 기반 애플리케이션 외에도 이 서비스는 iOS 및 Android에서 실행됩니다. 2015년 2월 IFTTT는 원래 응용 프로그램의 이름을 IF로 변경하고 사용자가 바로 가기 응용 프로그램 및 작업을 만들 수 있는 Do라는 새로운 앱 제품군을 출시했습니다. 2015년 기준으로 IFTTT 사용자는 매일 약 2천만 개의 레시피를 생성했습니다. Do 제품군의 모든 기능은 이후 재설계된 IFTTT 앱에 통합되었습니다.

    웹훅 및 JSON 콘텐츠

    웹 개발에서 웹훅은 사용자 정의 콜백을 사용하여 웹 페이지 또는 웹 애플리케이션의 동작을 보강하거나 변경하는 방법입니다. 이러한 콜백은 원래 웹사이트 또는 애플리케이션과 반드시 ​​관련이 있을 필요는 없는 제3자 사용자 및 개발자에 의해 유지, 수정 및 관리될 수 있습니다. "웹훅"이라는 용어는 2007년 Jeff Lindsay가 컴퓨터 프로그래밍 용어 hook에서 만든 것입니다.

    컴퓨팅에서 JSON(JavaScript Object Notation)은 사람이 읽을 수 있는 텍스트를 사용하여 속성-값 쌍 및 배열 데이터 유형(또는 기타 직렬화 가능한 값)으로 구성된 데이터 개체를 전송하는 개방형 표준 파일 형식입니다. 일부 AJAX 스타일 시스템에서 XML을 대체하는 것을 포함하여 비동기 브라우저-서버 통신에 사용되는 매우 일반적인 데이터 형식입니다.

    Arduino에 대한 Google 어시스턴트

    이 프로젝트에서는 Google Assistant에서 Arduino 직렬 포트로 문자열을 전송하여 I/O 핀, PWM, 직렬 포트 등과 같은 Arduino의 다른 부분을 제어하려고 합니다. 우선, Google 어시스턴트가 우리가 의미하는 바를 알아낼 수 있도록 몇 가지 특정 문구를 정의해야 합니다. 그런 다음 IFTTT 웹사이트에서 애플릿을 만들고 Google Assistant와 데이터베이스를 연결합니다. 그런 다음 ESP8266 모듈로 데이터베이스에서 데이터를 읽고 Arduino로 보냅니다. 시작하겠습니다!

    회로

    구현

    우선 구글 어시스트를 실행하기 위한 기기가 필요합니다. Assistant.google.com으로 이동하여 어시스턴트를 지원하는 모든 기기를 확인하세요. 이 프로젝트에서는 Android 전화 장치를 사용합니다. ifttt.com을 열고 계정을 만드십시오. 로그인 후 내 애플릿을 클릭한 다음 새 애플릿을 클릭합니다. 이제 애플릿에서 서비스를 THIS로 추가할 수 있습니다. 이것을 클릭하고 Google 어시스턴트를 검색하십시오. Google 지원 문구를 정의할 수 있는 4가지 선택 사항이 있습니다. 숫자 성분이 있는 문구를 선택하세요. 다음 페이지에서 문구를 추가할 수 있습니다. 예를 들어 "핀 9의 PWM을 255로 설정"이라고 말하고 싶습니다. 문구로 입력하고 "255"를 "#" 기호로 바꾸십시오. "PWM 9 to 255"와 같이 같은 의미의 문구를 더 추가할 수 있습니다. 이제 Google 어시스턴트가 명령을 이해하고 필요한 조치를 취했음을 알릴 수 있도록 응답을 추가합니다(예:"PWM 업데이트됨"). 완료되면 트리거 생성을 클릭합니다. 애플릿의 "THAT" 부분에는 "Webhooks"에 대한 양식 검색을 선택하고 선택하는 서비스가 많이 있습니다. "웹 요청 만들기"를 클릭하십시오. 데이터를 수신할 서버의 URL을 추가하십시오. POST에서 메소드를 설정하고 컨텐츠 유형에 대해 Application/json을 선택하십시오. 이제 컨텐츠 본문을 추가해야 합니다. 다음과 같은 것:{"숫자":"{ {NumberField}}”}. 이제 '액션 만들기'를 클릭하세요.

    서버 및 데이터베이스

    IFTTT에서 데이터를 가져와 데이터베이스에 저장하기 위해 서버에 대한 샘플 코드를 작성합니다. 데이터를 관심 분야로 저장하도록 모델을 변경할 수 있습니다. 여기에서 다운로드하십시오.

    ESP8266 및 Arduino 코드

    먼저 ESP-01용 코드를 작성하여 데이터베이스에서 데이터를 가져와 직렬 포트를 통해 Arduino로 보냅니다. 그런 다음 ESP-01에서 데이터를 가져오고 명령(예:PWM 변경)을 실행하기 위해 Arduino에 대한 또 다른 코드를 작성합니다. Arduino IDE를 사용하여 두 코드를 모두 컴파일하고 보드에 업로드할 수 있습니다.

    ArduinoJson 라이브러리를 사용하기 전에 라이브러리가 컴퓨터에 설치되어 있는지 확인해야 합니다. 빠른 확인을 위해 Arduino IDE의 라이브러리 관리자(스케치> 라이브러리 포함> 라이브러리 관리)로 이동하고 텍스트 상자에 "ArduinoJson"을 입력합니다. 즉, 모든 준비가 완료되었으며 다음 단계로 진행할 수 있습니다. 레이블이 보이지 않으면 상자/부분을 한 번 클릭하면 "설치" 버튼이 표시됩니다. 설치를 누르면 다음 단계를 위한 모든 설정이 완료됩니다.

    이제 이 코드를 ESP-01에 업로드하세요.

    #include "ESP8266WiFi.h#include "ESP8266HTTPClient.h#include "ArduinoJson.h"// WiFi 매개변수const char* ssid ="YOUR_SSID";const char* 암호 ="YOUR_PASSWORD"; 무효 설정 () { Serial.begin(115200); WiFi.begin(ssid, 비밀번호); 동안 (WiFi.status() !=WL_CONNECTED) { 지연(1000); Serial.println("연결 중..."); }}void loop() { // WiFi 상태 확인 if (WiFi.status() ==WL_CONNECTED) { HTTPClient http; // HTTPClient 클래스의 객체 http.begin("http://yourip/api/Home/GetAllApp"); 정수 http코드 =http.GET(); //반환 코드 확인 if (httpCode> 0) { // 요청 응답 받기 payload String payload =http.getString(); // TODO:Serial.println(페이로드) 구문 분석; } http.end(); //연결 종료 } // 지연 지연(3000);} 

    그리고 이것은 Arduino가 Google 어시스턴트로부터 명령을 받아 수행하는 코드입니다.

    문자열 입력 문자열 =""; // 들어오는 dataString을 담을 문자열 buff;bool stringComplete =false; // 문자열이 완전한지 여부bool id;int f,buf;char x;void setup() { // 직렬 초기화:Serial.begin(9600); // inputString을 위해 200바이트를 예약합니다. inputString.reserve(200);}void loop() { // 줄 바꿈이 도착하면 문자열을 인쇄합니다. if (stringComplete) { while (f <100) { if (inputString.substring( f) =="id") { 아이디 =true; 부서지다; } f++; } if (id ==true) { x =inputString.charAt(f + 4); } if (x =='4') { f =0; while (f <100) { if (inputString.substring(f) =="숫자") { f +=9; for (int i =0; i <3; i++) { if (inputString.charAt(f + i) =='"') i =3; else 버프 +=inputString.charAt(f + i); } buf =buff.toInt(); analogWrite(9, buf); break; } f++; } } // 문자열 지우기:inputString =""; stringComplete =false; }}void serialEvent() { while (Serial.available()) { // 새로운 바이트를 얻습니다:char inChar =(char)Serial.read(); // 그것을 inputString에 추가합니다:inputString +=inChar; // 들어오는 문자가 개행이면 메인 루프가 되도록 플래그를 설정합니다 // 그것에 대해 뭔가를 할 수 있습니다:if (inChar =='\n') { stringComplete =true; } }} 

    다음은 무엇입니까?

    원하는 대로 이 프로젝트를 개선할 수 있습니다. 다음은 몇 가지 제안 사항입니다.

    <울>
  • 출력 핀 제어와 같이 즐겨 사용하는 명령을 추가해 보세요. 릴레이 모듈을 사용하고 실내 조명을 제어할 수 있습니다.
  • Arduino에서 Google Assistant로 데이터를 보내보십시오.

  • 제조공정

    1. QR, RFID 및 온도 확인을 통한 출입 통제
    2. Arduino, 1Sheeld 및 Android를 사용한 범용 원격 제어
    3. Arduino로 코인 억셉터 제어
    4. Bluetooth가 탑재된 Arduino로 LED 제어!
    5. Arduino Nano:조이스틱으로 2개의 스테퍼 모터 제어
    6. Arduino 및 MPU6050으로 서보 모터 제어
    7. OK Google이 포함된 Bluetooth 음성 제어 기기
    8. U-blox LEA-6H 02 GPS 모듈(Arduino 및 Python 포함)
    9. Arduino를 사용한 음성 인식 및 합성
    10. ThimbleKrox - 손가락으로 마우스 제어