SNS을 이용한 개인용 화재 경보 시스템 만들기

Posted by 카이젠8501 카이젠8501
2014.10.15 10:25 IT 개발/DIY 프로젝트

SNS을 이용한 개인용 화재 경보 시스템 만들기

본 포스팅에서는 집 안 온도가 임계치 이상으로 올라가면 구조 요청 메시지를 Facebook으로 올리는 개인용 화재 경보 시스템을 만드는 방법을 설명한다.

시스템 구성

본 포스팅의 화재 경보 시스템의 구성요소는 아래와 같다.

  • Sensor Device

    • 집 안 온도를 측정 하여 Cloud Server에 송신
    • KL-25Z ( MCU Board, mbed enabled )+WIZ550io(Ethernet) + DS18B20(온도센서)로 구성
  • Cloud Server ( Xively )

    • Sensor Device로 부터 수집된 정보를 수집하고, 측정 값이 임계치 이상이면 Trigger를 발생하여 Proxy Server에게 전달
  • Proxy Server ( Zapier )

    • Cloud Server로 부터 Trigger 정보를 받으면, 등록된 Service로 Message를 Publish 함.
  • User Service

    • 본 포스팅에서는 Facebook을 이용하였지만, Zapier를 이용하면 gmail, twitter, evernote, tumblr, github등 다양한 Service를 이용 할 수 있음.

아래 그림은 위에서 설명한 요소들로 구성한 전체직인 시스템 Diagram이다.




Sensor Device

1. KL-25Z(mbed enabled MCU) + WIZ550io ( W5500 )

WIZ550io는 Arduino Board와 호환 되도록 설계 되어 있으며, KL-25Z 또한 Arduino Shield와 호환 되도록 설계 되어 있는 mbed Platform Board 이다.
이런 이유로, KL-25Z에서 WIZ550io를 이용하여 ethernet을 사용하기 위해서는 아래 그림과 같이 커넥터로 연결만 하면 된다.

커넥터 연결을 위한 자세한 설명은 [FRDM-KL25Z]WIZ550 ioShield-A Porting Guide를 참고 하기 바란다.

센서 보드의 연결을 위해 WIZ550io의 Shield 에 Female 커넥터를 아래 그림과 같이 부착 하였다.




2. DS18B20 ( Temperature Sensor )

온도 센서 DS18B20의 스펙은 아래와 같다.

  • Digital temperature conversion and output
  • Advanced single-bus data communication
  • Maximum 12-bit resolution, accuracy up to ±0.5 degrees Celsius
  • Parasitic mode available
  • Temperature detection range: -55 ° C ~ +125 ° C (-67 ° F ~ +257 ° F)
  • Built-in EEPROM and temperature limit

  • Supply Voltage: 3.3V to 5V

  • Temperature range :-55 °C ~ +125 °C
  • Interface: Digital
  • Size:22x32mm


위 사진은 DS18B20을 사용한 온도센서 모듈 사진이며, KL25Z + WIZ550io와는 아래 그림과 같이 연결 하면 된다.

  • 붉은선 : 3.3V VCC
  • 검은선 : GND
  • 녹색선 : D3



Xively Server 설정

Xively Server를 설정하기 위한 방법은 [Arduino Uno WiFi Shield]WizFi250과 Xively를 이용하여 온도 센서 모니터링 하기 (2/2)
2014/02]
를 참고 하기 바란다.

Sensor Device로 부터 수신 된 데이터 중 온도가 28ºC 이상이면, Facebook에 메시지를 전달하기 위해 Trigger를 아래와 같이 추가한다.
생성된 HTTP POST URL은 zapier 설정 시 사용해야 하므로, 잘 메모해 두길 바란다.



zapier 설정

  1. Login to zapier
  2. Make a New Zap
  3. Choose a trigger and action
    • When this Happens 카테고리에 Web Hook와 Catch Hook를 선택
    • Do This 카테고리에 Facebook과 Post to Timeline 선택
      • 다른 SNS를 사용하고 싶은 경우 Facebook 대신 다른 SNS Service를 선택하면 됨
  4. Select a Web Hook account
    • Xively에서 발급 받은 HTTP POST URL을 기입
  5. Facebook 계정 연결



  6. Trigger 발생 시, Facebook에 올릴 메시지 기입

  7. Test this Zap은 무시해도 무관하다.
  8. Name and turn this Zap on
    생성한 zap의 이름을 지정하고, Turn Zap on 버튼틀 클릭하여 zap을 활성화 시킨다.

    위 과정이 성공적으로 끝나면, 아래 사진과 같은 화면을 볼 수 있다.

