산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

Arduino Nano로 소형 기상 관측소 만들기 - 쉬운 DIY 가이드

부품 및 소모품

Arduino Nano R3 1
DHT11 모듈 (온습도) 1
BMP-280 기압 센서 1
1.44인치 ST7735 LCD 디스플레이 1
3D 프린팅 인클로저 1
USB A to Mini USB B 케이블 1

필수 도구 및 장비

앱 및 온라인 서비스

프로젝트 소개

소개

실시간 물리 데이터 수집은 언제나 매력적입니다. 이 프로젝트에서는 날씨 예측의 3가지 기본 파라미터인 온도, 습도, 대기압을 실시간으로 측정하고 LCD 화면에 표시할 수 있습니다.

설명 및 작동 원리

사용된 센서는 BMP-280과 DHT-11입니다. BMP-280은 온도와 대기압을, DHT-11은 상대 습도를 측정합니다. BME-280(습도도 측정 가능)을 쓰면 센서 하나로 끝내지만, 비용을 고려하면 이 조합이 DIY에 훨씬 경제적입니다. DHT-11도 온도 측정이 가능하지만 해상도가 ±2℃로 BMP-280의 ±0.5℃보다 낮아 습도 전용으로만 사용했습니다.

이 프로젝트의 핵심은 Arduino NANO 보드입니다. UNO보다 저렴해 NANO를 선택했습니다. 디스플레이는 1.44인치 ST7735 시리즈 TFT LCD를 사용했으며, 더 큰 화면은 NANO에 부담이 될 수 있어 피했습니다.

회로 및 프로그래밍

회로도와 블록도를 결합해 부품 연결을 이해하기 쉽게 제공했습니다. 핀아웃 표도 포함했습니다. 다이어그램과 표를 보면 Arduino NANO의 ICSP 헤더 5V와 GND 핀을 이용해 부품에 전원을 공급하고 있어 별도 전원 없이도 시스템을 가볍게 만들 수 있습니다.

프로그래밍 측면에서는 여러 라이브러리를 포함해 코드를 간결하게 했습니다. 특히 Wire.h는 BMP-280과 ST7735 같은 I2C/TWI 장치 통신을, SPI.h는 ST7735와의 직렬 주변 장치 인터페이스를 담당합니다. 센서 초기화 후 LCD 레이아웃, 폰트 색상 등을 설정하고, 메인 루프에서 센서 값을 읽어 적절한 지연을 두고 표시합니다.

제작 및 테스트

프로토타입은 모듈식으로 구성하고 점퍼 와이어로 연결해 납땜하지 않았습니다. 덕분에 트러블슈팅과 수리가 쉽고 조립도 간편합니다. 기기 케이스는 부품에 딱 맞게 맞춤 3D 프린팅했으며, 센서가 측정 대상에 노출되고 내부 열이 방출되도록 적절한 통풍구를 냈습니다. 전원은 프로그래밍용과 같은 USB A to Mini B 케이블로 공급합니다.

실내에서 PC USB 포트와 5V 스마트폰 충전기로 장시간 테스트한 결과, 온라인 기상 데이터와 꽤 정확하게 일치했습니다(제작 비용과 개발 시간 고려 시).

결론

이 프로젝트는 경제적이고 실용적이며, 무엇보다 주머니에 쏙 들어가는 작고 편리한 기상 관측소를 직접 만든다는 즐거움이 있습니다.

전자 부품 구매는 UTSOURCE에서 주문하세요.

참고 자료

Arduino Nano로 소형 기상 관측소 만들기 - 쉬운 DIY 가이드
Arduino Nano로 소형 기상 관측소 만들기 - 쉬운 DIY 가이드
Arduino Nano로 소형 기상 관측소 만들기 - 쉬운 DIY 가이드
Arduino Nano로 소형 기상 관측소 만들기 - 쉬운 DIY 가이드

코드

메인 스케치 (C/C++)

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_ST7735.h>
#include <Adafruit_BMP280.h>
#include "DHT.h"

#define DHTPIN 2
#define DHTTYPE DHT11
#define TFT_RST 8
#define TFT_CS 10
#define TFT_DC 9

Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);
#define BMP280_I2C_ADDRESS 0x76
Adafruit_BMP280 bmp280;
DHT dht(DHTPIN, DHTTYPE);

