본문 바로가기

만들기 / making/sensing workshop

serial communication

serial communication

*serialEvent
interrupt 에서는 최소한의 동작만 하도록.
통신은 서로 아다리가 맞아야.
논리적으로는 이상이 없어도 타이밍을 간과해서 전송에러가 날 수 있다.
컴퓨터가 빠를 때는 문제가 없으나 연산량이 많거나 MCU 끼리 통신에서는 문제가 될 수 있다.
ex) processing 에서 vision 은 빨라봐야 15 fps
 
*processing 연산 시간 측정
시간을 재고 싶은 연산의 시작과 끝에 각각 millis () 로 시스템의 시간을 구한 후 차이로
 
*시간 차이로 위치를 측정하는 기술을 'arduino' 에서 구현할 수 있는지 생각해보자.
 
*통신속도
로켓을 쏠 때는 9600 보다도 더 낮은 속도로.
낮을 수록 전송의 신뢰도는 높아짐.
 
31,250 bps -> MIDI 전송 속도
RS232 통신에 기초
이 속도로 3 byte 만 보내면 소리가 난다.
 
250,000bps 250 kbps -> DMX (조명 기기 전송 프로토콜) 전송 속도
485 통신에 기초 (RS232 와
ex) 갤러리아 백화점 RGB led, 벨라지오 호텔 분수
 
로켓에는 RS422, CAN 통신 등이 쓰임.
아주 비싼 우주 위성은 따로 쓰는 방식이 있음.
CAN 은 선구자적인 위성에서 사용. 실제로는 자동차에서 사용.
자동차 튜닝 업체에서 컴퓨터로 시험할 때 사용.
자동차의 Electronic Control Unit (ECU) 에서 여러 가지 센서의 데이터를 받을 때 사용.
무지막지하게 신뢰도가 중요함.
 
후진 국가의 위성에서는 RS232 를 사용.
인공위성에서 가장 문제가 되는 것이 하네싱 (연결) 부.
진동 때문에 끊어지기 쉬움.
 
232, 485 모두 1:1 통신
 
Multi Channel 통신은 75176칩을 사용해서 MAX485 통신.
통신을 하고 싶을 때 손 드는 선이 하나 더 필요.
평상시에 0V 로 있다가 말하고 있을 때만 HIGH 로.
ex)
output (pin0, HIGH);
serialWrite ("내가 보낸다.");
output (pin0, LOW);
나머지는 75176 이 알아서 해준다.
실제로는 두 개의 선으로 같은 신호를 약간의 딜레이를 주고 보냄.
신호 전송의 신뢰도를 높이기 위해서 noise cancellation 을 사용.
1km 까지도 전송 가능.
 
485 multi channel 통신
사이키 조명의 뒷면을 보면 내 모듈의 번호 (ID) 를 딥스위치로 조정.
75176 을 사용하려면 ID 를 설정하는 딥 스위치가 필요.
ex) 3개짜리 딥스위치는 0~7 의 8개 ID 로 설정가능. 000, 001 ~ 111
 
grouping
갤러리아 백화점의 수많은 조명을 하나의 controller 로  제어할 수 없다.
기본적으로 각자의 조명이 controller 를 가짐
몇 개의 조명을 합쳐서 group 으로 설정하고 더 큰 controller 로 제어.
이런 식으로 계속 grouping 을 해서 수많은 조명을 제어.
 
ATMega 168, 328 은 이전에 많이 사용하지 않았다.
ATMega 128, ATTiny 2313 등을 더 많이 사용.
 
앞으로 할 것.
ATTiny 2313 을 20x20 PCB 에 실장해보자.
아무 센서나 5V, 0V 로 연결만 하면 2kbps 까지 통신이 가능해짐.
 
다음 시간 필요한 것
 
 
 
ATtiny는 지난 주에 구로점에서는 다 떨어졌습니다. (제가 2개 산 것이 마지막)
오프라인으로 가실꺼면 미리 확인하세요.
SN75176도 많지는 않더군요.
수업 막바지라 힘드네요. 다들 힘냅시다~~~
 
+
 
범용기판 6개 http://www.devicemart.co.kr/mart7/mall.php?cat=005004001&query=view&no=12320 크기는 각자 원하는대로
상태 led
DIP 스위치는 안 달 것 (프로그래밍)
그 외 5V/0V 로 동장하는 다른 센서도 가져와서 테스트합시다.
 
*빠진 것 추가 부탁드립니다.
 
완성하면 32개까지 연결이 가능.
규격상으로는 256 까지도 가능. 저항 두 개를 잘 달아야함.
더 필요하면 grouping 을 하면 된다.
 
*그림 있으신 분 추가 부탁드립니다.
 
 
 
 
 
*일부 통신 규격 정리
SPECIFICATIONS RS232 RS423 RS422 RS485
Mode of Operation SINGLE
-ENDED
SINGLE
-ENDED
DIFFERENTIAL DIFFERENTIAL
Total Number of Drivers and Receivers on One Line (One driver active at a time for RS485 networks) 1 DRIVER
1 RECVR
1 DRIVER
10 RECVR
1 DRIVER
10 RECVR
32 DRIVER
32 RECVR
Maximum Cable Length 50 FT. 4000 FT. 4000 FT. 4000 FT.
Maximum Data Rate (40ft. - 4000ft. for RS422/RS485) 20kb/s 100kb/s 10Mb/s-100Kb/s 10Mb/s-100Kb/s
Maximum Driver Output Voltage +/-25V +/-6V -0.25V to +6V -7V to +12V
Driver Output Signal Level (Loaded Min.) Loaded +/-5V to +/-15V +/-3.6V +/-2.0V +/-1.5V
Driver Output Signal Level (Unloaded Max) Unloaded +/-25V +/-6V +/-6V +/-6V
Driver Load Impedance (Ohms) 3k to 7k >=450 100 54
Max. Driver Current in High Z State Power On N/A N/A N/A +/-100uA
Max. Driver Current in High Z State Power Off +/-6mA @ +/-2v +/-100uA +/-100uA +/-100uA
Slew Rate (Max.) 30V/uS Adjustable N/A N/A
Receiver Input Voltage Range +/-15V +/-12V -10V to +10V -7V to +12V
Receiver Input Sensitivity +/-3V +/-200mV +/-200mV +/-200mV
Receiver Input Resistance (Ohms), (1 Standard Load for RS485) 3k to 7k 4k min. 4k min. >=12k
 

'만들기 / making > sensing workshop' 카테고리의 다른 글

Day 9: Lux Sensor  (0) 2009.08.31
Day 8: Touch Sensor  (0) 2009.08.31
multi sensor arduino / processing  (0) 2009.08.31
arduino + processing code  (0) 2009.08.31
Audio sensor module on PCB  (0) 2009.08.31