Download Firmware

  1. Connect to mbed site and run mbed web compiler
  2. Import WIZ550io_Xively_Demo Example to mbed web compiler
    • WIZ550io_Xively_Demo Example 검색 후, Import program 버튼 클릭
    • WIZ550io_Xively_Demo Example를 Compiler의 Program workspace에 추가
       
  3. Xively에서 발급 받은 FEED ID와 API Key를 Source Code에 입력

    #define XI_FEED_ID xxxxxxxxxxxxxx // set Xively Feed ID (numerical, no quoutes)
    #define XI_API_KEY "xxxxxxxxxxx" // set Xively API key (double-quoted string)
    

    추가로, Xively Server에서 설정한 Channel ID의 값과 아래 코드에서 설정한 datastream_id 값은 동일 해야 한다.
    (본 예제에서는 Channel ID를 “Channel_Test1”으로 설정 함.)

    feed.datastreams[0].datapoint_count = 1;
    xi_datastream_t* orientation_datastream = &feed.datastreams[0];
    strcpy( orientation_datastream->datastream_id, "Channel_Test1" );
    xi_datapoint_t* current_orientation = &orientation_datastream->datapoints[0];
    
  4. Compile Source Code
    web compiler에서 compile을 클릭하면, 해당 Example에 대한 바이너리 파일이 아래와 같이 생성 된다.

  5. Download binary file to KL25Z board
    생성된 바이너리를 KL25Z Board의 Driver에 복사하면 Firmware Download가 완료 된다.
    자세한 내용은 자세한 내용은 [mbed]2.NUCLEO Board 구동하기 2/2 참고

Run Application

Sensor Board에 LAN Cable을 연결하고 전원을 인가하면, 온도 센서를 이용하여 온도를 측정 한 후, Xively Server에 데이터를 송신하는 과정을 Serial Terminal로 확인 할 수 있다.


Xively Server에서 데이터를 수신하면 아래 사진과 같이 Request Log로 Feed 값이 갱신 되는 것을 볼 수 있다.

또한 앞에 Trigger에서 설정한 것과 같이 온도가 28ºC 이상이 되면 zapier Server에 그 정보를 알리고, zapier는 등록된 서비스인 Facebook을 이용하여 메시지를 송신 한다.


저작자 표시
신고
이 댓글을 비밀 댓글로

[Arduino]WIZ550 ioShield-A 기반의 FTP Server 구현(SD Card 사용)

Posted by 카이젠8501 카이젠8501
2014.08.27 08:42 IT 개발/DIY 프로젝트

[Arduino]WIZ550 ioShield-A 기반의 FTP Server 구현(SD Card 사용)


Hardware

  • Arduino Due, WIZ550 ioShield-A, Sd card, LAN Cable

Canon | Canon EOS 600D | Normal program | Pattern | 1/60sec | F/2.8 | 0.00 EV | 40.0mm | ISO-320 | Off Compulsory | 2014:08:27 08:43:50


Canon | Canon EOS 600D | Normal program | Pattern | 1/60sec | F/2.8 | 0.00 EV | 40.0mm | ISO-400 | Off Compulsory | 2014:08:27 08:40:36


Software

1. Download Arduino Sketch V.1.5.7

  1. Arduino Due를 사용하기 위해서는 1.5.x 이상의 Arduino IDE를 사용해야 한다.


2. Download Arduino Ethernet Driver for using WIZ550io

  1. Download Arduino Ethernet Driver
  2. Copy the ethernet driver to Arduino Directory ( arduino-1.5.7/libraries/ )

    • 기존에 설치되어 있는 Ethernet 폴더를 Ethernet_old로 변경
    • 다운 받은 Ethernet library를 arduino-1.5.7/liibraries/ 경로에 복사


  3. 주의 : 다운받은 Ethernet Library에서 WIZ550io를 사용하기 위해서는 arduino-1.5.7/libraries/utility/w5100.h을 아래와 같이 수정해야 한다.


