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

Bluetooth / Android / Arduino를 통해 연결하기

구성품 및 소모품

Arduino UNO
× 1
LED(일반)
× 1

앱 및 온라인 서비스

Arduino IDE
MIT 앱 인벤터 2

이 프로젝트 정보

매우 우수한 무선 근거리(및 개인) 네트워크는 의심할 여지 없이 Bluetooth(BT)입니다. 오늘날 우리는 일상 생활에서 유명한 "블루 리틀 라이트"의 도움으로 상호 연결된 휴대폰, 스테레오, 카메라 등을 사용하는 것을 흔히 볼 수 있습니다.

일반적으로 IoT 및 자동화의 세계에서는 BT 기술을 사용하여 휴대폰을 통해 원격 제어를 찾는 것이 매우 일반적입니다. 이는 두 가지 기본 구성요소로 인해 발생하지만 매우 중요합니다.

<울>
  • 안드로이드 앱(예:MIT AppInventor2) 및
  • 용 단순 개발 플랫폼 <울>
  • 저렴한 BT 모듈(예:HC-06)
  • 이 튜토리얼에서는 로봇을 움직이거나 집의 램프를 켜는 등의 작업을 위해 모바일 장치를 통해 Arduino의 출력을 제어하는 ​​방법에 대한 몇 가지 아이디어를 개발할 것입니다.

    1단계:Bluetooth 모듈 및 Arduino

    시장에서 "마스터-슬레이브" BT 3.0 모듈을 HC-05로, "슬레이브" 모듈을 HC-06으로 찾는 것이 매우 일반적입니다. 보다 최근에는 BT 4.0 또는 BLE("Bluetooth Low Energy") 기술과 함께 작동하는 HC-08 및 HC-10이 등장했습니다. 불행히도 Apple은 BT 3.0에 대한 지원을 제공하지 않기 때문에 BLE 모듈은 iPhone에 연결할 수 있는 유일한 모듈입니다.

    여기에서 논의된 프로젝트를 위해 저는 매우 인기 있고 저렴한 HC-06을 사용할 것입니다. BT 모듈은 5V로 전원이 공급되므로 예를 들어 Arduino UNO에 쉽게 연결할 수 있습니다. 그의 송신(Tx) 및 수신(Rx) 핀은 ESP8266의 경우에서 볼 수 있듯이 전압 분배기가 필요 없이 UNO에 직접 연결할 수 있습니다. 일반적으로 HC-06은 핀 0과 1 Arduino("직렬 0")에 직접 연결해야 합니다.

    <울>
  • HC06-Tx - Arduino 핀 0(Rx)
  • <울>
  • HC06-Rx - Arduino 핀 1(Tx)
  • "Serial 0" 입력(UNO의 유일한 HW 직렬 포트)을 사용할 때 USB 포트도 사용하기 때문에 프로그램 로드 중에 HC-06이 물리적으로 핀 0과 1에 연결되지 않을 수 있음을 기억하는 것이 매우 중요합니다. 같은 직렬. 이 작은 문제를 해결하는 간단한 방법(프로젝트에서 많은 GPIO UNO를 사용하지 않는 경우)은 라이브러리 SoftwareSerial을 통해 "SW 직렬 포트"를 사용하는 것입니다. 여기서는 UNO의 핀 10과 11(각각 Tx, Rx)을 사용합니다.

    2단계:HC-06 테스트 및 구성

    다음 단계는 HC-O6을 테스트, 프로그래밍 및 초기화하기 위한 간단한 코드를 작성하는 것입니다. 시작하려면 라이브러리 소프트웨어 직렬을 포함하고 "BT" 변수를 새 직렬 포트로 설정합니다.

    #include SoftwareSerial BT(10, 11); // 수신, TXString 명령 =""; // 블루투스 devicevoid setup ()의 응답을 저장합니다.{ Serial.begin (9600); Serial.println("AT 명령어 입력"); BT.begin(9600); // HC-06 일반적으로 기본 전송 속도} 

    그런 다음 BT에서 오는 데이터를 단순히 기다리는 코드 본문이 나옵니다. 도착하면 데이터가 직렬 모니터에 기록됩니다. 마찬가지로 AT 명령은 직렬 모니터에서 HC-06 모듈로 보낼 수 있습니다.

    void loop (){ if (BT.available ()) // 가능한 경우 데이터를 수신합니다. { while (BT.available ()) // "계속 수신". { 지연 (10); // 안정화를 위한 지연 추가 char c =BT.read(); // 직렬 읽기 명령 수행 + =c; // 문자열을 빌드합니다. } Serial.println(명령); 명령 =""; // 반복 없음 } if (Serial.available ()) { delay (10); BT.write(Serial.read()); }} 

    프로그램이 로드되면 직렬 모니터를 사용하여 다음과 같은 몇 가지 기본 테스트를 수행합니다.

    <울>
  • "AT"를 보내면 모듈이 "OK"로 응답해야 합니다.
  • <울>
  • 펌웨어 버전 묻기:" T + VERSION", 모듈이 응답해야 합니다(예:"linvorV1.8").
  • <울>
  • HC-06을 사용하면 "The T + NAMEMJRoBot_BT_HC06"과 같이 모듈 이름을 정의할 수 있습니다. 그러나 다른 모듈과 달리 모듈에 설정된 이름이 무엇인지 알 수 없습니다. 이전 명령을 보낼 때 HC-06은 간단히 "OKsetname"이라고 응답합니다.
  • 일반적으로 HC-O6에는 비밀번호(또는 PIN):1234가 기본으로 제공됩니다. AT 명령을 사용하여 새 비밀번호를 설정할 수 있습니다.

    <울>
  • AT + PIN xxxx 여기서 'xxxx'는 4자리 숫자입니다.
  • HC-06 테스트용 Arduino 코드:

    F08H931IL8LGG7U.ino

    3단계:Android 기기

    확인! 모듈이 UNO에 연결되어 실행 중입니다. Android 기기를 소개할 시간입니다.

    Google 스토어에는 사용할 수 있는 앱이 많이 있습니다. MIT Application2 도구를 사용하여 내가 개발한 앱을 사용하고 Google 스토어에서 무료로 다운로드할 수 있습니다. MJRoBot BT Digital Analog Voice Control

    앱은 디지털 명령(버튼 또는 음성을 통해)과 아날로그 명령을 전송하여 서보와 같은 PWM 장치를 제어합니다(0에서 255 사이의 데이터 전송).

    <울>
  • 앱 다운로드
  • <울>
  • Android 기기 설정으로 이동하여 BT 모듈을 찾아 연결합니다(PIN 1234 또는 사용자가 정의한 기타 입력). 장치가 연결 데이터를 유지하므로 이 작업은 한 번만 수행해야 합니다.
  • <울>
  • 기기와 HC-06이 대화하면 앱을 실행합니다. 두 번째로 앱을 실행하면 BT 모듈이 자동으로 연결되어야 합니다.
  • <울>
  • 모듈 이름을 선택합니다(제 경우에는 끝에 HC-06이 있는 이름입니다).
  • 그러면 앱에 "CONNECTED"가 표시되어 HC-06과 "페어링"되었음을 알립니다. 이 시점에서 앱 버튼을 테스트하고 앱이 전송하는 데이터를 PC 직렬 모니터에서 확인하십시오. 예를 들어 4개의 장치에 대해 "ON" 및 "OFF" 버튼을 순차적으로 누르면 결과는 다음과 같습니다.

    dev1ondev1offdev2ondev2offdev3ondev3offdev4ondev4off 

    이제 BT 모듈과 대화하는 Android용 앱이 있으므로 유용한 것을 만들어 보겠습니다.

    4단계:Arduino 출력 제어.

    위와 같이 회로를 구성해 봅시다. 아이디어는 앱을 사용하여 LED를 켜고 끄고 강도를 제어하는 ​​것입니다.

    연결:

    <울>
  • 장치 1:"dev1on / dev1off" ==> LED 빨간색 ==> 핀 3 UNO
  • <울>
  • 장치 2:"dev2on / dev2off" ==> LED 노란색 ==> 핀 5 UNO
  • <울>
  • 장치 3:"dev3on / dev3off" ==> LED 녹색 ==> 핀 6 UNO
  • <울>
  • 장치 4:"dev4on / dev4off" ==> LED 파란색 ==> 핀 9 UNO
  • 즉, "Device 1" 버튼과 관련된 "ON"을 트리거하기 위해 "dev1on"이라는 문자 메시지가 Arduino로 전송됩니다. 이 메시지를 받으면 빨간색 LED가 켜져야 합니다.

    4개의 핀은 PWM을 생성할 수 있는 핀입니다(모든 UNO 디지털 핀이 PWM을 생성할 수 있는 것은 아닙니다. "~ ". 이것은 PWM을 통해 LED의 강도를 제어하기 위해 숫자 데이터를 보내기 위해 앱에서 "슬라이더"를 사용하는 데 중요합니다.

    <울>
  • Dev A0:"r / 0-255" ==> LED 빨간색 ==> 핀 3 UNO
  • <울>
  • Dev A1:"y / 0-255" ==> LED 노란색 ==> 핀 5 UNO
  • <울>
  • Dev A2:"g / 0-255" ==> LED 녹색 ==> 핀 6 UNO
  • <울>
  • Dev A3:"b / 0-255" ==> LED 파란색 ==> 핀 9 UNO
  • 슬라이더의 경우 PWM 데이터 값(0 ~ 255) 이전에 'slider' 명령이 오고 있음을 알리기 위해 문자가 Arduino에 전송됩니다.

    아래 비디오에서 위 프로그램 부분의 데모(버튼 및 슬라이더):

    전체 Arduino 코드 아래:

    FA44NBUIL8LGGAY.ino

    5단계:음성 명령으로 IoT 장치 제어

    IoT 장치 제어의 경우 음성이 요즘 트렌드입니다. Arduino / HC-06 / Android를 사용하여 이러한 유형의 제어를 얻는 것은 매우 간단합니다. Android 기기에는 이미 "factory"에서 이 기능이 있습니다. 내가 개발한 앱에는 Android가 명령을 "듣고" 텍스트 형식으로 보내도록 하는 버튼이 추가되었습니다. 아두이노로. 코드는 오는 문자열을 "읽는" 책임이 있습니다.

    내 코드에 몇 가지 예를 추가했습니다. 예를 들어 Arduino가 "TV 연결" 명령을 수신하면 녹색 LED(장치 3에 해당)가 켜집니다(LED 대신 TV를 연결하는 릴레이가 있을 수 있음).

    코드의 루프 부분에 있는 문자열을 사용자 언어로 된 명령으로 변경해야 합니다. 나는 포르투갈어를 모국어로 사용했고 영어와 억양이 다르기 때문에 Google에서 관리하기가 더 쉽습니다. 짧은 문장이나 단어만 사용해야 합니다. 중요한 것은 작성한 내용과 Google 음성 인식 앱이 반환하는 내용 간의 완벽한 일치입니다.

    여기에서 MIT AppInventor2에서 직접 실행할 수 있는 .aia 파일에 대한 링크를 찾을 수 있습니다. 아래 비디오에서 음성 제어의 작은 데모:

    6단계:결론

    글쎄요, 이 튜토리얼을 통해 BT / Android / Arduino를 사용하여 "사물"을 제어할 수 있는 엄청난 잠재력을 실현할 수 있다고 믿습니다. 항상 그렇듯이 이 프로젝트가 다른 사람들이 흥미진진한 전자 제품의 세계에서 길을 찾는 데 도움이 되기를 바랍니다. , 로봇 공학 및 IoT! 더 많은 프로젝트를 보려면 내 블로그 MJRoBot.org를 방문하세요.

    세계 남쪽에서 온 살루도스!

    다음 튜토리얼에서 만나요!

    감사합니다

    마르셀로

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

    코드

    <울>
  • 코드 스니펫 #1
  • 코드 스니펫 #2
  • 코드 스니펫 #3
  • 코드 스니펫 #1일반 텍스트
    #include SoftwareSerial BT(10, 11); // 수신, TXString 명령 =""; // 블루투스 devicevoid setup ()의 응답을 저장합니다.{ Serial.begin (9600); Serial.println("AT 명령어 입력"); BT.begin(9600); // HC-06 일반적으로 기본 전송 속도}
    코드 스니펫 #2일반 텍스트
    void loop (){ if (BT.available ()) // 가능한 경우 데이터를 수신합니다. { while (BT.available ()) // "계속 수신". { 지연 (10); // 안정화를 위한 지연 추가 char c =BT.read(); // 직렬 읽기 명령 수행 + =c; // 문자열을 빌드합니다. } Serial.println(명령); 명령 =""; // 반복 없음 } if (Serial.available ()) { delay (10); BT.write(Serial.read()); }}
    코드 스니펫 #3일반 텍스트
    dev1ondev1offdev2ondev2offdev3ondev3offdev4ondev4off

    제조공정

    1. Bluetooth를 통해 제어되는 Raspberry Pi Robot
    2. Arduino를 통한 Atmel AT89 시리즈 프로그래밍
    3. Arduino, 1Sheeld 및 Android를 사용한 범용 원격 제어
    4. Raspberry Motor Shield를 사용한 Android 제어 장난감
    5. Bluetooth가 탑재된 Arduino로 LED 제어!
    6. OK Google이 포함된 Bluetooth 음성 제어 기기
    7. Arduino - 직렬을 통해 웹에 온도 보내기
    8. Intel Curie를 통한 동작 감지 회로 제어
    9. iOS 및 Android에서 Arduino의 깜박이는 LED
    10. Arduino Uno + 전기 장치(전구) + Android 전화