개발자

파이선 소켓 프로그램 2 - LoRa 외장형 모뎀으로 소켓 통신 예제

지구빵집 2019. 9. 30. 15:52
반응형

 

비콘 스캔 결과를 우리넷 WD-N400S (외장형 모뎀)을 사용하여 전송하는 프로그램을 구현하기로 한다.

 

국제 표준화 단체 3GPP에서 표준화 하여 SKT를 통해 국내 전국망 서비스 중인 LTE Cat.M1(이하 Cat.M1)은 대표적인 LPWAN(Low-Power Wide-Area Network) 기술로, IoT 응용 개발에 특화되어 있다. 일반적으로 LPWAN은 저전력 장거리 통신이라는 특성 때문에 Data Rate이 낮으며 아래 표에서 LPWAN 기술의 최대 전송 속도가 12Bytes~ 375Kbps인 것을 확인할 수 있다.

 

LTE Cat.M1의 경우 Sigfox, LoRa, NB-IoT 보다 최대 전송 속도가 비교적 높기 때문에 실시간 트래킹 서비스 또는 사진 전송, 생체 정보와 같은 중용량 및 실시간 응용에 사용하기 적합하다. 본 가이드에서는 우리넷의 Cat.M1 외장형 모뎀을 이용하여 사진 전송이 가능한지 확인하고 속도를 검증해보도록 하자. - 이거는 안함. 나중에도 안 함. 실습한다면 할지도 모름.^^

 

우리넷의 Cat.M1 외장형 모뎀을 사용하기 위한 방법은 두 가지 방법이 있습니다. UART 인터페이스를 통해 AT 커맨드로 외장형 모뎀을 제어하는 방법과 RNDIS(Remote NDIS) 모드로 사용하는 방법이 있다. AT 커맨드를 이용하는 경우 UART 인터페이스(Baud Rate: 115200)를 사용하므로 Cat.M1 최대 전송 속도인 375kbps를 사용할 수 없으며, RNDIS 모드를 사용하면 Cat.M1 최대 전송 속도를 사용할 수 있다. 외장형 모뎀을 RNDIS 모드로 사용하기 위해서는 AT 커맨드로 ‘RNDISMODE=1’을 설정 후 재시작해야 한다. 또한, 외장형 모뎀을 사용하기 위해서는 신호 변환을 위한 전용 인터페이스 보드가 필요하다. (아래 참고자료 링크)

 

연결방법을 아래 그림처럼 연결한다. 이때 인터페이스보드(빨강)과 USB 연결은 점검을 위한 게 아니라면 할 필요는 없다. 

 

 

소켓 프로그램 클라이언트 부분 소스코드는 앞서 설명한 파이선 소켓 프로그램과 같고, 서버 IP 주소를 IP V6 형태로 바꾸는 것이 중요하다.

 

#-*- coding:utf-8 -*-
import socket
from socket import *
from os.path import exists
import time, datetime
import os

clientSock = socket(AF_INET6, SOCK_STREAM)
clientSock.connect(('64:ff9b::cbe5:f3ba', 43211))

print('연결 확인 됐습니다.')
clientSock.send('I am a client'.encode('utf-8'))

print('메시지를 전송했습니다.')

data = clientSock.recv(1024)
print('받은 데이터 : ', data.decode('utf-8'))

 

Raspberry Pi에서는 Python 2.72 버전을 사용하며, 우리넷의 외장형 모뎀의 경우 IPv6를 사용하므로 서버 IPv4 주소를 다음과 같이 변환하여 사용해야 한다. 변환 방식은 SK Telecom과 우리넷 모듈사가 협의한 규칙이므로 아래 그림에 표시한 형태로 변환하여 사용한다. 

 

 

서버단은 확보한 IP 주소를 가지고 소켓 예제처럼 동일하게 동작한다.

 

#-*- coding:utf-8 -*-
from socket import *

serverSock = socket(AF_INET, SOCK_STREAM)
serverSock.bind(('', 8080))
serverSock.listen(1)

connectionSock, addr = serverSock.accept()

print(str(addr), '에서 접속이 확인되었습니다.')

data = connectionSock.recv(1024)
print('받은 데이터 : ', data.decode('utf-8'))

connectionSock.send('I am a server.'.encode('utf-8'))
print('메시지를 보냈습니다.')

 

IoT 분야가 확대되며 LPWAN 기술 응용범위가 기존의 작은 센서 데이터를 보내거나 모니터링 하는 수준의 응용이 아닌, 사진을 전송하거나 실시간 위치 추적을 하는 등의 응용으로 늘어나고 있다. 궁금한 사항은 댓글로 질문해 주시기를 바랍니다.

 

참고

LTE Cat.M1 Application Note_RNDIS 활용하기 – 사진 전송 https://www.wiznetian.com/lte_catm1_ap_rndis_guide/

외장형Cat.M1(WD N400S) Interface B/D 참고

http://shop.wiznet.co.kr/front/contents/product/view.asp?cateid=58&pid=1314

 

 

 

반응형