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

Arduino Nano를 사용한 미니 기상 관측소

구성품 및 소모품

Arduino Nano R3
× 1
DHT 11 모듈
× 1
BMP-280 압력 센서
× 1
1.44인치 ST7735 LCD 디스플레이
× 1
3D 인쇄 인클로저
× 1
USB A - 미니 USB B 케이블
× 1

필요한 도구 및 기계

납땜 인두(일반)
3D 프린터(일반)
납땜 와이어
양면 테이프

앱 및 온라인 서비스

Arduino IDE
오토데스크 퓨전 360

이 프로젝트 정보

소개

실시간으로 물리적 데이터를 캡처하는 것은 항상 매력적입니다. 이 프로젝트에서는 기상 예측 즉, 세 가지 기본 물리적 매개변수를 캡처할 수 있을 뿐만 아니라 온도, 습도 및 대기압뿐만 아니라 LCD 화면에 실시간 데이터를 표시할 수도 있습니다.

설명 및 작동 원리

이 프로젝트에 사용된 두 개의 센서는 BMP-280과 DHT-11입니다. 전자는 온도와 대기압을 감지하고 후자는 상대 습도를 감지합니다. DHT-11은 BMP-280 대신 BME-280(습도 측정도 가능)을 사용하여 수행할 수 있었지만 비용을 고려하면 여기에 사용된 센서 조합을 사용하는 것이 DIY에 훨씬 더 경제적입니다. 프로젝트. 또한 DHT-11은 온도와 습도를 모두 감지할 수 있지만 온도 감지 분해능이 BMP-280의 +/-.5°에 비해 +/-2°이기 때문에 습도 감지에만 사용된다는 점에 유의해야 합니다. 이 프로젝트의 핵심은 Arduino NANO 개발 보드입니다. 여기서도 NANO 보드는 저렴한 가격 때문에 대중적으로 선호되는 UNO보다 선택되었습니다. 1.44” ST7735 시리즈 TFT LCD 화면이 우리 프로젝트의 디스플레이로 사용됩니다. 아두이노 나노에 과부하가 걸리지 않도록 더 큰 화면은 피했습니다.

회로 및 프로그래밍

회로도와 블록도의 조합은 제조사가 구성 요소의 물리적 구성과 연결을 이해할 수 있도록 최대한 편리하게 제공되었습니다. 구성 요소의 핀아웃을 위한 테이블도 제공되어 일을 더 쉽게 만듭니다. 다이어그램과 표를 살펴보면 Arduino NANO의 ICSP 헤더의 5V 및 GND 핀이 온보드 전원 및 접지 핀과 함께 구성 요소에 전원을 공급하는 데 사용되었음을 알 수 있습니다. 이것은 시스템을 부피가 커지게 만드는 추가 전원을 없애기 위해 수행되었습니다.

프로그래밍과 관련하여 첫 번째 부분에는 프로그래밍을 짧고 간단하게 유지하기 위해 라이브러리 배열이 포함되었습니다. 명백한 것들 외에도 Wire.h 및 SPI.h 라이브러리는 언급할 가치가 있습니다. Wire.h는 Arduino가 BMP-280 및 ST7735 LCD 및 SPI.h와 같은 I2C/TWI 장치와 통신할 수 있게 해주는 라이브러리이기 때문입니다. ST7735 LCD와 직렬 주변 장치 인터페이스를 제공합니다. 두 번째 부분에서는 센서를 초기화하고 LCD의 레이아웃, 글꼴 색상 등을 설정하여 기본 설정에 따라 데이터를 표시합니다. 프로그래밍의 마지막 부분에서 센서의 출력을 얻어 안정적으로 유지하기 위해 각 판독 사이에 편리한 지연을 표시합니다.

건설 및 테스트

프로토타입에서 구성 요소는 모듈식으로 유지되고 납땜 대신 ​​점퍼 와이어를 사용하여 연결되었습니다. 이를 통해 문제 해결 및 수리가 간편할 뿐만 아니라 조립 프로세스가 번거롭지 않게 됩니다. 장치 케이스는 구성 요소에 완벽하게 맞도록 맞춤형 3D 인쇄되었습니다. 케이스에는 센서를 측정량에 노출시키고 감지 요소를 방해할 시스템에서 생성된 열을 분산시키기 위해 적절한 환기가 제공됩니다. 이 장치는 Arduino를 프로그래밍하는 데 사용되는 동일한 유형의 AUSB에서 유형 B 미니 USB를 통해 전원이 공급됩니다. 프로토타입은 PC USB 포트와 5V 스마트폰 충전기를 전원으로 사용하여 몇 시간 동안 실내에서 단번에 테스트되었습니다. 제작 비용과 개발 시간을 감안하면 온라인 기상 데이터와 비교했을 때 상당히 정확한 결과다.

