1. HC-06 모듈 

 

 HC-06모듈은 블루투스 2.0기반의  통신을 위해 가장 흔하게 사용되었던 통신모듈이다. WIFI 등 더 빠른 통신 방법도 있고 블루투스 4.0 BLE를 사용하면 저전력으로 통신을 할 수 도 있지만, HC-06 모듈은 가장 흔한 만큼 가격도 싸고 범용성이 있다는 장점 때문에 특별한 이유가 없다면 프로젝트 구성시 기본적으로 많니 사용하는 모듈이다.

 

 

2. HC-06 사양 

 

  • 동작전압 : 3.6~6V
  • 소모전류 : 40mA
  • 통신방식 : Serial (UART)
  • 제어방식 : AT-Command
  • 블루투스 사양 : Bluetooth V2.0 Protocol Standard
  • 파워 레벨 : Class2(+6dBm) - 통신 거리 10m
  • RF 대역 : 2.4GHz ~ 2.48GHz, ISM Band
  • 수신감도 : -80dBm

3. HC-06 핀배열 

 

 4개 또는 6개의 입출력핀이 배열되어 있는데 통상 VCC,GND,TXD,RXD 4개의 핀만을 주로 사용한다.

 

  -KEY(or EN) : HC-06 모드 선택핀
     . High : AT Command mode
     . LOW or NC : Normal mode
  -RXD : 3.3V 레벨 시리얼 수신 (Default 9600bps)
  -TXD : 3.3V 레벨 시리얼 송신 (Default 9600bps)
  -GND : 그라운드 연결
  -VCC : +3.3 ~ 6V 전원 연결
  -Status : 보드 상태 출력핀으로, 보통 상태 LED와 연결되어 있음

 

4. AT 모드명령어  

모듈의 이름을 지정하거나 통신속도 지정 등 블루투스 모듈에 관한 기본 정보의  세팅은 AT 모드에 진입해서 전용 AT모드 명령어로 할 수 있는데 대표적인 명령어는 다음과 같다. 

 

Sent Receive 참고
AT OK 통신 테스트
AT+BAUD1 OK1200 통신속도 변경(1200)
AT+BAUD2 OK2400 통신속도 변경(2400)
AT+BAUD3 OK4800 통신속도 변경(4800)
AT+BAUD4 OK9600 통신속도 변경(9600기본)
AT+BAUD5 OK19200 통신속도 변경(19200)
AT+BAUD6 OK38400 통신속도 변경(38400)
AT+BAUD7 OK57600 통신속도 변경(57600)
AT+BAUD8 OK115200 통신속도 변경(115200)
AT+NAMEname OKsetname name은 원하는 이름 변경

 

5. 샘플프로그램   

 

#include <SoftwareSerial.h>

SoftwareSerial hc06(2,3);

void setup(){
  //Initialize Serial Monitor
  Serial.begin(9600);
  Serial.println("ENTER AT Commands:");
  //Initialize Bluetooth Serial Port
  hc06.begin(9600);
}

void loop(){
  //Write data from HC06 to Serial Monitor
  if (hc06.available()){
    Serial.write(hc06.read());
  }
  
  //Write from Serial Monitor to HC06
  if (Serial.available()){
    hc06.write(Serial.read());
  }  
}

 

HC-06 모듈간은 블루투스 통신을 하지만 HC-06에 연결되어 있는 아두이노와는 시리얼통신을 하게 된다. 아두이노의 자체 시리얼포트는 프로그램 업로드 등 다른 목적으로 사용되므로 HC-06모듈과는 별도의 softwareSerial 방식을 사용한다. 

 프로세서

        │

         아두이노 

              │

                아두이노 마이크로 

 

사용법참조 : makernambo.com/146?category=765628

 

아두이노 프로 마이크로( Arduino Pro Micro) 사양 및 사용방법

1. 아두이노 마이크로(Micro) 아두이노 마이크로 (Arduino micro) 기종은 아두이노 레오나르도(Leonardo) 기종을 소형화한 모델로서 ATmega32u4라는 메인 칩을 사용하고 있다는 것이다. 기능상 가장 큰 차이

