IOT

아두이노[1]

Break-Limits 2023. 7. 6. 18:06

아두이노


개요

 

오픈 소스 하드웨어 및 소프트웨어 플랫폼

 - 전자 기기를 제어하고 프로토타이핑하는 데 사용되는 마이크로컨트롤러 기반의 플랫폼.

 - 간단한 디지털 및 아날로그 입력 및 출력을 제공하여 센서와 액추에이터를 연결하고 다양한 프로젝트를 구현.
 - Arduino IDE(통합 개발 환경) 소프트웨어를 통해 프로그램 코드를 작성하고 업로드.  (C/C++ 기반)

 - 아두이노 보드는 주로 ATmega 시리즈와 같은 마이크로컨트롤러 칩을 사용합니다. 

 - 보드에는 디지털 핀과 아날로그 핀이 있으며, 이러한 핀들을 사용하여 다양한 센서, 스위치, LED, 모터 등과 같은 외부 장치를 연결할 수 있습니다. 또한, 아두이노 보드에는 전원 공급을 위한 USB 포트나 외부 전원 소스를 연결할 수 있는 커넥터도 제공됩니다.
 - 로봇 제어, 자동화 시스템, 스마트 홈 장치, IoT(사물 인터넷) 프로젝트등에 사용될 수 있습니다. 

 

 

각부명칭

 

 

 

 

Autodesk Thinkercad로 실습


[홈페이지]

https://www.tinkercad.com/things/e0bXK2RrDsY-ingenious-crift/editel?tenant=circuits 

 

 

Login | Tinkercad

 

www.tinkercad.com

 

[홈페이지 -> 내 디자인 -> 만들기-> 회로 선택]

 

# 드래그앤드롭 -> 필요한 요소를 선택한다.

 

 

[Arduino를 사용하여 3개의 LED를 순차적으로 제어하고, "hello_world"를 시리얼 모니터에 출력]


 

아두이노 배선

 

 

 

코드 작성

// 녹색 LED 핀 번호를 12로 정의합니다.
int green = 12;

// 노란색 LED 핀 번호를 10으로 정의합니다.
int yellow = 10;

// 빨간색 LED 핀 번호를 8로 정의합니다.
int red = 8;

// setup() 함수는 초기 설정을 수행하는 함수입니다.
void setup() {
  // 시리얼 통신을 9600 bps로 설정합니다.
  Serial.begin(9600);

  // 녹색 LED 핀을 출력으로 설정합니다.
  pinMode(green, OUTPUT);

  // 노란색 LED 핀을 출력으로 설정합니다.
  pinMode(yellow, OUTPUT);

  // 빨간색 LED 핀을 출력으로 설정합니다.
  pinMode(red, OUTPUT);
}

// loop() 함수는 반복적으로 실행되는 함수입니다.
void loop() {
  // 녹색 LED를 켭니다.
  digitalWrite(green, HIGH);
  // 노란색 LED를 끕니다.
  digitalWrite(yellow, LOW);
  // 빨간색 LED를 끕니다.
  digitalWrite(red, LOW);
  // 1초 동안 대기합니다.
  delay(1000);

  // 녹색 LED를 끕니다.
  digitalWrite(green, LOW);
  // 노란색 LED를 켭니다.
  digitalWrite(yellow, HIGH);
  // 빨간색 LED를 끕니다.
  digitalWrite(red, LOW);
  // 1초 동안 대기합니다.
  delay(1000);

  // 녹색 LED를 끕니다.
  digitalWrite(green, LOW);
  // 노란색 LED를 끕니다.
  digitalWrite(yellow, LOW);
  // 빨간색 LED를 켭니다.
  digitalWrite(red, HIGH);
  // 1초 동안 대기합니다.
  delay(1000);

  // 시리얼 모니터에 "hello_world"를 출력합니다.
  Serial.print("hello_world");
}

 

 

 

 

Arduino – Turn LED ON and OFF With Button


 

# 버튼으로 LED를 제어해보자

https://roboticsbackend.com/arduino-turn-led-on-and-off-with-button/

 

[아두이노 배선]

[코드작성]

 

# 버튼의 상태에 따라 LED가 켜지거나 꺼지게 됩니다.

// LED 핀 번호를 8로 정의합니다.
#define LED_PIN 8

// 버튼 핀 번호를 7로 정의합니다.
#define BUTTON_PIN 7

// setup() 함수는 초기 설정을 수행하는 함수입니다.
void setup() {
  // LED 핀을 출력으로 설정합니다.
  pinMode(LED_PIN, OUTPUT);

  // 버튼 핀을 입력으로 설정합니다.
  pinMode(BUTTON_PIN, INPUT);
}

