카테고리 보관물: Arduino

JY-MCU Bluetooth Module

Overview

Jy-mcu f.jpg Jy-mcu b.jpg

<출처 : http://reprap.org/wiki/Jy-mcu>

블루투스를 이용해서 arduino와 스마트폰을 연결할때 사용하는 모듈이다. Serial 연결을 사용해서 arduino와 연결 가능하다. eBay에서 저렴하게 구입 가능하다 (대략 $4)

Setup

AT명령어를 사용해서 name, pin, baud rate 등을 설정 가능한데, arduino를 가지고 있다면 아래 프로그램을 사용해서 간단하게 설정할 수 있다.

http://forum.arduino.cc/index.php?topic=122070.0

Arduino Leonardo를 사용해서 연결할 경우 VCC — 5V, GND — GND, RX — PIN1, TX — PIN0 로 연결하고 아래 코드에서 설정을 수정한 다음 실행하면 된다. (알아서 baud rate를 찾아서 설정해준다. Software Serial 연결을 사용하지 않은 이유는 Software Serial의 경우 9600bps을 넘으면 잘 동작하지 않는다고 한다)


// NAME maximum of 20 characters
char NAME[21] = "MOTOPANEL";

// 4 digit numeric pin
char PIN[5] = "1234";
/*
 character code for BAUD
 1 for 1200 bps 
 2 2400 bps
 3 4800 bps 
 4 9600 bps 
 5 19200 bps 
 6 38400 bps 
 7 57600 bps 
 8 115200 bps 
 9 230400 bps 
 A 460800 bps 
 B 921600 bps 
 C 1382400 bps
 */
char BAUD='7';

Test

블루투스 모듈과 arduino를 VCC — 5V, GND — GND, RX — PIN11, TX — PIN10 으로 연결한다


#include <SoftwareSerial.h>;

SoftwareSerial mySerial(10, 11); // RX, TX

void setup()
{
    // Open serial communications and wait for port to open:
    Serial.begin(9600);
    while (!Serial) {
        ; // wait for serial port to connect. Needed for Leonardo only
    }
    Serial.println("Start");

    // set the data rate for the SoftwareSerial port
    mySerial.begin(9600);
}

void loop() // run over and over
{
    if (mySerial.available())
        Serial.write(mySerial.read());
    if (Serial.available())
        mySerial.write(Serial.read());
}

아래 코드를 arduino에 업로드해 실행하고 시리얼 모니터에서 AT라고 입력하면 OK가 출력된다.

스크린샷 2015-10-24 오전 11.33.09

PC에서 블루투스 연결을 해서 테스트도 가능하다.

Window일 경우, http://embeddedprogrammer.blogspot.kr/2012/07/windows-communicating-with-hc-06.html

Mac OS일경우,

먼저 페어링을 해준다.

스크린샷 2015-10-24 오전 11.37.09

장치명 확인

$ ls /dev/tty.*
/dev/tty.Bluetooth-Incoming-Port /dev/tty.HC-06_BT-DevB
/dev/tty.Bluetooth-Modem /dev/tty.usbmodem1411

screen 실행

$ screen /dev/tty.HC-06_BT-DevB

screen에서 키보드를 입력한 내용을 아두이노의 시리얼 모니터로 확인 할 수 있다

스크린샷 2015-10-24 오전 11.49.26

참고

http://mcuoneclipse.com/2013/06/19/using-the-hc-06-bluetooth-module/

http://byron76.blogspot.ch/2011/09/hc05-firmware.html

DHT11 온도 습도 센서

Datasheet – http://www.micropik.com/PDF/dht11.pdf

Arduino lib – http://playground.arduino.cc/main/DHT11Lib

Git hub – https://github.com/RobTillaart/Arduino/tree/master/libraries/DHTlib

스크린샷 2015-01-21 오후 11.52.55 DHT11_Pins

Git hub의 소스를 libraries에 복사하고 dht11_test 예제를 실행하면 된다.

2번핀은 아두이노의 5번핀에 연결한다.

스크린샷 2015-01-21 오후 11.55.55

앞에 나오는 값이 습도(37%) 뒤에 나오는 값이 온도다(20.0도)

 

라즈베리 파이에서 사용할 경우

https://learn.adafruit.com/dht-humidity-sensing-on-raspberry-pi-with-gdocs-logging/overview

Arduino 저렴하게 만들기

아두이노는 USB 케이블만 있으면 개발할 수 있기 때문에 매우 편리하지만 실제 H/W로 사용하기에는 가격이 부담이 된다. (UNO $24.90)  저렴하게 만들 수 있는 방법이 있었다.

https://hwstartup.wordpress.com/2013/03/06/how-to-build-a-5-arduino-clone/
http://aeturnalus.com/robotics/poor-mans-breadboard-arduino/

http://www.ebay.com 에서 견적을 내봤다.

  • ATmega328 (UNO bootloader) — $1.82
  • FT232RL FTDI Serial Adapter — $3.19
  • 16MHz Resonator, 10k Ω Resister, 100uF Capacitor  — less $1
  • Mini Breadboad — $2.58

프로그래밍에 사용되는 FTDI 모듈은 한 개만 있으면 되기 때문에 대략 $5(5500원)으로 제작 가능하다.

그런데 요즘은 $3.64면 중국산 clone 제품을 살 수 있다 ㅠㅠ

스크린샷 2015-10-18 오후 8.00.15

만드는 방법은 아래 링크를 참고했다

http://www.instructables.com/id/How-To-Make-The-Easiest-Breadboard-Arduino-UnoE/

 

주의사항

  1. Atmega328P 구입시에 분명 arduino bootloader라도 표시되어 있었는데 Sketch 업로드시에 계속 에러가 났다. 아무래도 기본 상태였던 것으로 보인다. 이런 상황을 대비해서 bootloader를 프로그래밍할 수 있는 AVR ISP 장치가 필요하다. (AVRISP mkII, USBtinyISP 등) ATmegaBOOT_168_atmega328.hex를  다운 받으면 된다.
  2. Sketch 업로드시에 적절한 타이밍에 Reset을 해줘야하는데,  여기에 나오는 방법으로는 잘 되지 않았다. 수동으로  Sketch 업로드 버튼을 누르면서 arduino의 reset 버튼을 눌러줘야 했다.(아래 에러 메세지 참고)
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00
  3. Arduino에서 프로그램 다운로드시 보드는 “Arduino Duemilanove or Diecimila”를 선택해야지 2번 방법 리셋이 잘된다.
  4. 결론은 그냥 중국산 Clone을 사서 쓰자