makernambo.com


1. 아두이노 마이크로 ( Arduino Micro ) 

아두이노사에서 아두이노 레오나르도(Leonardo) 기종을 소형화한 오리지널 아두이노 마이크로와 동일한 구조의 복제품으로 RESET 버튼이 있고 입출력 핀의 갯수가 많다.  

 

 

 

 

6.18US $ 31% OFF|pro Micro Development Board with header pro mini USB ATMEGA32U4 5V 16MHz for Arduino Mega2560|Integrated Circu

Smarter Shopping, Better Living! Aliexpress.com

www.aliexpress.com

 

2. 아두이노 프로 마이크로 ( Arduino Pro Micro ) 

아두이노 마이크로를 좀 더 간소화한 기종으로 RESET버튼이 없고 입출력 핀의 갯수가 적다.

 

 

 

 

 

4.34US $ 30% OFF|Pro Micro ATmega32U4 5V 16MHz Replace ATmega328 For Arduino Pro Mini With 2 Row Pin Header For Leonardo Mini Us

Smarter Shopping, Better Living! Aliexpress.com

www.aliexpress.com

 

 

3. 아두이노 레오나르도 ( Arduino Leonardo )

 

아두이노 마이크로의 원본 모델. 즉 아두이노 미이크로나 프로 마이크로는 이 레오나르도 기종을 소형화하고 간소화한 기종이다. 

 

 

 

 

12.5US $ |Keyestudio ATmega32U4 Leonardo R3 Board +1M Micro USB Cable For Arduino Leonardo DIY Project|development board|leona

Smarter Shopping, Better Living! Aliexpress.com

www.aliexpress.com

 

4. 초소형 BS Micro  

 

아두이노 마이크로를 초소형화하고 아예 USB 케이블없이도 바로 PC USB단자에 연결시켜 실행시킬 수 있는 기종도 있다. 즉 PC의 SUB단자에 꽂으면 아두이노 기능이 작동되어 USB 키보드 자동입력 등 일련의 작업이 실행될 수 있도록 프로그램할 수도 있다.  

  

s.click.aliexpress.com/e/_9wTW9z

 

6.03US $ 10% OFF|Mini BS Micro ATMEGA32U4 Module Board Compatible For Arduino Pro Micro|board module|board arduinoarduino pro mi

Smarter Shopping, Better Living! Aliexpress.com

www.aliexpress.com

 

 

5. BadUSB 

 

초소형 아두이노 마이크로에 SD카드 아답터까지 장착하여 저장공간까지 확보할 수 있는 기종이다.

이를 이용하면 PC USB에 꽂으면 자동으로 PC의 특정 영역을 자동으로 메모리카드에 복제하거나 TF메모리 카드의 프로그램 파일을 PC에 설치해 버리는 등 편리하지만 나쁜 용도로 악용될 수도 있는 기능을 개발할 수도 있다. 그래서 이 기종의 이름도 나쁜USB 이다.  

 

s.click.aliexpress.com/e/_ASOE5H

 

10.45US $ 5% OFF|CJMCU VIRTUAL KEYBOARD BADUSB USB TF MEMORY KEYBOARD ATMEGA32U4|Integrated Circuits| - AliExpress

Smarter Shopping, Better Living! Aliexpress.com

www.aliexpress.com

 

 

1. 심박센서 원리 

 

심박센서는 LED불빛을 손끝에 비추고 여기에서 반사되는 빛을 측정하는 방식이다. 심장이 박동되어 손끝에 피가 흐를 때에는 세포에 혈액세포에 빛이 흡수되므로 반사되어 측정되는 빛의 감도가 감소되고 이에 따라 저항값이 변동되므로 흐르는 전압도 변화되게 된다. 이 전압변화를 증폭시켜 펄스로 인식하고 심장의 박동으로 인식하는 것이다. 통상 저가의 심박센서는 녹색LED 하나를 사용하지만 여기에 적외선LED를 추가하고 적외선 반사량을 측정함으로써  혈중산소포화도 측정 용도로 사용하기도 한다. 

 

 

2. 심박센서의 구조 

 

