Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 안드로이드
- WizFi210
- ESP8266
- SerialPassthrough
- micropython
- WiFi
- NB-IoT
- Neul
- IoTMakers
- WIZwiki-W7500
- WizFi310
- KT
- 오픈 하우스
- Gainspan
- Cat M1
- WizFi250
- ThingPlug
- SSL Server
- script
- IOT
- AT+FSOCK
- MQTT
- PicoC
- OpenSSL
- C Script
- cloud
- SKT
- W7500
- LoRa
- AT+MEVTFORM
Archives
- Today
- Total
IoT Wireless
Serial-To-WiFi using WizFi250 CSI 본문
몇 주 전에, Instructables에 WizFi250-CSI의 기본적인 개념과 동작에 대해서 포스팅 했다.
http://www.instructables.com/id/WizFi250-CSIC-Script-Interpreter-for-rapid-prototy/
이번에는 WizFi250-CSI를 이용해서 Serial-To-WiFi를 구현하는 예제에 대해 설명하겠다.
UART로 입력 받은 데이터를 TCP Server(192.168.3.54:6000)에 양방향 전송하는 예제이다.
#include "wizfi250-csi.h" void main(void) { struct sockaddr_in stSockAddr; int Res, result; // Join to AP if ( result = wifi_join("WizFiDemoAP", "wpa2", "11111111", 0, 0, 0)!=0 ) { printf("wifi_join error : %d", result); return; } // TCP Socket int SocketFD = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); if (-1 == SocketFD) { printf("cannot create socket\r\n"); return; } // Define Server IP, Port memset(&stSockAddr, 0, sizeof(stSockAddr)); stSockAddr.sin_family = AF_INET; stSockAddr.sin_addr.s_addr = inet_addr("192.168.3.54"); stSockAddr.sin_port = htons(6000); if (-1 == connect(SocketFD, (struct sockaddr *)&stSockAddr, sizeof(stSockAddr))) { printf("connect failed\r\n"); close(SocketFD); return; } char szData[256]; int length = 0; // Set GPIO12 input-pin. pinMode(GPIO12, 1); while(1) { length = uart_rx(0, szData, 256); if ( length>0 ) { pinOut(GPIO12, 0); result = send(SocketFD, szData, length, 0); pinOut(GPIO12, 1); if ( result<0 ) break; } length = recv(SocketFD, szData, sizeof(szData), MSG_DONTWAIT); if ( length==0 ) { break; } else if ( length<0 ) { if ( sock_error==EAGAIN ) continue; printf("<%d,%d>", length, sock_error); break; } else { pinOut(GPIO12, 0); uart_tx(0, szData, length); pinOut(GPIO12, 1); } } printf("Disconnected (%d) \r\n", length); close(SocketFD); return; }
코드를 보면 알 수 있듯이, 생각보다 간단히 구현됨을 알 수 있다.
위의 스크립트에서 사용된 모든 함수들은 "wizfi250-csi.h"의 정의된 함수들이다.
"wizfi250-csi.h" 파일은 아래 링크에서 확인할 수 있다.
아래 그림은 실제로 테스트를 한 화면이다.
Serial to WiFi, WiFi to Serial로 양방향 통신이 정상적으로 이루어지는 것을 볼 수 있다.
WizFi250-CSI를 이용하여, Serial-To-WiFi를 구현하면, 아래와 같은 장점을 가질 수 있다.
- TCP/UDP, Server/Client를 C Code Level에서 유저가 구현할 수 있다.
(설정을 위한 Configuration Tool이나 웹서버가 필요 없다.)
- Multi Socket 사용이 가능하다.
- Network Packet의 Data Packing을 Socket API Level에서 유저가 자유롭게 할 수 있다.
- 복잡한 시리얼 커맨드(AT Command)를 사용할 필요 없다.
- LED Indication을 유저가 정의할 수 있다. (GPIO, ADC 등도 유저가 사용 가능)
- Standard C 문법과 99% 이상 흡사하므로 어렵지 않다.
정리하면, WizFi250-CSI를 이용하여 Serial-To-WiFi를 구현할 때,
사용자는 별도의 Configuration Tool이나 개발 툴 없이도, 시리얼 터미널 프로그램만으로 Serial-To-WiFi 기본 기능과 관련된 설정 뿐만 아니라 대부분의 Customizing 작업을 사용자 스스로가 구현할 수 있다.
<추가>
위의 내용을 Instructables에 아래와 같이 포스팅하였다.
'IoT Platform(Script)' 카테고리의 다른 글
Raspberry Pi Pico MicroPython Ethernet (0) | 2022.01.25 |
---|---|
Serial-To-WiFi(2 UART) using WizFi250 CSI (0) | 2015.06.29 |
WizFi250-CSI(C Scripting Interpreter) Header File (0) | 2015.05.29 |
Software diagram of WizFi250-PicoC (0) | 2015.04.28 |
Introduction to Embedded Script Engine (0) | 2015.04.28 |