// loop() 함수는 반복적으로 실행되는 함수입니다.
void loop() {
  // 만약 버튼 핀에서 HIGH(1) 신호를 읽어오면,
  if (digitalRead(BUTTON_PIN) == HIGH) {
    // LED 핀에 HIGH(1) 신호를 출력하여 LED를 켭니다.
    digitalWrite(LED_PIN, HIGH);
  }
  else {
    // 그렇지 않으면 LED 핀에 LOW(0) 신호를 출력하여 LED를 끕니다.
    digitalWrite(LED_PIN, LOW);
  }
}

버튼의 상태에 따라 LED가 켜지거나 꺼지게 됩니다.

 

 

 

 

아두이노 IDE


IDE설치

 

https://www.arduino.cc/en/software

 

아두이노 IDE에 코드 import

 

# thinkcad에서 작업한 코드를 다운로드.

 

# 아두이노 IDE -> file -> 파일 open

# 포트설정 필요하면 아두이노 연결. 

# 아두이노 업로드시 verify-> upload 진행.

 

 

 

[Proximity (GP2Y0A21YK ) distance Sensor with Arduino]

 

해당 사이트를 참고한다.

https://theorycircuit.com/proximity-gp2y0a21yk-distance-sensor-with-arduino/

 

 

 


 


 

 

아두이노 센서

 

 

피에조 부저 -  소리


 

https://blog.naver.com/darknisia/221233388266

 

https://www.tinkercad.com/things/jgTD2aEfgdR-shiny-kup-krunk/editel?tenant=circuits 

 

 

 

 

 

 

적외선 센서


https://blog.naver.com/PostView.naver?blogId=eduino&logNo=222065945459&categoryNo=0&parentCategoryNo=0

 

[아두이노 배선]

 

[코드 작성]

# [참고] https://www.tinkercad.com/things/h6g2XRZ1NJI-smooth-robo/editel?tenant=circuits

# Arduino를 사용하여 거리 값을 측정하고, 측정된 값을 시리얼 모니터를 통해 출력

 

int distance = 0; //Cm로 계산된 거리값을 저장해두기위해 변수를 선언합니다.

void setup() {
  Serial.begin(9600); //거리값을 PC모니터로 쉽게 확인하기위해 시리얼통신을 선언해줍니다.
}

void loop() {
  int volt = map(analogRead(A0), 0, 1023, 0, 5000); 
/*
거리값을 cm로 변환해주기 쉽게 하기위해서
map 함수를 사용해서 데이터값을 변환후 volt 변수에 넣어 줍니다.
*/ 
  distance = (27.61 / (volt - 0.1696)) * 1000; 
/*
거리값을 cm로 변환하는 계산공식 입니다.
변환된 cm값을 distance 변수에 저장합니다.
*/
  Serial.print(distance);  //거리값을 시리얼모니터로 출력해줍니다.
  Serial.println(" cm");
  Serial.println(" ");
  delay(500);
}

 

 

토양센서

 

[아두이노 배선]

[코드 작성]

 

const int AirValue = 620;   //you need to replace this value with Value_1
const int WaterValue = 310;  //you need to replace this value with Value_2
int soilMoistureValue = 0;
int soilmoisturepercent=0;
void setup() {
  Serial.begin(9600); // open serial port, set the baud rate to 9600 bps
}
void loop() {
soilMoistureValue = analogRead(A0);  //put Sensor insert into soil
Serial.print("아날로그 값 : ");
Serial.println(soilMoistureValue);
soilmoisturepercent = map(soilMoistureValue, AirValue, WaterValue, 0, 100);
Serial.print("습도 : ");
if(soilmoisturepercent >= 100)
{
  Serial.println("100 %");
}
else if(soilmoisturepercent <=0)
{
  Serial.println("0 %");
}
else if(soilmoisturepercent >0 && soilmoisturepercent < 100)
{
  Serial.print(soilmoisturepercent);
  Serial.println("%");
  
}
  delay(2000);
}

 

 

온습도 센서


https://projecthub.arduino.cc/arcaegecengiz/using-dht11-12f621

 

[아두이노 배선]

 

[코드 작성]

 

#include <dht11.h>
#define DHT11PIN 4     //핀 설정 변경가능하므로 다른 핀도 해보기

dht11 DHT11;

void  setup()
{
  Serial.begin(9600);
 
}

void loop()
{
  Serial.println();

  int chk = DHT11.read(DHT11PIN);

  Serial.print("Humidity (%): ");
  Serial.println((float)DHT11.humidity, 2);

  Serial.print("Temperature  (C): ");
  Serial.println((float)DHT11.temperature, 2);

  delay(2000);

}

 

 

 

리모컨 HOW TO SET UP AN IR REMOTE AND RECEIVER ON AN ARDUINO


https://www.circuitbasics.com/arduino-ir-remote-receiver-tutorial/

 

 

 

[참고 사이트]

[참고1 - 아두이노&라즈베리파이] https://www.circuitbasics.com/arduino/