심박센서는 전면에 LED전구와 수광센서가 나란히 배열되어 있으므로 이위에 손가락 끝을 올려놓고 측정하면 되고, 통상  3개의 단자가 있는데 전원공급용 +, - 단자와 신호수신을 S단자가 있는데 이 S단자에 출력되는 신호를 아두이노 등에서  아날로그 신호로 읽어 해성하면 된다. 

 

3. 심박센서 사용을 위한 Library설치 

 

아두이노 IDE에서 스케치 -> 라이브러리 포함하기-> 라이브러리관리 화면에서 Pulsesensor를 검색하여 설치하면 된다.  

 

  

4. 심박센서 작동 예제   

 

Pulsesensor 라이브러리를 설치하고 파일 -> 예제 메뉴를 보면 다음과 같이 pulsesensor 관련 예제들이 포함되어 있는것을 확인할 수 있다. 

 

 

예제 중 가장 간단한 GettingSstartedProject를 선택해서 실행시켜 본다. 

 

/*  PulseSensor™ Starter Project and Signal Tester
 *  The Best Way to Get Started  With, or See the Raw Signal of, your PulseSensor™ & Arduino.
 *
 *  Here is a link to the tutorial
 *  https://pulsesensor.com/pages/code-and-guide
 *
 *  WATCH ME (Tutorial Video):
 *  https://www.youtube.com/watch?v=82T_zBZQkOE
 *
 *
-------------------------------------------------------------
1) This shows a live human Heartbeat Pulse.
2) Live visualization in Arduino's Cool "Serial Plotter".
3) Blink an LED on each Heartbeat.
4) This is the direct Pulse Sensor's Signal.
5) A great first-step in troubleshooting your circuit and connections.
6) "Human-readable" code that is newbie friendly."

*/


//  Variables
int PulseSensorPurplePin = 0;        // Pulse Sensor PURPLE WIRE connected to ANALOG PIN 0
int LED13 = 13;   //  The on-board Arduion LED


int Signal;                // holds the incoming raw data. Signal value can range from 0-1024
int Threshold = 550;            // Determine which Signal to "count as a beat", and which to ingore.


// The SetUp Function:
void setup() {
  pinMode(LED13,OUTPUT);         // pin that will blink to your heartbeat!
   Serial.begin(9600);         // Set's up Serial Communication at certain speed.

}

// The Main Loop Function
void loop() {

  Signal = analogRead(PulseSensorPurplePin);  // Read the PulseSensor's value.
                                              // Assign this value to the "Signal" variable.

   Serial.println(Signal);                    // Send the Signal value to Serial Plotter.


   if(Signal > Threshold){                          // If the signal is above "550", then "turn-on" Arduino's on-Board LED.
     digitalWrite(LED13,HIGH);
   } else {
     digitalWrite(LED13,LOW);                //  Else, the sigal must be below "550", so "turn-off" this LED.
   }


delay(10);


}

예제프로그램을 실행시켜 보기 위해서는 +,-전원단자를 연결하고 S단자에서 나온 케이블을 아두이노 A0 (아날로그 단자 0번) 단자에 연결한다. 

 

프로그램을 LOAD하고 녹색LED 불빛이 보이는 쪽 위에 손가락을 대고 있으면 심박 작동에 따라 아두이노 내장LED가 깜박깜박하는 것을 확인할 수 있다. 

 

아두이노 IDE에서 툴 -> 시리얼 모니터를 선택해서 보면 다음과 같이 심장박동을  챠트형태로 확인할 수 있다. 

 

심장의 박동수는 위 파형의 피크값 사이의 시간 간격을 계산하여 1분에 볓번 발생되는지 산출한 숫자인데 예제 중 Getting_BPM_to_Monitor 프로그램을 실행시켜 표시해 볼 수 았다. 

 

 

5. 평균 심박수 

심박수는 운동 또는 긴장상태에서는 빨라지고 편안하게 안정된 상태에서는 느려진다. 남녀구분이나 나이에 따라서도 달라지는데 휴식기의 평균 심박수는 다음과 같다고 한다. 

 

  

+ Recent posts