본문 바로가기
2022-2/마이크로프로세서

9. Various Modules

by 철없는민물장어 2022. 11. 18.
728x90
반응형
  • Buzzer
  • Temperature and humidity sensor
  • Real-time clock module
  • RFID
  • Ultrasonic distance sensor

Buzzer

전기적 신호로 진동판을 진동시켜 소리를 출력하는 부품이다.

마그네틱 부저, 피에조 부저, 메커니컬 부저 등이 있다.

메커니컬 부저는 내부에 있는 판이 진동하는 원리인데, 큰 소리를 내는 데 적합하다.

피에조 부저는 주파수에 따라 소리의 높낮이를 조절할 수 있다.

 

핀 두개만 연결하여 간단하게 사용가능하다.

 

pinMode(pin number,mode);

tone(pin number,frequency,time);

핀모드로 output설정을 해주고,

tone함수로 소리를 낼 수 있다.

frequency는 50%의 duty ratio를 갖는다

time은 지속시간인데, 밀리세컨드 단위이다.

더보기
int buzzerPin=9;
int songLength=16;

char notes[]="cee egg dff abb"; //악보
int beats[]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};//박자
int tempo=200; //노래의 빠르기

void setup()
{
	pinMode(buzzerPin,OUTPUT);//부저핀 출력설정
}

void loop()
{
	int duration; //부저출력시간에 사용할 변수
    
    for(int i=0;i<songLength;i++)
    {
    	duration=beats[i]*tempo;
        if(notes[i]==' ')
        	delay(duration);
        else
        {
        	tone(buzzerPin,frequency(notes[i]),duration);//frequency()는 사용자정의함수
            delay(duration);
        }
        delay(10);
    }
}

int frequency(char note)
{
	int i;
    int notes=8;
    
    char names[]={'c','d','e','f','g','a','b','C'};
    int frequencies[]={262,294,330,349,392,440,494,523};
    
    for(i=0;i<notes;i++)
    {
    	if(names[i]==note)
        	return frequencies[i];
    }
    return(0);
}

Temperature-humiidity sensor DHT11

DHT11모델이다.

습도는 20~90% 측정가능하며 온도는 0~50도 까지 측정가능하다.

(아날로그 온도측정장비보다 범위가 작다는 단점이 있다)

습도는 +-5, 온도는 +-2 의 오차범위가 있고

출력값이 디지털이다.

 

DHT11을 단독으로 사용하거나 모듈을 함께 사용할 수 있는데,

모듈 사용 시 추가적인 저항을 연결하지 않아도 되고 핀 개수도 (원래는 4개인데 모듈사용시 3개)적다는 장점이 있다.

 

DHT sensor 라이브러리를 설치해야한다.

DHT SensorName(sensor pin, sensor type);
SensorName.begin();
SensorName.readTemperature();
SensorName.readHumidity();

이런 메소드가 있다.

 

더보기
#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT11

DHT dht(DHTPIN,DHTTYPE);

void setup()
{
	Serial.begin(9600);
    dht.begin();//센서시작
}

void loop()
{
	unsigned char t=dht.readTemperature();
    unsigned char h=dht.readHumidity();
    
    Serial.print("Temperature is");
    Serial.print(t);
    
    Serial.print("Humidity is");
    Serial.print(h);
    
    delay(2000);
}

Real-time clock module

현재시각을 기억하는 장치이다.

OTP카드 등에 사용된다.

별도의 전원이 있어서, 아두이노가 꺼져있어도 시간을 계산한다.

 

I2C통신을 한다.

 

DS1302 rtc(CEPin,IOPin,CLKPin);
rtc.time(); //현재시각 읽기
더보기
#include <DS1302.h>
const int CEPin=5;
const int IOPin=6;
const int CLKPin=7;
DS1302 rtc(CEPin,IOPin,CLKPin);

void setup()
{
	Serial.begin(9600);
    rtc.writeProtect(false); //rtc에 쓰기방지
    rtc.halt(false);//시간멈춤 방지
    Time t(2015,8,15,00,00,00,Time::kSaturday);
    rtc.time(t); //현재 시간을 DS1302에 입력
}

//day데이터를 string으로 반환하는 함수
String dayAsString(const Time::Day day)
{
	switch(day){
    	case Time::kSunday: return "Sunday";
    	case Time::kMonday: return "Monday";
    	case Time::kTuesday: return "Tuesday";
    	case Time::kWednessday: return "Wednessday";
    	case Time::kThursday: return "Thursday";
    	case Time::kFriday: return "Friday";
    	case Time::kSaturday: return "Saturday";
        }
    return "몰라";
}

void loop()
{
	Time t=rtc.time(); //현재시간 읽기
    const String day=dayAsString(t.day);
    
    Serial.print(day.c_str());
    Serial.print(t.yr);
    Serial.print(t.mon);
    Serial.print(t.date);
    Serial.print(t.hr);
    Serial.print(t.min);
    Serial.print(t.sec);
    delay(1000);
}

RFID

전파를 이용해 원거리의 정보를 인식하는 기술.

모듈과 태그로 나눌 수 있다.

SPI 방식을 사용하고, 라이브러리가 필요하다.

MFRC522 mfrc522(SS_PIN,RST_PIN);

mfrc522.PICC_IsNewCardPresent(); //태그 접촉됐나요
mfrc522.PICC_ReadCardSerial();//내용읽기

Ultrasonic distance sensor

초음파 센서. 거리를 잴 수 있다.

외부 환경에 강한 특징을 갖고 있고, 물체의 색깔에 상관없이 사용할 수 있으며, 투명한 물체도 감지 가능하며 물이나 먼지 등이 있더라도 감지할 수 있는 장점이 있음.

외부에 초음파 발신부가 노출되어야 함.

 

아두이노가 측정을 시작하라는 trigger신호를 주면, 모듈이 8번의 초음파를 발사하고, 반사되어 돌아오는 신호를 받는다.

물체와의 거리가 L이라면

왔다갔다 하는 거리가 2L이므로

 

      에코펄스폭*340m/s 

L=  --------------------------

                   2

 

대략 이런 계산이 가능하다

 

 

728x90
반응형

'2022-2 > 마이크로프로세서' 카테고리의 다른 글

10. Microprocessor  (0) 2022.11.21
8. Infrared Remote Control  (0) 2022.11.14
7. Motor Drive  (0) 2022.11.07
6. Analog Input  (1) 2022.11.01
5. Digital Signal Input  (0) 2022.10.23

댓글