How to make Wi-Fi oil checker using Axeda

2015. 10. 8. 14:502018년 이전 관심사/개발관련

반응형

How to make WiFi oil check using Axeda cloud

Axeda

Axeda는 세계 각지의 기계와 센서 데이터를 수집하고 체계화하기 위한 IoT 솔루션을 제공하는 기업이다. 150개 이상의 고객사를 향해 매일 수억 개의 규모의 데이터를 처리하고 있으며, 크게 3가지 서비스를 제공하고 있다.

  1. ‘Axeda Machine Cloud Service’는 기기간 통신(M2M) 및 IoT 연결 서비스 소프트웨어 에이전트 툴킷으로 구성되어 있으며, 기업의 제품과 클라우드 보안 연결을 거의 모든 통신 방법(이동통신 네트워크, 인터넷, 무선 LAN, 위선통신 등)에서 제공한다.
  2. ‘Axeda Connected Content Application’은 대량의 연결된 제품에 콘텐츠 전송을 안전하고 확실하고 효율적으로 실현하고 소프트웨어 업데이트 및 보안 패치의 원격 설치를 자동화 한다.
  3. ‘Axeda Connected Service Application’은 PTC의 서비스 라이프 사이클 관리(SLM) 솔루션을 보완하고 Axeda 플랫폼에 연결된 장치의 문제를 원격으로 확인, 진단, 수리하는 다양한 툴과 Web 기반의 그래픽 인터페이스를 현장 서비스 및 기술 지원 부서에 제공한다.

참고 PTC, 액세다(Axeda) 인수 완료…사물인터넷 사업 강화

Go to the staging page on your Axeda Toolbox account

toolbox.axeda.com에 회원 가입 후, 아래 그림과 깉이 AXEDA READY 아이콘을 선택하고 mbed LPC1768 Device를 선택한다.

toolbox_landing_page mbedselect

본 포스팅 예제에서는 WIZwiki-W7500 Board를 사용하지만, 아직 Axeda에는 WizWik-W7500 Board가 없는 관계로 LPC1768의 ToolBox를 사용한다.

원하는 Device Name을 입력하고 Go 버튼을 누르면 아래 그림과 같은 화면을 볼수 있다.
Serial Number는 Axeda Example Code를 수행 할 때 필요하므로 메모장 같은 곳에 복사 해두길 바란다.

yourdevicepage

Materials

아래 하드웨어에 대한 자세한 내용은 아래 링크를 참고 하기 바란다.
Link

WIZwiki-W7500 ( MCU Platform)

wizwiki-w7500_main

WizFi250-EVB ( Wi-Fi Module )

ShopDtl_1203_20140918154919

Sensor Shield

TB2wSGHaFXXXXcLXXXXXXXXXXXX_!!33841454

Hardware Configuartion

20150626_151253

WizFi250-EVB Sensor Shield WIZwiki-W7500
RX-TX RXD TXD
TX-RX TXD RXD
CTS-RTS CTS D8
RTS-CTS RTS D7
WizFi250-RESET JP10-2 PA12

Compile AxedaGo-WizFi250 Example onto Wizwiki-W7500 Board

아래 주소에 접속하면 WizFi250 Axeda Example Code를 이용 할 수 있다.
Link for AxedaGo-WizFi250 Example

20150626_151744

AxedaGo-WizFi250 Example을 컴파일 하기 전, Axeda Tool box 에서 얻은 Serial Number를 아래 코드에 추가한다.

line19serial

코드를 컴파일 한 후, 생성된 바이너리를 WIZwiki-W7500 Board에 Upload 한다.

Source Code

#include <stdio.h>
#include "mbed.h"
#include "WizFi250Interface.h"

#define SECURE WizFi250::SEC_AUTO
#define SSID "ssid"
#define PASS "key"


#if defined(TARGET_WIZwiki_W7500)
    WizFi250Interface wizfi250(D1,D0,D7,D8,PA_12,NC,115200);
    Serial pc(USBTX,USBRX);
#endif

AnalogIn pot1(A0);
TCPSocketConnection sock;

