WiFi(Wireless Fidelity)

무선 접속장치가 설치된 곳에서 전파나 적외선 전송방식을 이용하여 일정 거리 안에서 무선 인터넷을 할 수 있는 근거리 통신망을 지칭하는 기술

회사의 지원으로 와이파이 내장형 아두이노 보드 WiDo를 구입하였다. (Wido-WIFI IoT Node SKU:DFR0321)

http://www.dfrobot.com/wiki/index.php/Wido-WIFI_IoT_Node_SKU:DFR0321 위 사이트의 튜토리얼로 Wifi연결 진행

Tutorial 1.

  1. https://github.com/Lauren-ED209/Adafruit_CC3000_Library/archive/master.zip 해당 사이트에서 library 다운로드 후 설정.
  1. Mac Address와 라우터 정보를 확인하기 위해 라이브러리 제공 샘플소스 내 아래 소스 수정 후 컴파일

    #define WLAN_SSID           "myNetwork"
    #define WLAN_PASS           "myPassword"
    
  2. 스케치 내용을 업로드 하면 아래 그림처럼 내 정보를 볼수 있다.

Tutorial 2.

  1. https://github.com/Lauren-ED209/Wido-OpenSource-IOT-Node/raw/master/Tools/USR-TCP232-Test.exe 해당 파일 설치. (PC에서 로컬 TCP 서버를 만드는 데 사용)

  2. 설치파일 실행 후 IP, port 정보 입력

  1. 스케치 내 샘플소스 "Wido2LocalTcpServer" 를 열고, 아래 소스를 위 설정한것과 동일하게 변경

    /* Set the target ip address and connection port */
    uint32_t ip = WiDo.IP2U32(192,168,0,134);
    tcpClient = WiDo.connectTCP(ip, 9000);
    
  2. 샘플소스

#include <Adafruit_CC3000.h>
#include <ccspi.h>
#include <SPI.h>
#include <string.h>
#include "utility/debug.h"

#define WiDo_IRQ   7
#define WiDo_VBAT  5
#define WiDo_CS    10
Adafruit_CC3000 WiDo = Adafruit_CC3000(WiDo_CS, WiDo_IRQ, WiDo_VBAT,
                                         SPI_CLOCK_DIVIDER); // you can change this clock speed

#define WLAN_SSID       "myNetwork"           // cannot be longer than 32 characters!
#define WLAN_PASS       "myPassword"

// Security can be WLAN_SEC_UNSEC, WLAN_SEC_WEP, WLAN_SEC_WPA or WLAN_SEC_WPA2
#define WLAN_SECURITY   WLAN_SEC_WPA2
#define TIMEOUT_MS  1000

void setup(){

  Serial.begin(115200);
  /* Initialise the module */
  Serial.println(F("\nInitialising the CC3000 ..."));
  if (!WiDo.begin())
  {
    Serial.println(F("Unable to initialise the CC3000! Check your wiring?"));
    while(1);
  }

  /* NOTE: Secure connections are not available in 'Tiny' mode!
     By default connectToAP will retry indefinitely, however you can pass an
     optional maximum number of retries (greater than zero) as the fourth parameter.
  */

  Serial.println(F("Connecting Router/AP"));
  if (!WiDo.connectToAP(WLAN_SSID, WLAN_PASS, WLAN_SECURITY)) {
    Serial.println(F("Failed!"));
    while(1);
  }

  Serial.println(F("Router/AP Connected!"));

  /* Wait for DHCP to complete */
  Serial.println(F("Request DHCP"));
  while (!WiDo.checkDHCP())
  {
    delay(100); // ToDo: Insert a DHCP timeout!
  }  
}

void loop(){

  static Adafruit_CC3000_Client tcpClient;
  static unsigned long heartRate = millis();

  if(!tcpClient.connected()){
    Serial.println("Try to connect the Local Server");
    tcpClient.close();

    /* Set the target ip address and connection port */
    uint32_t ip = WiDo.IP2U32(192,168,0,134);
    tcpClient = WiDo.connectTCP(ip, 4000);

    if(!tcpClient.connected()){
      Serial.println(F("Couldn't connect to server! Make sure TCP Test Tool is running on the server."));
      while(1);
    }
  }
  else if(millis() - heartRate > 1000){
    heartRate = millis();  // Update time stamp of the microcontroller system

    char clientString[30];
    sprintf(clientString, "%s%d%s", "Wido heartRate: ",heartRate/1000," s\r\n");

    Serial.println(clientString);
    tcpClient.fastrprintln(clientString);
  }

  /* Read data until either the connection is closed, or the timeout is reached. */
  unsigned long lastRead = millis();
  while (tcpClient.connected() && (millis() - lastRead < TIMEOUT_MS)) {
    while (tcpClient.available()) {
      char c = tcpClient.read();
      Serial.print(c);
      lastRead = millis();

      // Disable sending message for a moment
      heartRate = millis();
    }
  }
}
  1. 시리얼모니터를 키고, 라우터를 연결.

이제 연결이 된다! 유후 ~