1
2
이번 시리즈의 주요 주제
1.녹칸다는 PCB제작 전문가가 아님(중요)! ▶ 조금 틀릴수도 있음..
2.아두이노를 재미있게 가지고 놀기 위해서 필요한 PCB를 내가 직접 만들어 본다는것에 의미가 있고 전문적인 PCB제작에는 관심이 없음!
3.PCB디자인은 kicad(카이캐드)로하고 나중에 jlcpcb에 주문하는 것까지 내용을 다뤄봄!
4.이미 이것저것 테스트를 하기 위해서 PCB보드를 다양한 형태로 주문해놓아서 필요하면 자료로 활용하도록 함!
5.아두이노 우노나 ESP8266, ESP32보드의 쉴드타입으로 PCB보드를 만들어서 활용하도록 함!
6.나중에는 easyeda를 이용해서 smt를 하는 방법도 간단하게 소개해볼 생각!(이미 녹칸다는 뭔지도 모르면서 ESP32보드로 SMT주문을 하였다)
7.녹칸다와 함께 kicad로 내가 필요한 PCB보드를 직접 만들어보도록 하자!
8.각 회차별로 정해진 분량없이 라이브방송에서 진행되는 만큼 하고 남은건 다음 회차로 넘기면서 진행함!
9.구글 슬라이드의 시각자료는 대략적으로만 작성해두고 라이브방송에서 자세히 작성함!
3
전체적으로 해봐야할 키워드
kicad 녹칸다의 내맘대로 kicad 시리즈
ㅡ기본적인것들로만 만들어보기(기본라이브러리)
ㅡ회로도에 대해 기본적인거 인지하기
ㅡ직렬 병렬 조인트로연결 극성
ㅡ기본으로 사용하는 기호
ㅡ사용용어 스케메틱 pcb뷰어 풋프린트 등등
ㅡ쓰루홀 smd
ㅡ헬로월드용 기판만들기
ㅡ아두이노 우노 쉴드 템플릿으로 시작하기
ㅡled 1개를 연결할때 흐름 살펴보기
ㅡ가장 기본을 이루는 5개의 레이어 알아보기
ㅡ앞뒷판배선 앞뒷판실크 엣지컷
ㅡled 버튼 위주로 쉬운거 만들어보기
ㅡ기본라이브러리 외 것을 다운받아 활용하기
ㅡ회로와 풋프린트를 다운받아서 적용하기
ㅡmhz19나 sx1276으로 해보기
ㅡcopper pour에 대해 알아보기
ㅡ쓰리디 모델 적용하기
ㅡ실전에 활용하는 다양한 커넥터 써보기
ㅡusb 배럴잭 터미널블록등등
ㅡirf520을 이용한 응용예제(배럴잭까지)
ㅡ나노보드나 esp32보드용 기판 만들기
ㅡ내가 라이브러리를 직접 만들어보기
ㅡ피치와 그리드에대한 이해
ㅡ심볼 만들어보기
ㅡ풋프린트 만들어보기
ㅡusb모양 만들어보기
ㅡ전원 구성하고 배선두께 조절해보기(전류에따라)
ㅡ배선하기 어려울때 via에 대해 알아보기
ㅡ드릴홀 뚫어보기
ㅡ기판에 이미지 인쇄하기
ㅡ주문을 넣어서 pcb제작해보기
ㅡ녹칸다가 미리 만들어둔 샘플 확인해보기
ㅡv컷하는방법 알아보기
easyeda
쉴드가 아니라 pcb에 mcu를 집어넣기(mcu온보드)
ㅡkicad와 비교하여 사용하는방법 알아보기
ㅡsmt용 기판 만들어보기
4
녹칸다와 kicad로 시작하기!(1/10)
5
녹칸다와 kicad로 시작하기!(2/10)
6
녹칸다와 kicad로 시작하기!(3/10)
7
녹칸다와 kicad로 시작하기!(4/10)
8
녹칸다와 kicad로 시작하기!(5/10)
9
녹칸다와 kicad로 시작하기!(6/10)
10
녹칸다와 kicad로 시작하기!(7/10)
11
녹칸다와 kicad로 시작하기!(8/10)
12
녹칸다와 kicad로 시작하기!(9/10)
13
녹칸다와 kicad로 시작하기!(10/10)
14
녹칸다가 생각하는 수준별 단계
1단계 : kicad에 포함된 기본 라이브러리만 활용하는 단계
▶내가 만들고자하는 PCB의 부품이 기본에 포함됨
2단계 : kicad에 포함되지 않은 다른 사람이 만들어둔 외부 라이브러리를 활용하는 단계
▶내가 필요한 부품이 kicad에 없지만 다운로드 받을 수 있음
3단계 : kicad에 내가 직접 라이브러리를 만들어서 활용하는 단계
▶다운로드 받을때가 없어서 내가 직접 만들어서 써야함
4단계 : 주문해서 PCB기판을 직접 제작하는 단계
5단계 : PCB기판 뿐만 아니라 부품도 SMT로 제작하는 단계
15
1편에서 진행하는 예제 목록(누르면 이동)
16
뭔지 모르겠지만 일단 나의 첫번째 PCB 만들기
(상황) LED 1개가 있고 전원을 연결하면 LED가 켜지고 연결안하면 꺼지도록 하고싶다..
-LED 1개
-저항 1개
-전원을 연결할 수 있는 2핀커넥터
(더블클릭)회로도 편집기 오픈!
17
뭔지 모르겠지만 일단 나의 첫번째 PCB 만들기
18
뭔지 모르겠지만 일단 나의 첫번째 PCB 만들기
회로도편집기에 심볼을 배치하는 단계
19
뭔지 모르겠지만 일단 나의 첫번째 PCB 만들기
20
뭔지 모르겠지만 일단 나의 첫번째 PCB 만들기
내가 추가하고자 하는 심볼
심볼에 설정하고자 하는 풋프린트
21
뭔지 모르겠지만 일단 나의 첫번째 PCB 만들기
내가 원하는 풋프린트 배치가 완료됨
22
뭔지 모르겠지만 일단 나의 첫번째 PCB 만들기
PCB 편집기 오픈
23
뭔지 모르겠지만 일단 나의 첫번째 PCB 만들기
회로도 편집기에 있는 풋프린트 불러오기
24
뭔지 모르겠지만 일단 나의 첫번째 PCB 만들기
얘네들 연결을 해줘야함
25
뭔지 모르겠지만 일단 나의 첫번째 PCB 만들기
각 부품간의 연결을 배선으로 연결해줌
배선라우트
26
뭔지 모르겠지만 일단 나의 첫번째 PCB 만들기
기판의 테두리를 edge.cut으로 지정함
edge.cut
사각형그리기
27
뭔지 모르겠지만 일단 나의 첫번째 PCB 만들기
3D로 보기
28
1단계 PCB제작의 흐름
1.프로젝트 생성
2.심볼 배치하기(회로도 편집기)
3.심볼간 네트 연결하기(회로도 편집기)
4.심볼마다 풋프린트(footprint) 지정해주기!(회로도 편집기)
5.회로도 편집기 내용을 PCB 편집기로 반영하기!(PCB 편집기)
6.풋프린트 배치하고 배선하기(PCB 편집기)
7.완성된 결과물 확인하기!
(참고) 회로도 편집기에서 작업이 완료된다음 PCB편집기에서 수정사항을 반영해서 작업을 이어나간다!
29
kicad에서 사용하는 용어에 익숙해지기
1.심볼(symbol)
2.풋프린트(footprint)
3.회로도 편집기
4.PCB 편집기
5.쓰루홀 부품(THT)
6.SMD부품
7.패드(pad)
8.배선
30
배선을 잘못하면 어떻게 되나요?
31
배선을 잘못하면 어떻게 되나요?
혹시~~ 연결안된게 있으면 찾아준다(연결해야한다)
32
1단계 수준으로 레이어(layer에 대해 알아보기)
1.(F.Cu) : 양면 PCB기판에서 윗면에 배선 라우트가 되는 영역
->F면에서 배선 라우트는 교차할 수 없다
2.(B.Cu) : 양면 PCB기판에서 아랫면에 배선 라우트가 되는 영역
->B면에서 배선 라우트는 교차할 수 없다
3.(Edge.Cuts) : 내가 만들고자 하는 기판의 외곽 테두리를 말한다!
33
제일 첫번째 만든 기판을 베터리 타입으로 하시오!
배선이 뒷면에 됨
34
기본으로 사용하는 기호(심볼)에 대해 알아보기!
저항
캐패시터
엘이디
베터리
커넥터
35
직렬, 병렬연결에 대해 알아보기!
직렬
병렬
36
직렬, 병렬연결에 대해 알아보기!
병렬
병렬
37
아두이노 쉴드 타입의 프로젝트 만들기
38
아두이노 쉴드 타입의 PCB 만들기(1)
(LED 1개를 연결해서 1초 간격으로 ON/OFF하기)
39
아두이노 쉴드 타입의 PCB 만들기(1)
(LED 1개를 연결해서 1초 간격으로 ON/OFF하기)
#define led 4
void setup() {
pinMode(led,OUTPUT); //출력
}
void loop() {
//1초간격으로 LED를 ON/OFF한다
digitalWrite(led,HIGH); //ON
delay(1000);
digitalWrite(led,LOW); //OFF
delay(1000);
}
40
풋프린트를 이쁘게 정렬해서 배치하는 방법
정렬하려는 풋프린트 선택
위쪽으로 정렬됨
3개 이상인 경우 간격이 일정해짐
41
아두이노 쉴드 타입의 PCB 만들기(2)
(LED 3개를 1초간격으로 순서대로 켜기)
42
아두이노 쉴드 타입의 PCB 만들기(2)
#define green 4
#define yellow 5
#define red 6
void setup() {
pinMode(green,OUTPUT); //출력
pinMode(yellow,OUTPUT); //출력
pinMode(red,OUTPUT); //출력
}
void loop() {
digitalWrite(green,HIGH);
digitalWrite(yellow,LOW);
digitalWrite(red,LOW);
delay(1000);
digitalWrite(green,LOW);
digitalWrite(yellow,HIGH);
digitalWrite(red,LOW);
delay(1000);
digitalWrite(green,LOW);
digitalWrite(yellow,LOW);
digitalWrite(red,HIGH);
delay(1000);
}
43
아두이노 쉴드 타입의 PCB 만들기(3)
(버튼 1개로 LED 제어하기)
44
아두이노 쉴드 타입의 PCB 만들기(3)
#define led 4
#define btn 10
void setup() {
pinMode(led,OUTPUT);
pinMode(btn,INPUT_PULLUP);
}
void loop() {
if(digitalRead(btn) == LOW){
//버튼이 눌려진상황
digitalWrite(led,HIGH);
}else{
//버튼이 안눌려진상황
digitalWrite(led,LOW);
}
}
45
아두이노 쉴드 타입의 PCB 만들기(4)
(버튼2개로 LED 2개 제어하기)
46
아두이노 쉴드 타입의 PCB 만들기(4)
//btn1을 누르면 led1이 켜지고, btn2를 누르면 led2가 켜진다
#define led1 4
#define led2 5
#define btn1 10
#define btn2 11
void setup() {
pinMode(led1,OUTPUT);
pinMode(led2,OUTPUT);
pinMode(btn1,INPUT_PULLUP);
pinMode(btn2,INPUT_PULLUP);
}
void loop() {
if(digitalRead(btn1) == LOW){
//버튼이 눌려진상황
digitalWrite(led1,HIGH);
}else{
//버튼이 안눌려진상황
digitalWrite(led1,LOW);
}
if(digitalRead(btn2) == LOW){
//버튼이 눌려진상황
digitalWrite(led2,HIGH);
}else{
//버튼이 안눌려진상황
digitalWrite(led2,LOW);
}
}
//btn1이 눌려지면 led1의 상태가 토글되고
//btn2를 누르면 led2의 상태가 토글되도록 하시오!
#define led1 4
#define led2 5
#define btn1 10
#define btn2 11
void setup() {
pinMode(led1,OUTPUT);
pinMode(led2,OUTPUT);
pinMode(btn1,INPUT_PULLUP);
pinMode(btn2,INPUT_PULLUP);
}
void loop() {
if(digitalRead(btn1) == LOW){
//버튼이 눌려진상황(토글된다)
digitalWrite(led1,!digitalRead(led1));
delay(300);
}
if(digitalRead(btn2) == LOW){
//버튼이 눌려진상황(토글된다)
digitalWrite(led2,!digitalRead(led2));
delay(300);
}
}
47
48
1편에서 했던 PCB를 만들기위한 순서
1.프로젝트를 생성한다!
2.회로도 편집기에서 심볼을 추가한다!
3.회로도 편집기에서 각 심볼에 풋프린트를 설정한다!
4.PCB 편집기에서 풋프린트를 배치하고 배선을 연결한다!
5.완성된 PCB보드에 copper pour 적용한다!(2편에서 추가)
6.완성된 결과물을 확인한다!
49
2편의 예제목록
1.가볍게 복습을 하되 copper pour를 적용하는 방법 알아보기! [링크]
2.온습도센서를 3핀 핀소켓으로 구성해서 쉴드에 연결해서 사용해보기! [링크]
3.MQ6가스센서를 4핀 핀소켓으로 구성해서 쉴드에 연결해서 센서값 측정해보기! [링크]
4.아두이노의 쉴드이긴한데 LED에 DC배럴잭으로 외부전원을 연결하면 LED가 켜지도록 하시오! [링크]
5.4핀몰렉스 커넥터의 1번핀부터 4번핀까지 순서대로 블루투스모듈이 연결되고 5V,RX(3),TX(2),GND순으로 배치되어있을때 쉴드 타입으로 구성하시오! [링크]
6.수위센서(xkc-y25-v)의 JST XH(2.54mm) 4핀커넥터를 아두이노 쉴드에 연결해서 쓸 수 있도록 구성하시오! [링크]
7.JST PH 2.0 4핀 커넥터를 이용해서 VCC, 3번핀, 2번핀, GND 순으로 연결되도록 하시오! [링크]
8.NW 1.25피치 4핀 커넥터를 이용해서 VCC, 3번핀, 2번핀, GND 순으로 연결되도록 하시오! [링크]
9.아두이노의 5V와 GND를 USB를 이용해서 다른 누군가에게 전원을 공급해준다! [링크]
10.아두이노에서 5V와 GND를 2핀 터미널블록 2개를 이용해서 출력하시오! [링크]
50
LED 1개를 ON/OFF하기(가벼운 복습)
51
copper pour 하는 방법 알아보기!
1.PCB기판에 GND나 VCC로 구리를 덮는 작업을 한다!
2.PCB보드에 copper pour를 해야 노이즈가 감소된다!
3.녹칸다의 kicad는 양면기판을 기준으로한다!
4.앞면과 뒷면에 각각 copper pour를 적용할 수 있다!
5.어떤 기준이 되는 패드 1개를 기준으로 그 패드와 연결된 copper pour를 각 면에 덮어버리는 방식이다!
6.특별하지 않으면 그 패드는 GND로 한다!
7.모든 풋프린트의 GND핀은 별도로 연결할 필요가 없다!
52
copper pour 하는 방법 알아보기!
앞면과 뒷면에 둘다 copper pour를 적용하겠다!
그때 적용할 패드는 GND이다
F.Cu나 B.Cu가 선택되어있어야함
53
copper pour 하는 방법 알아보기!
나의 PCB를 다각형으로 감싸준다!
그리고 나서 키보드의 B를 누른다
54
copper pour 한것과 안한것의 비교
이 부분은 구리로 칠하지 않음
이 부분은 구리로 채워짐
(copper pour)
55
주로 많이 사용하는 커넥터 목록
1.핀헤더 타입으로 된 센서를 연결하는 방법!
2.외부 전원을 DC배럴잭으로 연결하는 방법!
3.몰렉스 2.5피치 타입(5267)으로 연결하는 방법!
4.JST 2.54피치 타입(XH시리즈)으로 연결하는 방법!
5.JST 2.0피치 타입(PH시리즈)으로 연결하는 방법!
6.NW 1.25피치 타입(A1251)으로 연결하는 방법!
7.USB커넥터 타입으로 연결하는 방법!
8.터미널블록으로 연결하는 방법!
56
핀헤더 타입(2.54피치)
57
녹칸다가 온습도센서를 연결해서 쓸 수 있는 PCB를 만들고 싶다!
58
녹칸다가 온습도센서를 연결해서 쓸 수 있는 PCB를 만들고 싶다!
//라이브러리 매니저로 가서 dht sensor library를 검색해서 설치해야함!
#include "DHT.h"
#define DHTPIN 7 //온습도 센서가 연결된핀
#define DHTTYPE DHT11 //센서의 종류
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
dht.begin();
}
void loop() {
delay(2000);
float h = dht.readHumidity(); //습도
float t = dht.readTemperature(); //온도
Serial.print(F("Humidity: "));
Serial.print(h);
Serial.print(F("% Temperature: "));
Serial.print(t);
Serial.print(F("°C "));
Serial.println();
}
59
MQ6가스센서를 측정하는 쉴드 만들기!
60
MQ6가스센서를 측정하는 쉴드 만들기!
//라이브러리 매니저에서 MQUnifiedsensor검색해서 설치하기!
#include <MQUnifiedsensor.h>
//Definitions
#define placa "Arduino UNO"
#define Voltage_Resolution 5
#define pin A0 //MQ6가 연결된핀!
#define type "MQ-6" //MQ6
#define ADC_Bit_Resolution 10
#define RatioMQ6CleanAir 10
MQUnifiedsensor MQ6(placa, Voltage_Resolution, ADC_Bit_Resolution, pin, type);
void setup() {
Serial.begin(9600);
MQ6.setRegressionMethod(1);
MQ6.setA(2127.2); MQ6.setB(-2.526);
MQ6.init();
Serial.print("Calibrating please wait.");
float calcR0 = 0;
for(int i = 1; i<=10; i ++)
{
MQ6.update(); // Update data, the arduino will read the voltage from the analog pin
calcR0 += MQ6.calibrate(RatioMQ6CleanAir);
Serial.print(".");
}
MQ6.setR0(calcR0/10);
Serial.println(" done!.");
if(isinf(calcR0)) {Serial.println("Warning: Conection issue, R0 is infinite (Open circuit detected) please check your wiring and supply"); while(1);}
if(calcR0 == 0){Serial.println("Warning: Conection issue found, R0 is zero (Analog pin shorts to ground) please check your wiring and supply"); while(1);}
}
void loop() {
MQ6.update();
float sensor = MQ6.readSensor();
Serial.println(sensor);
delay(500); //Sampling frequency
}
61
DC 배럴잭
62
아두이노의 쉴드이긴한데 LED에 DC배럴잭으로 외부전원을 연결하면 LED가 켜지도록 하시오!
63
아두이노의 쉴드이긴한데 LED에 DC배럴잭으로 외부전원을 연결하면 LED가 켜지도록 하시오!
DC-005
64
몰렉스 2.5피치 타입(5267)
65
4핀몰렉스 커넥터의 1번핀부터 4번핀까지 순서대로 블루투스모듈이 연결되고 5V,RX(3),TX(2),GND순으로 배치되어있을때 쉴드 타입으로 구성하시오!
66
4핀몰렉스 커넥터의 1번핀부터 4번핀까지 순서대로 블루투스모듈이 연결되고 5V,RX(3),TX(2),GND순으로 배치되어있을때 쉴드 타입으로 구성하시오!
몰렉스 5267
몰렉스 5264
67
JST 2.54피치 타입(XH시리즈)
68
수위센서(xkc-y25-v)의 JST XH(2.54mm) 4핀커넥터를 아두이노 쉴드에 연결해서 쓸 수 있도록 구성하시오!
69
수위센서(xkc-y25-v)의 JST XH(2.54mm) 4핀커넥터를 아두이노 쉴드에 연결해서 쓸 수 있도록 구성하시오!
70
JST 2.0피치 타입(PH시리즈)
71
JST PH 2.0 4핀 커넥터를 이용해서 VCC, 3번핀, 2번핀, GND 순으로 연결되도록 하시오!
72
JST PH 2.0 4핀 커넥터를 이용해서 VCC, 3번핀, 2번핀, GND 순으로 연결되도록 하시오!
73
NW 1.25피치 타입(A1251)
74
NW 1.25피치 4핀 커넥터를 이용해서 VCC, 3번핀, 2번핀, GND 순으로 연결되도록 하시오!
75
NW 1.25피치 4핀 커넥터를 이용해서 VCC, 3번핀, 2번핀, GND 순으로 연결되도록 하시오!
76
USB A타입 커넥터
77
아두이노의 5V와 GND를 USB를 이용해서 다른 누군가에게 전원을 공급해준다!
78
아두이노의 5V와 GND를 USB를 이용해서 다른 누군가에게 전원을 공급해준다!
USB 2.0 A타입
마운트 소켓
79
터미널블록 5.08피치
80
아두이노에서 5V와 GND를 2핀 터미널블록 2개를 이용해서 출력하시오!
81
아두이노에서 5V와 GND를 2핀 터미널블록 2개를 이용해서 출력하시오!
KF301
2p, 3p, 4p
82
83
3편에서 주력으로 탐구해볼 내용!
0.쓰루홀 풋프린트와 SMD풋프린트의 궁극적인 차이를 비교해보시오!
1.프로젝트를 생성한다
2.심볼을 배치해야하는데 내가 원하는 심볼이 없으면 어떻게하지?(문제점)
->심볼을 다운로드받는다!
->회로도 편집기에서 회로도를 미려하게 작성하기 위해서 네트 라벨을 사용하는 방법을 알아본다!
3.풋프린트를 배치해야하는데 내가 원하는 풋프린트가 없으면 어떻하지?
->풋프린트를 다운로드 받는다!
(심볼하고 풋프린트는 한쌍이다)
4.회로도 편집기로 가서 PCB를 디자인하고 배선한다!
5.최종적으로 확인한다!
84
3편의 예제번호
1.THT와 SMD의 차이를 비교해보기위한 PCB기판 만들어보기! [링크]
2.아두이노 우노 쉴드 타입의 템플릿 프로젝트를 생성해서 LED를 아두이노의 2번핀에 연결하는 예시를 네트 라벨을 활용해서 보이시오! [링크]
3.kicad에 기본으로 포함되지 않은 심볼과 풋프린트를 다운로드 받아서 활용하는데 온습도센서(DHT-11)의 값을 측정할 수 있는 아두이노우노 쉴드를 구현하시오! [링크]
4.dfminimp3모듈과 스피커를 연결할 수 있는 아두이노용 쉴드를 제작하시오! [링크]
5.아두이노에 RS485통신이 가능하도록 max485를 연결해서 쓸 수 있는 쉴드를 제작하시오! [링크]
6.모스펫(IRF520)과 버튼 2개를 이용해서 DC모터를 ON/OFF할수는 쉴드를 만드시오! [링크]
85
THT와 SMD의 차이를 알아보기
1.양면 PCB기판에 THT는 관통되기 때문에 뒷면에 배선 라우트를 할 수 없으나 SMD는 한쪽면에만 부착되기때문에 반대쪽면에 배선 라우트가 가능하다!
2.SMD부품을 F면에다가 배치하면 B면에 있는 부품과 서로 배선 라우트가 불가능하다!(단면이기때문에)
(참고)
SMD부품의 대략적인 크기에 대한 풋프린트는 아래와 같다
0201 : 거의 납땜 초인이 아니면 불가능한 쪼끄만한 크기
0402 : 녹칸다가 납땜하기 불가능한 쪼끄만한 크기
0603 : 녹칸다가 조금 하기 어려운 크기
0805 : 녹칸다가 아주 노력하면 가능할 수 있는 크기!
86
THT와 SMD의 차이를 알아보기
87
THT와 SMD의 차이를 알아보기
THT는 양면이기 때문에 앞면과 뒷면을 연결가능함
SMD는 단면이라서 앞면과 뒷면을 연결할 수 없음
SMD는 뒷면에 아무것도 없음
88
네트라벨에 대해서 알아보기
1.네트라벨은 크게 전원 라벨과 네트 라벨이 있다!
2.전원 라벨(power symbol)은 5V, GND, 12V와 같이 전원과 관련된 라벨이다!
3.네트 라벨은 패드와 패드를 가상으로 연결하는 개념이라고 생각하면된다!
4.실제로 연결은 안되어있지만 연결되어있는 것이다!
5.복잡한 PCB기판의 회로도 작성시 깔끔하게 그릴 수 있지 않을까?(우리가 그런 수준까지 갈 수 있을까?)
89
네트라벨에 대해서 알아보기(전원기호/power symbol)
전원기호추가
90
네트라벨에 대해서 알아보기(전원기호/power symbol)
전원기호를 선택함
91
네트라벨에 대해서 알아보기(전원기호/power symbol)
92
네트라벨에 대해서 알아보기
네트라벨추가
93
네트라벨에 대해서 알아보기
아두이노 우노 템플릿에서 미리 정의해놓은 네트라벨임
아두이노의 각 핀에 해당함
94
네트라벨에 대해서 알아보기
연결이 안된것 같지만 이름이 같은거 끼리 서로 연결됨
95
네트라벨에 대해서 알아보기
96
심볼과 풋프린트를 다운로드 받을 수 있는 곳!
(회원가입하면 공짜)
97
심볼과 풋프린트를 다운로드 받는 절차
1.내가 원하는 것을 검색해서 심볼과 풋프린트의 압축파일을 다운로드 받는다!
2.~~~.kicad_mod파일이 풋프린트 파일이고 ~~~~.kicad_sym파일이 심볼파일이다!(이것을 추가해주면 된다)
(심볼추가하기)
3.라이브러리 추가에서 다운받은 심볼파일을 선택하면 끝!
(풋프린트 추가하기)
4.풋프린트를 모아둘 폴더를 하나 생성한다음 풋프린트편집기에서 추가해주기!
98
심볼을 등록하는 절차(최초로할때)
심볼 편집기
(심볼 추가하기)
99
심볼을 등록하는 절차(최초로할때)
라이브러리 추가
100
심볼을 등록하는 절차(최초로할때)
다운받은 kicad_sym파일 선택하기
101
심볼을 등록하는 절차(최초로할때)
추가한 심볼이 등록됨
102
심볼을 등록하는 절차(두번째부터 할때)
심볼 가져오기
추가해놓은 라이브러리에
마우스 오른쪽 클릭
103
심볼을 등록하는 절차(두번째부터 할때)
다운로드받은 심볼파일 선택하기
104
심볼을 등록하는 절차(두번째부터 할때)
다운로드받은 심볼 추가 완료!
심볼이 여러개 추가됨
라이브러리 이름을 바꾸는 방법은 다음에 알아보도록 함!
(아직 녹칸다도 모름)
105
풋프린트를 등록하는 절차
kicad 관련 폴더로 이동함
(특별히 이곳에 하는 이유는 없음)
myfootprint.pretty로 동일하게 파일명 만들기(잘모르겠으면 따라하기)
106
풋프린트를 등록하는 절차
다운받은 kicad_mod파일을 이곳에다가 이동시킴!
107
풋프린트를 등록하는 절차
풋프린트 편집기
(풋프린트 추가하기)
108
풋프린트를 등록하는 절차
라이브러리 추가
myfootprint.pretty 선택해주기
109
풋프린트를 등록하는 절차
다운로드받은 풋프린트 추가 완료!
110
아두이노용 온습도센서 회로도
111
실습에 활용할 심볼과 풋프린트
112
예제 3번 캡쳐자료 넣기
113
예제 3번 캡쳐자료 넣기
114
아두이노용 MP3모듈 회로도
115
실습에 활용할 심볼과 풋프린트
116
예제 4번 캡쳐자료 넣기
117
예제 4번 캡쳐자료 넣기
118
예제 4번 아두이노 코드
//라이브러리 버전 1.0.6버전
// sd:/mp3/0001.mp3 //5초 미만
// sd:/mp3/0002.mp3 //5초 미만
#include <SoftwareSerial.h>
#include <DFMiniMp3.h>
class Mp3Notify
{
public:
static void PrintlnSourceAction(DfMp3_PlaySources source, const char* action)
{
if (source & DfMp3_PlaySources_Sd)
{
Serial.print("SD Card, ");
}
if (source & DfMp3_PlaySources_Usb)
{
Serial.print("USB Disk, ");
}
if (source & DfMp3_PlaySources_Flash)
{
Serial.print("Flash, ");
}
Serial.println(action);
}
static void OnError(uint16_t errorCode)
{
// see DfMp3_Error for code meaning
Serial.println();
Serial.print("Com Error ");
Serial.println(errorCode);
}
static void OnPlayFinished(DfMp3_PlaySources source, uint16_t track)
{
Serial.print("Play finished for #");
Serial.println(track);
}
static void OnPlaySourceOnline(DfMp3_PlaySources source)
{
PrintlnSourceAction(source, "online");
}
static void OnPlaySourceInserted(DfMp3_PlaySources source)
{
PrintlnSourceAction(source, "inserted");
}
static void OnPlaySourceRemoved(DfMp3_PlaySources source)
{
PrintlnSourceAction(source, "removed");
}
};
SoftwareSerial secondarySerial(8, 9); // RX, TX
DFMiniMp3<SoftwareSerial, Mp3Notify> mp3(secondarySerial);
void setup()
{
Serial.begin(9600);
Serial.println("initializing...");
mp3.begin();
uint16_t volume = mp3.getVolume();
Serial.print("volume ");
Serial.println(volume);
mp3.setVolume(24);
uint16_t count = mp3.getTotalTrackCount(DfMp3_PlaySource_Sd);
Serial.print("files ");
Serial.println(count);
Serial.println("starting...");
}
void waitMilliseconds(uint16_t msWait)
{
uint32_t start = millis();
while ((millis() - start) < msWait)
{
// calling mp3.loop() periodically allows for notifications
// to be handled without interrupts
mp3.loop();
delay(1);
}
}
void loop()
{
if(Serial.available()){
char c = Serial.read();
if(c == '0'){
//1번파일 재생(0001.mp3)
Serial.println("track 1");
mp3.playMp3FolderTrack(1); // sd:/mp3/0001.mp3
waitMilliseconds(5000);
}else if(c == '1'){
//2번파일 재생(0002.mp3)
mp3.playMp3FolderTrack(2); // sd:/mp3/0002.mp3
waitMilliseconds(5000);
}
}
}
119
아두이노용 RS485모듈(max485) 회로도
120
실습에 활용할 심볼과 풋프린트
121
예제 5번 캡쳐자료 넣기
122
예제 5번 캡쳐자료 넣기
123
아두이노용 모스펫(IRF520)의 회로도
124
실습에 활용할 심볼과 풋프린트
125
예제 6번 캡쳐자료 넣기
126
예제 6번 캡쳐자료 넣기
127
예제 6번 아두이노 코드
#define mosfet 3
#define btn1 4
#define btn2 5
void setup() {
pinMode(mosfet,OUTPUT);
pinMode(btn1,INPUT_PULLUP);
pinMode(btn2,INPUT_PULLUP);
}
void loop() {
if(digitalRead(btn1) == LOW){
digitalWrite(mosfet,HIGH);//ON
}
if(digitalRead(btn2) == LOW){
digitalWrite(mosfet,LOW);//OFF
}
}
128
129
해야할 것!
1.회로도 편집기에서 참조필드와 필드값에 대해서 알아보기!
2.PCB 편집기에서 실크스크린(silkscreen) 레이어에 대해서 알아보기!
3.전압과 전류에 따라서 배선의 너비를 조정해보기!
4.조금더 멋있게 보기 위해서 3D 모델 적용해보기!
(위 내용을 활용해서 실습용 PCB보드 만들어보기)
(3D 모델 다운로드 받는 사이트)
130
예제목차
1.참조필드, 필드값, 실크스크린을 한눈에 확인할 수 있는 예제를 구현하시오!(LED3개를 구동하는 간단한 회로) [링크]
2.아두이노 쉴드에 외부전원이 입력되어서 LED가 작동된다! 이때 LED는 1A짜리가 있고 3A짜리가 있을때 배선의 두께를 적절하게 조절하시오! [링크]
3.실습예제 3-3번예제에 온습도센서 3D모델을 적용하시오! [링크]
4.실습예제 3-6번예제의 3가지 부품의 3D모델을 적용하시오! [링크]
5.이산화탄소센서(MH-Z19)를 활용할 수 있는 쉴드를 제작하시오! [링크]
6.아두이노에서 주로 사용하는 5V 스탭모터를 작동시키는 쉴드를 제작하시오! [링크]
7.아두이노에 A4988 스탭모터 드라이버를 이용해서 NEMA17 스탭모터를 제어하는 쉴드를 제작하시오! [링크]
131
참조필드와 필드값
1.회로도편집기에서 심볼(symbol)을 배치하면 참조필드와 필드값이 화면에 (자동으로) 출력된다!
2.참조필드는 PCB편집기에서 “실크스크린으로 표현”된다!
3.필드값은 사용자 눈에만 보일뿐 실제 PCB제작과는 아무런 관련이 없다!
4.참조필드와 필드값은 회로도편집기의 값을 기준으로한다!
5.참조필드는 그 부품이 저항인지 컨덴서인지 다이오드인지를 바로 알수있도록 하고 뒤에 있는 숫자는 그 푸품의 번호가된다!
6.필드값은 PCB제작에 아무런 영향이없으므로 메모하는 개념으로 활용하면 될듯하다!
7.PCB편집기에서도 참조필드와 필드값을 변경할 수 있는데 그 기준이 회로도편집기에 있기 때문에 오류가 생길 수 있다!
8.참조필드의 값은 언건드리는걸로 합의를 보도록 한다!
132
참조필드와 필드값
참조필드
필드값
참조필드
필드값
133
실크스크린 레이어
1.PCB기판을 제작할때 문자라던지 그림이 인쇄가 되는 영역!
2.PCB회로가 인쇄되는것은 동판을 기계가 깎아서 배선을 패드와 패드사이를 연결하는 것을 말하고 실크스크린은 A4용지에 프린트를 하듯이 PCB기판에 내가 필요한 부품의 이름이라던지 규격을 프린트 하는 레이어를 말한다!
3.실크스크린 레이어에 뭔가를 하게되면 나중에 PCB기판에 출력된다!
4.녹칸다는 양면기판을 기준으로 하고 있기때문에 앞면 실크스크린과 뒷면 실크스크린이 각각 존재한다!
5.kicad에서 사용하는 풋프린트에 기본적으로 실크스크린이 적용되어있다!
6.실크스크린은 배선라우트 이후로 프린트 되는것이기 때문에 배선위에 덮어 쓸 수 있다!
7.뒷면에 실크스크린으로 글자를 출력하려면 어떻게 해야겠는가?
134
실크스크린 레이어
앞면
실크스크린
뒷면
실크스크린
앞면
실크스크린
뒷면
실크스크린
실크스크린은 배선위에 있어도 상관없음
필드값은 실크스크린으로 프린트 안됨
참조필드는 실크스크린으로 프린트됨
135
전압과 전류에 대한 네트 너비
136
전압과 전류에 대한 네트 너비
네트 너비(mm) | 전류(A) |
0.4 | 1.0 |
0.6 | 1.4 |
0.8 | 1.8 |
1.0 | 2.2 |
1.5 | 3.0 |
2.0 | 3.4 |
3.0 | 3.8 |
너무 복잡하게 계산하지 말고 일단은 아래 기준으로 만들어보도록 하자!
137
배선의 두께를 조절해보자!
1.PCB기판에 출력되는 배선의 너비는 전압과 전류에 따라서 달라질 수 있다!(영향을 끼치는 요소가 부품간의 간격와 온도등 많은 변수가 있다)
2.녹칸다는 복잡하게 배선의 너비를 계산하는 방법을 모른다!(기본적인것만 챙겨간다)
배선 더블클릭
원하는 너비 입력
138
3D모델에 대한 설명
1.kicad에서 사용하는 3D모델의 확장자는 .step이다!
2.kicad에 기본으로 포함된 라이브러리는 3D모델을 포함하고 있다!
3.사용자가 외부에서 다운로드받은 심볼과 풋프린트를 활용하면 3D모델을 별도로 추가해주어야 한다!
4.kicad에서 3D모델을 활용한다는 것은 실제 제품이 어떤 모양이 될지 확인하는 정도이고 실제 PCB제작과는 아무런 관련이없다!
5.녹칸다가 심볼하고 풋프린트를 다운로드 받는 사이트를 알려드린적이 있는데 거기서 3D모델을 함께다운받을 수 있다(있다면)
139
3D모델 적용하기
풋프린트 더블클릭
3D models 탭 선택
열기 버튼 클릭
여기서 다운로드받아서 어딘가에 저장해놓은 3D 모델을 찾음
140
3D모델 적용하기
방향이 안맞을때
회전 시키기
위치가 안맞을때 이동시키기
141
3편의 예제 3번에 3D모델 적용해보기!
온습도센서
DHT-11
142
결과물
143
3편의 예제 6번에 3D모델 적용해보기!
USB
DC Jack
모스펫
IRF520
144
3편의 예제 6번에 3D모델 적용해보기!
145
3편의 예제 6번에 3D모델 적용해보기!
146
결과물
147
아두이노용 이산화탄소센서(MH-Z19B) 회로도
녹칸다의 아두이노 148-1편예제 [링크]
148
실습에 활용할 심볼과 풋프린트
149
결과물
150
결과물
151
아두이노용 스탭모터드라이버(ULN2003) 회로도
152
아두이노용 스탭모터드라이버(ULN2003) 회로도
녹칸다의 아두이노 303-4편예제 [링크]
(앱인벤터와 블루투스로 스탭모터를 제어하는 예제)
153
결과물
154
결과물
주문하려고 검토해본결과 실제 스탭모터 핀배치와 다르게 배치해서 수정사항을 별도로 설명할 예정(완료되면 여기에 링크)
155
실습에 활용할 심볼과 풋프린트
스탭모터드라이버(ULN2003) [링크]
156
NEMA17을 제어하기위한 A4988 드라이버 회로도
녹칸다의 아두이노 417편예제 [링크]
158
결과물
159
결과물
160
161
해야할 것!
1.PCB 외곽선인 edge cut 레이어에 둥근 테두리를 지정하는 방법을 알아보기!(매우 간단함)
2.PCB보드에 드릴홀을 뚫는 방법 알아보기!
3.PCB기판에 이미지를 출력해보기!
4.via에 대해서 알아보기!
162
오늘의 예제번호
163
PCB외곽선 모깎기하기
엣지컷 레이어 선택
적당한 크기의 사각형 만들기
164
PCB외곽선 모깎기하기
마우스 오른쪽 클릭
모깎기 라인 클릭
165
PCB외곽선 모깎기하기
얼만큼 둥글게 할지 값 입력
모깎기 완료!
166
PCB에 마운팅홀 뚫기
풋프린트 추가
167
PCB에 마운팅홀 뚫기
MountingHole_3.2mm
검색하기
이거 추가!
168
PCB에 마운팅홀 뚫기
PCB만드는 기계가 여기에 구멍을 뚫어줌!
169
PCB에 이미지를 실크스크린으로 집어넣기
이미지 변환기
클릭!
170
PCB에 이미지를 실크스크린으로 집어넣기
PCB에 넣을 이미지 선택하기!
이미지는 가능하면 흑백이미지로 준비할 것!
171
PCB에 이미지를 실크스크린으로 집어넣기
출력할 이미지 사이즈 조정
파일로 내보내기!
풋프린트 저장하는 폴더에 저장하기!
172
PCB에 이미지를 실크스크린으로 집어넣기
풋프린트 추가
173
PCB에 이미지를 실크스크린으로 집어넣기
풋프린트로 변환된 이미지 선택하기!
174
PCB에 이미지를 실크스크린으로 집어넣기
여기 안에 글자 있는거 삭제해줘야함!
175
PCB에 이미지를 실크스크린으로 집어넣기
더블클릭
뒤로가기
176
PCB에 이미지를 실크스크린으로 집어넣기
이미지가 뒷면(B면)에 출력됨!
177
via에 대해서 알아보기
키보드 v키를 누르면 via가 생성되고 뒷면 배선으로 변경됨
via를 통해 배선이 지나갈 수 있음
다시 키보드 v키를 누르면 via가 생성되면서 앞면으로 변경됨
178
via에 대해서 알아보기
앞면과 뒷면에 둘다 배선이 되어있다면 일반적인 방법으로는 지나갈 수 없음
키보드 v키를 누르면 via가 생성되고 뒷면 배선으로 변경됨
다시 키보드 v키를 누르면 via가 생성되면서 앞면으로 변경됨
179
via에 대해서 알아보기
smd부품은 한쪽면만 쓰기 때문에 경로가 막힐 경우 via를 필수적으로 사용해야함
키보드 v키를 누르면 via가 생성되고 뒷면 배선으로 변경됨
다시 키보드 v키를 누르면 via가 생성되면서 앞면으로 변경됨
180
예제1번의 최종 결과물
181
16채널 릴레이를 제어하기 위한 74HC595회로도
녹칸다의 아두이노 375편예제 [링크]
182
실습에 활용할 심볼과 풋프린트
74hc595 [링크]
183
결과
184
결과
185
비접촉전류센서(SCT-013-030)측정 회로도
녹칸다의 아두이노 200편예제 [링크]
186
실습에 활용할 심볼과 풋프린트
(풋프린트)Jack_3.5mm_CUI_SJ1-3525N_Horizontal
(심볼)AudioJack2
187
결과
188
결과
189
ESP32에 온습도센서값을 측정하기 위한 회로도
녹칸다의 아두이노 553-8편예제 [링크]
190
실습에 활용할 심볼과 풋프린트
ESP32 dev v1(30핀) [링크]
191
결과
192
결과
주문하려고 검토해본결과 OLED를 반대로 배치해서 수정사항을 별도로 설명할 예정(완료되면 여기에 링크)
193
194
해야할 것!
1.정확한 위치에 부품 놓기(PCB편집기)
2.티어드롭과 내부엣지컷
3.심볼 만들어보기
4.풋프린트 만들어보기
195
예제목차
196
예제1번이 가지는 의미
1.PCB편집기에서 부품을 배치할때 절대적인 위치에 따라 배치할 수 있고 상대적인 위치에 따라서 배치할 수 있다!
2.부품을 배치하는 그리드에 간격을 설정할 수 있다!(부품을 놓을 대략적인 기본 간격을 설정할 수 있다)
3.패드와 배선사이에 조금더 연결을 확실하게 하기 위해서 티어드롭이라는 것을 쓰면 좋을것 같다(녹칸다 생각)
4.내부 엣지컷을 이용해서 릴레이(relay) 제어보드를 만들어보도록 한다!
197
부품의 위치를 절대적 좌표로 이동시키기(1)
부품 더블클릭
좌표입력
x와 y에 둘다 0이라고 입력했을때 위치
198
부품의 위치를 절대적 좌표로 이동시키기(2)
부품에 마우스 오른쪽 클릭
이거 클릭
좌표입력
199
부품의 위치를 상대적 좌표로 이동시키기
(상황)
LED의 위치를 오른쪽으로 10mm 옮기고 싶다
부품에 마우스 오른쪽 클릭
이거 선택
200
부품의 위치를 상대적 좌표로 이동시키기
지금 위치에서 오른쪽으로 10mm만큼 이동하라는 의미
201
부품의 위치를 상대적 좌표로 이동시키기
202
티어드롭 적용하는법(PCB편집기)
티어드롭 설정
티어드롭 해제
티어드롭
203
예제1번
엣지컷을 내부에 하면 구멍이 뚫림
(내부 엣지컷이라고 부르도록 하겠음)
204
예제2번의 설명
1.내가 원하는 부품을 주문제작했는데 PCB보드에 쓸 심볼과 풋프린트가 없는 상태이다! -> 직접만들어야한다!
2.아두이노에서 주로 사용하는 모듈들은 피치가 2.54mm이기 때문에 특별하게 풋프린트를 안만들어도 그리드 간격만 조절하면 바로 쓸 수 있다!
3.나의 모듈의 도면의 치수가 이미 딱 정해져 있는 상태라면 우리가 직접 풋프린트와 심볼을 만들어서 쓸 수 있다!
4.우리가 고민해야하는 항목은 패드의 크기, 패드의 간격, 실크스크린, 부품자리 레이어 등이 있다!
5.심볼과 풋프린트는 한쌍이기는 하지만 “핀번호”라는 값을 기준으로 서로 연결되어있다!(그렇게 밀접한 연관이 있는 것은 아니다)
6.핀번호라고 해서 숫자만 입력되는게 아니라 문자로도 입력이 가능하다!
7.심볼을 만들때는 심볼편집기, 풋프린트를 만들때는 풋프린트 편집기를 활용한다!
205
쉬운 난이도의 풋프린트
스탭모터드라이버(A4988)
쉬프트레지스터(74HC595)
DFminiMP3모듈
206
쉬운 난이도의 풋프린트
이산화탄소센서(MH-Z19B)
RS485모듈(MAX485)
207
쉬운 난이도의 풋프린트
ESP32 DEV V1보드
208
심볼 만들기(심볼편집기)
심볼편집기 실행
나의 심볼 라이브러리에 새로운 심볼 추가하기
209
심볼 만들기(심볼편집기)
심볼의 이름
심볼의 참조필드 기호
(저항은 R, 다이오드는 D 등등)
임의로 입력 가능함
210
심볼 만들기(심볼편집기)
핀 추가
테두리 추가
회로가 연결될 핀
테두리
211
심볼 만들기(심볼편집기)
핀 더블클릭
핀의 이름(별로 안중요함)
이 핀은 무슨 핀이다~
핀번호(아주 중요함)
풋프린트와 연결할때 풋프린트의 핀번호와 같아야함!
숫자도 되고 문자도 가능!
212
THT와 SMD 패드 만들기(풋프린트편집기)
풋프린트편집기 실행
나의 풋프린트 라이브러리에 새로운 풋프린트 추가하기
풋프린트 이름
부품타입(THT or SMD)
213
THT패드 만들기(풋프린트편집기)
패드 추가
패드 더블클릭
모양
외경
내경
214
THT패드 만들기(풋프린트편집기)
215
SMD패드 만들기(풋프린트편집기)
216
풋프린트 만들기(풋프린트편집기)
풋프린트편집기 실행
나의 풋프린트 라이브러리에 새로운 풋프린트 추가하기
풋프린트 이름
부품타입(THT or SMD)
217
풋프린트 만들기(풋프린트편집기)
그리드 간격을 2.54로 설정!
패드추가
외경 1.7
내경 1.0
2.54간격으로 6회 옆칸으로 이동함
218
풋프린트 만들기(풋프린트편집기)
패드 더블클릭
여기 있는 패드번호와 심볼의 핀번호가 일치해야 서로 연결됨
219
직접 만든 심볼과 풋프린터로 결과물 만들기
그냥 가상으로 이렇게 연결함
220
예제3번 심볼과 풋프린트 만들기
221
예제3번 심볼과 풋프린트 만들기
4개 있는쪽 핀을 기준으로 29.54만큼 오른쪽으로 이동시켜야함
2줄의 핀을 완전 겹침
(x축을 일치시킴)
상대적 이동좌표로 29.54입력
222
예제3번 심볼과 풋프린트 만들기
실크스크린
네모모양
테두리 그리기
(26 * 22)
223
예제3번 심볼과 풋프린트 만들기
사각형을 원점에 놓음
상대적 위치이동 좌표입력
(원본 풋프린트 기준)
이동 완료!
224
부품자리(컨트리야드) 그리기
부품자리 레이어
다각형 선택
부품자리 경계선 그리기
225
예제 3번 결과물 만들기
226
예제 3번 결과물 만들기
부품자리끼리 겹쳐지면 검사할때 에러가 발생함
227
예제 3번 결과물 만들기
PCB보드를 생산할때는 아무런 문제가 없지만 실제 부품을 여기에 배치할때는 LED와 저항때문에 부품이 부착안되는 상황이 발생할 수 있음!
228
예제 4번 만능 기판 만들어보기
풋프린트 편집기에서
1개짜리 패드를 만듬
(외경2, 내경1으로 함)
그리드 간격을 2.54피치로 선택하고 만든 풋프린트를 마구마구 배치함
229
예제 4번 만능 기판 만들어보기
회로가 없기 때문에 회로도 편집기 없이 PCB편집기로만 가능함!
231
릴레이 만들어보기
232
릴레이 만들어보기
배선 아주 두꺼움
내부 edge.cut
copper pour 안함
233
릴레이 만들어보기
234
릴레이 만들어보기
235
릴레이 만들어보기
236
릴레이 만들어보기
237
예제 5번 결과물
238
예제 5번 결과물
내부엣지컷
배선두께 3mm
여기만 copper pour함!
239
예제 5번 결과물
240
241
해야할 것!
1.거버(gerber)파일 생성해보기!
2.JLCPCB에 주문해보기!
3.풋프린트 일부분 수정하기!
4.기판으로 SMD 점퍼 만들기!
242
예제번호
243
거버파일을 생성하는데 필요한 기본 지식
1.거버파일은 실제로 PCB보드를 제작하기 위해서 제작 업체에 넘겨줘야하는 파일이고 kicad에서 만든 프로젝트파일을 전송하면 안된다!
2.어떻게보면 kicad로 만든 회로도나 PCB형태를 업체에 넘겨주면 아무나 복사가 가능하므로 아무래도 거버파일을 보내는것이 일반적인 방식이다!
3.거버파일은 kicad에서 사용하는 다양한 레이어들이 개별적인 파일로 출력된다!
4.확장자가 gbr인 파일들을 모두 zip파일로 압축해서 업체에 전송하면 된다!(지금 우리의 경우에는 온라인 업체이기 때문에 업로드하면된다)
5.JLCPCB는 기본주문단위가 10cm*10cm, 양면기판, 기판두께 1.6mm로 설정되어있고 크기가 크거나 층수가 많아지거나 두께가 두꺼워지면 추가요금이 발생한다!(기준은 PCB 5장)
6.거버파일은 PCB편집기에서 생성한다!
7.거버파일을 압축할때 파일명을 영문으로 해야한다! (예시: nockanda.zip)
244
거버파일 생성하기(PCB편집기)
파일 - 플롯
245
거버파일 생성하기(PCB편집기)
1.폴더지정
2.출력할 레이어 선택하기
3.플롯버튼
지정한 폴더로 출력할 레이어가 생성됨!
4.드릴 파일 생성
246
거버파일 생성하기(PCB편집기)
누르기
저장해놓은 폴더에 gbr파일이 생성됨!
zip파일로 압축하기!
(이걸 업로드 하면됨!)
247
JLCPCB 주문 절차(회원가입)
(주소) https://jlcpcb.com/
이메일 온거 확인하기!
248
JLCPCB 주문 절차(로그인)
로그인 완료!
249
JLCPCB 주문 절차(거버파일 업로드하기)
250
JLCPCB 주문 절차(거버파일 업로드하기)
거버파일 압축해서 업로드 하기!
251
JLCPCB 주문 절차(거버파일 업로드하기)
거버파일 업로드 완료!
업로드된 거버파일 보기!
252
JLCPCB 주문 절차(거버파일 업로드하기)
3D를 눌러서 어떤 모양으로 만들어질지 확인할 수 있음!
(간혹가다가 오류가 나기도함)
253
JLCPCB 주문 절차(거버파일 업로드하기)
여기서 설정을 바꿀 수 있는데 수정없이 기본으로 주문하는것으로 해봄!
(기본) 두께 1.6mm, 녹색PCB보드
다했으면 카트에 담기
254
JLCPCB 주문 절차(주문하기)
배송비가 PCB제작비보다 비싸기 때문에 적당히 모아서 한번에 주문하는게 좋음!
그렇다고 너무 많이 주문하면 배송비가 비싸지거나 너무 무거우면 기본배송이 불가능함!
(아두이노 쉴드 사이즈로 10~11개가 한계인듯)
제일 처음 장바구니에 들어간 보드는 2달러임!
두번째 부터는 정상가격은 4달러임!
다 담았으면 체크아웃 클릭
255
JLCPCB 주문 절차(주문하기)
~~도
~~시
개인통관부호 입력하고 없으면 발급받아야함!(다음장에서 계속)
256
JLCPCB 주문 절차(주문하기)
번호 확인하기
없으면 발급받기
257
JLCPCB 주문 절차(주문하기)
이거 눌러서 그대로 복사 붙혀넣기 하면됨!
P로 시작함!
258
JLCPCB 주문 절차(주문하기)
여기까지 배송지 지정 완료!
259
JLCPCB 주문 절차(주문하기)
택배는 기본 e-Express로 함!
비쌀수록 더 빨리 배송됨!
260
JLCPCB 주문 절차(주문하기)
지금 바로 결제할건지 나중에 결제할건지 물어보는건데 바로 결제함!
261
JLCPCB 주문 절차(주문하기)
신용카드로 결제
(이거 선택)
처음주문하면 할인쿠폰을 많이줌!
(가능한 쿠폰이 있으면 알아서 적용됨)
262
JLCPCB 주문 절차(주문하기)
뒷면 서명하는데 있는 3자리 숫자
유효기간
263
JLCPCB 주문 절차(주문하기)
엔지니어가 확인함
264
JLCPCB 주문 절차(주문하기)
만들기 시작!
누르면 단계별로 진행사항을 알 수 있음!
265
JLCPCB 주문 절차(주문하기)
266
JLCPCB 주문 절차(주문하기)
까먹을때쯤 되면 배송됨!
267
JLCPCB 주문 절차(주문하기)
국내로 들어온다음 운송장번호를 여기 입력하면 조회 가능함!
(운송장번호)
LP로 시작 (숫자) HK로 끝남!
268
예제 1번
원본과 동일한 풋프린트
프로젝트 내에서 수정한 풋프린트
(원본은 바뀌지 않음)
프로젝트 내에서 풋프린트 편집기 열기
필요한부분 수정하기!
269
예제 1번
270
예제 1번
점퍼 선택
SMD 타입 점퍼 풋프린트
271
예제 1번
272
예제 2번
273
예제 2번
274
예제 2번
275
276
해야할 것!
1.부품 회전시키기!
2.링형태의 LED만들어보기!
3.USB커넥터 직접만들기!
4.아두이노 미니멀보드 만들기!
277
예제목차
1.PCB보드에 드릴원점을 사용하는 방법을 이해하고 동그란모양의 외형을 가지는 아두이노 쉴드타입의 PCB를 샘플로 만드시오!(쓰루홀 타입 LED로 시계를 표현해보기) [링크]
2.네오픽셀(WS2812B) 16개를 링형태로 배치해서 아두이노와 연결해서 쓸 수 있게 커넥터를 달아서 PCB보드를 제작하시오! [링크]
3.PCB가 컴퓨터의 USB포트에 바로 연결될 수 있도록 USB핀을 도면을 보면서 풋프린트로 생성하고 기판에 활용하시오! [링크]
4.아두이노 우노 보드의 미니멀한 버전으로 PCB보드를 만드시오!(나의 PCB보드에 아두이노 우노를 집어넣는다!) [링크]
278
원형으로 부품을 배치하기 위한 좌표이해하기
그리드 원점
-PCB편집기 상에서 원점이 어디인가?
-그리드원점은 PCB편집기 도면의 왼쪽 상단 모서리가 0,0이다!
오른쪽으로 갈수록 x가 커지고, 아래로 갈수록 y가 커진다
드릴홀 원점
-현재 녹칸다가 드릴홀 원점이 어디다가 구체적으로 사용되는지는 모르는 상태이다!
-부품을 원형으로 배치할때의 가상의 원점으로 활용할 생각이다!
279
드릴홀 원점을 기준으로 부품 회전시키기
원형 PCB보드
드릴홀 원점 지정
드릴홀 원점 설정 버튼
280
드릴홀 원점을 기준으로 부품 회전시키기
(상황) D2와 R2를 원의 중심을 기준으로 시계방향으로 30도만큼 회전하고싶음!
(상황) D1과 R1은 원의중심으로 부터 정확하게 12시방향에 있음
(원의 중심과 x좌표가 같음)
회전시키려는 부품을 정확하게 겹쳐줌
회전하려는 부품을 모두 선택해줌
(컨트롤버튼을 누르고 선택하면 여러개 선택됨)
281
드릴홀 원점을 기준으로 부품 회전시키기
드릴홀을 기준으로 시계방향으로 30도 회전하겠다는 의미
282
예제 1번 최종결과
283
예제 1번 최종결과
284
예제2번 네오픽셀 회로도
285
녹칸다의 네오픽셀 예제
녹칸다의 아두이노 567-7편예제 [링크]
아두이노랑 커넥터를 이용해서 연결하도록 만들어보기!
286
예제 2번 최종결과
287
예제 2번 최종결과
288
앞면과 뒷면의 copper pour를 다르게 해서 연결하기
기판 F면에는 GND로 구리를 도포함
기판 B면에는 5V로 구리를 도포함
289
앞면과 뒷면의 copper pour를 다르게 해서 연결하기
F면 copper에 의해 GND와 연결됨
B면 copper에 의해 5V와 연결됨
F면 copper에 의해 GND와 연결됨
F면 copper에 의해 GND와 연결됨
B면 copper에 via를 뚫어서 5V와 연결됨
B면 copper에 via를 뚫어서 5V와 연결됨
290
예제3번 PCB USB커넥터 도면(전원만 활용)
5V
GND
291
예제 3번 최종결과
292
예제4번 최소한의 회로를 갖춘 아두이노 우노
22pF
293
예제 4번 최종결과
294
예제 4번 최종결과
295
296
해야할 것!
1.Panelization 해보기!
2.V-CUT하는 방법!
3.Mouse Bite 하는 방법!
4.Castellated holes 해보기!
297
예제목차
1.3cm*3cm의 보드를 9개 V-CUT 주문할 수 있도록 PCB보드를 만드시오! [링크]
2.4cm*4cm의 동그란 보드 4개를 한판으로 제작하기 위해서 mouse bite를 적용한 PCB보드를 제작하시오! [링크]
3.Castellated holes을 이용해서 나의 PCB를 다른 PCB에 붙혀서 쓸 수 있도록 만드시오! [링크]
4.(3)예제를 연결해서 사용할 아두이노 우노 쉴드를 만들어보시오! [링크]
5.예제8-4의 아두이노 우노 보드를 v-cut을 이용해서 2장으로 만드시오! [링크]
6.예제8-4의 아두이노 우노 보드에 디지털 2번핀에 온습도센서(DHT-11)를 연결해서 활용할 수 있는 보드를 v-cut을 이용해서 두장으로 만드시오! [링크]
7.녹칸다의 전자종이(e-paper)예제를 쓸수있는 PCB를 제작하시오! [링크]
298
Panelization이란?
이부분에 잘릴듯 말듯하게 기계가 V-CUT으로 홈을 내어줌!
이부분에 Mouse Bite를 이용해서 쉽게 부러트릴수 있도록 할 수 있음!
V-CUT
Mouse Bite
299
V-CUT주문을 하기 위한 이론적 절차
1.특별하지 않으면 미리 사이즈를 고려해서 기판을 디자인한다! (하나의 판을 완전 만든다음 복사해서 붙혀넣기 할것이기 때문에 한판을 완벽하게 먼저 디자인한다)
2.복사해서 2개이상의 판을 붙힌다음 각자 가운데 있는 엣지컷은 제거한다!
3.서로 잘려질 위치에 별도의 레이어를 이용해서 v-cut을 지정한다!(v-cut레이어)
4.JLCPCB에 주문할때 메모란이 있는게 해당되는 레이어가 V-CUT레이어라고 알려주면 엔지니어가 알아서 V-CUT으로 제작해준다!
5.kicad 플러그인중에 panelization을 지원하는 뭔가가 있다는데 그건 뭔지 몰라서 각자 알아보기!
2023-11-14 (수정사항)
JLCPCB에 V-CUT 추가비용이 발생함!
주문할때 Panel By Customer 체크 할 것!
추가비용 $3.8
300
V-CUT 주의사항
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
V-CUT 가능
V-CUT 가능
V-CUT 불가능
가다가 중간에 끊어지는 부분이 있으면 안된다고함!
(라이브방송에는 빼먹었지만 주의사항) V-CUT을 하려면 전체 PCB크기가 70mm * 70mm보다 커야함!
301
Mouse Bite footprint
302
Castellated holes란?
303
(예제1) 시나리오 및 절차
1.크기가 3cm * 3cm인 PCB보드를 하나 제작한다!
2.JLCPCB에 최대 주문크기가 10cm * 10cm이므로 내가 만들고자 하는 PCB를 panelization해서 3*3으로 붙혀서 9개를 한판으로 만들고자 함!
3.일단 3cm*3cm PCB를 정성스럽게 만든다! (배선도 다하고 copper pour도 다 한 주문가능한 상태)
4.좌표를 계산해서 보드를 9개 붙혀준다!
5.edge.cut 레이어를 새롭게 지정해준다!(외곽선만 그림)
6.V-CUT Line을 User2 레이어로 지정해준다!
7.JLCPCB에 주문할때 메모란에 User2 레이어가 V-CUT라인이라고 명시해준다!
8.엔지니어가 V-CUT으로 생산해준다!
304
(예제1) KiCad에서 V-CUT하는 방법
하나의 완성된 PCB를 좌표를 계산해서 여러개 복붙해줌
부품사이사이에 있는 edge.cut은 제거하고 테두리 edge.cut만 남겨둠
원래 edge.cut이 있어야할 부분에 User2 레이어로 V-CUT라인을 그려줌
User2 레이어
(꼭 이걸로 해야하는건 아님)
305
(예제1) KiCad에서 V-CUT하는 방법
kicad상에서는 User2로 그린 V-CUT라인이 아무런 영향을 끼치지 않음
PCB를 제작해주는 JLCPCB에 엔지니어가 User2레이어가 엣지컷임을 확인하면 V-CUT을 작업해주는 기계로 V-CUT을 해줌!
KiCad에서는 여기에 V-CUT을 해주면 된다라는 의미로 작업을 함!
306
(예제1) JLCPCB에 V-CUT 주문하기
거버파일 생성하기
(중요) 거버파일 생성시 V-CUT라인이 있는 User2 레이어도 포함해야함!
V-CUT라인 레이어
거버파일 압축하기
307
(예제1) JLCPCB에 V-CUT 주문하기
거버파일 업로드
하단 PCB Remark부분에
“example9_1-User_2.gbr” is V-CUT Line. 이라고 입력해줌!
엔지니어가 해당 레이어를 기준으로 V-CUT작업을 해줌!
308
(예제2) 시나리오 및 절차
1.크기가 4cm*4cm인 원형 PCB보드 4장을 panelization해서 한판으로 만들고자 한다!(JLCPCB에 주문할때 10cm*10cm를 안넘기 위해서 4개로함)
2.원형 PCB는 V-CUT이 불가능함!(중요)
3.외형이 독특한 PCB보드는 mouse bite로 이어붙힌 PCB보드를 분리해서 쓸 수 있도록 디자인하는 것이 일반적인것 같음!
4.녹칸다가 링크해둔 mouse bite 풋프린트를 다운로드 받아서 활용하면 됨!
5.mouse bite는 2mm짜리를 활용할것이기 때문에 PCB와 PCB사이는 2mm간격으로 떨어뜨려 놓으면 됨!(상대적 좌표로 이동하는 기능을 활용)
309
(예제2) mouse bite 해보기!
edge.cut레이어로 반지름이 20mm인 원 그리기!
그려진 원을 복사해서 겹쳐둔다음 복사된 원을 42mm만큼 오른쪽으로 좌표이동 시키기!
310
(예제2) mouse bite 해보기!
그려진 원을 2개를 복사해서 겹쳐둔다음 복사된 원을 42mm만큼 아래쪽으로 좌표이동 시키기!
311
(예제2) mouse bite 해보기!
사이사이를 mouse bite로 이어줘야함
첫번째 원의 중심좌표를 확인함!
mouse bite 풋프린트와 y좌표를 일치시켜줘야함!
(y좌표가 81임)
그리고 x좌표는 원의 중심으로부터 반지름길이에 두 원사이의 길이의 절반을 더해주면 됨!
현재 x좌표에서 21만큼 더해주면됨
(x좌표는 그러면 97.8이됨)
312
(예제2) mouse bite 해보기!
정확한 위치에 mouse bite 배치 완료
mouse bite를 복사해서 겹쳐둔다음 아래쪽으로 42mm만큼 좌표이동함
313
(예제2) mouse bite 해보기!
정확한 위치에 mouse bite 배치 완료
mouse bite 복사해서 붙히기!
첫번째 원의 x좌표와 x좌표가 동일함!(x = 76.8)
y좌표는 첫번째 원보다 21mm만큼 아래로 내려가야함
(y = 102)
314
(예제2) mouse bite 해보기!
정확한 위치에 mouse bite 배치 완료
하나더 복사해서
42mm만큼 오른쪽으로 옮기가
315
(예제2) mouse bite 해보기!
좌표를 계산해서 이런모양으로 만들어줌!
edge.cut으로 호를 그려줌
호 그리기
316
(예제2) mouse bite 해보기!
잘 안보이지만 이런 호 모양이 겹쳐져 있음
mouse bite 모두다 edge.cut으로 호를 그려줌
317
(예제2) mouse bite 해보기!
mouse bite와 mouse bite를 선으로 이어주기!
각도제한 해제하기
318
(예제2) mouse bite 해보기!
mouse bite와 mouse bite를 호로 연결해줌!
(시작위치)
mouse bite와 mouse bite를 호로 연결해줌!
(종료위치)
319
(예제2) mouse bite 해보기!
겹쳐져있는 원을 삭제해줌!
(호는 남겨둠)
나머지 원도 동일하게 작업해줌!
외곽에 사각형을 10cm*10cm 이내로 그려줌!
320
(예제2) mouse bite 해보기!(완성)
321
(예제3) Castellated holes 해보기!
THT PAD사이를 edge.cut이 가로지르면 castellated holes가 됨!
castellated holes!
322
(예제3) Castellated holes 해보기!(결과)
323
(예제4) Castellated holes 해보기!
연결하기 위한 footprint 만들기!
324
(예제4) Castellated holes 해보기!
여기에 예제 3번 PCB를 올려두고 납땜해서 활용하면 될 듯!
325
(예제5) 결과물
V-CUT 라인
326
(예제6) 결과물
327
(예제6) 결과물
V-CUT 라인
328
(예제7) E-paper를 ESP32에 연결하기 위한 회로도
녹칸다의 아두이노 563편예제 [링크]
329
(예제7) 결과물
330
(예제7) 결과물
V-CUT 라인
V-CUT 라인
331
332
해야할 것!
1.릴레이 제어보드 테스트해보기! [만들었던거 링크]
2.RJ45커넥터로 POE해보기!(+RJ45커넥터 직접 공구로 만들어보기!)
3.그 동안 보았던 레이어에 대해 다시 정리해보기!
4.금지구역(킵아웃) 설정하기!
333
예제목차
1.JLCPCB에서 주문한 PCB보드를 납땜해서 녹칸다의 462-2번예제를 실제 비닐하우스 개폐기 모터를 연결해서 작동시키시오!(거버파일도 함께 업로드하기) [링크]
2.녹칸다가 아두이노우노에 연결할 쉴드(A)보드와 다른 PCB보드(B)간에 POE형태로 활용을 하고싶다! A와 B는 RJ45커넥터로 상호간에 연결되고 8개의 핀중 1번에 5V, 2번에 GND를 배치하고 나머지핀은 아두이노의 핀을 적절히 연결시켜서 작동시키시오! 온습도센서가 4번핀에 연결하고 LED2개를 각각 2번과 3번핀에 연결한다! [링크]
3.킵아웃을 이용해서 아주 높은 전류를 이용하는 배선라우트를 구현해보시오! [링크]
334
RJ45커넥터를 녹칸다가 활용하는 의미(장점)
1.8개의핀을 보드와 보드사이에 연결하는데 편리하게 활용할 수 있음!
2.랜선을 공구만 있으면 내가 직접 만드는데 다른 커넥터를 만드는것보다 비교적 쉽게 만들 수 있다!
3.rj45커넥터를 이용하면 어디가서 POE를 했다고 주장할 수 있다!(RJ45커넥터가 이더넷 커넥터임)
335
예제7-2를 약간 수정해서 실제 주문한 프로젝트
336
예제7-2를 약간 수정해서 실제 주문한 프로젝트
산업용 누름버튼을 연결하기 위해서 2p 터미널블록 2개를 추가함!
337
예제7-2를 약간 수정해서 실제 주문한 프로젝트
338
JLCPCB에서 만든 PCB
339
녹칸다의 영혼의 납땜이 완료된 보드
340
(예제1번)녹칸다의 아두이노 462-2번예제
1.릴레이 2개를 이용해서 모터의 정회전, 역회전, 정지기능을 버튼 3개를 이용해서 컨트롤하는 예제였다!
2.해당되는 예제에서 사용했던 릴레이가 LOW LEVEL TRIGGER 릴레이였다!
3.그런데 현재 녹칸다가 만든 PCB보드의 작동방식은 HIGH LEVEL TRIGGER이다!
4.로우레벨 트리거는 아두이노가 LOW신호를 보내주면 COM과 NO가 접점이 붙고 HIGH신호를 보내주면 COM과 NC접점이 붙는 방식이다!(462-2예제의 방식)
5.하이레벨 트리거는 아두이노가 LOW신호를 보내주면 COM과 NC접점이 붙고 HIGH신호를 보내주면 COM과 NO접점이 붙는 방식이다!(이게 현재 PCB보드에 방식)
6.462-2예제를 그대로 구현하긴 했지만 PCB보드의 작동방식상 코드의 수정이 필요한 상황이라고 볼 수 있다!
341
(예제1번)보드와 비닐하우스 개폐기간의 연결
24V 전원
비닐하우스 개폐기 모터
(파란색) (갈색)
ㅇ ㅇ
스파크킬러
산업용 누름버튼
ㅇ ㅇ
산업용 누름버튼
ㅇ ㅇ
산업용 누름버튼
ㅇ ㅇ
역회전
정회전
정지
녹칸다는 RC스너버 사용
342
(예제1번)수정이 완료된 코드
#define ch1 2 //첫번째 릴레이(2번핀)
#define ch2 3 //두번째 릴레이(3번핀)
#define btn1 4 //버튼1번
#define btn2 5 //버튼2번
#define btn3 6 //버튼3번
void setup() {
pinMode(ch1,OUTPUT); //릴레이 제어핀 출력모드
pinMode(ch2,OUTPUT); //릴레이 제어핀 출력모드
pinMode(btn1,INPUT_PULLUP); //아두이노의 내부저항을 사용하는방식
pinMode(btn2,INPUT_PULLUP);
pinMode(btn3,INPUT_PULLUP);
}
void loop() {
if(digitalRead(btn1) == LOW){
//정회전
digitalWrite(ch1, HIGH);
digitalWrite(ch2, LOW);
}
if(digitalRead(btn2) == LOW){
//멈춤
digitalWrite(ch1, LOW);
digitalWrite(ch2, LOW);
}
if(digitalRead(btn3) == LOW){
//역회전
digitalWrite(ch1, LOW);
digitalWrite(ch2, HIGH);
}
}
343
테스트를 위해서 기본 RJ45풋프린트로 주문해봄!
아직까지는 녹칸다가 구입할 수 있는 RJ45커넥터와 일치하는게 없음
(안맞음)
디바이스마트에서 구입한 RJ45커넥터(제일싼거) 일치함
344
테스트를 위해서 기본 RJ45풋프린트로 주문해봄!
(9~12번)
LED부분 패드 삭제하면 기본 라이브러리에 rj45커넥터 활용가능할것이라 기대해봄!(아직 실물 확인안됨)
여기도 9~12번은 불필요하므로 삭제해야할듯!
345
JLCPCB에서 주문한 결과
디바이스마트에서 구입한 RJ45커넥터(제일싼거) 일치함
346
RJ45커넥터를 만드는데 필요한 준비물!
랜선 + 랜선커넥터
테스터기
압착기
완성된 랜선을 서로 연결하면 작동테스트 가능함
커넥터에 선을 집어넣고 이부분으로 압착함
랜선 피복벗기는 부분
절단하는 부분
347
랜선 만드는 절차
1.랜선의 피복을 벗김
2.구불구불한 8개의 선을 바르게 펴줌!
3.랜선 커넥터에 아래 색상 순서에 맞게 배치해줌!
4.압착기로 눌러줌!
5.테스터기로 확인하기!
(줄무늬주황) (주황) (줄무늬녹색) (파랑) (줄무늬파랑) (녹색) (줄무늬 갈색) (갈색)
커넥터 돌기가 바닥을 향하는 방향
348
(예제2번)RJ45로 작동되는 아두이노 코드
//2번핀에 LED가 있다! -> 2번핀을 출력으로 설정
//3번핀에 LED가 있다! -> 3번핀을 출력으로 설정
//4번핀에 온습도센서가있다!(dht sensor library추가)
#include "DHT.h"
#define DHTPIN 4
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);//결과를 컴퓨터로 전송해서 화면에 출력하겠다!
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
dht.begin();
}
void loop() {
//LED 2개를 다 켠다
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
delay(1000);
//LED 2개를 다 끈다
digitalWrite(2,LOW);
digitalWrite(3,LOW);
delay(1000);
float h = dht.readHumidity();
float t = dht.readTemperature();
Serial.print(F("Humidity: "));
Serial.print(h);
Serial.print(F("% Temperature: "));
Serial.println(t);
}
349
(예제2번)kicad 결과물(아두이노쪽)
350
(예제2번)kicad 결과물(센서쪽)
351
지금까지 주요 레이어를 정리해보기!
1.전면구리레이어(F.CU) : PCB보드 전면에 배선라이트나 copper pour가 되는 영역!
2.후면구리레이어(B.CU) : 후면에 구리가 표현되는 영역!
3.전면 실크스크린(F.Silkscreen) : 전면에 부품명이나 그림등이 프린트 되는 영역
4.후면 실크스크린(B.silkscreen) : 후면에 실크스크린이 표현되는 영역
5.엣지컷(edge.cut) : 보드의 외곽선이나 내부에 있는 부분을 잘라내기 위한 레이어
6.전면 솔더마스크(F.mask) : 전면구리레이어에 쇼트가 나지 않도록 하기 위해서 코팅을 하는 영역이고 일반적으로 PCB보드의 색상을 결정할 수 있음! 솔더마스크로 지정한 부분은 코팅이 되지 않으므로 납땜을 하는영역이라고 볼 수 있음!
7.후면 솔더마스크(B.mask) : 패드가 쓰루홀이면 전면과 후면의 솔더마스크위치가 동일하고 SMD면 다를 수 있음!
8.전면 솔더페이스트(F.paste) : SMD부품의 솔더마스크라고 생각하면 될 것 같은데 특별하게 SMT주문을 할때 사용하는것 같기도함!(잘모르겠음)
9.후면 솔더페이스트(B.paste)
10.유저2레이어(user2) : 녹칸다가 V-cut주문할때 사용하는 레이어!
352
예제 3번의 중점 체크사항
배선의 너비로 감당못하는 전류면 납을 도포해서 보강하는데 어떻게 하지?
솔더마스크 레이어를 통해 PCB보드에 코팅을 하기 때문에 솔더마스크에 대해서 이해를 해야한다!
353
킵아웃 설정하기!
킵아웃 설정하기
전면만 할거면 F.Cu만 체크, 후면만 할꺼면 B.Cu만 체크, 둘다할거면 둘다 체크!
특별히 배선이나 네트가 있으면 안되는 구역이 있을때 keep out을 설정함!
354
예제 3번 결과물
전후면 copper pour 금지(킵아웃)
전면 copper pour 금지(킵아웃)
후면은 금지 아님!
솔더 마스크 레이어로 속이 채워진 사각형을 그려줌!
이 부분은 코딩이 안되기 때문에 납을 도포할 수 있음!
(근데 실제로 해보지는 않음)
355
예제 3번 결과물
이부분에 납이 도포될거라 예상함!
(기회가 되면 테스트 해보겠음!)
356
357
해야할 것!
1.배선 색깔바꾸기!(난이도 최하)
2.도면시트와 심볼, 풋프린트 라이브러리 관리하는 방법 알아보기!(난이도 최하)
3.각종 커넥터를 압착기로 만들어보기!
4.거버뷰어로 최종적으로 확인하는 방법 알아보기!(이거 빼먹었음)
5.ESP32보드를 직접 디자인해보기!(시간을 보면서 진행함)
358
예제목차
359
예제1번 네트 색바꾸기
네트 선택
색을 바꾸려는 네트에 마우스 오른쪽 버튼 클릭
네트 색상 설정
360
예제1번 네트 색바꾸기
원하는 색상 선택
네트 표시 옵션으로 메뉴 확장
“모두” 선택하기
361
예제1번 네트 색바꾸기
네트의 색이 지정한 색으로 바뀜!
PCB편집기 상에서만 이렇게 보이고 실제 PCB제작과는 아무런 상관이 없음!
362
도면시트에 각종 정보 추가하기
회로도 편집기에서 이부분 더블클릭
정보 입력하기!
회로도 정보 입력 완료!
(이게 끝임…)
363
심볼 라이브러리 관리하기
설정 - 심볼 라이브러리 관리
내가 설정해놓은 경로에 해당되는 폴더가 있어야하고 없으면 에러가 발생함!
문제가 있으면 이걸 눌러서 삭제 가능!
추가도 할 수 있음!
364
풋프린트 라이브러리 관리하기
설정 - 풋프린트 라이브러리 관리
내가 설정해놓은 경로에 해당되는 폴더가 있어야하고 없으면 에러가 발생함!
문제가 있으면 이걸 눌러서 삭제 가능!
추가도 할 수 있음!
365
각종 커넥터 만들기 준비물
듀퐁커넥터
PH2.0
XH2.54
압착기
366
압착기의 주요 포인트
큰쪽
(높은쪽)
작은쪽
(높은쪽)
큰쪽
(낮은쪽)
작은쪽
(낮은쪽)
367
(예제2)ESP32보드 관련 회로도(1)
368
(예제2)ESP32보드 관련 회로도(2)
369
(예제2)ESP32보드 관련 회로도(3)
370
(예제2)필요한 심볼과 풋프린트
371
(예제2)필요한 심볼과 풋프린트
372
(예제2)필요한 심볼과 풋프린트
373
(예제2)회로도 편집기
USB부분
쇼트키 다이오드 이후로 5V라벨 사용
5V를 3.3V로 바꾸기!
ESP32는 3.3V로 작동됨!
374
(예제2)회로도 편집기
프로그램 업로드와 통신을 위한 통신칩
ESP32에 자동으로 프로그램을 업로드 하기 위한 부분
375
(예제2)회로도 편집기
ESP32의 GPIO를 29핀 커넥터와 연결함!
GPIO를 배치한 29핀과 나란하게 3.3v와 GND를 배치하는 커넥터
376
(예제2)회로도 편집기에서 45도로 배선하기
설정 - 환경 설정
45도 선택하기
회로도 편집기 - 편집 옵션
377
(예제2)회로도 편집기에서 45도로 배선하기
45도로 선그리기 가능!
이렇게 그리기 가능함!
378
(예제2)PCB 편집기
작동될지는 모름
(아몰랑)
379
380
해야할 것!
381
예제목차
382
온습도센서 쉴드 실물
383
스탭모터 드라이버 쉴드 만들었던거 수정디자인
커넥터 반대로 해서 수정
384
스탭모터 드라이버 쉴드 만들었던거 수정디자인
385
스탭모터 드라이버 쉴드 만들었던거 실물
386
스탭모터 드라이버 쉴드 만들었던거 아두이노 코드
#include <Stepper.h>
const int stepsPerRevolution = 2048;
//IN 1 2 3 4 = 7 6 5 4
//IN4 2 3 1
Stepper myStepper(stepsPerRevolution, 4, 6, 5, 7);
void setup() {
Serial.begin(9600); //PC-아두이노 간 통신라인
myStepper.setSpeed(15);
}
void loop() {
//스탭모터가 정회전으로 360도 회전한다
myStepper.step(2048);
//1초쉰다
delay(1000);
//스탭모터가 역회전으로 360도 회전한다
myStepper.step(-2048);
//1초쉰다
delay(1000);
}
387
ESP32에 온습도센서와 OLED작동시킨 보드 수정
OLED부분 180도 회전함
(잘못 배치함)
388
ESP32에 온습도센서와 OLED작동시킨 보드 실물
389
ESP32에 온습도센서와 OLED작동시킨 코드
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
//온습도 라이브러리
#include "DHT.h"
//온습도 관련부분
#define DHTPIN 13
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 32
#define OLED_RESET -1
#define SCREEN_ADDRESS 0x3C
//SSD1306의 클래스가 생성
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
void setup()
{
Serial.begin(115200);
//온습도센서는 아래 함수가 호출되어야함
dht.begin();
//ESP32에서 SSD1306이 정상적으로 연결되었는지 확인하기!
if(!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
Serial.println(F("SSD1306이 정상적으로 연결되지 않습니다!"));
for(;;);
}
display.setTextSize(2);
display.setTextColor(SSD1306_WHITE);
display.clearDisplay();
display.setCursor(0, 0);
display.println("NOCKANDA FOREVER!!");
display.display();
}
void loop()
{
float h = dht.readHumidity();
float t = dht.readTemperature();
String line1 = "TEMP:" + String(t,1) + "'C";
String line2 = "HUMI:" + String(h,1) + "%";
display.clearDisplay();
//온도
display.setCursor(0, 0); //0~15
display.println(line1);
//습도
display.setCursor(0, 16); //16~31
display.println(line2);
display.display();
delay(2000);
}
390
녹칸다의 시스템베이스(systembase) LoRa 예제
녹칸다의 LoRa시리즈 [링크]
391
송신기 샘플코드(작동시키는데는 실패함)
//1.로라A가 수신기가되고 로라B가 송신기가 되어서 로라B가 2초간격으로 로라A에게 "나는 녹칸다이다"라는 메시지를 전송하도록 하시오!
#include <SoftwareSerial.h>
//로라제품이 아두이노의 2(tx),3(rx)번핀에 연결되어있다!
SoftwareSerial lora(3,4);
void setup() {
Serial.begin(9600); //PC와 아두이노간
lora.begin(9600); //아두이노와 로라모듈간
}
void loop() {
lora.println("나는 녹칸다이다!");
delay(2000);
}
392
수신기 샘플코드(작동시키는데는 실패함)
//1.로라A가 수신기가되고 로라B가 송신기가 되어서 로라B가 2초간격으로 로라A에게 "나는 녹칸다이다"라는 메시지를 전송하도록 하시오!
#include <SoftwareSerial.h>
//로라제품이 아두이노의 2(tx),3(rx)번핀에 연결되어있다!
SoftwareSerial lora(3,4);
void setup() {
Serial.begin(9600); //PC와 아두이노간
lora.begin(9600); //아두이노와 로라모듈간
}
void loop() {
//로라모듈에게 받은 데이터는 PC에게 전달한다
if(lora.available()){
Serial.write(lora.read());
}
}
393
MAX3232 회로도
(5) GND
(3) RX
(2) TX
394
MAX3232 회로도
395
예제1 결과물 (작동 실패 ㅠㅠ)
396
예제1 결과물 (작동 실패 ㅠㅠ)
397
녹칸다의 misol 기상관측소 예제
녹칸다의 기상관측소 시리즈 [링크]
(RJ14)
6P4C커넥터
심볼
398
예제2번 소스코드
//풍향센서
float direct[] = {3.84,1.98,2.25,0.41,0.45,0.32,0.90,0.62,1.40,1.19,3.08,2.93,4.62,4.04,4.33,3.43};
//풍속센서
const byte anemo_pin = 2;
volatile int anemo_count = 0;
volatile unsigned long anemo_t = 0;
unsigned long nockanda_time = 0;
//우량센서(측우기)
const byte rain_pin = 3;
volatile int rain_count = 0;
volatile unsigned long rain_time = 0;
//온습도(dht-11)
#include "DHT.h"
#define DHTPIN 4
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
//풍속
pinMode(anemo_pin, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(anemo_pin), anemo_counter, FALLING);
//우량
pinMode(rain_pin, INPUT_PULLUP); //rainfall
attachInterrupt(digitalPinToInterrupt(rain_pin), rain_counter, FALLING);
//온습도
dht.begin();
}
void loop() {
//1000ms에 한번씩 모든 센서의 값을 읽어온다!
if(millis() - nockanda_time > 1000){
nockanda_time = millis();
//풍향센서 부분
int vane_raw_data = analogRead(A0);
float vane_volt = 5 * vane_raw_data/1023.0;
float degree = 0;
for(int i =0;i<16;i++){
if(i == 3 || i == 4){
if(abs(direct[i] - vane_volt) < 0.02){
degree = i * 22.5;
//Serial.println(degree);
break;
}
}else{
if(abs(direct[i] - vane_volt) < 0.05){
degree = i * 22.5;
//Serial.println(degree);
break;
}
}
}
//km/h => m/s*1000/3600
//풍속센서
float wind_speed = anemo_count*2.4*1000/3600;
anemo_count = 0;
//우량값
float rain_amount = rain_count*0.2794;
//온도와 습도
float h = dht.readHumidity();
float t = dht.readTemperature();
String json = "{\"wind_direct\":"+String(degree)+",\"wind_speed\":"+String(wind_speed)+",\"rain_amout\":"+String(rain_amount)+",\"humi\":"+String(h)+",\"temp\":"+String(t)+"}";
Serial.println(json);
}
}
void anemo_counter() {
//1초 = 1000ms (=66.66m/s)
if(millis() - anemo_t > 10){
anemo_t = millis();
//인터발 간격으로 한번씩 실행이 되는 부분
anemo_count++;
}
}
void rain_counter() {
//채터링
if(millis() - rain_time > 10){
rain_time = millis();
rain_count++;
}
}
399
예제2 결과물
400
예제2 결과물
401
녹칸다가 EASYEDA를 부록으로 추가하려는 이유
402
EASYEDA로 기판을 만드는 절차
(18650베터리로 LED에 전원을 넣는 PCB보드를 예시로 만들어보자!)
(EASYEDA는 모든 풋프린트를 SMD부품을 기준으로 함)
403
(예제3)EASYEDA로 간단한 예제 만들기
404
EASYEDA 시작하기
로그인하기
EasyEDA 디자이너
스탠다드 에디션 클릭하기!
405
EASYEDA 시작하기
406
EASYEDA 시작하기
라이브러리 클릭
내가 원하는 부품 검색
407
EASYEDA 시작하기
부품을 배선하고 배치함
라이브러리에서 선택한 부품에 심볼과 풋프린트가 지정되어있기 때문에 별도로 풋프린트를 선택할 필요는 없음!
(kicad에 footprint 할당은 여기서는 필요없음)
408
EASYEDA 시작하기
회로를 PCB로 변환
409
EASYEDA 시작하기
PCB디자인
410
EASYEDA 시작하기
3D 보기
411
412
해야할 것!(일단 간단한거 위주로 출발)
413
아두이노 쉴드로 만들어볼 목차(다 하는건 아님)
1.온습도센서 모듈을 2.54피치의 핀헤더에 연결해서 쓰는 쉴드 [링크]
2.온습도센서 자체를 PCB기판에 연결해서 쓰는 쉴드 [링크]
3.아두이노용 MP3모듈(DFminiMP3)을 연결해서 쓰는 쉴드 [링크]
4.RS485모듈인 MAX485를 연결해서 쓰는 쉴드 [링크]
5.모스펫(IRF520)으로 DC모터를 제어하는 쉴드 [링크]
6.이산화탄소센서(MH-Z19)를 연결할 수 있는 쉴드 [링크]
7.ULN2003 스탭모터 드라이버 쉴드 [링크]
8.A4988스탭모터 드라이버 쉴드 [링크]
9.16채널 릴레이 쉴드 [링크]
10.비접촉전류센서(SCT-013-030) 쉴드 [링크]
11.ESP32에 온습도센서와 0.91인치 OLED를 연결해서 쓰는 쉴드 [링크]
12.릴레이 제어 쉴드 [링크]
414
EasyEDA를 접근하기위한 전략
1.우리가 만들고자 하는것이 단순히 PCB를 제작하는 것이다!(easyeda의 공용 라이브러리로 커버 가능하다)
2.우리가 만들고자 하는 것이 PCB를 제작한다음 JLCPCB에 SMT주문을 하는 것이라면 내가 실장하고자 하는 부품을 미리 배치해서 작업을 해야하기 때문에 기본 라이브러리가 아니라 JLCPCB의 SMT주문이 가능한 부품을 미리 선택을 해야한다!(라이브러리)
415
예제목차
1.easyeda에서 2.54피치의 2핀 헤더와 LED와 저항을 배치해서 연결하는 PCB보드를 기본 라이브러리로 만드시오! [링크]
2.easyeda에서 다른사람이 만들어놓은 아두이노 쉴드 타입의 PCB를 이용해서 LED 3개를 활용하는 예시를 보이시오!(외곽선은 네모네모하게 함) [링크]
3.다른사람이 만들어놓은 아두이노 쉴드를 내가 원하는 모양으로 엣지컷해서 온습도센서 모듈을 연결해서 쓰는 PCB를 제작하시오!(풋프린트 편집) [링크]
4.온습도센서(DHT-11)를 아두이노에서 활용할 수 있는 PCB를 제작하시오!
5.모스펫(IRF520)을 아두이노에서 활용할 수 있는 쉴드를 구현하시오! [링크]
6.아두이노용 5V 스탭모터 드라이버(ULN2003)를 이용해서 스탭모터를 제어할 수 있는 쉴드를 만드시오! [링크]
416
예제1번 심볼 배치하기
공용 라이브러리
이거 누르면 부품 패키지를 바꿀 수 있음
(풋프린트 모양이 바뀜)
3mm LED
2핀 소켓
패드와 패드 사이가
7.62mm인저항
GND 라벨
VCC 라벨
copper pour를 하기 위해서 필요함!
417
예제1번 심볼 배치하기
네트연결
네트라벨
전원라벨
(GND)
전원라벨
(VCC, 5V)
내가 원하는걸로 바꿔서 쓸수도 있음
연결안함
참조필드
필드값
전원라벨
418
예제1번 PCB편집기로 옮기기
회로를 PCB로 변환
배선라우트
이미지 실크스크린으로 넣기
Copper pour
레이어
실크스크린으로 문자 출력하기
419
예제1번 배선하고 copper pour하기
전면 구리 레이어
후면 구리 레이어
GND는 copper pour로 연결함
420
예제1번 배선하고 copper pour하기
다각형으로 외곽선을 감싸주면 전면 copper pour 완성!
하위레이어선택
421
예제1번 배선하고 copper pour하기
다각형으로 외곽선을 감싸주면 후면 copper pour 완성!
실크스크린
422
예제2번 아두이노 우노 쉴드 심볼과 풋프린트
423
예제2번 아두이노 우노 쉴드 심볼 가져오기
424
예제2번 회로도 편집기
네트라벨
425
예제2번 PCB 편집기
테두리를 쉴드모양으로 잘라야겠군!
426
예제3번 풋프린트 편집해서 저장하기
여기 클릭
편집기에서 풋프린트가 나옴!
427
예제3번 풋프린트 편집해서 저장하기
테두리 선택
레이어를 보드 아웃라인으로 바꿔줌!
실크스크린에서 아웃라인으로 바꾼 상황임!
428
예제3번 풋프린트 편집해서 저장하기
적당한 이름 입력
429
예제3번 풋프린트 편집해서 저장하기
심볼 선택하고 마우스 오른쪽 클릭
430
예제3번 풋프린트 편집해서 저장하기
풋프린트 만들었던거 이름 검색
선택
업데이트
431
예제3번 회로도 편집기
432
예제3번 실크스크린으로 이미지 넣기
이미지 열기
사이즈 설정하기
433
예제3번 PCB 편집기
앞면
뒷면
이미지 실크스크린의 레이어를 뒷면으로 바꾸면 뒤로 이동됨
434
예제4번 온습도센서 심볼 검색
435
예제4번 회로도편집기
436
예제4번 PCB편집기
437
예제5번 회로도편집기
438
예제5번 PCB편집기
439
예제6번 회로도편집기
440
예제6번 PCB편집기
441
다음시간에 할 내용
1.적극적으로 SMD부품을 활용해보기!
2.PCB를 주문하는 방법을 알아보기!
3.SMT주문 하는 방법을 알아보기!
4.배선의 두께를 조절하는 방법!
5.배선의 색을 바꾸는 방법!
6.V-CUT하는 방법!
442
443
해야할 것!
1.배선의 두께 바꾸기!
2.배선의 색 바꿔보기!
3.PCB주문하는 방법 알아보기!
4.V-CUT하는 방법 알아보기!
2023-11-14 (수정사항)
JLCPCB에 V-CUT 추가비용이 발생함!
주문할때 Panel By Customer 체크 할 것!
추가비용 $3.8
444
예제목차
1.배선의 색과 두께를 바꾸는 방법을 보이시오!(DC5V배럴잭으로 LED 1개에 전원을 공급하는데 LED가 소모하는 전류량이 3A라고 가정해보자)[링크]
2.EasyEDA에서 V-Cut주문하는 방법에 대해서 알아보기!(녹칸다가 easyeda로 실제로 v-cut주문한 사례가 없기 때문에 그렇게 될거라고 치고 해보도록한다)[링크]
3.RS485통신으로 실습할 수 있는 아두이노 쉴드를 구현하시오![링크]
4.ESP32보드에 온습도센서(DHT-11)와 0.91인치 OLED(SSD1306)을 연결해서 측정값을 확인할 수 있는 PCB를 구현하시오![링크]
5.릴레이 1개를 아두이노로 제어할 수 있는 쉴드를 구현하되 릴레이의 내부 엣지컷은 고려하지 마시오!(내부 엣지컷은 15편에서 이어서 하도록 함)[링크]
445
easyeda에서 배선색 바꾸기
실제 PCB의 색이 바뀌는건 아님
446
easyeda에서 배선색 두께 바꾸기
바꾸고자 하는 배선 선택
폭 입력
447
easyeda에서 PCB 주문하기(자동업로드)
JLCPCB에 로그인 해둘것!(어차피 로그인 해야함)
JLCPCB로 거버파일이 자동업로드 됨!
(주문 진행)
448
easyeda에서 PCB 주문하기(수동업로드)
거버파일 생성
거버파일 생성후 업로드해서 주문
449
easyeda에서 v-cut 주문하기
(시나리오) 30mm * 30mm PCB를 가로3개 세로 3개씩 붙혀서 총 9개를 한판으로 주문하려는 상황
원본의 테두리 선택
시작X, 시작Y
값 메모하기
컨트롤+A를 눌러서 전체 선택해주기
450
easyeda에서 v-cut 주문하기
컨트롤+쉬프트+C를 눌러서 기준점을 테두리 왼쪽 상단으로 지정하기
컨트롤+쉬프트+V를 눌러서 꼭지점 끼리 이어붙히기!
451
easyeda에서 v-cut 주문하기
갯수대로 하고 각 PCB의 테두리는 모두 삭제하기
(전체를 포함하는 1개의 테두리를 그려줘야함)
452
easyeda에서 v-cut 주문하기
원본의 시작X, 시작Y입력
너비와 높이는 90*90
(30mm짜리가 가로3개 세로 3개씩 있으므로)
가운데 테두리없이 전체 테두리 1개만 있어야함
453
easyeda에서 v-cut 주문하기
454
easyeda에서 v-cut 주문하기
추가한 레이어선택
직선으로 V-CUT라인 그려줌
시작X+30mm
시작X+60mm
시작Y-30mm
시작Y-60mm
시작 지점
455
easyeda에서 v-cut 주문하기
거버파일 업로드
V-CUT 레이어 메모
"Gerber_MechanicalLayer.GME" is V-CUT LINE.
456
예제3 결과
457
예제3 결과
458
예제4 결과
459
예제4 결과
460
예제5 결과
461
예제5 결과
462
463
해야할 것!
1.내부 엣지컷 사용하는 방법 알아보기! [kicad와 비교]
2.via사용법 알아보기!
3.LCSC 부품 고르기!
4.BOM파일 생성하기!(내 PCB보드에 실장할 부품목록)
5.SMT주문 해보기!
464
예제목차
465
예제1) 내부 엣지컷 해보기
보드 아웃라인 선택
트랙 선택
내부 엣지컷 할 부분에 트랙 그리기
466
예제1) 내부 엣지컷 해보기
트랙 폭 변경
(원하는 대로)
467
예제1) 내부 엣지컷 해보기
트랙에 마우스 오른쪽버튼 클릭해서 보드 컷아웃으로 변환
완료된 모습
468
예제1) 내부 엣지컷 해보기
내부 엣지컷
469
예제2) via사용해보기
윗면에 트랙을 그리다가 막히면 키보드 v키를 눌러서 via를 생성해줌!
교차하는 부분은 뒷면으로 트랙을 그려줌
뒷면으로 배선을 그릴수 없으니 다시 v키를 눌러서 via를 생성해서 반댓면으로 그려줌
470
예제3) 결과물
471
예제3) 결과물
472
SMT주문을 위한 절차
1.회로도편집기에서 심볼을 배치할때 LCSC에서 내가 실장할 부품을 미리 선정해서 배치한다!(공용라이브러리는 해당안됨)
2.부품은 기본부품과 확장부품이 있고 기본부품이 재고보유량이 월등히 많고 저렴함!(확장부품의 경우 SMT주문시 단가가 조금더 높다고 함)
3.모든부품이 SMT주문이 되는것이 아니기에 SMT라는 문구가 붙은 부품을 선택해야함!
4.SMT주문을 위해서는 세가지 파일이 필요함!(거버파일,BOM파일,부품배치파일)
473
BOM 파일 내보내기
(눌렀을때 나오는 화면은 무조건 YES 하면됨)
부품 배치파일 내보내기
(이것도 무조건 YES)
예제3) SMT주문 해보기!
다운로드 폴더에 파일이 다운로드됨!
474
예제3) SMT주문 해보기!
475
예제3) SMT주문 해보기!
476
예제3) SMT주문 해보기!
(JLCPCB에 미리 로그인 해두면 좋음)
JLCPCB에 업로드 된거 확인!
477
예제3) SMT주문 해보기!
(옵션) JLCPCB 엔지니어가 잘못되면 뭔가 수정을 해주는듯함
(녹칸다도 잘 모름)
기본은 Economic이고 단면으로 SMT주문을 하되 가격을 저렴하게 하는 방식
양면을 다 활용할 경우 Standard로 해야하고 선택 안했더라도 이후 절차에서 자동으로 변경됨
478
예제3) SMT주문 해보기!
479
예제3) SMT주문 해보기!
BOM파일 업로드
부품자리파일 업로드
480
예제3) SMT주문 해보기!
SMT를 할 부품과 안할 부품을 선택해줌!
선택안한 부품이 있으면 나오는 화면인데 Do not place 선택해줌!
481
예제3) SMT주문 해보기!
부품이 정확히 배치되어 있는지 확인해보기!
(EasyEDA로 출력하면 특별히 어긋나지는 않는듯!)
확인 다 했으면 NEXT
482
예제3) SMT주문 해보기!
장바구니에 담은다음 결제하면 완료!
483
예제4) 결과물
484
예제4) 결과물
485
예제5) 결과물
486
예제5) 결과물
487
끝
끝!
489
부록
녹칸다의 스마트팜 보드(1차)
490
구성요소
1.제어보드는 arduino mega mini보드를 활용해서 PCB에 꽂아서 활용함!
2.전체적인 전원은 5V~12V로 배럴잭을 활용함!
3.온도제어는 SSR릴레이로하고 스페이스 히터를 PID 제어함!
4.온도측정은 실내와 실외로 나눠서 측정하고 DS18B20을 활용함!
5.습도측정은 실내에 DHT-22로 측정함!(온도는 무시)
6.습도제어는 5V 가습기를 IRF520으로 제어함!
7.조명제어는 5V 식물조명을 IRF520으로 제어함!
8.펌프제어는 5V 릴레이로 하고 스파크 킬러를 사용함!
9.디스플레이는 2004LCD(I2C)를 활용함!
10.PCB에 제어하기 위한 택트 스위치 8개를 배치함!(펌프, 가습기, 조명, 온도)
11.외부 케이스를 제작하기 위해서 외장버튼과 LED를 배치함!
12.실험삼아 부저와 RTC모듈을 부착함!
491
구성요소
식물조명
모스펫
조도센서
DHT-22
DS18B20
가습기
100W스페이스히터
SSR릴레이
모스펫
24V워터펌프
수위센서
수위센서
아두이노 메가 미니
DS18B20
2004LCD
온도
습도
펌프
펌프
492
구성요소
T1: 20.1’C, T2: 21.2’C
T3: 22.2’C, BH: 114lx
H1: 50.2%, H2: 80.2%
P1: 3600s, P2: 300s
▲
▼
펌프
조명
수위
수위
가습기
메인전원
온도설정
습도설정
펌프작동간격
펌프유지시간
▲
▼
▲
▼
▲
▼
493
필요한 회로도
1.RELAY 회로도
2.IRF520 MOSFET 회로도
494
커넥터 정보
+
-
S
+
-
S
X
DS18B20
XKC-Y25-V
495
향후 테스트를 위해서 hmi 포트 만들어두기
VCC
TX
RX
GND
496
향후 테스트를 위해서 RS485 포트 만들어두기
497
향후 테스트를 위해서 RS485 포트 만들어두기
498
이어서 진행할 내용
1.보조기판의 RS45커넥터 전면에서 뒷면으로 이동시켜서 다시 배선하기!
2.연결안되어있는 부저, 모스펫, 릴레이에 배선하기!
3.모든 커넥터에 뭐가 뭔지 알 수 있도록 실크스크린으로 작성하기!
4.고정할 수 있게 드릴홀 뚫기!
5.전원상황에 맞기 배선 두께 조절하기!
6.릴레이쪽에 옵토커플러를 기준으로 copper pour를 재조정할 필요가 있음!(+릴레이쪽에 엣지컷 적용하기)
7.nextion hmi 커넥터 생성하기(JST XH2.54 4핀커넥터)
8.녹칸다 로고를 실크스크린으로 넣기!
9.최종적으로 JLCPCB에 PCBA주문해보기!
499
최종결과(회로도)
500
최종결과
501
최종결과
502
최종결과
503
최종결과
504
최종결과(BOM)
505
최종견적
507
508
구성요소(카이캐드 시리즈 18번)
1.온도센서 2개가 필요한데 DS18B20으로 하고 커넥터는 XH2.54로 적용함!
2.온도센서 보정을 위해서 DHT22를 기판에 내장하거나 외장으로 연결가능하도록 하고 커넥터는 XH2.54로 적용함!
3.외부전원 5V 입력을 위해서 DC배럴잭을 배치함!
4.습구온도계를 팬은 5V쿨링팬을 사용하고 PH2.0커넥터로 적용함!
5.디스플레이는 0.96인치 OLED(SSD1306)을 사용하고 XH2.54커넥터를 적용함!
6.전체적인 제어보드는 ESP32 DEV V1(30PIN)를 사용함!
7.보정을 위해서 기판에 보정버튼 1개 배치함!
8.RS485통신을 위한 모듈 풋프린트 배치함!
9.전체적으로 건습구 온도계에 들어가는 부품은 녹칸다가 충분히 납땜가능한 영역이기 때문에 TH부품을 사용함!
509
건습구 온습도계 만들어보기!
DRY TEMP : 22.2 ‘C
WET TEMP : 19.1 ‘C
HUMI : 77%
전원 연결포트
RS485 연결포트
5V 쿨링팬
(외부에서 내부로 바람을 불어넣어줌)
510
건습구 온습도계 만들어보기!
ESP32
보정버튼
DHT22
RS485 모듈
DS18B20
습구온도
DS18B20
건구온도
5V쿨링팬
PCB가 있는 공간
온도측정부
물통
바람 방향
511
건습구 온습도계 만들어보기!
+
-
S
+
-
S
DS18B20
DHT22
512
건습구 온습도계 만들어보기!
+
-
513
건습구 온도계 회로도편집기
514
건습구 온도계 PCB편집기
515
건습구 온도계 3D뷰어
516
건습구 온도계 최종결과(납땜전)
517
건습구 온도계 최종결과(납땜후)
518
기본 작동테스트 결과
519
함께 테스트 해볼 내용
1.PCBA로 릴레이 주문 및 테스트 해보기
2.탈부착이 가능한 릴레이 테스트해보기
3.스파크킬러(스너버)를 PCB에 장착해보기
4.ESP32보드와 아두이노 메가 미니 연결 핀소켓을 SMD로 부착해보기
5.부저회로 테스트해보기
6.SMD 타입 7805회로도 테스트 해보기
7.UV LED, RGB LED, WHITE LED 테스트해보기
8.RS485회로도 작동 테스트 해보기
9.L293D회로도 작동 테스트 해보기
10.터치 회로도 테스트 해보기
520
아두이노 메가 & ESP32 SMD 핀소켓
521
RS485 회로
정상작동확인!
522
L293D & RGB LED 회로도
정상작동확인!
정상작동확인!
523
UV LED & snubber 회로도
이건 잘 모르겠음
미확인
524
7805 & touch sensor & buzzer 회로도
정상작동확인!
정상작동확인!
작동안됨!
부저를 바꿔서 테스트 해볼 예정
525
릴레이 3종세트 회로도
모두 정상작동확인!
526
테스트보드 PCB편집기
527
테스트보드 3D 뷰어
528
테스트보드 최종결과
529
테스트보드 최종결과
530
테스트보드 작동테스트
531
532
양액 컨트롤러 구성요소(카이캐드 시리즈 19)
1.정량펌프(12V 도징펌프) 2개를 컨트롤하기 위해서 릴레이 2개가 필요함!
2.외부전원 12V를 입력받고 MCU에 전원공급을 하기 위해서 7805 필요함!
3.전체 제어보드는 ESP32보드 38핀짜리로 하도록 함!(안테나 외장형)
4.양액의 pH농도 측정을 위해 센서 연결부 필요함!
5.양액의 TDS 측정을 위해서 센서 연결부 필요함!
6.양액의 온도 측정을 위해서 NTC 서미스터 연결부 필요함!
7.RS485통신 가능하게 할 것!
8.양액원액(A액,B액)의 수위를 측정하기 위해서 수위센서 연결부 2개 필요함!
9.디스플레이(ILI9341) 연결을 위한 커넥터 필요함!(터치는 안씀)
10.양액A액 공급량증가, 감소, 투입 버튼 3개 필요함
11.양액B액 공급량증가, 감소, 투입 버튼 3개 필요함
12.PH센서 보정버튼, TDS센서 보정버튼 각각 1개씩 필요함
13.양액통에 얼만큼 양액이 있는지 측정하기 위해서 오일레벨센서를 활용하도록 함!
533
양액통
전체적인 느낌
LCD
▲
▼
▲
▼
■
■
■
■
양액A펌프
양액B펌프
양액A통
양액B통
입수구
출수구
pH센서
TDS센서
온도센서
수위센서
오일레벨센서
534
도징펌프 도면
535
커넥터 정보
+
-
S
X
XKC-Y25-V
pH센서
536
커넥터 정보
TDS센서
ntc 서미스터(극성없음, 10k 저항필요)
537
커넥터 정보
538
커넥터 정보
오일레벨센서(극성없음, 저항필요)
녹칸다는 120옴 저항 활용함
539
함께 테스트 해볼 내용
1.MPU6050테스트 해보기
2.SHT20 온습도 센서 테스트 해보기
3.SHT35 온습도 센서 테스트 해보기
4.HX711 테스트해보기
5.단일 전원으로 12V펌프 작동 테스트 해보기
6.LCD사용을 위해서 0.5mm FFC 커넥터 실장해보기
7.안테나가 있는 38핀 ESP32 핀소켓 만들어보기
540
541
완료가 안되어서 계속 이어서 진행함(kicad 20편)
1.배선해서 주문가능한 상태 만들어놓기
2.크기를 조금더 줄여보기
3.수위센서는 내장형으로 교체하기
4.기판연결 커넥터 전원부 수정하기
5.ec센서를 외부에서 연결가능하도록 고민해보기
542
양액 컨트롤러 최종결과
543
양액 컨트롤러 최종결과
544
양액 컨트롤러 최종결과
라이브방송에서는 8p 커넥터였는데 녹칸다가 보유한 케이블이 10p라서 10p로 변경함
545
양액 컨트롤러 최종결과
546
양액 컨트롤러 최종결과
547
양액 컨트롤러 최종결과
548
양액 컨트롤러 약간 수정
방열판 들어갈 자리 약간 확보
(생각보다 사이즈가 컸다..!)
549
테스트용 보드 주요 회로
550
테스트용 보드 주요 회로
551
테스트용 보드 주요 회로
552
테스트용 보드 주요 회로
553
테스트용 보드 주요 회로
554
테스트용 보드 주요 회로