티스토리 뷰

Blynk_310_Lib

Blynk 라는 오픈하드웨어 지원 어플이 있습니다.

마땅한 앱을 찾지 못하였고, 앱을 만들기 귀찮을 때 사용하면 매우 좋은 플랫폼이죠.

그런데 모든 보드를 지원하는 것은 아닙니다.

따라서, 자신이 사용하려고 하는 보드가 지원이 되지 않는다면, 자신의 보드에 맞게 포팅작업을 해야합니다.


WizFi310

WizFi310은 WIZnet에서 개발한 WiFi 모듈입니다.

Interface는 UART를 사용합니다.

이와 관련된 플랫폼으로는 아래와 같은 제품들이 있습니다.

  • EVB Board

    More detail

  • Shield(Arduino Uno compatible)
    정식 출시되면 업데이트 하겠습니다

  • WizArduino WiFi(WizFi310 + Arduino Mega2560)

    More detail

WIZnet에서 현재 진행중인 디자인컨테스트에서 WizArduino WiFi 제품을 사용하시는 분들도 있을 것입니다.
하지만, 이 제품은 Blynk에서 공식지원하지 않습니다.

그렇다면 가볍게 만들어 봐야겠죠?
다행히 Blynk 구조 자체가 까다롭지는 않았습니다.


라이브러리

포팅에 대한 별다른 설명은 하지 않겠습니다.

아래의 소스 코드를 Blynk_WizFi310.h 파일로 만들어,

Blynk Library에 포함하거나 

자신의 스케치가 있는 폴더에 포함하여 사용하시면 됩니다.

/*
 * Blynk_WizFi310.h
 *
 *  Created on: 2017. 4. 3.
 *      Author: KEI
 */

#ifndef BLYNK_WIZFI310_H_
#define BLYNK_WIZFI310_H_

#include <BlynkApiArduino.h>
#include <Blynk/BlynkProtocol.h>
#include <Adapters/BlynkArduinoClient.h>
#include "WizFi310.h"

class BlynkWifi
    : public BlynkProtocol<BlynkArduinoClient>
{
    typedef BlynkProtocol<BlynkArduinoClient> Base;
public:
    BlynkWifi(BlynkArduinoClient& transp)
        : Base(transp)
    {}

    void connectWiFi(const char* ssid, const char* pass)
    {
        BLYNK_LOG2(BLYNK_F("Connecting to "), ssid);

        if (pass && strlen(pass)) {
            WiFi.begin(ssid, pass);
        } else {
            WiFi.begin(ssid);
        }
        while (WiFi.status() != WL_CONNECTED) {
            ::delay(500);
        }
        BLYNK_LOG1(BLYNK_F("Connected to WiFi"));

        IPAddress myip = WiFi.localIP();
        BLYNK_LOG_IP("IP: ", myip);
    }

    void config(const char* auth,
                const char* domain = BLYNK_DEFAULT_DOMAIN,
                uint16_t    port   = BLYNK_DEFAULT_PORT)
    {
        Base::begin(auth);
        this->conn.begin(domain, port);
    }

    void config(const char* auth,
                IPAddress   ip,
                uint16_t    port = BLYNK_DEFAULT_PORT)
    {
        Base::begin(auth);
        this->conn.begin(ip, port);
    }

    void begin(const char* auth,
               const char* ssid,
               const char* pass,
               const char* domain = BLYNK_DEFAULT_DOMAIN,
               uint16_t    port   = BLYNK_DEFAULT_PORT)
    {
        connectWiFi(ssid, pass);
        config(auth, domain, port);
        while(this->connect() != true) {}
    }

    void begin(const char* auth,
               const char* ssid,
               const char* pass,
               IPAddress   ip,
               uint16_t    port   = BLYNK_DEFAULT_PORT)
    {
        connectWiFi(ssid, pass);
        config(auth, ip, port);
        while(this->connect() != true) {}
    }

};

static WiFiClient _blynkWifiClient;
static BlynkArduinoClient _blynkTransport(_blynkWifiClient);
BlynkWifi Blynk(_blynkTransport);

#include <BlynkWidgets.h>

#endif /* BLYNK_WIZFI310_H_ */

소스를 보시면 알 수 있듯이,
이름만 거창한 포팅이지, 크게 작업한 내역이 없습니다.

ESP8266 라이브러리를 기준으로 일부 수정하여 작성하였으며,
WizFi310을 활용한 Blynk RC카를 조종할 때 사용하여 테스트 완료하였습니다.

저작자 표시 동일 조건 변경 허락
신고
댓글
댓글쓰기 폼