728x90
Farm1st 온습도 보드에서 아두이노로 건구 온도, 습구 온도, 외기 온도, 습도를 전송합니다.
아두이노 RS232 과 RS 485 모듈을 통하여 데이터를 수신합니다.
시리얼모니터를 통하여 온도/습도 데이터를 표시합니다.
Farm1st 온습도 송신보드와 연결된 아두이노 보드 소스코드입니다.
RS485 수신모듈을 부착하여 데이터 수신합니다.
#include <SoftwareSerial.h>
SoftwareSerial rx485(2,3);
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
rx485.begin(9600);
}
char buffer[128] = { 0x00, };
void getline(char * buffer)
{
uint8_t idx = 0;
char c;
do
{
while (rx485.available() == 0) ; // wait for a char this causes the blocking
c = rx485.read();
buffer[idx++] = c;
}
while (c != '\n' && c != '\r');
buffer[idx] = 0;
}
float data[5];
void loop() {
// put your main code here, to run repeatedly:
#if 0
if(0 < rx485.available())
{
char ch = rx485.read();
Serial.print(ch);
}
#else
getline(buffer);
Serial.print(buffer);
/* get the first token */
char separator[] = ",";
char *token;
token = strtok(buffer, separator);
// Find any more?
int pos = 0;
while(token != NULL)
{
// Serial.println(token);
data[pos] = atof(token);
// Serial.println(data[pos]);
pos += 1;
token = strtok(NULL, separator);
}
if(5 <= pos) {
int temp = (((int)data[0] + (int)data[1] + (int)data[2] + (int)data[3]) );
if((int)temp == (int)data[4])
{
Serial.print(data[0]); Serial.print(',');
Serial.print(data[1]); Serial.print(',');
Serial.print(data[2]); Serial.print(',');
Serial.print(data[3]); Serial.print(' ');
Serial.println("OK!");
}
else {
Serial.print(temp);
Serial.print(',');
Serial.print(data[4]); Serial.println(" Failed!");
}
}
#endif
}
References
'스마트팜 > 온습도보드 RS485' 카테고리의 다른 글
스마트팜 측정/제어 보드 (0) | 2021.05.24 |
---|---|
TEMP3 HUMI 스마트팜 보드 업로드 (0) | 2021.01.05 |
FARM1sT Temperature, Humidity rs485 Board (0) | 2020.12.01 |