BASIC4MCU | 질문게시판 | THC-Soil Sensor with TTL 모듈 아두이노 센서값 받아오기
페이지 정보
작성자 ppiickle 작성일2023-05-30 02:11 조회535회 댓글1건본문
![]() | Arduino 토양 NPK 센서를 사용하여 토양 영양소 측정이 튜토리얼에서는 토양 NPK 센서를 Arduino 보드와 인터페이스하고 토양에 존재하는 주요 토양 영양소 Nitrogen-N, Phosphorus-P 및 Potassium-K의 값을 측정하고 I2C 지원 및 직렬 모니터를 사용하여 … 기린 |
안녕하세요.
THC 토양센서값을 받고싶습니다. (Temperature, Humidity, Conductivity)
THC센서 보다 NPK센서에 대한 자료와 예시를 바탕으로 코드 작성해봤는데 도저히 값이 255, FFFFFFF의 값만 출력되네요,
https://dl.artronshop.co.th/CWT-RS485-Soil/THC-S%20manual.pdf
위 PDF는 제가 가지고 있는 센서 메뉴얼 및 데이터시트 입니다.
#include <SoftwareSerial.h> #include <Wire.h> #include <RS485.h>
#define RE 8 // RE값을 8로 지정 (핀번호) #define DE 7 // RE값을 7로 지정 (핀번호)
const byte htc[] = {0x01, 0x03, 0x00, 0x00, 0x00, 0x03, 0x05, 0xCB}; // Master send byte values[11]; // SoftwareSerial mod(0, 1);
void setup() { Serial.begin(9600); mod.begin(4800); Wire.begin(0x30); pinMode(RE, OUTPUT); pinMode(DE, OUTPUT); }
byte Humidity() { digitalWrite(DE,HIGH); digitalWrite(RE,HIGH); delay(10); if(mod.write(htc,sizeof(htc))==8) { digitalWrite(DE,LOW); digitalWrite(RE,LOW); for(byte i=0;i<6;i++) { //Serial.print(mod.read(),HEX); values[i] = mod.read(); Serial.print(values[i],HEX); } Serial.println(); } return values[1]; }
/* byte humidity() {
digitalWrite(DE, HIGH); digitalWrite(RE, HIGH); delay(10); if (mod.write(htc, sizeof(htc)) == 8) { digitalWrite(DE, LOW); digitalWrite(RE, LOW); for (byte i = 0; i < 6; i++) { values[i] = mod.read(); Serial.print(values[i], HEX); } Serial.println(); } return values[2];
} */ /* byte temperature() {
} */ /* byte conductivity() { //return values[4]; } */ void loop() { byte h = Humidity(); Serial.println(h);
/* byte h = humidity(); byte t = temperature(); byte c = conductivity();
Serial.print("Humidity: "); Serial.print(h); Serial.print(" H= "); Serial.print(h, DEC); Serial.print(" => humidity= "); Serial.print(h * 256 + t); Serial.print(" => humidity= "); Serial.print((h * 256 + t) / 10.0); Serial.println("%");
Serial.print("Temperature: "); Serial.print(t); Serial.print(" H= "); if (t >= 0x80) { t = 0xFF - t + 1; Serial.print("-"); } Serial.print(t, DEC); Serial.print(" => temperature= "); Serial.print(t / 10.0); Serial.println("°C");
Serial.print("Conductivity: "); Serial.print(c); Serial.print(" H= "); Serial.print(c, DEC); Serial.print(" => Conductivity = "); Serial.print(c); Serial.println(" us/cm"); */ delay(1000); } |
현재 작성한 코드는 위와 같습니다.
온갖 유투브 구글링, 챗쥐피티를 활용해서 공부해봤는데도 감이 잡이질않네요.
https://www.youtube.com/watch?v=vyb_qHuY6DA&t=408s
https://fishpoint.tistory.com/6938
-> 코드 작성 및 자료 첨부해드립니다.
제가 데이터시트에서 간과하고 있는것이나, 다른 점에서 놓치고 있는 부분이 있을지 알려주시면 감사하겠습니다.
댓글 1
조회수 535master님의 댓글
master 작성일
Modbus에 관련된 코드는 보이지 않네요?
정상동작하는 예제부터 찾으셔야겠습니다.