Sensor Kit (41) for Arduino Anyone can easily 퍼스트봇 ( V1.0 )
총 41 개로구성된 Sensor Kit 는초보자들이쉽게납땜이필요없이케이블을이용 하여 Arduino 와구성하여 Sensor 를쉽게동작하고응용할수있게구성하였습니다. 각 Sensor 의기본동작을파악한후응용을통해본인이원하는프로젝트를계획하고 실행할수있습니다. - 목차 - 1. 조이스틱모듈 ( Dual-axis XY Joystick Module ) joystick (KY-023) 2. 5V 릴레이모듈 ( Relay Module ) relay (KY-019) 3. 고감도사운드감지센서 ( High Sensitivity Sound Sensor ) - Big sound (KY-037) 4. 마이크로폰사운드감지센서 ( Microphone Voice Sound Sensor ) - Small sound (KY-038) 5. 적외선라인트랙킹센서 ( IR Line Tracking Sensor ) Tracking (KY-033) 6. 적외선장애물감지센서 (IR Obstacle Avoidance Sensor ) Avoid (KY-032) 7. 화염감지센서 ( Flame Fire Detection Sensor ) Flame (KY-026) 8. 리니어홀자기센서 ( linear hall magnetic Sensor ) - Linear Hall (KY-024) 9. 금속터치센서 ( Metal Touch Sensor ) Touch (KY-036) 10. 디지털온도센서 ( Digital temperature Sensor ) - Digital temp (KY-028) 11. 피에조부저모듈 ( Piezo buzzer ) buzzer (KY-012) 12. 수동부저모듈 ( Passive buzzer ) - passive buzzer (KY-006) 13. RGB 3 컬러 LED 모듈 ( RGB 3 Color LED Module ) - RGB LED (KY-016) 14. SMD RGB 3 컬러 LED 모듈 ( SMD RGB 3 Color LED Module ) - SMD RGB (KY-009) 15. 2 컬러 3mm LED 모듈 ( Dual Color LED Module 3mm ) - Two-color LED (KY-029) 16. 2 컬러 5mm LED 모듈 ( Dual Color LED Module 5mm ) Two-color (KY-011) 17. 마그네틱리드스위치센서 ( Magnetic Reed switch Sensor ) Reed switch (KY-025) 18. 마그네틱미니리드스위치센서 (Magentic Mini Reed switch Sensor) mini Reed (KY-021) 2 페이지
19. 손가락심박센서 ( Finger heartbeat measurement Sensor ) Heartbrat (KY-039) 20. 7 Color 플래시 LED 모듈 ( 7 Color Colour Flashing LED Module ) 7 color flash (KY-034) 21. 레이저발광모듈 ( Laser transmitter Module ) Laser emit (KY-008) 22. 리셋버튼모듈 ( Key switch Module ) Button (KY-004) 23. 진동감지센서 ( Vibration detection Sensor ) Shock (KY-002) 24. 로터리인코더모듈 (Rotary encoder Module) Rotary encoders (KY-040) 25. 매직라이트컵센서 ( magic light cup Sensor ) Light Cup (KY-027) 26. 수은기울기스위칭센서 ( Mercury open optical Sensor ) Tilt switch (KY-017) 27. 기울기센서 ( Tilt switch Sensor ) Ball switch (KY-020) 28. 조도센서 ( Photoresistor Sensor ) Photoresistor (KY-018) 29. 디지털온습도센서 ( DHT11 Temp and Humidity Sensor ) Temp and humldlty (KY-015) 30. 아날로그홀자기센서 ( Analog Hall Effect Magnetic Sensor ) Analog Hall (KY-035) 31. 홀자기센서 ( Hall Magnetic Sensor ) Hall magnetic (KY-003) 32. 디지털온도센서 ( Digital temperature Sensor DS18B20 ) TEMP (KY-001) 33. 아날로그온도센서 ( Analog temperature Sensor ) Analog temp (KY-013) 34. 적외선방출 ( 송신 ) 센서 ( IR emission Sensor ) IR emission (KY-005) 35. 적외선수신센서 ( IR Receiver Sensor ) IR receiver (KY-022) 36. 노크센서 ( Knock Sensor ) Tap module (KY-031) 37. 적외선포토인터럽터센서 ( IR Photo Interrupter Sensor ) light blocking (KY-010) ---------------------------------- 기본 37 종 Kit 에서아래 4 종추가 ---------------------------------- 38. HC-SR04 초음파센서 ( HC-SR04 Ultrasonic Sensor ) 39. L293D 모터드라이버 ( L293D Motor Driver ) 40. DC 모터 ( DC Motor ) 41. 74HC595N 쉬프트레지스터 ( 74HC595N Shift Resister ) 3 페이지
1. 조이스틱모듈 ( Dual-axis XY Joystick Module ) - (KY-023) 각종제어에많이쓰이는조이스틱은 X, Y 축의움직임을 2 개의 Analog 신호로만들어주고 Z 축 (KEY) 으로누르면버튼처럼동작해서 1 개의 Digital 신호로만들어준다. Analog 출력방식으로아두이노에연결하여로보트나모터등의제어를쉽게할수있다. < 아두이노연결구성 > Joystic Module GND VCC X Y KEY(SW) Arduino UNO GND 5V A0 A1 D2 4 페이지
< Joystic Module 동작스캐치예제 > int Xin= A0; // X Input Pin int Yin = A1; // Y Input Pin int KEYin = 2; // Push Button void setup () pinmode (KEYin, INPUT); Serial.begin (9600); void loop () int xval, yval, buttonval; xval = analogread (Xin); // X 축 yval = analogread (Yin); // Y 축 buttonval = digitalread (KEYin); // Z 축 (KEY) Serial.print("X = "); Serial.println (xval, DEC); Serial.print ("Y = "); Serial.println (yval, DEC); Serial.print("Button is "); if (buttonval == HIGH) Serial.println ("not pressed"); // Z 축을누르지않았을때 else Serial.println ("PRESSED"); // Z 축을눌렀을때 delay (500); 5 페이지
2. 5V 릴레이모듈 ( Relay Module ) - (KY-019) 릴레이는코일이전자석으로되었을때철판을끌어당겨, 그철판에붙어있는스위치부의접점을 열거나닫는다. 쉽게말해릴레이는자동으로컨트롤이가능한스위치의일종으로작은전압으로 큰전압을컨트롤하기위한부품이다. 신호 ( 제어부의전원 ) 를받으면릴레이가작동되어접점이바뀐다. 신호가끊어지면릴레이가작동되지않아다시원래의접점으로돌아온다. 릴레이가작동할때전류는순간적으로끌어가므로다른모듈들의전류부족을조심해야한다. < 아두이노연결구성 > 6 페이지
5V Relay Module GND VCC Signal < 5V Relay Module 동작스캐치예제 > int Relay = 8; void setup() pinmode(relay, OUTPUT); void loop() digitalwrite(relay, HIGH); // relay Switch ON delay(5000); digitalwrite(relay, LOW); // relay Switch OFF delay(5000); Arduino UNO GND 5V D8 7 페이지
3. 고감도사운드감지센서 ( High Sensitivity Sound Sensor ) - (KY-037) Analog 와 Digital 값을사용하여소리의세기및유무를인식할수있다. 파란색부품윗면의 - 나사를시계반대방향으로돌리면감도가증가, 시계방향으로돌리면 감도가감소한다. < 아두이노연결구성 > High Sensitivity Sound Microphone Sensor A0 G Arduino UNO A0 GND + 5V D0 D12 8 페이지
< High Sensitivity Sound Microphone Sensor 동작스캐치예제 > int SPin = 0; // Sensor A0 int ledpin = 12; void setup() pinmode(ledpin,output); Serial.begin(9600); void loop() int value = analogread(spin); // Sensor Read int intensity = map(value,20,300,0,255); // 최소값 20, 최대값 300 설정 analogwrite(ledpin, intensity); delay(10); Serial.println(value); delay(100); 9 페이지
4. 마이크로폰사운드감지센서 ( Microphone Voice Sound Sensor ) - (KY-038) Analog 와 Digital 값을사용하여소리의세기및유무를인식할수있다. 파란색부품윗면의 - 나사를시계반대방향으로돌리면감도가증가, 시계방향으로돌리면 감도가감소한다. < 아두이노연결구성 > Microphone Voice Sound Sensor A0 G Arduino UNO A0 GND + 5V D0-10 페이지
< Microphone Voice Sound Sensor 동작스캐치예제 > int led = 13; int threshold = 50; // 감도조절값 ( 변경가능 ) int volume; void setup() Serial.begin(9600); pinmode(led, OUTPUT); void loop() volume = analogread(a0); Serial.println(volume); delay(100); if(volume>=threshold) // 소리가 threashold(50) 와같거나크면 LED ON digitalwrite(led, HIGH); else digitalwrite(led, LOW); 11 페이지
5. 적외선라인트랙킹센서 ( IR Line Tracking Sensor ) - (KY-033) 트랙킹센서는적외선을이용하여장애물을감지하거나검은색 / 흰색선을구별하여 장애물을회피하거나 Line 을따라가는자동차등을제작, 활용할수있다. < 트랙킹센서 3 개를이용한 Line 을따라가는자동차 > < 아두이노연결구성 > 12 페이지
< IR Line Tracking Sensor 동작스캐치예제 > int TR = 2; void setup() Serial.begin(9600); IR Line Tracking Sensor S Arduino UNO D2 V+ 5V G Serial.println("tracking Sensor"); pinmode(tr, INPUT); void loop() if (LOW == digitalread(tr)) Serial.println("Detect!!"); // 감지함 else Serial.println("NOT Detect!!"); // 감지못함 delay(100); GND 13 페이지
6. 적외선장애물감지센서 ( IR Obstacle Avoidance Sensor ) - (KY-032) 적외선이장애물에의해반사가되면 Obstacle LED 가작동을한다. IR LED 를통해방출된 빛이장애물에의해반사되면이를 Photodiode 를통해다시읽는다. < 아두이노연결구성 > 14 페이지
< IR Obstacle Avoidance Sensor 동작스캐치예제 > int Led=13; int buttonpin=3; int val; void setup() IR Obstacle Avoidance Sensor pinmode(led,output); GND Arduino UNO GND + 5V OUT EN pinmode(buttonpin,input); void loop() val=digitalread(buttonpin); if(val==high) digitalwrite(led,high); // 감지했을때 LED ON else digitalwrite(led,low); // 감지못할때 LED OFF D3 연결안함 15 페이지
7. 화염감지센서 ( Flame Fire Detection Sensor ) - (KY-026) 적외선 LED 를통해불꽃에서감지되는적외선파장을감지하여이를아날로그혹은디지털신 호로변환해주는구조이다. 기본적으로빛을받으면전기에너지로변환시켜증폭하는작용을 하며빛을많이받을수록생성되는전기에너지가커진다. 불꽃도결국은빛이므로이를감지하여화재여부를감지하는센서로사용이된다. < 아두이노연결구성 > Flame Fire Detection Sensor A0 GND Arduino UNO A0 GND + 5V D0 D2 16 페이지
< Flame Fire Detection Sensor 동작스캐치예제 > int Led=13; int OutputDO=2; int OutputAO=A0; int val; float sensor; void setup () pinmode (Led, OUTPUT) ; pinmode (OutputDO, INPUT) ; pinmode (OutputAO, INPUT) ; Serial.begin(9600); void loop () sensor = analogread(outputao); Serial.println(sensor); val = digitalread (OutputDO) ; if (val == HIGH) // 불꽃신호감지시 digitalwrite (Led, HIGH); // LED ON else digitalwrite (Led, LOW); // LED OFF delay(1000); 17 페이지
8. 리니어홀자기센서 ( linear hall magnetic Sensor ) - (KY-024) 리니어홀자기센서는자석과같은자성에반응하는센서이다. 자성이없을경우, N 극과 S 극에따라홀센서방향과위치, 자석의방향과위치에따라값이변한다. < 아두이노연결구성 > linear hall magnetic Sensor A0 GND Arduino UNO A0 GND + 5V 18 페이지
< linear hall magnetic Sensor 동작스캐치예제 > int S = A0; void setup() Serial.begin(9600); Serial.println("Linear Hall Sensor"); pinmode(s, INPUT); void loop() Serial.print("S="); Serial.println(analogRead(S), DEC); // 반응할때의값출력 delay(100); 19 페이지
9. 금속터치센서 ( Metal Touch Sensor ) - (KY-036) 인체나자성과금속성을가진물체가접촉되면반응을감지해신호를출력한다. < 아두이노연결구성 > Metal Touch Sensor A0 GND Arduino UNO A0 GND + 5V D0 D2 20 페이지
< Metal Touch Sensor 동작스캐치예제 > const int S = 2; const int ledpin = 13; int sensorstate = 0; void setup() pinmode(ledpin, OUTPUT); pinmode(s, INPUT); void loop() sensorstate = digitalread(s); if (sensorstate == HIGH) digitalwrite(ledpin, HIGH); // 감지시 LED ON else digitalwrite(ledpin, LOW); // 미감지시 LED OFF 21 페이지
10. 디지털온도센서 ( Digital temperature Sensor ) - (KY-028) 센서주위환경의온도를측정, 확인할수있다. 온도계제작등의프로젝트로활용할수있다. < 아두이노연결구성 > Digital temperature Sensor A0 GND Arduino UNO A0 GND + 5V D0-22 페이지
< Digital temperature Sensor 동작스캐치예제 > int temp = A0; void setup() Serial.begin(115200); pinmode(temp, INPUT); int adcvalue = 0; void loop() adcvalue = analogread(temp); Serial.print("Temp="); Serial.print(adcvalue, DEC); adcvalue = GetTemper(adcvalue); Serial.print(", T="); Serial.print(adcvalue / 10, DEC); Serial.print("."); Serial.println(adcvalue % 10, DEC); delay(100); int GetTemper(int v) // 29.0 도일때 adc 값 172 // 34.1 도일때 adc 값 160 return ( v-172 )* ((341-290) / (160-172)) + 290; 23 페이지
11. 피에조부저모듈 ( Piezo buzzer Module ) - (KY-012) 피에조부저는피에조효과를이용한소자인데피에조효과란수정, 세라믹과같은일부 물질의경우전기적신호를주면물질이응축, 신장을하는효과를말한다. 여기에판을붙여주면소리가나는데이것이피에조부저이다. 내부에회로가있어전원을 연결하면스스로소리를낸다. 피에조부저는케이스와판의크기를조절해서특정한 주파수에서공진이발생해서큰소리가나도록기구적으로만든다. Active 부저와같은말로사용된다. < 아두이노연결구성 > Piezo buzzer Module S Arduino UNO D12 + 5V - GND 24 페이지
< Piezo buzzer Module 동작스캐치예제 > /* Piezo buzzer 를테스트할때간혹 buzzer 의 +, - 가바뀌어있는경우가 있다. 소리가나지않거나할때 +,- 를바꿔본다 */ int speakerpin = 12; int note[] = 2093,2349,2637,2793,3136,3520,3951,4186; // 도레미파솔라시도값배열생성 void setup() int elementcount = sizeof(note) / sizeof(int); for (int i=0; i < elementcount; i++) // 소리 ( 배열값 ) play tone(speakerpin,note[i],500); delay(750); void loop() 25 페이지
12. 수동부저모듈 ( Passive buzzer Module ) - (KY-006) 수동부저는주파수를만들어전류를흘려주면해당주파수대로소리를낸다. 내장된회로가없어스스로소리를낼수는없지만코딩을통해원하는음역대의 소리를낼수있다 < 아두이노연결구성 > Passive buzzer Module S Arduino UNO D8 + 5V - GND 26 페이지
< Passive Buzzer Module 동작스케치예제 > int buzzer = 8; void setup() pinmode(buzzer, OUTPUT); void loop() for (int i = 0; i < 80; i++) // 1 번소리생성 digitalwrite(buzzer, HIGH); delay(1); digitalwrite(buzzer, LOW); delay(1); delay(50); for (int i = 0; i < 100; i++) 2 번소리생성 digitalwrite(buzzer, HIGH); delay(2); digitalwrite(buzzer, LOW); delay(2); delay(100); 27 페이지
13. RGB 3 컬러 LED 모듈 ( RGB 3 Color LED Module ) - (KY-016) RED, GREEN, BLUE 세종류의광원을이용하여색을혼합하며여러가지색상을표현할수있다. 칼라 LED 에 3 개의 PWM 채널이연결되기때문에총 256*256*256=16,777,216 가지의조합이 만들어질수있다. < 아두이노연결구성 > RGB 3 Color LED Module R G B GND Arduino UNO D11 D9 D10 GND 28 페이지
< RGB 3 Color LED Module 동작스케치예제 > int redpin = 11; // red LED int bluepin =10; //blue LED int greenpin = 9;// green LED int val; void setup() pinmode(redpin, OUTPUT); pinmode(bluepin, OUTPUT); pinmode(greenpin, OUTPUT); Serial.begin(9600); void loop() // 어두어졌다밝아졌다반복 for(val = 255; val > 0; val--) // 점점어두워짐 analogwrite(redpin, val); // PWM value for red analogwrite(bluepin, 255 - val); // PWM value for blue analogwrite(greenpin, 128 - val); // PWM value for green Serial.println(val); //print current value delay(1); for(val = 0; val < 255; val++) // 점점밝아짐 analogwrite(redpin, val); analogwrite(bluepin, 255 - val); analogwrite(greenpin, 128 - val); Serial.println(val); delay(1); 29 페이지
14. SMD RGB 3 컬러 LED 모듈 ( SMD RGB 3 Color LED Module ) - (KY-009) RED, GREEN, BLUE 세종류의광원을이용하여색을혼합하며여러가지색상을표현할수있다. SMD Type 의 LED 를사용한모듈이다. 칼라 LED 에 3 개의 PWM 채널이연결되기때문에총 256*256*256=16,777,216 가지의조합이 만들어질수있다. < 아두이노연결구성 > SMD RGB 3 Color LED Module R G B GND Arduino UNO D11 D9 D10 GND 30 페이지
< SMD RGB 3 Color LED Module 동작스케치예제 > int redpin = 11; // red LED int bluepin =10; //blue LED int greenpin = 9;// green LED int val; void setup() pinmode(redpin, OUTPUT); pinmode(bluepin, OUTPUT); pinmode(greenpin, OUTPUT); Serial.begin(9600); void loop() // 어두어졌다밝아졌다반복 for(val = 255; val > 0; val--) // 점점어두워짐 analogwrite(redpin, val); // PWM value for red analogwrite(bluepin, 255 - val); // PWM value for blue analogwrite(greenpin, 128 - val); // PWM value for green Serial.println(val); //print current value delay(1); for(val = 0; val < 255; val++) // 점점밝아짐 analogwrite(redpin, val); analogwrite(bluepin, 255 - val); analogwrite(greenpin, 128 - val); Serial.println(val); delay(1); 31 페이지
15. 2 컬러 3mm LED 모듈 ( Dual Color LED Module 3mm ) - (KY-029) 1 개의 LED 로 RED 와 Green 두가지색상을가지고 analogwrite 함수로밝기를 조절해볼수있다. < 아두이노연결구성 > Dual Color LED Module Arduino UNO - GND G R D10 D11 32 페이지
< Dual Color LED Module 동작스케치예제 > int redpin = 11; //red LED int greenpin = 10; //green LED int val; void setup () pinmode (redpin, OUTPUT); pinmode (greenpin, OUTPUT); void loop () // 어두워졌다밝아졌다반복 for (val = 255; val> 0; val--) // 점점어두워짐 analogwrite (greenpin, val); analogwrite (redpin, 255-val); delay (15); for (val = 0; val <255; val++) // 점점밝아짐 analogwrite (greenpin, val); analogwrite (redpin, 255-val); delay (15); 33 페이지
16. 2 컬러 5mm LED 모듈 ( Dual Color LED Module 5mm ) - (KY-011) 1 개의 LED 로 RED 와 Green 두가지색상을가지고 analogwrite 함수로밝기를 조절해볼수있다. < 아두이노연결구성 > Dual Color LED Module Arduino UNO - GND G R D10 D11 34 페이지
< Dual Color LED Module 동작스케치예제 > int redpin = 11; // red LED int greenpin = 10; // green LED int val; void setup () pinmode (redpin, OUTPUT); pinmode (greenpin, OUTPUT); void loop () // 어두어졌다밝아졌다반복 for (val = 255; val> 0; val--) // 점점어두워짐 analogwrite (greenpin, val); analogwrite (redpin, 255-val); delay (15); for (val = 0; val <255; val++) // 점점밝아짐 analogwrite (greenpin, val); analogwrite (redpin, 255-val); delay (15); 35 페이지
17. 마그네틱리드센서 ( Magnetic Reed switch Sensor ) - (KY-025) 유리관속에밀봉된 2 개의자성리드조각이스프링의탄성에의해열린상태로되어있다. 스위치에자석을접근시키면 2 개의리드조각을통하여자기회로가되어 2 개의리드는 끌어당겨져접점을닫는다. 다시자석을멀리하면탄성으로인해서열린상태로돌아간다. < 아두이노연결구성 > Magnetic Reed switch Sensor G Arduino UNO GND + 5V D0 D2 36 페이지
< Magnetic Reed switch Sensor 동작스케치예제 > const int S = 2; const int ledpin = 13; int sensorstate = 0; void setup() pinmode(ledpin, OUTPUT); pinmode(s, INPUT); void loop() sensorstate = digitalread(s); if(sensorstate == HIGH) digitalwrite(ledpin, HIGH); // 접점연결시 LED on else digitalwrite(ledpin, LOW); // 접점떨어질때 LED off 37 페이지
18. 마그네틱미니리드스위치센서 ( Magentic Mini Reed switch Sensor ) - (KY-021) 유리관속에밀봉된 2 개의자성리드조각이스프링의탄성에의해열린상태로되어있다. 스위치에자석을접근시키면 2 개의리드조각을통하여자기회로가되어 2 개의리드는 끌어당겨져접점을닫는다. 다시자석을멀리하면탄성으로인해서열린상태로돌아간다. < 아두이노연결구성 > Magnetic Mini Reed switch Sensor Arduino UNO - GND + 5V S D2 38 페이지
< Magnetic Mini Reed switch Sensor 동작스케치예제 > int reedswitch = 2; int reedstate; int LED =13; void setup() pinmode(reedswitch, INPUT); pinmode(led,output); void loop() reedstate = digitalread(reedswitch); switch(reedstate) case LOW: digitalwrite(led,high); // 접점연결시 led on break; case HIGH: digitalwrite(led,low); // 접점떨어질때 led off break; 39 페이지
19. 손가락심박센서 ( Finger heartbeat measurement Sensor ) - (KY-039) 적외선송수신을이용하여심장박동을측정가능하게하는센서이다. 동맥부분에빛 ( 적외선 ) 을쏴주고, 정맥부분에서포토디텍터로빛의값을읽어계산을한다. < 아두이노연결구성 > Finger heartbeat measurement Sensor Arduino UNO - GND + 5V S A0 40 페이지
< Finger heartbeat measurement Sensor 동작스케치예제 > int sensorpin = 0; double alpha = 0.75; int period = 100; double change = 0.0; double minval = 0.0; void setup () Serial.begin (9600); void loop () static double oldvalue = 0; static double oldchange = 0; int rawvalue = analogread (sensorpin); double value = alpha * oldvalue + (1 - alpha) * rawvalue; Serial.print (rawvalue); Serial.print (","); Serial.println (value); oldvalue = value; delay (period); 41 페이지
20. 7 Color 플래시 LED 모듈 ( 7 Color Colour Flashing LED Module ) - (KY-034) 하나의 LED 전구에 RGB 색상이 7 가지 Color 로조합, 연속으로방출되어화려한 색상의빛이발산된다. < 아두이노연결구성 > 7 Color Colour Flashing LED Module Arduino UNO S D11 - GND 42 페이지
< 7 Color Colour Flashing LED Module 동작스케치예제 > void setup() pinmode(11, OUTPUT); void loop() digitalwrite(11, HIGH); // LED on delay(1000); digitalwrite(11, LOW); // LED off delay(1000); 43 페이지
21. 레이저발광모듈 ( Laser transmitter Module ) - (KY-008) 레이저는유도방출에의해빛을증폭또는발진하는장치로, 메이저 (maser) 의동작원리를 빛의영역으로확장한것으로 유도방출에의한빛의증폭 (light amplification by stimulated emission of radiation) 의머리글자를딴용어로알려져있다. 레이저의광원은눈에치명적인손상을일으킬수있어반드시사용에주의를하여야한다. < 아두이노연결구성 > Laser transmitter Module S Arduino UNO D8 + 5V - GND 44 페이지
< Laser transmitter Module 동작스케치예제 > const int SignPin=8; const int ledpin=13; void setup() pinmode(signpin,output); pinmode(ledpin,output); digitalwrite(ledpin,low); Serial.begin(9600); void loop() digitalwrite(signpin,high); // Laser 방출 digitalwrite(ledpin,high); // LED ON delay(1000); digitalwrite(signpin,low ); // Laser OFF digitalwrite(ledpin,low); // LED OFF delay(1000); 45 페이지
22. 리셋버튼모듈 ( Key switch Module ) - (KY-004) 버튼을누르고있을때만 ON 이유지되는스위치이다. 버튼에서손을떼면스위치가원상복귀됨과동시에 OFF 로전환된다. < 아두이노연결구성 > Key switch Module S Arduino UNO D2 + 5V - GND 46 페이지
< Key switch Module 동작스케치예제 > int led = 13; int buttonpin = 3; int val; void setup() pinmode(led,output); pinmode(buttonpin,input); void loop() val = digitalread(buttonpin); // 버튼상태 check if(val==high) // 버튼이눌리면 LED ON digitalwrite(led,high); else // 버튼이눌리지않으면 LED OFF digitalwrite(led,low); 47 페이지
23. 진동감지센서 ( Vibration detection Sensor ) - (KY-002) 진동센서는흔들어보면물체가내부에서움직이는느낌이난다. 그것이흔들리면서 진동 ( 움직임 ) 을감지한다. 진동을감지 ( 그림 -Connect) 하면디지털신호로 Signal 을보내게되어있다. < 아두이노연결구성 > Vibration detection Sensor S Arduino UNO D7 + 5V - GND 48 페이지
< Vibration detection Sensor 동작스케치예제 > int Led=13; int vib=7; int val; void setup() pinmode(led,output); pinmode(vib,input); void loop() val=digitalread(vib); if(val==high) // 진동없음 ( NO Connect ) digitalwrite(led,low); // LED OFF else // 진동감지 ( Connect ) digitalwrite(led,high); // LED ON 49 페이지
24. 로터리인코더모듈 (Rotary encoder Module) - (KY-040) 로터리인코더는전기모터나엔진의회전각도또는회전속도를측정할때사용되는 센서이다. 축이일정량의각도를회전할때마다펄스를발생하며펄스수를계산함으로써 축의각도를검출할수있다. < 아두이노연결구성 > Rotary encoder Module GND Arduino UNO GND + 5V DT CLK D3 D2 50 페이지
< Rotary encoder Module 동작스케치예제 > int clock = 2; int data = 3; int count = 0; int c = LOW; // Define encoder pin A // Define encoder pin B // pre-init the count to zero // pre-init the state of pin A low int clast = LOW; // and make its last val the same - ie no change int d = LOW; void setup() pinmode (clock,input); pinmode (data,input); Serial.begin (9600); void loop() // and make the data val low as well c = digitalread(clock); // clock 값 Read d = digitalread(data); // data 값 Read if (c!= clast) // clock pin has changed value... now we can do stuff d = c^d; // work out direction using an XOR if ( d ) count--; // non-zero is Anti-clockwise else count++; // zero is therefore anti-clockwise Serial.print ("Jog:: count:"); Serial.println(count); clast = c; // store current clock state for next pass 51 페이지
25. 매직라이트컵센서 ( Magic light cup Sensor ) - (KY-027) 수은기울기센서와 LED 를가진 2 쌍이하나가되는센서이다. 해당센서 2 개를연결한후한쪽으로기울이게되면기울인쪽방향의 LED 로빛이이동이된다. 센서를기울일때접점의상태를이용할수있다. < 아두이노연결구성 > 52 페이지
Magic Light cup Sensor < Magic light cup Sensor 동작스케치예제 > //1 번모듈 D7, D5 //2 번모듈 D4, D6 int SPinA = 7; int SPinB = 4; int LedPinA = 5; int LedPinB = 6; int buttonstatea = 0; int buttonstateb = 0; int brightness = 0; void setup() pinmode(ledpina, OUTPUT); pinmode(ledpinb, OUTPUT); pinmode(spina, INPUT); pinmode(spinb, INPUT); Arduino UNO - GND + 5V S L 1 번모듈 : D7, 2 번모듈 : D4 1 번모듈 : D5, 2 번모듈 : D6 53 페이지
void loop() buttonstatea = digitalread(spina); // 1 번수은스위치값 if (buttonstatea == HIGH && brightness!= 255) brightness ++; // 1 번수은스위치 OFF, 밝기가최대치가아니면밝기 UP buttonstateb = digitalread(spinb); // 2 번수은스위치값 if (buttonstateb == HIGH && brightness!= 0) brightness -- ; //2 번수은스위치 OFF/ 불이꺼져있지않으면밝기 down // 1,2 번각각반대가되도록 LED 밝기값설정 analogwrite(ledpina, brightness); analogwrite(ledpinb, 255 - brightness); delay(25); 54 페이지
26. 수은기울기스위칭센서 ( Mercury open optical Sensor ) - (KY-017) 센서가똑바로서있으면수은이 Lead 양쪽에닿지않아 (Lead 한쪽만닿아도 ) OFF 상태가되고 Lead 양쪽모두에수은이닿게되면 ON 이된다. < 아두이노연결구성 > Mercury open optical Sensor S Arduino UNO D2 + 5V - GND 55 페이지
< Mercury open optical Sensor 동작스케치예제 > const int Sen = 2; const int ledpin = 13; int sensorstate = 0; void setup() pinmode(ledpin, OUTPUT); pinmode(sen, INPUT); void loop() sensorstate = digitalread(sen); // 센서의데이터값 if (sensorstate == HIGH) // 수은기울기센서가신호 OFF digitalwrite(ledpin, HIGH); // LED ON else // 수은기울기센서신호 ON digitalwrite(ledpin, LOW); // LED OFF 56 페이지
27. 기울기센서 ( Tilt switch Sensor ) - (KY-020) 기울어짐에따라 on/off 되는센서이다. 일반스위치처럼눌러서 on/off 시키는것이아니라, 기울어짐에따라 on/off 가된다. 해당센서는모듈이기울어지면내부스위치가작동하는 방식으로기울어진각도등상세값은알수없으며기울어졌는지만확인이가능하다. < 아두이노연결구성 > Tilt Switch Sensor S Arduino UNO D7 + 5V - GND 57 페이지
< Tilt Switch Sensor 동작스케치예제 > int tilt_din=7; void setup() pinmode(tilt_din,input); Serial.begin(9600); void loop() if(digitalread(tilt_din)==low) // 내부스위치 ON Serial.println("shock"); else Serial.println("Not shock"); delay(500); 58 페이지
28. 조도센서 ( Photoresistor Sensor ) - (KY-018) 빛의양, 세기를감지하는센서로실내, 실외환경의빛의양을측정할수있으며빛의 밝기에따라변화되는광센서 (CDS) 의입력값을아두이노시리얼모니터를통해확인 할수있다. < 아두이노연결구성 > Photoresistor Sensor S Arduino UNO A0 + 5V - GND 59 페이지
< Photoresistor Sensor 동작스케치예제 > int potpin = 0; int ledpin=13; int val = 0; void setup() pinmode(ledpin, OUTPUT); Serial.begin(9600); void loop() val = analogread(potpin); // 조도값 Read Serial.println(val); delay(10); 60 페이지
29. 디지털온습도센서 ( DHT11 Temp and Humidity Sensor ) - (KY-015) 상대습도와온도를측정해주는센서로장시간사용해도변화율이낮다. 온도는 2 C, 습도는 ± 5% 정도의오차범위를갖는다. < 아두이노연결구성 > DHT11 Temp and Humidity Sensor VCC DATA GND Arduino UNO 5V D2 GND 61 페이지
< DHT11 Temp and Humidity Sensor 동작스케치예제 > #include <DHT11.h> // DHT11 Library (DHT11 라이브러리추가 ) int pin=2; DHT11 dht11(pin); void setup() Serial.begin(9600); void loop() int err; float temp, humi; if((err=dht11.read(humi, temp))==0) Serial.print("temperature:"); Serial.print(temp); // 온도 Serial.print(" humidity:"); Serial.print(humi); // 습도 Serial.println(); else Serial.println(); Serial.print("Error No :"); Serial.print(err); Serial.println(); delay(dht11_retry_delay); 62 페이지
30. 아날로그홀자기센서 ( Analog Hall Effect Magnetic Sensor ) - (KY-035) 홀효과를이용해자기장의세기측정및극성을감지할수있다. 홀효과란전류와자기장에의해모든전도체물질에나타나는효과이다. 전류가흐르는전기 전도체에수직하게자기장이걸릴때, 전류와자기장의방향에수직하게걸리는전압을 홀전압이라하며, 이러한효과를홀효과라한다. 회전하는물체의회전속도를측정하는데 많이사용된다. < 아두이노연결구성 > 63 페이지
Analog Hall Effect Magnetic Sensor Arduino UNO - GND VCC S < Analog Hall Effect Magnetic Sensor 동작스케치예제 > int sensorpin = A0; int ledpin = 13; int sensorvalue = 0; void setup () pinmode (ledpin, OUTPUT); Serial.begin (9600); void loop () sensorvalue = analogread (sensorpin); digitalwrite (ledpin, HIGH); delay (sensorvalue); // sensorvalue 값으로 Delay 설정 digitalwrite (ledpin, LOW); delay (sensorvalue); // sensorvalue 값으로 Delay 설정 Serial.println (sensorvalue, DEC); A0 5V 64 페이지
31. 홀자기센서 ( Hall Magnetic Sensor ) - (KY-003) 자기장의세기에따라전압이변하는소자로서펄스변조, 유량및유속감지, 자동차 속도측정등회전체의회전수감지등의다양한분야에사용된다. < 아두이노연결구성 > Hall Magnetic Sensor Arduino UNO - GND VCC S 5V D3 65 페이지
< Hall Magnetic Sensor 동작스케치예제 > int led = 13; int sensor = 3; int val; void setup() pinmode(led, OUTPUT); pinmode(sensor, INPUT); void loop() val = digitalread(sensor); if(val == HIGH) digitalwrite(led, HIGH); // 감지시 LED ON else digitalwrite(led, LOW); 66 페이지
32. 디지털온도센서 ( Digital temperature Sensor DS18B20 ) - (KY-001) DS18B20 온도센서칩을사용하여센서주위환경의온도를측정, 확인할수있는센서 이다. -55 ~ +125 의온도범위측정이가능하다. 해당센서는 I2C 프로토콜을사용하여 온도값을받아온다. < 아두이노연결구성 > Digital temperature Sensor DS18B20 Arduino UNO - GND VCC S 5V D2 67 페이지
< Digital temperature Sensor DS18B20 동작스케치예제 > #include <OneWire.h> // OneWire Library 사용 OneWire ds(2); void setup() Serial.begin(9600); void loop() byte i; byte present = 0; byte data[12]; byte addr[8]; float Temp; if (!ds.search(addr)) ds.reset_search(); return; ds.reset(); ds.select(addr); // start conversion, with parasite power on at the end ds.write(0x44,1); delay(1000); present = ds.reset(); ds.select(addr); ds.write(0xbe); // Read Scratchpad 68 페이지
for (i = 0; i < 9; i++) //Sensor 값배열정리 data[i] = ds.read(); Temp=(data[1]<<8)+data[0]; Temp=Temp/16; /* 위에서받아온값중에 1 번배열에있는값을 256 배 (2 의 8 승 ) 해주고 0 번배열에있는값과더해준다. 그값을 16 으로나누면섭씨온도가된다.*/ // 섭씨출력 Serial.print("C="); Serial.print(Temp); Serial.print(", "); // 섭씨를화씨로변환 Temp=Temp*1.8+32; // 화씨출력 Serial.print("F="); Serial.print(Temp); Serial.println(" "); 69 페이지
33. 아날로그온도센서 ( Analog temperature Sensor ) - (KY-013) NTC 서미스터를사용하여온도가올라가면저항이감소하고, 반대로온도가내려가면 저항이증가하는방식이며전압을 ADC 로읽어저항값을구한다음온도로변환을시켜준다. steinhart-hart equation 이라는공식을적용하여온도를계산할수있다. < 아두이노연결구성 > Analog temperature Sensor Arduino UNO - GND VCC S 5V A0 70 페이지
< Analog temperature Sensor 동작스케치예제 > int sensorpin = 0; void setup() Serial.begin(9600); void loop() int reading = analogread(sensorpin); // converting that reading to voltage, for 3.3v arduino use 3.3 float voltage = reading * 5.0; voltage /= 1024.0; Serial.print(voltage); Serial.println(" volts"); // now print out the temperature //converting from 10 mv per degree wit 500 mv offset float temperaturec = (voltage - 0.5) * 100 ; //to degrees ((voltage - 500mV) times 100) Serial.print(temperatureC); Serial.println(" degrees C"); float temperaturef = (temperaturec * 9.0 / 5.0) + 32.0; // now convert to Fahrenheit Serial.print(temperatureF); Serial.println(" degrees F"); delay(1000); 71 페이지
34. 적외선방출 ( 송신 ) 센서 ( IR emission Sensor ) - (KY-005) 적외선송신모듈로적외선을쏘는모듈이다. 리모컨과같은원리이다. 적외선은일반 LED 처럼눈으로식별이되지않지만스마트폰카메라를켜고적외선 송신모듈에갖다대고자세히보면확인할수있다. 적외선수신센서와연동하여전송하는 data 를확인할수있다. < 아두이노연결구성 > IR emission Sensor S VCC Arduino UNO D3 5V - GND 72 페이지
< IR emission Sensor 동작스케치예제 > #include <IRremote.h> // IRremot library ( IRremot 라이브러리호출 ) IRsend irsend; void setup() serial.begin(9600); void loop() // 한번에 3 번씩 16 진수 a90 을전송 for(int i = 0; i < 3; i++) irsend.sendsony(0xa90, 12); delay(40); delay(2000); 73 페이지
35. 적외선수신센서 ( IR Receiver Sensor ) - (KY-022) 적외선송신모듈에서전송한 data 를수신받아수신개체 ( 아두이노 ) 로전송한다. 이전 34 번 IR emission sensor 와조합하여사용할수있으며, 가정에서사용하는 IR 리모콘등으로 data 를전송하여스케치프로그램시리얼모니터로전송한 data 를 확인할수있다. < 아두이노연결구성 > IR Receiver Sensor S VCC Arduino UNO D11 5V - GND 74 페이지
< IR Receiver Sensor 동작스케치예제 > #include <IRremote.h> // IRremot library ( IRremot 라이브러리호출 ) int RECV_PIN = 11; IRrecv irrecv(recv_pin); decode_results results; void setup() Serial.begin(9600); irrecv.enableirin(); // Start the receiver void loop() if (irrecv.decode(&results)) Serial.println(results.value, HEX); irrecv.resume(); // Receive the next value delay(100); 75 페이지
36. 노크센서 ( Knock Sensor ) - (KY-031) 플라스틱안의금속이충격및진동을감지하여이를출력하는센서이다. 진동센서와작동원리가거의흡사하다. < 아두이노연결구성 > Knock Sensor S VCC Arduino UNO D3 5V - GND 76 페이지
< Knock Sensor 동작스케치예제 > int Led = 13; int Nock = 3; int val; void setup() pinmode(led,output); pinmode(nock,input); void loop() val = digitalread(nock); if(val == HIGH) digitalwrite(led,high); // 진동감지시 LED ON else digitalwrite(led,low); 77 페이지
37. 적외선포토인터럽터센서 (IR Photo Interrupter Sensor ) - (KY-010) 발광소자 (IR LED) 와수광소자 (phototransistor) 를 1 개의패키지에마주보도록배열하고, 그사이를검출물이통과할때빛이차단되는현상을통해물체의유무를검출한다. 이투과형포토센서를포토인터럽터라고하며기계식스위치와달리, 접점이없는무접점 스위치 ( 비접촉형스위치 ) 이므로접점의마찰이없어신뢰성이높다. < 아두이노연결구성 > IR Photo Interrupter Sensor S VCC Arduino UNO D3 5V - GND 78 페이지
< IR Photo Interrupter Sensor 동작스케치예제 > int led = 13; int sensor = 3; void setup() pinmode(led, OUTPUT); pinmode(sensor, INPUT); void loop() int val = digitalread(sensor); // 포토인터럽터센서측정값 if(val == HIGH) //U 자홈사이에물체들어왔을경우 digitalwrite(led, HIGH); // val 값이 HIGH 이면 LED ON else digitalwrite(led, LOW); // val 값이 HIGH 가아니면 LED OFF 79 페이지
38. HC-SR04 초음파센서 ( HC-SR04 Ultrasonic Sensor ) 초음파센서는 2 개의압전소자 ( 또는 1 개의압전소자와금속판 ) 로되어있으며 2 개의압전 소자로되어있는것을 Bimole( 바이몰 ), 1 개의압전소자로되어있는것을 Unimole( 유니몰 ) 이라부른다. 이것에초음파가입사되면압전소바는진동해서전압이발생되고역으로압전 소자에전압을인가하면초음파가발생이된다. 초음파센서는센서자신이갖고있는 고유진동주파수와똑같은주파수의교류전압을가하면좀더효율이좋은음파를발생할 수있다. 물체에서반사된음파를그대로센서로입력 ( 진동 ) 시켜서발생된전압을회로에서 처리함으로서측정거리를계산할수있게된다. < 아두이노연결구성 > 80 페이지
HC-SR04 Ultrasonic Sensor VCC Trig Echo GND < HC-SR04 Ultrasonic Sensor 동작스케치예제 > int trigpin = 4; int echopin = 2; void setup() Serial.begin(9600); pinmode(trigpin, OUTPUT); // trigpin 출력 pinmode(echopin, INPUT); // echopin 입력 void loop() float duration, distance; digitalwrite(trigpin, HIGH); delay(10); digitalwrite(trigpin, LOW); Arduino UNO 5V D4 D2 GND duration = pulsein(echopin, HIGH); // echopin 이 HIGH 를유지한시간을저장 // HIGH 였을때시간 ( 초음파가보냈다가다시들어온시간 ) 을가지고거리를계산 // 340 은초당초음파 ( 소리 ) 의속도, 10000 은밀리세컨드를세컨드로 distance = ((float)(340 * duration) / 10000) / 2; // 왕복거리이므로 2 로나눔 Serial.print("Duration:"); Serial.print(duration); Serial.print("\nDIstance:"); Serial.print(distance); Serial.println("cm\n"); delay(500); 81 페이지
39. L293D 모터드라이버 ( L293D Motor Driver ) L293D 는고전압, 고전류를지원하는 4 채널모터드라이버이다. 4.5V~36V 까지전원을입력할수있으며채널당 600mA 의 (1.2A peak current) 전류를인가 할수있다. (thermal protection 내장 ) 주로큰용량의 DC/Stepper 모터를제어하는데적합하다. 5V servo 모터를제어하기위한 2 개의인터페이스가별도로있으며 4 개의 DC 모터또는 2 개의 stepper 모터를제어할수있다. Stepper 모터는 single coil, double coil, interleaved stepping 방식의 unipolar, bipolar stepper 모터를사용할수있다. DC 모터와스텝모터는 5-12VDC 이여야한다. (3V 모터는동작하지않음 ) Pulldown resistor 가내장되어전원인가할때모터를보호해준다. 82 페이지
< 아두이노연결구성 > < L293D / DC Motor 동작스케치예제 > int motorpin1 = 3; // L293D OUTPUT1 int motorpin2 = 4; // L293D INPUT2 void setup () pinmode(motorpin1,output); pinmode(motorpin2,output); void loop () digitalwrite(motorpin1,low); // 모터정방향회전 digitalwrite(motorpin2,high); delay(1000); digitalwrite(motorpin1,high); // 모터역방향회전 digitalwrite(motorpin2,low); delay(1000); 83 페이지
40. DC 모터 ( DC Motor ) 고정자로영구자석을사용하고, 회전자 ( 전기자 ) 로코일을사용하여구성한것으로, 전기자에 흐르는전류의방향을전환함으로써자력의반발, 흡인력으로회전력을생성시킨다. RC 자동차, Drone, 기타장난감등을비롯하여여러방면에서가장널리사용되고있다. DC 모터는회전제어가쉽고, 제어용모터로서아주우수한특성을가지고있다. 하지만그구조상브러시 (brush) 와정류자 (commutator) 에의한기계식접점이있다는점이다. 이것에의한영향은전류시의전기불꽃 (spark), 회전소음, 수명이라는형태로나타난다. 그리고, 마이크로컴퓨터제어를하려는경우는 " 노이즈 " 가발생하게된다. 이노이즈 대책을위해서는각단자와케이스사이에 0.01μF 0.1μF 정도의세라믹콘덴서를직접 부착한다. 이것으로정류자에서발생하는전기불꽃을흡수하여노이즈를억제할수있다. < 아두이노연결구성 > 84 페이지
상기구성은모터의속도조절을하기위한구성이다. 모터의스피드가증가하는것을확인할수있다. < DC Motor / L293D 동작스케치예제 > // 아두이노디지털 4,5,6 int motorpin1 = 4; int motorpin2 = 5; int motorpinenable = 6; void setup() pinmode(motorpin1, OUTPUT); pinmode(motorpin2, OUTPUT); pinmode(motorpinenable, OUTPUT); Serial.begin(9600); void loop() int motor_speed; // 모터스피드를 250 보다작으면 0 부터 249 까지스피드증가 for (motor_speed = 0; motor_speed < 250; motor_speed++) setmotor(true, motor_speed); Serial.pritnln(motor_speed); // 시리얼모니터로스피드증가확인 delay(10); // 모터콘트롤함수 void setmotor(boolean forward, int motor_speed) digitalwrite(motorpin1, forward); digitalwrite(motorpin2,!forward); analogwrite(motorpinenable, motor_speed); // PWM 85 페이지
41. 74HC595N 쉬프트레지스터 ( 74HC595N Shift Resister ) 시프트레지스터는다른이름으로 Serial to Parallel Converter 로불린다. 시리얼 ( 직렬 ) 로입력되는데이터를패러럴 ( 병렬 ) 로바꿔준다는말이다. 시프트레지스터에게데이터가전달된다고알려주는클럭 (clock) 신호와함께 8 개의 핀출력이어떻게되는지알려주는시리얼데이터를일렬로보내준다. 8 개의출력을가지고있으며 3 개의입력핀을가지고있다. 74HC595N 의동작은 클럭핀 (clock pin), 래치핀 (latch pin), 데이터핀 (data input) 으로동작을시킨다. 데이터핀에데이터를주고클럭을주고래치핀에신호를주면데이터가 74HC595N 의 각핀에서데이터가병렬로출력된다. 86 페이지
< 아두이노연결구성, 자료출처 : bildr.blog > 87 페이지
< 74HC595N 쉬프트레지스터동작스케치예제, 자료출처 : bildr.blog > // 상기표에서아두이노연결 ( latch pin, clock pin, data input ) int latchpin = 10; int clockpin = 9; int datapin = 8; byte leds = 0; // 8 개의 LED 의 on/off 패턴을저장하기위한변수 void setup() pinmode(latchpin, OUTPUT); pinmode(datapin, OUTPUT); pinmode(clockpin, OUTPUT); void loop() leds = 0; up_sr(); delay(500); for(int i = 0; i < 8; i++) bitset(leds, i); // bitset 함수를이용하여 leds 변수의비트를셋팅 up_sr(); // up_sr 를호출, leds 변수의비트패턴을업데이트 delay(200); // delay time 에따라변환확인 void up_sr() digitalwrite(latchpin, LOW); // shiftout : 1.Data, 2.Clock, 3. 비트시작위치, 4. 쉬프트레지스터 input data //MSB - Most Significant Bit : 가장큰자릿수의비트, 즉가장왼쪽비트 //LSB - Least Significant Bit : 가장작은자릿수의비트, 즉가장오른쪽비트 //LSBFIRST,MSBFIRST 에따라 LED 점등순서바뀜 shiftout(datapin, clockpin, LSBFIRST, leds); digitalwrite(latchpin, HIGH); 88 페이지