3. Download Arduino FTP Server for using WIZ550io

  1. Download FTP Server Library (It is written by me)
  2. SD library 수정

    1. arduino-1.5.7/libraries/SD/src/SD/SD.h의 SDClass 멤버 변수를 public으로 수정


  3. WIZ550io_FTPServer_UsingSDCard.ino을 열고 Arduino Due Board에 Upload 한다.


  4. Upload 한 application을 실행하고 Serial Monitor로 Log message를 확인 한다.

4. Run FTP Client using app of smart phone



5. Log Message on Serial Monitor



저작자 표시
신고
이 댓글을 비밀 댓글로

[FRDM-KL25Z]WIZ550 ioShield-A Porting Guide

Posted by 카이젠8501 카이젠8501
2014.08.20 20:25 IT 개발/mbed


1. Hardware
WIZ550 ioShield-A는 Arduino Board에 호환되도록 설계되어 있는 Shield 형태의 WIZ550io Interface Board이다.
FRDM-KL25Z Board 역시, 기존의 Arduino Shield 들을 FRDM-KL25Z Board에서 그대로 사용할 수 있도록 Arduino Board의 Pin Map과 유사하게 설계되어 있으며, WIZ550 ioShield-A 역시 FRDM-KL25Z에 Shield 형태로 장착 하면 된다.

여기서 약간의 문제가 있는데..
Arduino Board의 경우 Board 하단에 6개의 핀(N_RESET, SCK, MISO, GND, MOSI, +5V)이 존재한다. WIZ550 ioShield-A의 SPI Pin들(MOSI,MISO,SCK 등)은 Board 하단에만 패턴이 연결되어 있다. 
이런 문제로 FRDM-KL25Z에 장착하기 위해서는 아래 그림과 같은 작업을 해야 한다. ( 곧, WIZ550 ioShield-A는 Revision 될 예정 임 )



위 작업을 마친 후, 아래 그림과 같이 FRDM-KL25Z 와 WIZ550 ioShield-A를 연결하면, FRDM-KL25Z Board에서 Ethernet을 사용 할 수 있다.


LG Electronics | LG-F320S | Center-weighted average | 1/30sec | F/2.4 | 0.00 EV | 4.0mm | ISO-50 | Flash did not fire | 2014:08:20 20:43:33



2. Software
이미 WIZ550io의 Library가 준비되어 있기 때문에, mbed Board에서 쉽게 사용 할 수 있다.

첫번째 단계로 mbed web Compiler에서 새로운 프로젝트를 생성한다.




다음 단계로, 생성된 프로젝트에 mbed Library를 추가 한다. ( mbed library는 FRDM-KL25Z를 구동하기 위한 Driver들이 구현되어 있다.)






다음 단계로, WIZ550 ioShield-A를 위한 W5500 Library를 내 프로젝트에 Import 한다.
Import를 위한 방법은 아래와 같다.

▼ mbed 홈페에지의 검색창에 W5500을 검색한다.



▼ 검색된 내용 중, W5500-Ethernet-Interface Makers 팀의 W5500Interface를 클릭한다.



▼ W5500Interface 페지이에서, Import this library를 클릭하면, Library를 추가할 프로젝트 리스트를 볼 수 있다.



▼ 출력된 리스트 중, 조금 전 생성한 프로젝트를 Target Path로 설정한 후 확인 버튼을 클릭 한다.







WIZ550 ioShield-A로 간단한 예제를 구동하기 위해 WebSocketClient library를 Import 하였다. import 방법은 W5500 Library와 동일 하다.







아래와 같이, 프로젝트에 main.cpp 파일을 생성하고 코드를 구현하면 끝.





아래는 main.cpp 파일의 내용이다. 



mbed Web Compiler에서 컴파일 후, 생성된 바이너리를 Board에 다운로드 하면 아래와 같이 mbed에서 제공하는 websocket 데모용 페이지에 데이터를 송/수신 하는 것을 확인 할 수 있다.




저작자 표시
신고
이 댓글을 비밀 댓글로