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

1Sheld를 사용하는 Arduino 기반 Amazon Echo

구성품 및 소모품

아두이노 101
× 1
1쉴드
× 1
1쉴드
× 1
스틱 램프
× 1
RGB LED 스트립
× 1
릴레이 보드
× 1
애플 아이폰
× 1
브레드보드(일반)
× 1
USB-A-B 케이블
× 1
점퍼 와이어(일반)
× 30
범용 트랜지스터 NPN
× 3

필요한 도구 및 기계

드릴러
PVC 파이프

앱 및 온라인 서비스

Arduino IDE

이 프로젝트 정보

몇 달 전에 친구를 방문했는데 그가 소유한 Amazon Echo에 놀랐습니다.

음성 명령으로 음악을 재생하고, 집 조명을 제어하고, 뉴스와 날씨 상태, 심지어 날짜와 시간까지 알려줄 수 있습니다.

그 순간, 내 안의 제작자가 "내가 직접 만들면 되지!"라고 외쳤습니다.

그리고 그날 이후로 놀라운 1Sheeld를 찾을 때까지 arduino 기반 Amazon Echo를 만드는 데 도움이 될 수 있는 구성 요소를 찾기 시작했습니다.

1Sheeld는 스마트폰의 센서와 기능을 활용하여 Arduino 프로젝트에서 사용할 수 있는 Arduino용 플랫폼입니다.

기본적으로 이것은 Arduino 보드 상단에 위치하며 Bluetooth를 통해 이 Android 앱과 통신하여 이 앱과 스마트폰 간에 데이터를 전송하는 하드웨어 실드입니다.

1Sheeld 웹사이트에서 시작하기 튜토리얼을 확인하여 1Sheeld를 매우 원활하게 작동할 수 있을 때까지 단계별로 안내하고 훌륭한 Arduino 프로젝트를 위한 훌륭한 참고 자료가 될 것입니다.

나는 이 프로젝트에서 1Sheld의 40개 이상의 쉴드에서 5개의 쉴드를 사용했습니다.

첫 번째는 음성 인식 실드입니다. 내가 음성 명령으로 전체 시스템을 제어하는 ​​데 사용했던 그것은 단 한 줄의 코드로 활성화할 수 있는 매우 간단한 방패입니다:VoiceRecognition.start();

그런 다음 Music Player Shield를 사용했습니다. 이를 통해 스마트폰 뮤직 플레이어를 탭하고 매우 매끄럽게 재생하려는 트랙을 선택할 수 있습니다. 실제로 이 라인을 사용하여 뮤직 플레이어 실드를 재생하는 것은 매우 간단합니다. MusicPlayer.play();

내가 사용한 세 번째 방패는 프로젝트에서 가장 중요한 방패 중 하나입니다. Text to Speech Shield입니다. 프로젝트에 누군가가 당신의 말에 응답하는 인간형 상호 작용을 추가하면 시스템이 반응하도록 만드는 것이 너무 쉬웠습니다. TextToSpeech.say("time in cairo is");

TTS(텍스트 음성 변환) 방패를 활성화한 후 시계 방패를 활성화했습니다. 실시간으로 시계를 반환하고 시스템은 내가 요청한 시간에 응답할 수 있습니다. 놀랍습니다! 그렇죠 :) 그리고 이 함수를 사용하여 내 휴대전화의 현재 시간을 쉽게 얻을 수 있습니다:Clock.queryDateAndTime();

내가 마지막으로 사용한 방패는 인터넷 방패입니다. 제 생각에는 1Sheeld에서 가장 강력한 방패입니다. 저는 "openweathermap" 웹사이트에서 API를 호출할 수 있는 "openweathermap" 웹사이트의 API를 사용하여 제 고향의 현재 날씨 상태를 확인하는 데 그 방패를 사용했습니다. HttpRequest request1("/*API 주소 */");

1단계:구성 요소 수집