DigitalOut led1(LED1);
DigitalOut led2(LED2);
DigitalOut led3(LED3);
DigitalOut led4(LED4);

int main() 
{
    char *MODEL = "mbed";
    char *SERIAL_NUM = "serial number"; 
    float DEADBAND = 0.03;

    int http_cmd_sz=800;
    char http_cmd[http_cmd_sz];
    int buffer_sz=300;  
    char buffer[buffer_sz];  
    int returnCode = 0;

    led1 = 1;
    led2 = 1;
    led3 = 1;
    led4 = 1;

    pc.baud(115200);

    wizfi250.init();
    returnCode = wizfi250.connect(SECURE, SSID, PASS);

    if ( returnCode == 0 )
    {
        printf(" - WiFi Ready\r\n");
        printf("IP Address is %s\r\n", wizfi250.getIPAddress());
        led1 = returnCode;
    }
    else
    {
        printf(" - Could not initialize WiFi - ending\r\n");
        return 0;
    }

    float oil_level = 0.0;
    float oldPotVal = -2.0;

    while(1) {
        oil_level = pot1.read();

        if ( abs(oil_level - oldPotVal) < DEADBAND)
        {
            continue;   
        }
        else
        {
            oldPotVal = oil_level;
            printf("Sending Value for well1 %.2f\n\r", oil_level);
            sock.connect("toolbox-connect.axeda.com", 80);

            snprintf(http_cmd, http_cmd_sz,  "POST /ammp/data/1/%s!%s HTTP/1.1\r\nContent-Type: application/json\r\nContent-Length: 65\r\n\r\n{\"data\":[{\"di\":{\"oil_level\":%.2f}}]}\r\n\r\n", MODEL, SERIAL_NUM, oil_level);
            sock.send_all(http_cmd, http_cmd_sz-1);

            while ( (returnCode = sock.receive(buffer, buffer_sz-1)) > 0)
            {
                buffer[returnCode] = '\0';
                printf("Received %d chars from server:\n\r%s\n", returnCode, buffer);
            }

            sock.close();
        }
     }
}

Test Result

Send data to the demo application

위 코드를 수행하면, WIZwiki-W7500은 WizFi250을 이용하여 Axeda Tool box에 센싱된 데이터를 송신한다. Axeda Tool box는 Device가 송신한 데이터를 가지고 아래 그림과 같이 Mbed Widget을 만들어 준다. Sensor Shield의 A0의 Switch를 돌리면 Axeda의 mbed Widget도 변하는 것을 확인 할 수 있다.

20150626_16013820150626_154710

Log message on Serial Terminal

[WizFi250: INFO]AT+MMAC=?
[WizFi250: INFO][OK]

[WizFi250: INFO]AT+WSET=0,wizohp
[WizFi250: INFO][OK]

[WizFi250: INFO]AT+WSEC=0,,wiznet218
[WizFi250: INFO][OK]

[WizFi250: INFO]AT+WJOIN
[WizFi250: INFO][OK]

[WizFi250: INFO]AT+WSTATUS
[WizFi250: INFO][OK]

[WizFi250: INFO]IP      : 192.168.13.29
[WizFi250: INFO]Gateway : 192.168.13.1
[WizFi250: INFO]WizFi250 is successfully join to AP
 - WiFi Ready
IP Address is 192.168.13.29
Sending Value for well1 0.54
[WizFi250: INFO]AT+FDNS=toolbox-connect.axeda.com,1000
[WizFi250: INFO][OK]

[WizFi250: DBG]216.34.120.52
[WizFi250: INFO]AT+SCON=O,TCN,216.34.120.52,80,,0
[WizFi250: INFO][OK]

[WizFi250: INFO]AT+SSEND=0,,,799
[WizFi250: INFO][OK]

[WizFi250: INFO]POST /ammp/data/1/mbed!nlr__kaizen8501_gmail_com___6245114 HTTP/1.1
Content-Type: application/json
Content-Length: 65

{"data":[{"di":{"oil_level":0.54}}]}



[WizFi250: DBG]receive readable : 1

Received 36 chars from server:
HTTP/1.1 200 
Content-Length: 0

Demo Video


반응형