Interactive Workshop for Artists & Designers 연세대학교디지털아트학과, 2016 Earl Park
프로토콜 Protocol 서로대화를하는사람을생각해보자. 서로의언어를이해함에있어다른언어끼리는대화가불가능하며, 같은언어라하더라도한사람의말의속도가너무빠르거나어려운어휘를사용하는경우에도알아듣기가어려워진다. 수화로대화하는경우라도수화라는정해진규칙을따라대화가가능하다. 또한멀리있는상대와대화를하는경우에는언어이외의다른대화전달방법이필요할수도있다. 대화하는두사물사이에는대화를위한규칙이필요한데, 이를프로토콜 ( 통신규약 ) 이라한다. 여러명이대화하는데는더많은규칙이필요하므로사물들을일대일로연결하면가장기본적인네트워크를구축 할수있다. Interactive Workshop 1
직렬(Serial) 통신 우리는 지금까지 마이크로컨트롤러에서 범용 입출력 핀을 통해 주변장치로 데이터 를 전송하는 방법을 알아보았다. 범용 입출력 핀으로는 한 번에 한 비트의 데이터만 을 전송할 수 있으므로 8개의 LED를 제어하기 위해 8개의 범용 입출력 핀을 사용했 다. 이처럼 n비트의 데이터를 전송하기 위해 n개의 입출력 핀을 사용하는 방법을 병 렬(Parallel) 통신이라고 한다. 하지만 마이크로컨트롤러에서 사용할 수 있는 범용 입출력 핀의 수는 그리 많지 않으 므로 병렬 통신보다는 직렬(Serial)통신이 일반적으로 사용된다. 병렬 통신에서는 8 개의 비트를 8개의 입출력 핀을 통해 한 번에 전송된다면, 직렬 통신은 1개의 입출력 핀을 통해 8개의 비트를 8번 나누어 전송하는 방법이다. 직렬통신은 동기(Synchronous) 및 비동기(Asynchronous) 통신이 있는데 이는 직렬 전송에서 데이터를 보내는 형태이다. 동기통신은 송수신자 간에 클럭을 통해 동기를 맞추며 데이터를 순차적으로 보내거나 받는 방식이며, 비동기통신은 클럭없이 송수 신자의 전송속도를 정하여 데이터를 전송하는 방식이다. 시리얼통신 프로토콜에는 UART, I2C, SPI, RS232C, RS485, DMX512, CAN 등의 통신방 식이 있으며 통신할 수 있는 거리나 속도, 지원 전송방식(송신자만 데이터 전송가능/ 송수신자 모두 데이터 전송가능)나 통신할 수 있는 대상(1:1, 1:N, N:N)에 차이가 있다. <시리얼 통신의 유형> Interactive Workshop 2
규약의계층 사물들이서로대화를하기위해서는먼저몇가지기본규약을정의해야한다. 이규약들은하위계층부터상위계층까지다섯계층으로구성된다. 상위계층은하위계층의규약에기반한다. 물리적계층 : 한장치의물리적인입력부와출력부는다른입력장치의입력및출력부와어떻게연결되어있는가? 두장치가메세지를교환하기위해서는몇개의전선과연결되어야하는가? 전기적계층 : 데이터의비트는어느정도의전압으로표현할것인가? 논리적계층 : 높은전압을 0으로처리할것인가아니면 1로처리할것인가? 높은전압상태가 1을의미하고낮은전압상태가 0을의미하는경우를참논리라고한다. 그에반해높은전압이 0을의미하고낮은전압이 1을의미하는경우는역논리라고한다. 데이터계층 : 비트의타이밍은어느정도인가? 비트는몇개묶음으로전송되는가? 8, 9, 10개씩? 혹은그이상인가? 전송되는비트묶음의앞이나뒤에구분자역할을하는비트들이추가되는가? 응용계층 : 메세지를구성하는비트의묶음은어떻게나열되어있는가? 특정한결과를유도하기위해서메세지를교환하는순서와절차는어떻게되는가? 이계층구분은네트워크개념에대한일반적인모형을단순화한것이다. 사실네트워크는이렇게깔끔하게정리되지않는다. 하지만이계층들을기억해두면네트워크에서발생하는문제를보다수월하게해결할수있다. 어떤계층의문제인지특정할수있어서시간낭비를줄이며바로문제에접근할수있기때문이다. 시리얼통신은수신자와송신자를연결한통신선의전압을특정한시간에맞춰바꿔주는기술과관련이있다. 시간의간격은정보의한비트에상응한다. 송신자는비트의 0이나 1을표현하기위해전압을바꾸고수신자는전압의변화를읽는다. 송신자와수신자는비동기식방식이나동기식방식중하나로전송속도를정의한다. 비동기식시리얼통신의경우송신자와수신자는특정한전송속고에합의하지만, 클럭은송신자ㅏ와수신자가서로독립적으로관리한다. 그에비해동기식시리얼통신은송신자와수신자를연결하는별도의선이있으며, 송신자가이선을통해전압이일정한속도로바뀌는펄스를수신자에게전송해서수신자의클럭을제어한다. 동기식시리얼통신은컴퓨터의프로세서와메모리칩이통신하는경우처럼통합된회로의부품들사이에통신이이루어질때많이사용된다. * 아래설명하는시리얼통신들은비동기식시리얼통신방법들이다. Interactive Workshop 3
TTL Level UART 규약의계층 우리는이미컴퓨터의 USB 포트에아두이노를연결해서시리얼통신을했기때문에마이크로컨트롤러와컴퓨터의시리얼통신이낯설지는않을것이다. 마이크로컨트롤러측에서는 TTL Level UART(Transistor Transistor Logic level Universal Asynchronous Receiver and Transmitter) 시리얼프로토콜을사용하며그규약계층은다음과같다. 물리적계층 : 컨트롤러는어떤핀으로통신을하는가? 아두이노모듈의경우디지털입출력핀 0번핀에서데이터를수신하고 1번핀에서데이터를송신한다. 전기적계층 : 아두이노는 5V나 0V로비트를표현한다. 5V 대신 3.3V를사용하는마이크로컨트롤러들도있다. 논리적계층 : 높은전압 (5V) 신호는 1을의미하고, 0V 신호는 0을의미한다. 데이터계층 : 데이터는일반적으로초당 9600비트의속도로전송된다. 하나의바이트는 8개의비트로이루어지며앞에는시작비트가, 뒤에는정지비트가붙는다. 여러분은사용시데이터전송속도에주의하면된다. 응용계층 : PC에서아두이노로바이트하나를보내면아두이노가이를처리해서다시 PC로하나의바이트를보낸다. <Uart Serial Communicaiotn Wiring> <TTL Level Serial Protocol> 참고 (Logic Level) : https://learn.sparkfun.com/tutorials/logic-levels Interactive Workshop 4
USB(Universal Serial Bus) 규약의계층 마이크로컨트롤러가만들어내는 5볼트와 0볼트는곧장컴퓨터로이동할수없다. 컨트롤러의 TTL 신호는우선 USB-시리얼변환칩으로보내져서 USB 신호로변환되어야한다. 아두이노에는이칩이장착되어있으며, 브레드보드아두이노를구성할경우 USB to Serial Convertor를따로구성하여사용하는이유도이것때문이다. 물리적계층 : USB는 Data+ 와 Data-로이루어진두가닥의선으로데이터를전송한다. 또한모든 USB 커넥터는 5V 전원을공급하는선과그라운드선도갖추고있다. 전기적계층 : Data-의신호는언제나 Data+ 신호의반대극성을지닌다. 따라서두선에가해지는전압의합은언제나 0이된다. 이러한특성때문에수신자는두전압의합을검사하는방식으로전기적에러를확인할수있다. 만약전압의합이 0이아니라면수신자는해당시점의신호를무시할수있다. 논리적계층 : Data+ 선의 +5V 신호나 Data-선의 -5V 신호는 1을의미하며 0V의신호는 0의값을의미한다. 데이터계층 : USB는초당 480메가비트를송신할수있다. 각각의바이트는 8개의비트로구성되며바이트앞에는시작비트가, 뒤에는정지비트가붙는다. 복수의 USB 장치들은동일한데이터선을공유할수있으며 PC통제하에신호를전송한다.( 이러한방식을 Bus라한다.) 동일한버스에는많은장치들을얹을수있기때문에운영체제는각각의장치에고유한주소를할당하고각각의장치가보내는바이트들이적절한응용프로그램으로이동할수있도록관리한다. 응용계층 : USB to Serial Convertor는운영체제에몇개의바이트를전송해서자신을확인시킨다. 그러면운영체제는아두이노하드웨어와구동드라이버를연결해서다른프로그램이아두이노의데이터에접근할수있도록한다. <USB 방식커넥터종류와구성 > <USB Signal Processing> Interactive Workshop 5
대표적인직렬통신 Typical serial communication 우리가아두이노를통해업로드를하고, 데이터를전달하는데는모두직렬통신이사용되었다. 이제까지사용한통신을더깊이이해해보자. 우리가사용한통신은 1:1 통신으로여러개의칩이나디바이스에데이 터를전달하지못한다. 장치를더많이사용하거나멀리데이터를보내려고한다면어떤방법을사용하는게좋을까? UART SPI I2C 동기 / 비동기 비동기 동기 동기 전이중 / 반이중 전이중 전이중 반이중 데이터 2 2 1( 반이중 ) 클록 0 1 1 연결선 제어 0 1 0 합계 2 4 2 n개슬레이브연결 2n 3+n 2 연결방식 1:1 1:N( 마스터-슬레이브 ) 1:N( 마스터-슬레이브 ) 슬레이브전체 - 하드웨어 (SS라인) 소프트웨어 ( 주소지정 ) Interactive Workshop 6
UART(Universal Asynchronous Receiver and Transmitter) 시리얼통신을사용하기위해서는먼저보내는쪽과받는쪽에서약속을정하여야하며이를프로토콜 (Protocol) 이라한다. 마이크로컨트롤러는 0과 1의값만을처리할수있으므로 0은 GND, 1은 VCC로데이터를전송하고, 받는쪽에서는 GND와 VCC를다시 0과 1의이진값으로변환하여사용한다. 데이터를전송하는경우속도가다르면보내는쪽과받는쪽의데이터가다를수밖에없다. UART에서는이를위해데이터의전 송속도를 Baud Rate로정하고있다. 아두이노의경우보통 9600baud Rate를사용한다. 보내는쪽은항상데이터를보내는것은아니며필요한경우에만데이터를보낸다. 데이터의시작과끝을알기위해 0의시작비트와 1의정지비트를사용한다. UART에서는바이트단위통신을흔히사용하며시작및정지비트가추가되어 10비트데이터전송을하는것이일반적이다. 데이터가전송되지않는상태에서는 1의상태에있다가데이터가수신되기시작하면 0의시작비트가들어오고이어서 8비트의실제데이터가들어온이후데이터전송이끝났음을알리는 1의비트가들어오게된다. UART통신은전이중 (Half-Duplex) 방식통신으로수신과송신을동시에진행할수있으며이를위해서 2개의범용입출력핀이필요하다. 범용입출력핀을통해들어오는데이터는위에서설명한약속 ( 프로토콜 ) 에의해그의미를파악하여야하며수신된 10비트의데이터중실제데이터에해당하는 8비트만을찾아주는등의작업을위해전용의하드웨어가마이크로컨트롤러내에포함되어있다. Atmega328에서는 PD0핀과 PD1핀 (Arduino의디지털0번핀과 1번핀 ) 을사용하여 UART 통신을수행하며이를흔히 ' 시리얼포트 ' 라고한다. 아두이노에서는 UART 시리얼포트를시리얼방식의프로그램을업로드하기위해서도사용하고있다. 이경우 USB시리얼변환장치가필요하며이를통해컴퓨터와시리얼통신역시가능하다. < Block diagram of an UART system> <UART Signal Processing> Interactive Workshop 7
I 2 C(Inter-Integrated Circuit) I2C는저속의주변장치사이의통신을위해필립스에서만든규격으로 IIC, I2C, TWI로표기된다. UART는 1960년대에구현된통신으로통신방식이간단할뿐만아니라역사도길어아직도다양한장치들이지원되고있다. 하지만 1:1 통신만가능하여여러개의주변장치를연결하기가불편하다. 이를보완하기위한방법으로여러가지시리얼통신방법이제안되었고이중흔히볼수있는방법이 SPI와 I2C이다. I2C는저속의여러주변장치들이최소한의연결만을사용하여통신할수있도록만들어졌다. 반면 SPI는고속의통신을목표로하는점에서차이가있다. I2C는 SPI와마찬가지로마스터-슬레이브구조를가지지만연결된슬레이브장치의개수와무관하게데이터전송을위한 SDA(Serial Data), 클럭전송을위한 SCA(Serial Clock) 2개의선만필요로한다. SDA는데이터가전송되는하나의통로로하나만존재한다. 송신과수신은 SDA를통해이루어지므로송신과수신은동시에이루어질수없는반이중 (Half-Duplex) 방식을사용한다. SCL은클럭전송을위한통로로 SPI와마찬가지로마스터가클럭을생성하고데이터전송의책임을진다. I2C는 1:N 통신을지원하며, 항상시작비트와종료비트를프로토콜의맨앞과뒤에붙여주어야한다. 슬레이브가고유의주소를가지고소프트웨어적으로데이터를송수신할슬레이브를선택한다. 7비트주소를사용하는데나머지한비트는읽기와쓰기를선택하기위해사용된다. 즉, HIGH값이주어진경우마스터는지정한슬레이브로부터전송되는데이터를 SDA라인에서읽어들일것임을나타내고, LOW값이주어진경우마스터는지정한슬레이브로 SDA라인을통해데이터를전송할것임을나타낸다. 그후에는 ACK(Acknowledgement) 비트로데이터수신이나송신을확인하는비트와함께 1바이트씩의제이터를송신, 또는수신하게된다. Arduino 버전마다 I2C에할당된핀번호는다르니주의하며 Duemilanove나 UNO를마스터장치로사용하는경우에는 SDA를위해아날로그 4번핀을, SCL을위해아날로그 5번핀을사용하도록고정되어있다는점을기억하자. 또한 SDA와 SCL에는풀업저항을연결해주어야만한다. < Block diagram of an I 2 C system> <I 2 C Signal Processing> Interactive Workshop 8
SPI(Serial Peripheral Interface Bus) SPI는주변장치를위한직렬인터페이스중하나이다. UART와마찬가지로양방향통신이동시에가능한전이중 (Full-Duplex) 방식의직렬통신이지만마스터장치하나에슬레이브장치여러개가연결된일대다통신이가능하다는점이다르다. 마스터장치는연결을시작하고통신을책임지는장치이며, 연결이성립된이후에는 2개의데이터선을통해전이중방식으로데이터를주고받을수있다. SPI연결은 4개이상의선을연결해야한다. SCK(Serial Clock) 는시리얼클락으로 SPI가동기전송방식을사용하므로동기화를위한클록전송을위해필요하다. MOSI(Master Out Slave In) 는마스터장치에서슬레이브장치로데이터를전송하기위해사용되며, MISO(Master In Slave Out) 은슬레이브장치에서마스터장치로의데이터전송을위해사용된다. SS(Slave Select) 는여러개의슬레이브장치중마스터장치가데이터를주고받을슬레이브장치를선택하기위해사용된다. 선택되지않은슬레이브장치의 SS는 HIGH 상태에있는반면, 선택된슬레이브장치의 SS는 LOW상태에있다. 즉, 일대다연결이가능하지만특정한순간에는일대일통신만이가능하다. 또한슬레이브장치수가늘어날수록전용의 SS라인은슬레이브장치의수와동일하게늘어나야하는단점이있다. UART 통신에서도수신과송신이동시에일어날수있지만항상그런것은아니다. SPI의데이터전송은송신과수신이항상동시에주고받음으로써동기화문제를해결한다. Arduino 버전마다 SPI에할당된핀번호는다르니주의하며 Duemilanove나 UNO를마스터장치로사용하는경우에는 MISO는디지털11번, MOSI는디지털12번, SCK는디지털 13번, SS는슬레이브로사용하는경우디지털10번핀을사용한다. < Block diagram of an SPI system> <SPI Signal Processing> Interactive Workshop 9
무선통신 (Wireless Communication) 멀리있는곳까지통신을하고싶다면 RS-485, DMX512, CAN, Ethernet 등의통신을 고려해볼만하지만아무래도전선연결없이기기와기기사이에통신하기를원한다 면 RFID, NFC, Wifi, Zigbee, Bluetooth 등을생각할만하다. 아주가까운거리라면 IRED IEEE 802.11 표준을이용한무선기술로최근 IEEE 802.11ac 와같은표준은최대 6.9Gbps 의속도까지제공한다. 아두이노에서 Wi-fi 연결을고려하고있다면 ESP8266 칩등을이용해보자. 적외선송수신기로근거리에서통신하는것도가능하다 ( 리모컨의원리 ). Bluetooth Zigbee Zigbee는다른무선통신에비해낮은가격과저전력이라는특징을가지는개인근거리무선통신표준기술이다. 주파수는대부분 2.4Ghz를사용하며사무실이나집등에서최대 100미터 ( 이론상 1.2Km) 까지근거리무선통신을가능하게한다. 지그비는간단한데이터전송을요구하면서도긴배터리수명과보안성을요구하는분야에서사용된다. 저가라는특징으로인해광범위한영역에서다량으로사용하는 블루투스는 2.4GHz 무선링크를통해데이터를주고받기위한표준이다. 블루투스는보안프로토콜이며단거리, 저전력, 저비용으로장치들을무선연결할수있도록해준다. 특히단거리에서 (<100m) 상대적으로작은데이터를주고받는데최고의프로토콜이며블루투스는유선통신인시리얼통신인터페이스를 (serial communication interfaces) 무선으로대체할수있다. 최근에 Bluetooth Low Energy(BLE) 규격이나왔다. 아두이노에서는 HC-06, HM-12모듈등을고려해볼만하다. 것이가능하며저전력이라는특징은배터리의크기를축소할수있게하여소형화를 가능하게한다. 아두이노에서 Zigbee통신을고려한다면 Xbee모듈을고려해보자. Wi-Fi 와이파이 (Wi-Fi, Wireless Fidelity) 는우리가이더넷 (Ethernet) 혹은유선랜 (Wired LAN) 이라부르는컴퓨터네트워킹기술을무선화 ( 無線化 ) 한것이다. 무선환경에서도유선랜과같은수준의속도와품질로데이터통신을할수있도록한것이와이파이혹은무선랜기술이다. 근거리통신으로무선접속장치가설치된곳에서전파나적외선전송방식을이용하여일정거리안에서무선인터넷을할수있다. Zigbee Wi-Fi bluetooth 통신거리 10~300m 100m 10m 통신속도 250kbps 11Mbps 1Mbps 네트워크 Cluster, Star, Mesh Star Star 동작주파수 2.4Ghz(worldwide) 2.4 & 5Ghz 2.4Ghz 복잡성 ( 상대적 ) 적음 높음 높음 전력소비 ( 상대적 ) 매우적음 많음 중간 연결노드 2 16 50 8 연결지속시간 ( 상대적 ) 단시간 장시간 중간 접속시간 30ms 3s 10s * 기술발전속도가빨라위의내용은계속바뀌고있으니참고만하기바람. Interactive Workshop 10
전기를얻는다양한방법들 거의모든피지컬컴퓨팅작업이동작하기위해서는전기가필요하다. 우리가사용했던 Power Supply는 220V AC를 12V DC 로바꾸어주는회로가내장된어댑터였다. 만약우리가사용했던 12V나 5V가아닌다른높은전압이나낮은전압이필요하다면어떻게해야할까? 만약에머리에써야하거나손으로들어야하거나공중에띄워야하는등의전원이장치로부터분리되야하는작업이라면어떻게하는것이좋을까? 우선우리가작업에필요한전압을생각해보자. 낮은전압이라면여러가지가고려가가능하지만높은전압이라면선택지가많이없어진다. 전원장치는유선 / 무선으로나뉜다. 유선은전원공급을유선으로하는것으로우리가사용했던어댑터나 SMPS등의 AC콘센트에연결해야하는전원을말한다. 무선전원장치에는크게배터리 / 자가공급장치로나눌수있다. 배터리는축전지, 혹은 2차전지라고도부르며화학에너지를전기에너지로변환하는장치이다. 1.5V, 9V,12V 등의건전지를가지고병렬로연결하여 3V나 6V, 18V나 24V 를만들수있다. 또한직렬로연결해전류량을증가시킬수도있다. 또한리튬이온이나리튬폴리머전지는 3.7V가 1셀인전지로이를이용해 3.7V의배수인전압, 배수의전류를조합하여만들수있다. 보호회로나셀밸런서등의회로가내장되지않으면안정성에문제가생겨폭발등의문제가생길수있으므로개인이조합하는것은되도록피하도록하자. 에너지변위를이용해전기를생성해내는방법도있다. 예를들어태양열패널은소량이지만빛에너지를전기에너지로변화시킨다. 이를이용해전기에너지를저장하면작업에사용할만한전기를얻어낼수있게된다. 아니면운동에너지를전기로변화시키거나위치에너지를전기로변화시키는등의발전기의원리를이용해전기를생산해낼수도있다. 또한화학에너지를이용해전기를생산해내는건전지의원리처럼레몬등을이용해전기를생산해내는것도가능하다. 요즘에무선충전의방식으로전기를멀리떨어진곳으로공급하는연구가활발하다. 아직은자기유도방식의표준규격으로는 1cm의범위에서벗어나지는못하고있지만다른여러방식의연구도진행되고있으니주의깊게살피도록하자. Interactive Workshop 11
회로를구성하는다양한방법들 피지컬컴퓨팅작업에서작업이동작하기위해서는반드시부하에전기를전달하는회로구성이필요하다. 우리가피지컬컴퓨팅에서배웠듯이회로는도체들로연결되어있다. 우리가브레드보드에회로를구성할때는보통전선을사용하며, 만능기판이나 PCB에서는회로가구리선이나납으로연결되어있다. 전선에해당하는전기가통할수있는도체를찾아낼수있다면큰브레드보드나딱딱한 PCB를벗어나조금더자유롭고다른시도들이가능해진다. 전기가통할수있는주위의물건들을찾아보도록하자. 이는모두회로를구성할수있는부품들이된다. 전도천 (Conductive Febric) 이나전도실 (Conductive Yarn) 은전기가통하는소재를꼬아만들거나화학적처리를한소재들이다. 전도잉크 (Conductive Ink) 나전도펜 (Conductive Pen) 으로그려서회로를완성할수있다. 구리테잎이나우리가옷을입을때마다만나는지퍼나후크등역시거의모두가전도가되는소재이다. 휴대폰안에쓰이는 film PCB 역시구부릴수있는얇은필름으로구성된전도체이다. 최근에는 PCB를얇은필름에전사할수있는프린터역시연구되고있다. 우리가피지컬컴퓨팅시간에또한배웠듯이전도체는저항성분을가진다. 얇거나긴전선일수록저항성분이많아전류를잘흘리지못한다. 전도실같은경우를봐도전체가구리인것보다는전도성이약하므로 ( 구리등의전도성물질함유량이낮음 ) 많은전류를흘리는작업에는적합하지않다. 전시장의조명을잘살펴보자. 레일속에 + 와 - 라인을연결해두어어디든두지점을 연결해서조명위치를바꿀수있게되어있다. 주위에널려있는도체를잘찾아보자. Interactive Workshop 12