티스토리 뷰


 

개요

 

- 아두이노와 온습도센서를 i2c 연결하여 온습도 정보를 얻어서

- 아두이노와 PC 연결하여 UART 온습도 정보를 전달한다.

- 5분이면 되는데 1 간격으로 전달할 예정 (PC에서 알아서 쓰시라)

 

준비물

 

- 아두이노 우노

- 온습도센서 AM2315

- 저렴한 제품도 있으나 어느정도 뽀대는 나도록 선정

- 저항 10 킬로옴 2 필요

 

소프트웨어

 

AM2315 arduino 검색하여 찾음: https://goo.gl/YHS65Q

- 예제 스케치: Download - Sketch File

- AM2315 라이브러리:Download - AM2315 Library (실제 i2c 통신 부분까지 들여다 보려면 여기를 보아야 함)

 

작업

 

회로 구현

 

1) 5V, GND 연결

2) 아두이노의 SCL, SDA 연결 - 각각 5V 전원과 10 킬로옴 저항 연결해줘야 (아래 보드는 아두이노는 아니니 주의)

 

  <이미지 출처http://cactus.io/hookups/sensors/temperature-humidity/am2315/hookup-arduino-to-am2315-temp-humidity-sensor>


 

라이브러리 설치

 

- 아두이노를 설치한 폴더의 라이브러리 폴더에 복사해넣는다.

 





센서 예제 실행

 

1) 다운로드 받은 스케치 파일을 실행. AM2315_Sketch.ino

2) 아두이노 IDE 에서 UART 설정

 




 

3) 실행 모니터링

 

- 업로드 아이콘을 눌러서 실행

 


 

- 시리얼 모니터로 확인 (Baud rate 9600)

 


 


 

 

센서 예제 수정

 

- 섭씨온도와 습도값만 보내기

- 특정 주기마다 보내기

 

* 아두이노에서 float 변수들과 string concat 하기.

- float 온도, 습도값과 콤마를 concat 하여 하나의 String 으로 만드는 방법을 코드에서 확인할

- F() macro string 저장공간이 넉넉한 Flash memory 저장한다.

- 참고링크: http://playground.arduino.cc/Learning/Memory

 

* 너무 interval delay() 보다는 millis() 이용하자.

- 참고링크: https://www.arduino.cc/en/Tutorial/BlinkWithoutDelay

 

원본: AM2315_Sketch.ino

#include <Wire.h>

#include "cactus_io_AM2315.h"

 

AM2315 am2315;

 

void setup() {

  Serial.begin(9600);

  Serial.println("AM2315 Humidity - Temperature Sensor");

  Serial.println("RH\t\tTemp (C)\tTemp (F)");

 

 

  if (!am2315.begin()) {

     Serial.println("Sensor not found, check wiring & pullups!");

     while (1);

  }

}

 

void loop() {

  

  am2315.readSensor();

  

  Serial.print(am2315.getHumidity()); Serial.print(" %\t\t");

  Serial.print(am2315.getTemperature_C()); Serial.print(" *C\t");

  Serial.print(am2315.getTemperature_F()); Serial.println(" *F\t");

 

  // Add a 2 second

  delay(2000);

}

수정. temp_humid.ino

#include <Wire.h>

#include "cactus_io_AM2315.h"

 

AM2315 am2315;

const unsigned long interval = 120// second(s)

unsigned long previousMillis = 0;

 

void send_sensor_data() {

  am2315.readSensor();

 

  float temparature = am2315.getTemperature_C();

  float humidity = am2315.getHumidity();

 

  String sensor_data = String(temparature, 2+ F(","+ String(humidity, 2); 

  Serial.println(sensor_data); 

}

 

void setup() {

  Serial.begin(9600);

 

  if (!am2315.begin()) {

     Serial.println("0xDEAD");

     while (1);

  

  send_sensor_data();

}

 

void loop() {

 

  unsigned long currentMillis = millis();

  unsigned long elapsedMillis = currentMillis - previousMillis;

 

  if (elapsedMillis >= (interval * 1000))

  {

    previousMillis = currentMillis;  

    send_sensor_data();

  }

 

  delay(100);

  

}

 

PC 수신 확인

 

위에서 아두이노 IDE 시리얼 모니터로도 확인 가능하지만

TeraTerm 이용해서 확인해본다.

 

1) 설정에서 Serial 선택하고 아두이노가 연결된 COM port 선택한다

 


 

2) 설정확인

 



 

 

3) 값이 들어오고 있다.

 


 

 

마지막으로, 이렇게 구현한 것을 다른 PC에서 동작시키려면?

 

이렇게 개발 PC 에서 작업한 다음, 다른 PC 설치(?) 필요가 있다.

 

1) 구현한 .ino 파일과 동일한 폴더를 만든다. (여기선 temp_humid )

2) 아두이노 라이브러리 폴더에 복사해 넣었던 cactus_io_AM2315 폴더의 파일들을 모두 복사해 옮겨넣는다.

3) 폴더째로 원하는 PC 옮긴 후에 .ino 파일을 실행하면 된다.

 


반응형
반응형
잡학툰 뱃지
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함