아두이노로 만드는 수경재배 장치 목차
3. 첫 번째 아두이노 개발
이제 아두이노로 개발할 수 있는 준비가 되었으니, 프로그램 언어를 처음 배울 때 만들던 Hello World의 아두이노 버전인 Blink를 만들어 보자. 아두이노 개발에 필요한 기본적인 전자회로 지식도 함께 설명해 놓았는데 이 정도만 알면 큰 어려움 없이 인터넷을 참고하면서 아두이노를 다룰 수 있다.
1. Blink
Blink는 LED를 1초 단위로 깜빡이는 간단한 예제로 아두이노와 LED를 연결한 회로도는 다음과 같다.
이제 실제 프로토타입 보드에 LED와 저항을 꽂아 첫 아두이노 작품을 만들어 보자. 먼저 자주 사용되는 부품에 대해 간단히 알아보고 지나가자.
- 브레드보드
브레드보드는 그림과 같이 +극과 -극의 전원이 양쪽에 수평방향으로 각각 연결되어 있고 회로에 사용되는 부분이 중앙을 기준으로 각각 분리되어 수직으로 연결되어 있는 내부 구조를 가지고 있다. 이 구조에 맞춰서 부품을 배치하면 부품끼리 연결하는 것이 가능하다.
- LED
LED는 극성이 있어서 주의해야 하는데 LED아래에 연결되어 있는 리드선이 긴 쪽이 +극이다.
- 저항
저항은 극성은 없지만 숫자가 아닌 색으로 값을 나타내고 있어 읽는 방법을 알아야 한다. 잘 보이지 않거나 값이 얼마인지 확신이 서지 않으면 멀티미터를 사용하여 저항을 측정해도 된다.
색상 코드를 읽는 방법은 아래와 같다.
사진에 있는 저항을 읽으면
1 (첫째 갈색, brown) 0 (둘째 검정, black) 0 (셋째 검정, black) * 10^2 (넷째 빨강, red) = 100 * 100 = 10,000 = 10K 옴이고,
오차는 갈색 1% 라는 뜻 된다.
이제 필요한 전자공학? 기술을 익혔으니 아두이노의 프로토타입 쉴드에 회로를 만들어 보자.
- 스케치 프로그램
아두이노 IDE의 File 메뉴 밑에 Example 밑에 01. Basic 밑을 보면 Blink 예제가 있다. 이 예제를 실행하면 아두이노 보드에 있는 LED 중 L로 표시된 LED가 사진과 같이 깜빡인다.
이제 방금 빨간 LED로 만든 Blink 회로를 동작시키기 위해 프로그램을 아래와 같이 고치자.
#define LED_PIN 8
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_PIN, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(LED_PIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(LED_PIN, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
USB B 케이블을 연결하고 Upload 버튼을 누르면 LED 가 깜빡이기 시작한다. 정말 간단하다.
같은 원리로 쉽게 전기를 끄고 켤 수 있는 릴레이 모듈을 사용할 수 있다.
2. 1 way 릴레이 모듈
아두이노 우노 data sheet에 따르면 디지털 핀은 410mA까지 전류를 보낼 수 있는 것으로 나와 있다. 하지만 모터를 포함하여 일반 전기를 사용하는 전기제품의 전류는 이 보다 훨씬 높고, 전압 또한 다양하기 때문에 위의 예제에서 처럼 디지털 핀으로는 제어하기 어렵고 디지털 핀으로 다른 스위치를 조작하는 신호로 사용하는 방법이 좋다. 이때 사용할 수 있는 것 중 쉬운 방법이 릴레이 스위치이다. 1 way 릴레이의 경우 LED를 켜고 끄는 것과 동일한 방법이기 때문에 같은 방법으로 테스트해 보기로 했다.
1 way 릴레이 모듈은 아래와 같은 모습이다. C는 Common, NC는 Normally Connected, NO는 Normally Opened의 약자로 C와 NC를 사용하면 Signal이 들어오기 전 까기 연결되어 있다가 Signal이 들어오면 열리는 조합이고, C와 NO는 Signal이 들어오면 닫히는 조합이다. 구조가 LED처럼 매우 단순해서 Signal에 디지털 핀을 연결하고 나머지는 5V전원과 GND에 연결하는 것 만으로 동작시킬 수 있다.
Blink프로그램을 수정해서 5초마다 켜지고 꺼지고를 반복하도록 하면 다음과 같다.
#define RELAY_PIN 8
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(RELAY_PIN, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(RELAY_PIN, LOW); // turn the LED on (HIGH is the voltage level)
delay(5000); // wait for a second
digitalWrite(RELAY_PIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(5000);
}
조립하고 실행한 모습이다.
이렇듯 아두이노는 약간의 전자공학 지식을 가지면 간단한 프로그램을 돌려서 내가 원하는 전자제품을 저렴하게 만들 수 있는 도구이다. 종종 원하는 대로 동작하지 않으면, 멀티미터를 사용해서 전기가 통하는지 체크만 할 수 있어도 집안에 있는 가전제품을 내 마음대로 움직일 수 있는 좋은 도구이다.
이제, 다음 글 부터 본격적으로 수경재배에 필요한 도구를 만들어 보려고 한다.
'IoT 자동화' 카테고리의 다른 글
아두이노로 만드는 수경재배 장치; 6. 조도계 (광센서) (2) | 2023.03.19 |
---|---|
아두이노로 만드는 수경재배 장치; 5. 온도, 습도계 v 2.0 (0) | 2023.03.11 |
아두이노로 만드는 수경재배 장치; 4. 온도, 습도계 v 1.0 (0) | 2023.03.09 |
아두이노로 만드는 수경재배 장치; 2. 아두이노 IDE (0) | 2023.03.09 |
아두이노로 만드는 수경재배 장치; 1. 아두이노 시작하기 (0) | 2023.03.08 |