아두이노를 많이 사용하다보니, 아두이노말고 AVR 보드를 구매해서 직접 사용해보고 싶었다.



일단 우노와 동일한 ATMEGA328P-PU 사용해보기로 결정.


원랜 아두이노 회로에 포함되어 있던 캐패시터나 크리스탈 등등이 필요해지는데.. 모르니 열심히 구글링을 해서 찾아보았다.



우선 circuito.io 라는 멋진 사이트를 발견! ATMEGA328P-PU 를 선택하면 위와 같이 회로를 구성해준다.


FTDI나 어댑터 같은건 생략을 하고, 디바이스마트에서 해당 부품을 찾아보았다.


 종류

상세 

 갯수

 개당 가격

 링크 (디바이스마트)

 MCU

 ATMEGA328P-PU

 1

 3,000

 http://www.devicemart.co.kr/1059191

 저항

 10kΩ ±1% 1/4W

 1

 20

 http://www.devicemart.co.kr/2034

 크리스탈

 16MHz 20pF 

 1

 -

 -

 크리스탈 

 16MHz 18pF

 1  http://www.devicemart.co.kr/72
 세라믹 캐패시터

 22pF

 2

 15

 http://www.devicemart.co.kr/1378

 세라믹 캐패시터

 20pF

 2 15 http://www.devicemart.co.kr/1379
 세라믹 캐패시터

 100nF(0.1uF)

 2

 30

 http://www.devicemart.co.kr/1343

 전해 캐패시터

 1uF / 50V

 1

 20

 http://www.devicemart.co.kr/1315

 리니어 레귤레이터

 L7805 LDO 5V 1.5A

 1 - -

 리니어 레귤레이터

 L7805CV

 1 759 http://www.devicemart.co.kr/1026440



동일하거나 최대한 비슷한 것을 골라보았음.

circuito.io 에 나온 부품이 없거나 기타 이유로 대체 선택한 부품은 하늘색으로 칠해두었다.

가격은 구매갯수에 따라 조금 다를 수 있음.

또한 최소 구매 갯수때문에 실질 지출 또한 달라질 수 있고 + 부가세 10% 붙여야함.


크리스탈은 해당 부품이 없어서 대체선택이고, 22pF 캐패시터와 LDO를 왜 저렇게 선택했는지는 아래 내용 참고.



자, 이러면 대충 4,300원이면 제대로 작동하게 하나 만들 수 있다.


그런데 디바이스마트 아두이노 호환보드를 보면 ATMEGA328P 를 사용하는 프로미니나 나노가 3100~4500원에 판매되고 있다....

하... 해보지 말까...



세라믹 캐패시터

크리스탈의 경우 circuito.io 에 나온 크리스탈은 Load Capacitance 가 20pF 인데, 디바이스마트에는 18pF 밖에 없었음.

찾아보니 계산식은 아래와 같았다. 


CL = (Cext * Cext) / (Cext + Cext) + Cint + Cstray

Cext = 2 * (CL - Cint - Cstray)


참고1: http://forum.arduino.cc/index.php?topic=23397.msg176828#msg176828

참고2: http://dokkodai.tistory.com/98


각각이 뭔지 자세한 설명은 나도 모르니 패스하고,(ㅠㅠ)

CL이 20pF 일때 역산을 해보고, 그를 통해 18pF 일때 Cext 를 계산해보면 20pF 가 되는 것 같았다.

별 차이 없어보이지만, 난 뭐가뭔지 잘 모르니까 일단 둘 다 구매했다. 써보면 알겠지...



리니어 레귤레이터

L7805 는 검색해보면 종류가 다양한데..

일단 패키지 종류가 딱 티가 나니 먼저 나눠보도록 하자.


TO-220FP의 FP는 풀팩, 히트싱크가 없고 풀몰딩으로 완전히 절연된 패키지라고 한다.

어떤 장단점이 있는지 잘 모르겠으니 그냥 TO-220 선택.



그러면 디바이스마트에 L7805(CV, ACV, CV-DG, ABV) 4개...의 제품이 나오는데..


L7805 의 개량으로 L7805C, L7805AB/AC 시리즈가 있다. L7805 는 더이상 판매되지 않는 듯?

L7805AB/AC 는 데이터시트 상으로 TJ 값에 따라 나뉘는데.. 테스트 온도 환경이 아닐까 싶고

L7805AB는  -40 ~ 125°C, L7805AC는 0 ~ 150°C 라고... 으..응...

참고로 L7805C 는 -55 ~ 150°C


다른 데이터 항목은 잘 모르겠지만, Output Voltage 의 min/max 범위가 L7805AB/AC 가 L7805C 에 비해 아주 조금 더 좁다.

더 정밀하다는 소리겠지...?


그리고 dimension 에 따른 파트번호가 나뉘면서 V가 끝에 붙는다.(다른 기호면 크기가 조금 다를 수 있음)

L7805C -> L7805CV

L7805AB/AC -> L7805ABV, L7805ACV


이렇게 나뉘니, L7805CV-DG 빼곤 차이점에 대한 궁금증이 해결.

CV-DG 는 귀찮으니 그러려니 하고 패쓰...


결과적으로, 별 차이 없다.

제일 저렴한 L7805CV 를 선택하도록 하자(?)


맨날 검색하다가 작성.


압축

$ tar -zcf [.tar.gz] [...]


압축 해제

$ tar -zxf [.tar.gz]


옵션

-f: use archive file or device ARCHIVE

-c: create a new archive

-x: extract files from an archive

-z: filter the archive through gzip


-p: extract information about file permissions (default for superuser)

-t: list the contents of an archive

-v: verbosely list files processed

워낙 잘못된 방법이 소개된 글이 많아 고생을 하여 작성.

Raspberry PI Zero W, Jessie 기준이다.


TX, RX 핀은 구글에 검색하면 이미지가 많이 나오니 핀 배열을 참고하자.


검색을 해보면 텍스트 파일을 수정하거나 데몬을 끄고 켜는 등의 작업이 많은데 다 필요없다.


$ sudo raspi-config


Interfacing Options

-> Serial

-> Would you like a login shell to be accessible over serial? <No>

-> Would you like the serial port hardware to be enabled? <Yes>


이렇게만 해주면 boot 설정 변경 등을 알아서 해주며 재부팅이 필요할 경우 재부팅까지 묻는다.


이 후 /dev/ttyS0 파일스트림을 사용하면 된다. /dev/ttyAMA0 이 아님!


블루투스 데몬이나 시리얼 서비스 등등을 바꿔야한다는 글들이 많지만 다 필요없으니 참고.



Python 에서 시리얼 통신

아래 방법 중 하나로 serial 라이브러리 설치


sudo python -m pip install pyserai
sudo apt install python-serial (Python3 의 경우엔 python3-serial)



import serial
ser = serial.Serial('/dev/ttyS0', 9600, timeout=3)

ser.readline().strip().decode('utf-8')
ser.write(b'TEST\n')
ser.write('TEST\n'.encode('utf-8')


serial 변수 생성 이후 open 하고 싶다면,


ser = serial.Serial(timeout=3)
ser.port = '/dev/ttyS0'
while True:
	try:
		ser.open()
		if ser.is_open: break
		time.sleep(1)
	except: pass



참고

class serial.Serial:
	__init__(port=None, baudrate=9600, bytesize=EIGHTBITS, 
		parity=PARITY_NONE, stopbits=STOPBITS_ONE, timeout=None, 
		xonxoff=False, rtscts=False, write_timeout=None, dsrdtr=False, 
		inter_byte_timeout=None, exclusive=None)


+ Recent posts