<울>
  • 아두이노 101 $30.99
  • 1Sheeld+ 보드 $54.94
  • 아이폰 $155.5
  • PVC 파이프 $2
  • LED 스트립 $5
  • 12V 전원 공급 장치 $7
  • 릴레이 보드 $3
  • 점퍼 및 전선 $3
  • NPN 트랜지스터 3개 $1
  • 2단계:

    소리가 나도록 파이프에 구멍을 뚫습니다.

    3단계:

    PVC 파이프를 검은색 스프레이로 칠하십시오.

    4단계:배선 작업

    <울>
  • LED 스트립을 트랜지스터와 전원 공급 장치에 연결
  • 램프를 릴레이 보드와 AC 단자에 연결
  • 아래 코드에서 언급한 대로 릴레이 보드와 LED 스트립을 Arduino 101 보드에 연결합니다.
  • PVC 파이프 내부에 iPhone으로 모든 것을 장착
  • 5단계:1Sheeld 라이브러리 설정

    Arduino의 IDE에서 모든 라이브러리를 관리할 수 있습니다. 스케치>> 라이브러리 포함>> 라이브러리 관리>> OneSheeld 입력>>을 클릭한 다음 설치를 클릭하면 됩니다. 또는 여기에서 라이브러리를 다운로드할 수 있습니다:http://1sheeld.com/downloads/ 그런 다음 Arduino IDE를 열고 메뉴 모음에서 스케치를 선택한 다음>> 라이브러리 포함>> .zip 파일 추가>> zip 파일을 선택합니다. 방금 다운로드했습니다.

    6단계:1Sheld 앱 설치

    웹사이트에서 1Sheeld 모바일 앱을 다운로드하거나 Apple Play 스토어 또는 Google Play 스토어를 방문하여 앱을 다운로드할 수 있습니다.

    7단계:방패에 액세스

    1Sheeld 시작하기 자습서를 따르고 끝에서 다음 방패를 선택합니다.

    <울>
  • 음성 인식
  • 텍스트 음성 변환
  • 시계
  • 인터넷
  • 음악 플레이어
  • 그런 다음 다중 방패 버튼을 누릅니다.

    <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

    코드

    <울>
  • Amazon 에코 코드
  • Amazon 에코 코드Arduino
    /* 선택 사항:라이브러리 컴파일된 크기를 줄이고 메모리 사용을 제한하려면 CUSTOM_SETTINGS 및 각 INCLUDE_가 정의하는 방패를 정의하여 스케치에 포함할 방패를 지정할 수 있습니다. */#define CUSTOM_SETTINGS#define INCLUDE_INTERNET_SHIELD#define INCLUDE_VOICE_RECOGNIZER_SHIELD#define INCLUDE_TEXT_TO_SPEECH_SHIELD#define INCLUDE_MUSIC_PLAYER_SHIELD#define INCLUDE_CLOCK_1 라이브러리 포함. */#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,5 및 6에서 3개의 트랜지스터를 정의합니다. */#define strip1 3#define strip2 6#define strip3 5/* 핀 13의 램프를 정의합니다. */int 램프 =13;/* 시간과 최소 단위를 저장할 변수를 정의합니다. */int hour, minute;/* 문장에서 원하는 문자열을 잡기 위해 2개의 charachter arrys를 만듭니다. */char b[4];char c[4];/* 문자열에 시간과 최소값을 저장할 변수를 정의합니다. */String strh, strm;/* 오전 또는 오후 요일 상태를 유지하는 변수를 정의합니다. */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();/* 출력할 LED 스트립과 램프를 설정합니다. */ 핀모드(strip1,OUTPUT); 핀모드(스트립2,출력); 핀모드(스트립3, 출력); 핀모드(램프, 출력); /* 요청에 대한 성공 콜백을 구독합니다. */ request1.setOnSuccess(&onSuccess1); /* json 값 응답을 구독합니다. */ request1.getResponse().setOnJsonResponse(&onJsonReply1);/* 음성 인식 시 "myfunction" 기능을 호출합니다. */ VoiceRecognition.setOnNewCommand(&myFunction);}void loop (){ /* 음성 감지를 활성 상태로 유지하기 위해 밀리 카운터를 사용하여 5초 동안 지연시킵니다. */ unsigned long currentMillis =millis(); if (currentMillis - previousMillis>=5000) { previousMillis =currentMillis; /* 휴대전화의 현재 시간을 가져옵니다. */ Clock.queryDateAndTime(); /* 음성 인식을 시작합니다. */ VoiceRecognition.start(); }/* 스마트폰 시간과 분을 변수에 저장합니다. */ 시간 =Clock.getHours(); 분 =Clock.getMinutes(); /* 오전인지 오후인지 시간 상태를 감지합니다. */ if (시> 12) { 시 -=12; 정오 ="PM"; } else { 정오 ="AM"; }/* 시와 분을 문자열로 저장합니다. */ strh =문자열(시간); strm =String(분);/* 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(요청1); /* 5초 동안 기다립니다. */ OneSheeld.delay(5000); 상태 =0; }/* Alexa를 호출한 후 시간을 요청했는지 확인합니다. */ if(!strcmp(clockCommand,VoiceRecognition.getLastCommand()) &&state ==1) { alexoff(); /* 1Sheeld는 텍스트 음성 변환을 사용하여 응답합니다. */ TextToSpeech.say("카이로의 시간은 입니다."); 지연(1300); TextToSpeech.say(b); 지연(600); TextToSpeech.say(c); 지연(800); TextToSpeech.say(정오); 지연(500); 상태 =0; }/* Alexa를 호출한 후 램프를 켜도록 요청했는지 확인합니다. */ if (!strcmp(lightonCommand, VoiceRecognition.getLastCommand()) &&state ==1) { alexoff(); 디지털 쓰기(램프, 높음); TextToSpeech.say("조명 켜짐"); 지연(6000); 상태 =0; }/* Alexa를 호출한 후 램프를 끄도록 요청했는지 확인합니다. */ else if (!strcmp(lightoffCommand, VoiceRecognition.getLastCommand()) &&state ==1) { alexoff(); 디지털 쓰기(램프,낮음); TextToSpeech.say("조명이 꺼졌습니다."); 지연(3000); 상태 =0; }}void onSuccess1(HttpResponse &response1){ /* 응답을 사용하여 필요한 값까지 Json 체인을 쿼리합니다. */ /* 즉, 응답에서 'weather' 배열의 첫 번째 객체에서 'main' 값을 가져옵니다. */ /* 응답이 JSON 형식인 경우. */ response1["날씨"][0]["주"].query();delay(200); }void onJsonReply1(JsonKeyChain &hell,char * output){ if(hell ==request1.getResponse()["weather"][0]["main"]) { TextToSpeech.say("오늘 카이로 날씨는" ); 지연(2000); /* 1Sheeld는 TTS(텍스트 음성 변환) 방패를 사용하여 응답합니다. */ TextToSpeech.say(출력); } }void alexon(){ /* 아마존 에코와 같은 순서로 스트립을 켭니다. */ digitalWrite(strip1, HIGH); 지연(200); 디지털 쓰기(스트립2,높음); 지연(200); 디지털 쓰기(스트립3,높음); } void alexoff(){ /* 스트립을 끕니다. */ digitalWrite(strip1,LOW); 디지털 쓰기(스트립2,낮음); 디지털 쓰기(strip3,LOW); }

    회로도


    제조공정

    1. Firebase를 사용하여 Arduino 간에 센서 데이터 보내기
    2. Arduino 디지털 주사위
    3. Arduino, 1Sheeld 및 Android를 사용한 범용 원격 제어
    4. Arduino 게임 컨트롤러
    5. arduino를 사용한 소나 및 IDE 처리 시 표시
    6. 픽셀 체이서 게임
    7. 볼트와 Arduino를 사용하여 LED 밝기 제어
    8. Arduino를 사용한 간단하고 스마트한 로봇 팔
    9. WalaBeer 탱크
    10. Arduino 및 RDA8057M을 사용하는 FM 라디오