한 걸음 두 걸음
아두이노-안드로이드 원격 웹 제어 ] 웹에서 아두이노 모듈 제어하기 본문
반응형
#include <IoTStarterKit_WiFi.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2 //온도센서의 데이터선을 2번 pin에 연결
#define TAG_ID A
char *A[]={"Temperature","led","Light"};
int i;
int val; //조도센서변수
int cds=A0; //조도센서데이터
int mapping; //조도센서데이터 가공
OneWire ourWire(ONE_WIRE_BUS);
DallasTemperature sensors(&ourWire);//oneWire선언한 것을 sensors 선언시 참조함.
//wifi Shield
#define WIFI_SSID "ICT-LAB-2.4G" //와이파이 SSID
#define WIFI_PASS "12345678" //와이파이 비밀번호
//IoTMakers
IoTMakers g_im;
#define deviceID "gkskfhD1563338248460" //아이디
#define authnRqtNo "uspbxao7h" //패스워드
#define extrSysID "OPEN_TCP_001PTL001_1000007512" //게이트웨이 연결 ID
//IoT Makers 접속을 초기화 하는 함수
void init_iotmakers()
{
while(1)
{
// AP 접속
Serial.print("Connect to AP...");
while(g_im.begin(WIFI_SSID, WIFI_PASS)<0) {
Serial.println("retrying.");
delay(1000);
}
Serial.println("success");
// 인자값으로 받은 정보로 KT IoT Makers 접속
g_im.init(deviceID, authnRqtNo, extrSysID);
// IoTMakers 플랫폼 연결
Serial.print("Connect to platform... ");
while ( g_im.connect() < 0 ){
Serial.println("retrying.");
delay(1000);
}
Serial.println("success");
//IoTMakers 플랫폼 인증
Serial.print("Auth... ");
if(g_im.auth_device() >= 0) {
Serial.println("success ");
return;
}
Serial.println("fail");
}
}
void setup()
{
Serial.begin(9600);
sensors.begin();
init_iotmakers();
}
void loop()
{val=analogRead(cds); //조도센서읽은값을 변수에저장
mapping=map(val,0,1023,0,255);//0~1023 -> 0~50 변환
if(i==3){i=0;}
while(i<3) {
static unsigned long tick = millis();
// 만약 플랫폼 접속이 종료되었을 경우 다시 접속
if(g_im.isServerDisconnected() == 1)
{
init_iotmakers();
}
// 센서 값을 읽어오는 시간 설정
if ( ( millis() - tick) > 1000 )
{
send_temperature();
tick = millis();
}
// IoTMakers 플랫폼 수신처리 및 keepalive 송신
g_im.loop();
i++;
delay(300);}
}
int send_temperature()
{
// 센서 값을 읽어온다.
sensors.requestTemperatures();
int data[] = {sensors.getTempCByIndex(0),val,mapping};
// 시리얼모니터에 온도값 출력
Serial.print("전송데이터 : ");
Serial.print(data[i]);
Serial.println("ok");
if ( g_im.send_numdata(TAG_ID[i], (double)data[i]) < 0 ) { // 센서값 전송
Serial.println(F("fail"));
return -1;
}
return 0;
}
제어부분 에러떠서 제어소스 지워놓은 tree래ㅠㅋㅋㅋ그래서
void mycb_strdata_handler(char *tagid, char *strval)
{
if(strcmp(TAG_ID[3], tagid) == 0 && strcmp(strval, "on") == 0)
{
digitalWrite(led,HIGH);
Serial.println("32도 초과로 led on");
}
else if ( strcmp(TAG_ID[3], tagid) == 0 && strcmp(strval, "off") == 0 ){
digitalWrite(led,LOW);
Serial.println("led off");
}
추가하고 Templed 추가 if(3을 4로 변경)하면 완성됩니다.
반응형
'Arduino' 카테고리의 다른 글
아두이노에서 변수를 문자열로 만들기 : String()함수 (0) | 2021.07.02 |
---|---|
아두이노 IoT ] 유선 연결(Ethernet) 원격 통신 (0) | 2020.09.09 |
arduino ] 간단한 시리얼통신 (0) | 2019.07.17 |
arduino - mobile간 실시간 인터넷 통신 참고자료 (0) | 2019.07.10 |
android - arduino bluetooth 통신으로 앱에서 LED 제어하기 && 앱에서 LED 상태값 실시간 확인하기 (0) | 2019.07.09 |