void setup(void) {
  dht.begin();
  tft.initR(INITR_144GREENTAB);
  tft.fillScreen(ST77XX_BLACK);
  tft.drawFastHLine(0, 15, tft.width(), ST77XX_CYAN);
  tft.setTextColor(ST77XX_CYAN, ST77XX_BLACK);
  tft.setTextSize(1);
  tft.setCursor(25, 5);
  tft.print("WEATHER BUDDY");

  if (bmp280.begin(BMP280_I2C_ADDRESS) == 0) {
    tft.setTextColor(ST77XX_RED, ST77XX_CYAN);
    tft.setTextSize(2);
    tft.setCursor(5, 76);
    tft.print("Connection");
    tft.setCursor(35, 100);
    tft.print("Error");
    while (1);
  }

  tft.drawFastHLine(0, 55, tft.width(), ST77XX_CYAN);
  tft.drawFastHLine(0, 95, tft.width(), ST77XX_CYAN);
  tft.setTextColor(ST77XX_RED, ST77XX_BLACK);
  tft.setCursor(30, 20);
  tft.print("TEMPERATURE ");
  tft.setTextColor(ST77XX_CYAN, ST77XX_BLACK);
  tft.setCursor(40, 60);
  tft.print("HUMIDITY ");
  tft.setTextColor(ST77XX_GREEN, ST7735_BLACK);
  tft.setCursor(40, 100);
  tft.print("PRESSURE ");
  tft.setTextSize(2);
}

void loop() {
  char _buffer[8];
  float temp = bmp280.readTemperature();
  float hum = dht.readHumidity();
  float pres = bmp280.readPressure();

  // 온도 출력 (℃)
  if (temp < 0)
    sprintf(_buffer, "-%02u.%02u", (int)abs(temp), (int)(abs(temp) * 100) % 100);
  else
    sprintf(_buffer, " %02u.%02u", (int)temp, (int)(temp * 100) % 100);
  tft.setTextColor(ST77XX_YELLOW, ST77XX_BLACK);
  tft.setCursor(11, 34);
  tft.print(_buffer);
  tft.drawCircle(89, 34, 2, ST77XX_YELLOW); // 도 기호
  tft.setCursor(95, 34);
  tft.print("C");

  // 습도 출력 (%)
  sprintf(_buffer, "%02u ", (int)hum);
  tft.setTextColor(ST77XX_MAGENTA, ST77XX_BLACK);
  tft.setCursor(45, 74);
  tft.print(_buffer);
  tft.setCursor(75, 74);
  tft.print("%");

  // 기압 출력 (hPa)
  sprintf(_buffer, "%04u.%02u", (int)(pres/100), (int)((uint32_t)pres % 100));
  tft.setTextColor(ST77XX_ORANGE, ST77XX_BLACK);
  tft.setCursor(3, 112);
  tft.print(_buffer);
  tft.setCursor(91, 112);
  tft.print("hPa");

  delay(1000);
}

커스텀 파트 및 인클로저

사용한 3D 프린팅 부품의 STL 파일입니다.

회로도

아래 배선을 따르세요.

Arduino Nano로 소형 기상 관측소 만들기 - 쉬운 DIY 가이드

제조공정

  1. 라즈베리 파이 2와 ADS-WS1로 야외 기상 관측소 구축하기
  2. 라즈베리 파이 기상 관측소 만들기: 매일 이메일로 날씨 데이터 전송
  3. 라즈베리 파이 3와 PubNub로 원격 기상 모니터링하기
  4. 고급 기상 관측소 v2.0: 실시간 온도, 기압, 습도, 고도 모니터링
  5. 아두이노 나노 RP2040으로 만드는 DIY 포토샵 컨트롤 콘솔
  6. 아두이노 프로 미니 & DS1302 RTC로 정밀 7세그먼트 시계 만들기
  7. 1만 원대 휴대용 아두이노 날씨 스테이션 – 나노, DHT22, BMP180, LCD로 직접 제작
  8. eDOT: 내장 IR 리모컨·자동 밝기 조절 갖춘 정밀 아두이노 시계·기상 관측소
  9. 아두이노 나노와 RDA8057M으로 소형 FM 라디오 만들기
  10. 아두이노 & ThingSpeak로 실시간 날씨 모니터링 IoT 구축