위즈네트 아카데미

TUTORIAL

튜토리얼

Home  > 튜토리얼
이번 포스팅은 지난 메이커페어에서 위즈네트 부스에서 데모를 진행했던 클라우드 서버의 하나인 Xively 사이트를 통해 초음파 센서값을 모니터링하는 방법에 대해서 설명합니다. 초음파 센서를 제어하기 위해서 Arduino Uno 보드를 활용하였으며, 이를 이더넷으로 연결하기 위해 위즈네트의 ioShield-A 를 활용합니다.

사용제품 및 프로그램


- Arduino Uno (MCU)
- Ethernet Shield (ioShield-A / WIZnet)
- Ultrasonic seonsor (NT-TS601, OEM)
- Temperature (DHT11, DFRobot)
- LED, 저항
- 몇개의 점퍼선
- Fritzing
- Arduino Sketch

다음은 Fritzing 에서 그린 겁니다.
Fritz

 

전체 구성도는 다음과 같습니다.

ultrasonic_diagram

 

IP의 경우 초기값을 세팅해주고, 나중에 DHCP Server로부터 할당을 받으면 ip주소가 변경되며, 그렇지 않을 경우에는 default ip를 사용하게 됩니다.

#define APIKEY "YfqMfUI4h9QIZ0dL8JQTpqfhIfaeXwGOc7qrpPeoFHecVPEI" // replace your Xively api key here
#define FEEDID 863324820 // replace your feed ID
#define USERAGENT "make fair" // user agent is the project name

#define ledPin 8
#define sonicPin 7
#define tempPin 6
// assign a MAC address for the ethernet controller.
// fill in your address here:
byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
};

// fill in an available IP address on your network here,
// for manual configuration:
IPAddress ip(192, 168, 122, 5);

// initialize the library instance:
EthernetClient client;

// if you don't want to use DNS (and reduce your sketch size)
// use the numeric IP instead of the name for the server:
//IPAddress server(216,52,233,121); // numeric IP for api.xively.com
char server[] = "api.xively.com"; // name address for xively API

 

아래의 함수는 초음파센서 값을 cm/inch로 변경해주는 함수입니다.
long cmtomicro(long a){
return a/29/2;
}
long inchtomicro(long b){
return b/74/2;
}

아래의 내용은 초음파센서의 값이 10cm이하일경우 LED에 불이 들어오게 하는 부분입니다. String dataString = "Ultra," 와  dataString += "nTemperature, " 의 경우에는 xively에 만들어놓은 channel이름과 동일해야합니다. (아래 그림 참조)
ultrasonic_channel

int ultra_sensorReading= cmtomicro(sonicval); // cm거리계산
if(ultra_sensorReading<=10){
digitalWrite(ledPin, HIGH);
}
String dataString = "Ultra,";
dataString += ultra_sensorReading;

int sensor_val = DHT.read(tempPin);
int temp_SensorReading= DHT.temperature;
dataString += "nTemperature, ";
dataString += temp_SensorReading;

sendData(dataString);

=> 소스코드 다운로드 받기

다음은 클라우드 서버로 유명한 Xively(자이블리)와 연동을 해보겠습니다. 

1. Xively (자이블리) 접속하기 : https://xively.com/

ultrasonic_xively

2. 로그인 후 Development -> 만들어놓은 디바이스 를 클릭합니다.

ultrasonic_xively_device

3. Arduino sketch에 User Agent, Feed ID, APIKEY를 입력합니다.

ultrasonic_monitoring

 

4. 이젠 Xively를 통한 센서값 모니터링이 가능합니다.

ultrasonic_monitoring-1

 

실제 모니터링하는 동영상입니다.


출처 : 위즈네트 연구원 김은경님의 블로그 '댕이의 네모난 세상"