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

배터리 구동 MKR FOX 1200 기상 관측소 만들기

부품 및 소모품

Arduino MKR Fox 1200 1
SparkFun 대기 센서 브레이크아웃 - BME280 1
TSL2561 디지털 조도 센서 1
HTU21D 온습도 센서 1

앱 및 온라인 서비스

프로젝트 개요

참고: 이 튜토리얼은 구버전일 수 있습니다. 최신 버전은 여기를 참조하세요.

이 프로젝트는 MKR FOX 1200 보드와 여러 I2C 센서를 조합해 배터리로 구동되는 간단한 기상 관측소를 만드는 방법을 보여줍니다.

사용 센서

하드웨어 설정

모든 센서는 I2C 인터페이스를 사용하며 3.3V로 동작합니다. MKR FOX 1200에서 네 개의 선만 연결하면 됩니다: GND, 3.3V, SDA(핀 11), SCL(핀 12). 각 센서마다 고유한 I2C 주소를 가지므로 세 개의 센서를 병렬로 연결해도 라이브러리가 자동으로 구분합니다.

전원은 AA 또는 AAA 알칼라인 배터리 2개를 직렬로 연결해 3V를 만든 뒤, 보드의 나사 단자 블록에 연결하면 됩니다.

Sigfox 메시지 최적화

Sigfox 네트워크는 하루 최대 140회 전송 가능하므로, 데이터를 효율적으로 패킹해야 합니다. 메시지 최대 크기는 12바이트이며, float 타입은 4바이트를 차지하므로 더 작은 표현으로 변환해 전송합니다. 배포 환경에 맞춰 안전한 범위를 정한 뒤 백엔드에서 원래 값으로 복원하는 방식입니다.

클라우드 서비스 설정

두 가지 클라우드 서비스를 사용합니다:

FirstConfiguration 예제의 PAC와 ID를 사용해 보드를 Sigfox 백엔드에 등록합니다(이미 등록했다면 생략). 두 서비스가 서로 통신하며 데이터를 올바르게 해석하도록 설정해야 합니다. ThingSpeak에서 두 개의 채널을 생성하세요. 첫 번째 채널(readChannelID)은 원시 데이터를 수신하고, 두 번째 채널(writeChannelID)은 재조정된 데이터를 저장합니다.

Arduino Create Editor로 스케치 업로드

기본 스케치는 배포 전 모든 인프라를 테스트할 수 있게 해줍니다. 다음을 선언하세요:

oneshot = false

백엔드 설정이 완료되면 시리얼 포트를 열고 첫 메시지 전송을 확인하세요.

Sigfox 콜백 설정

  1. DEVICE TYPE → LIST → 보드 우클릭 → Edit
  2. 좌측 메뉴 CALLBACKS 클릭 → New 버튼 → Custom callback 선택
  3. 설정:
    • TYPE: DATA/UPLINK
    • Channel: URL
    • Http method: GET

Custom Payload:

status::uint:8 temp1::int:16:little-endian temp2::int:16:little-endian press::uint:16:little-endian hum::uint:16:little-endian light::uint:16:little-endian lastMsg::uint:8

URL Pattern:

https://api.thingspeak.com/update?api_key=XXXXXXXXXXXX&field1={customData#temp1}&field2={customData#press}&field3={customData#temp2}&field4={customData#hum}&field5={customData#light}&field6={customData#status}&field7={customData#lastMsg}

api_key를 ThingSpeak의 Channel1 Write API Key로 교체하세요. 저장 후 시리얼 포트를 열면 첫 메시지 전송을 확인할 수 있습니다.

원시 데이터에서 그래프로

ThingSpeak 분석 도구를 사용해 원시 데이터를 실제 값으로 변환합니다. 다음 MATLAB 코드를 분석기에 추가하고 React로 10분마다 실행되도록 예약하세요:

% TODO - 읽을 채널 ID: readChannelID = [];
% TODO - Read API Key: readAPIKey = 'T6UK7XO6A4H2AGT7';
% TODO - 쓸 채널 ID: writeChannelID = [];
% TODO - Write API Key: writeAPIKey = 'XU4TGY261P6B5USN';

%% 데이터 읽기 %%
data = thingSpeakRead(readChannelID, 'ReadKey', readAPIKey,'OutputFormat','table');
analyzedData = data;

%% 데이터 분석 %%
INT16_t_MAX = 32767;
UINT16_t_MAX = 65536;
analyzedData.('Temperature1') = data.('Temperature1') / INT16_t_MAX * 120;
analyzedData.('Temperature2') = data.('Temperature2') / INT16_t_MAX * 120;
analyzedData.('Pressure') = data.('Pressure') / UINT16_t_MAX * 200000;
analyzedData.('Light') = data.('Light') / UINT16_t_MAX * 100000;
analyzedData.('Humidity') = data.('Humidity') / UINT16_t_MAX * 110;

%% 데이터 쓰기 %%
thingSpeakWrite(writeChannelID, analyzedData, 'WriteKey', writeAPIKey);
%% 예약 액션: React → 10분마다 실행

자신의 채널 ID로 교체하면 원시 데이터가 실제 기상 값으로 변환되어 그래프로 표시됩니다.

코드

전체 스케치는 WeatherMonitor라는 이름으로 제공됩니다. Arduino Create Editor에서 열거나 GitHub 저장소에서 다운로드하세요.

제조공정

  1. 라즈베리 파이 기상 관측소 만들기: 매일 이메일로 날씨 데이터 전송
  2. 날씨 모니터 – 라즈베리파이 DIY 기상 관측소 (드롭박스 업로드)
  3. 아두이노로 모니터 앰비라이트(Ambilight) 시스템 직접 만들기
  4. K30 CO2 센서: 실시간 실내 공기질 모니터링
  5. 아두이노와 MAX30100으로 만드는 실시간 IoT 심박수 모니터
  6. 컴팩트 기상 관측소: 아두이노 나노 & ESP8266, BMP280 기압계 & OLED/노키아 LCD
  7. 디지털 신장계 제작: 아두이노 & 레이저 센서로 키 측정하기
  8. DFRobot 정전식 지문 인식 센서 아두이노/ESP8266 연동 가이드
  9. 아두이노 클라우드 센서 타워 만들기: 온도, 모션, 가스 모니터링
  10. Sharp GP2Y1010AU0F 센서로 정밀 공기질 모니터 만들기