결론

결론적으로 이 프로젝트는 매우 경제적이고 유용하며 가장 중요한 것은 주머니에 쏙 들어가는 작고 편리한 기상 관측소가 있다는 것이 재미있습니다.

전자 부품을 구입하려면 UTSOURCE에서 주문하십시오.

참고 문헌

· Google.com

· Arduino.cc

· 마이텍터닷컴


<섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

코드

<울>
  • 코드
  • 코드C/C++
    이것은 프로젝트에 대한 관련 스케치입니다. 설명문은 작업을 설명합니다
    #include  //직렬 주변기기 인터페이스 라이브러리 포함#include  //투와이어 인터페이스 라이브러리 포함#include  // Adafruit 그래픽 라이브러리 포함#include  // Adafruit ST7735 TFT 라이브러리 포함#include  // Adafruit BMP280 센서 라이브러리 포함#include "DHT.h" //DHTXX 센서 포함 library#define DHTPIN 2 //DHT11 데이터 핀이 arduino 핀 D2에 연결됨#define DHTTYPE DHT11 //사용된 DHT 센서 유형 지정#define TFT_RST 8 // TFT RST 핀이 arduino 핀 D8에 연결됨#define TFT_CS 10 // TFT CS 핀은 arduino 핀 D9#define TFT_DC 9에 연결됨 // TFT DC 핀은 arduino 핀 D10에 연결됨 // ST7735 SERIES TFT 라이브러리 초기화Adafruit_ST7735 tft =Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST); // 디바이스 I2C 주소 정의:0x76 또는 0x77(0x77은 라이브러리 기본 주소)#define BMP280_I2C_ADDRESS 0x76 Adafruit_BMP280 bmp280; // Adafruit BMP280 라이브러리 초기화DHT dht(DHTPIN, DHTTYPE); // DHT 센서 초기화 void setup(void){ dht.begin(); // DHT 센서 동기화 tft.initR(INITR_144GREENTAB); // ST7735S 칩 초기화, 검은색 탭 tft.fillScreen(ST77XX_BLACK); // 검은색 배경 설정 tft.drawFastHLine(0, 15 , tft.width(), ST77XX_CYAN);// (0, 15) 위치에 가로 구분선 그리기 tft.setTextColor(ST77XX_CYAN, ST77XX_BLACK); // 텍스트 색상을 흰색과 검정색 배경으로 설정 tft.setTextSize(1); // 텍스트 크기를 1로 설정 //tft.setCursor(4, 0); // 커서를 (4, 0) 픽셀 위치로 이동 //tft.print("ARDUINO + ST7735 TFT"); tft.setCursor(25, 5); // 커서를 (25, 5) 픽셀 위치로 이동합니다. tft.print("WEATHER BUDDY"); // BMP280 센서 초기화 if( bmp280.begin(BMP280_I2C_ADDRESS) ==0 ) { // 연결 오류 또는 장치 주소가 잘못되었습니다! tft.setTextColor(ST77XX_RED, ST77XX_CYAN); // 텍스트 색상을 빨간색과 검은색 배경으로 설정 tft.setTextSize(2); // 텍스트 크기를 2로 설정 tft.setCursor(5, 76); // 커서를 (5, 76) 픽셀 위치로 이동합니다. tft.print("Connection"); tft.setCursor(35, 100); // 커서를 (35, 100) 위치로 이동 픽셀 tft.print("Error"); 동안(1); // 여기에 있어라 } tft.drawFastHLine(0, 55, tft.width(), ST77XX_CYAN); // (0, 55)픽셀 위치에 수평 구분선을 그립니다. tft.drawFastHLine(0, 95, tft.width(), ST77XX_CYAN); // (0, 195)픽셀 위치에 가로 구분선 그리기 tft.setTextColor(ST77XX_RED, ST77XX_BLACK); // 텍스트 색상을 빨간색과 검은색 배경으로 설정 tft.setCursor(30, 20); // 커서를 (30, 20) 픽셀 위치로 이동합니다. tft.print("TEMPERATURE "); // 첫 번째 섹션의 제목 설정 tft.setTextColor(ST77XX_CYAN, ST77XX_BLACK); // 텍스트 색상을 청록색과 검정색 배경으로 설정 tft.setCursor(40, 60); // 커서를 (40, 60) 픽셀 위치로 이동합니다. tft.print("HUMIDITY "); // 두 번째 섹션의 제목 설정 tft.setTextColor(ST77XX_GREEN, ST7735_BLACK); // 텍스트 색상을 녹색과 검정색 배경으로 설정 tft.setCursor(40, 100); // 커서를 (40, 100) 위치로 이동 픽셀 tft.print("PRESSURE "); // 세 번째 섹션의 제목 설정 tft.setTextSize(2); // 텍스트 크기를 2로 설정 } // 메인 loopvoid loop() { char _buffer[8]; // BMP280 센서에서 온도, 습도 및 압력을 읽습니다. float temp =bmp280.readTemperature(); // 온도를 °C로 가져옵니다. float hum =dht.readHumidity(); // 습도를 rH%로 가져옵니다. float pres =bmp280.readPressure(); // hPa 단위로 압력을 얻습니다. // 인쇄 온도(°C) if(temp <0) // 온도 <0이면 sprintf( _buffer, "-%02u.%02u", (int)abs(temp), (int) )(절대(온도) * 100) % 100 ); else // if 온도>=0 sprintf( _buffer, " %02u.%02u", (int)temp, (int)(temp * 100) % 100 ); // 값 근사값 설정 tft.setTextColor(ST77XX_YELLOW, ST77XX_BLACK ); // 텍스트 색상을 노란색과 검은색 배경으로 설정 tft.setCursor(11, 34); // 커서를 (11,34) 픽셀 위치로 이동 tft.print(_buffer); // BMP-280 센서에서 온도를 인쇄합니다. tft.drawCircle(89, 34, 2, ST77XX_YELLOW); // 도 기호 인쇄( ° )(*가 대신 사용되는 경우 생략 가능) tft.setCursor(95, 34); // 커서를 (95,34) 위치로 이동 픽셀 tft.print("C"); // 섭씨 기호를 인쇄합니다. // 2:습도(%)를 인쇄합니다. sprintf( _buffer, "%02u ", (int)(hum)); // 근사값 설정 tft.setTextColor(ST77XX_MAGENTA, ST77XX_BLACK); // 텍스트 색상을 자홍색과 검정색 배경으로 설정 tft.setCursor(45, 74); // 커서를 (45,74) 픽셀 위치로 이동 tft.print(_buffer); // DHT-11 센서의 습도를 출력합니다. tft.setCursor(75, 74); // 커서를 (75,74) 픽셀 위치로 이동 tft.print("%"); // 백분율 기호 인쇄 // 3:압력(hPa 단위) 인쇄 sprintf( _buffer, "%04u.%02u", (int)(pres/100), (int)((uint32_t)pres % 100) ); // 근사값 설정 tft.setTextColor(ST77XX_ORANGE, ST77XX_BLACK); // 텍스트 색상을 주황색과 검정색 배경으로 설정 tft.setCursor(3, 112); // 커서를 (3,112)픽셀 위치로 이동 tft.print(_buffer); // BMP-280에서 대기압 인쇄 tft.setCursor(91, 112); // 커서를 (91,112)픽셀 위치로 이동 tft.print("hPa"); // 대기압 단위를 헥토 파스칼로 출력합니다. delay(1000); // 다음 센서 판독을 수행하기 전에 1초 기다림 }

    맞춤형 부품 및 인클로저

    이것은 내가 사용한 3D 인쇄 부품의 STL 파일입니다.

    회로도

    표시된 배선을 따르기만 하면 됩니다.

    제조공정

    1. Raspberry Pi 2 기상 관측소
    2. 라즈베리 파이 기상 관측소
    3. Raspberry Pi를 사용한 원격 날씨 모니터링
    4. Weather Station V 2.0
    5. Arduino Nano RP 2040을 사용하는 DIY Photoshop 편집 콘솔
    6. 7-세그먼트 어레이 시계
    7. $10 휴대용 Arduino 기상 관측소(AWS)
    8. eDOT - Arduino 기반 정밀 시계 및 기상 관측소
    9. Arduino 및 RDA8057M을 사용하는 FM 라디오
    10. ThingSpeak Arduino 기상 관측소