1 of 554

1

2 of 554

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 of 554

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 of 554

4

녹칸다와 kicad로 시작하기!(1/10)

kicad 7.0버전 다운로드 받기!(윈도우 기준)

https://www.kicad.org/download/

5 of 554

5

녹칸다와 kicad로 시작하기!(2/10)

6 of 554

6

녹칸다와 kicad로 시작하기!(3/10)

7 of 554

7

녹칸다와 kicad로 시작하기!(4/10)

8 of 554

8

녹칸다와 kicad로 시작하기!(5/10)

9 of 554

9

녹칸다와 kicad로 시작하기!(6/10)

10 of 554

10

녹칸다와 kicad로 시작하기!(7/10)

11 of 554

11

녹칸다와 kicad로 시작하기!(8/10)

12 of 554

12

녹칸다와 kicad로 시작하기!(9/10)

13 of 554

13

녹칸다와 kicad로 시작하기!(10/10)

14 of 554

14

녹칸다가 생각하는 수준별 단계

1단계 : kicad에 포함된 기본 라이브러리만 활용하는 단계

▶내가 만들고자하는 PCB의 부품이 기본에 포함됨

2단계 : kicad에 포함되지 않은 다른 사람이 만들어둔 외부 라이브러리를 활용하는 단계

▶내가 필요한 부품이 kicad에 없지만 다운로드 받을 수 있음

3단계 : kicad에 내가 직접 라이브러리를 만들어서 활용하는 단계

▶다운로드 받을때가 없어서 내가 직접 만들어서 써야함

4단계 : 주문해서 PCB기판을 직접 제작하는 단계

5단계 : PCB기판 뿐만 아니라 부품도 SMT로 제작하는 단계

15 of 554

15

1편에서 진행하는 예제 목록(누르면 이동)

16 of 554

16

뭔지 모르겠지만 일단 나의 첫번째 PCB 만들기

(상황) LED 1개가 있고 전원을 연결하면 LED가 켜지고 연결안하면 꺼지도록 하고싶다..

-LED 1개

-저항 1개

-전원을 연결할 수 있는 2핀커넥터

(더블클릭)회로도 편집기 오픈!

17 of 554

17

뭔지 모르겠지만 일단 나의 첫번째 PCB 만들기

18 of 554

18

뭔지 모르겠지만 일단 나의 첫번째 PCB 만들기

회로도편집기에 심볼을 배치하는 단계

19 of 554

19

뭔지 모르겠지만 일단 나의 첫번째 PCB 만들기

20 of 554

20

뭔지 모르겠지만 일단 나의 첫번째 PCB 만들기

내가 추가하고자 하는 심볼

심볼에 설정하고자 하는 풋프린트

21 of 554

21

뭔지 모르겠지만 일단 나의 첫번째 PCB 만들기

내가 원하는 풋프린트 배치가 완료됨

22 of 554

22

뭔지 모르겠지만 일단 나의 첫번째 PCB 만들기

PCB 편집기 오픈

23 of 554

23

뭔지 모르겠지만 일단 나의 첫번째 PCB 만들기

회로도 편집기에 있는 풋프린트 불러오기

24 of 554

24

뭔지 모르겠지만 일단 나의 첫번째 PCB 만들기

얘네들 연결을 해줘야함

25 of 554

25

뭔지 모르겠지만 일단 나의 첫번째 PCB 만들기

각 부품간의 연결을 배선으로 연결해줌

배선라우트

26 of 554

26

뭔지 모르겠지만 일단 나의 첫번째 PCB 만들기

기판의 테두리를 edge.cut으로 지정함

edge.cut

사각형그리기

27 of 554

27

뭔지 모르겠지만 일단 나의 첫번째 PCB 만들기

3D로 보기

28 of 554

28

1단계 PCB제작의 흐름

1.프로젝트 생성

2.심볼 배치하기(회로도 편집기)

3.심볼간 네트 연결하기(회로도 편집기)

4.심볼마다 풋프린트(footprint) 지정해주기!(회로도 편집기)

5.회로도 편집기 내용을 PCB 편집기로 반영하기!(PCB 편집기)

6.풋프린트 배치하고 배선하기(PCB 편집기)

7.완성된 결과물 확인하기!

(참고) 회로도 편집기에서 작업이 완료된다음 PCB편집기에서 수정사항을 반영해서 작업을 이어나간다!

29 of 554

29

kicad에서 사용하는 용어에 익숙해지기

1.심볼(symbol)

2.풋프린트(footprint)

3.회로도 편집기

4.PCB 편집기

5.쓰루홀 부품(THT)

6.SMD부품

7.패드(pad)

8.배선

30 of 554

30

배선을 잘못하면 어떻게 되나요?

31 of 554

31

배선을 잘못하면 어떻게 되나요?

혹시~~ 연결안된게 있으면 찾아준다(연결해야한다)

32 of 554

32

1단계 수준으로 레이어(layer에 대해 알아보기)

1.(F.Cu) : 양면 PCB기판에서 윗면에 배선 라우트가 되는 영역

->F면에서 배선 라우트는 교차할 수 없다

2.(B.Cu) : 양면 PCB기판에서 아랫면에 배선 라우트가 되는 영역

->B면에서 배선 라우트는 교차할 수 없다

3.(Edge.Cuts) : 내가 만들고자 하는 기판의 외곽 테두리를 말한다!

33 of 554

33

제일 첫번째 만든 기판을 베터리 타입으로 하시오!

배선이 뒷면에 됨

34 of 554

34

기본으로 사용하는 기호(심볼)에 대해 알아보기!

저항

캐패시터

엘이디

베터리

커넥터

35 of 554

35

직렬, 병렬연결에 대해 알아보기!

직렬

병렬

36 of 554

36

직렬, 병렬연결에 대해 알아보기!

병렬

병렬

37 of 554

37

아두이노 쉴드 타입의 프로젝트 만들기

38 of 554

38

아두이노 쉴드 타입의 PCB 만들기(1)

(LED 1개를 연결해서 1초 간격으로 ON/OFF하기)

39 of 554

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 of 554

40

풋프린트를 이쁘게 정렬해서 배치하는 방법

정렬하려는 풋프린트 선택

위쪽으로 정렬됨

3개 이상인 경우 간격이 일정해짐

41 of 554

41

아두이노 쉴드 타입의 PCB 만들기(2)

(LED 3개를 1초간격으로 순서대로 켜기)

42 of 554

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 of 554

43

아두이노 쉴드 타입의 PCB 만들기(3)

(버튼 1개로 LED 제어하기)

44 of 554

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 of 554

45

아두이노 쉴드 타입의 PCB 만들기(4)

(버튼2개로 LED 2개 제어하기)

46 of 554

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 of 554

47

48 of 554

48

1편에서 했던 PCB를 만들기위한 순서

1.프로젝트를 생성한다!

2.회로도 편집기에서 심볼을 추가한다!

3.회로도 편집기에서 각 심볼에 풋프린트를 설정한다!

4.PCB 편집기에서 풋프린트를 배치하고 배선을 연결한다!

5.완성된 PCB보드에 copper pour 적용한다!(2편에서 추가)

6.완성된 결과물을 확인한다!

49 of 554

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 of 554

50

LED 1개를 ON/OFF하기(가벼운 복습)

51 of 554

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 of 554

52

copper pour 하는 방법 알아보기!

앞면과 뒷면에 둘다 copper pour를 적용하겠다!

그때 적용할 패드는 GND이다

F.Cu나 B.Cu가 선택되어있어야함

53 of 554

53

copper pour 하는 방법 알아보기!

나의 PCB를 다각형으로 감싸준다!

그리고 나서 키보드의 B를 누른다

54 of 554

54

copper pour 한것과 안한것의 비교

이 부분은 구리로 칠하지 않음

이 부분은 구리로 채워짐

(copper pour)

55 of 554

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 of 554

56

핀헤더 타입(2.54피치)

57 of 554

57

녹칸다가 온습도센서를 연결해서 쓸 수 있는 PCB를 만들고 싶다!

58 of 554

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 of 554

59

MQ6가스센서를 측정하는 쉴드 만들기!

60 of 554

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 of 554

61

DC 배럴잭

62 of 554

62

아두이노의 쉴드이긴한데 LED에 DC배럴잭으로 외부전원을 연결하면 LED가 켜지도록 하시오!

63 of 554

63

아두이노의 쉴드이긴한데 LED에 DC배럴잭으로 외부전원을 연결하면 LED가 켜지도록 하시오!

DC-005

64 of 554

64

몰렉스 2.5피치 타입(5267)

65 of 554

65

4핀몰렉스 커넥터의 1번핀부터 4번핀까지 순서대로 블루투스모듈이 연결되고 5V,RX(3),TX(2),GND순으로 배치되어있을때 쉴드 타입으로 구성하시오!

66 of 554

66

4핀몰렉스 커넥터의 1번핀부터 4번핀까지 순서대로 블루투스모듈이 연결되고 5V,RX(3),TX(2),GND순으로 배치되어있을때 쉴드 타입으로 구성하시오!

몰렉스 5267

몰렉스 5264

67 of 554

67

JST 2.54피치 타입(XH시리즈)

68 of 554

68

수위센서(xkc-y25-v)의 JST XH(2.54mm) 4핀커넥터를 아두이노 쉴드에 연결해서 쓸 수 있도록 구성하시오!

69 of 554

69

수위센서(xkc-y25-v)의 JST XH(2.54mm) 4핀커넥터를 아두이노 쉴드에 연결해서 쓸 수 있도록 구성하시오!

70 of 554

70

JST 2.0피치 타입(PH시리즈)

71 of 554

71

JST PH 2.0 4핀 커넥터를 이용해서 VCC, 3번핀, 2번핀, GND 순으로 연결되도록 하시오!

72 of 554

72

JST PH 2.0 4핀 커넥터를 이용해서 VCC, 3번핀, 2번핀, GND 순으로 연결되도록 하시오!

73 of 554

73

NW 1.25피치 타입(A1251)

74 of 554

74

NW 1.25피치 4핀 커넥터를 이용해서 VCC, 3번핀, 2번핀, GND 순으로 연결되도록 하시오!

75 of 554

75

NW 1.25피치 4핀 커넥터를 이용해서 VCC, 3번핀, 2번핀, GND 순으로 연결되도록 하시오!

76 of 554

76

USB A타입 커넥터

77 of 554

77

아두이노의 5V와 GND를 USB를 이용해서 다른 누군가에게 전원을 공급해준다!

78 of 554

78

아두이노의 5V와 GND를 USB를 이용해서 다른 누군가에게 전원을 공급해준다!

USB 2.0 A타입

마운트 소켓

79 of 554

79

터미널블록 5.08피치

80 of 554

80

아두이노에서 5V와 GND를 2핀 터미널블록 2개를 이용해서 출력하시오!

81 of 554

81

아두이노에서 5V와 GND를 2핀 터미널블록 2개를 이용해서 출력하시오!

KF301

2p, 3p, 4p

82 of 554

82

83 of 554

83

3편에서 주력으로 탐구해볼 내용!

0.쓰루홀 풋프린트와 SMD풋프린트의 궁극적인 차이를 비교해보시오!

1.프로젝트를 생성한다

2.심볼을 배치해야하는데 내가 원하는 심볼이 없으면 어떻게하지?(문제점)

->심볼을 다운로드받는다!

->회로도 편집기에서 회로도를 미려하게 작성하기 위해서 네트 라벨을 사용하는 방법을 알아본다!

3.풋프린트를 배치해야하는데 내가 원하는 풋프린트가 없으면 어떻하지?

->풋프린트를 다운로드 받는다!

(심볼하고 풋프린트는 한쌍이다)

4.회로도 편집기로 가서 PCB를 디자인하고 배선한다!

5.최종적으로 확인한다!

84 of 554

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 of 554

85

THT와 SMD의 차이를 알아보기

1.양면 PCB기판에 THT는 관통되기 때문에 뒷면에 배선 라우트를 할 수 없으나 SMD는 한쪽면에만 부착되기때문에 반대쪽면에 배선 라우트가 가능하다!

2.SMD부품을 F면에다가 배치하면 B면에 있는 부품과 서로 배선 라우트가 불가능하다!(단면이기때문에)

(참고)

SMD부품의 대략적인 크기에 대한 풋프린트는 아래와 같다

0201 : 거의 납땜 초인이 아니면 불가능한 쪼끄만한 크기

0402 : 녹칸다가 납땜하기 불가능한 쪼끄만한 크기

0603 : 녹칸다가 조금 하기 어려운 크기

0805 : 녹칸다가 아주 노력하면 가능할 수 있는 크기!

86 of 554

86

THT와 SMD의 차이를 알아보기

87 of 554

87

THT와 SMD의 차이를 알아보기

THT는 양면이기 때문에 앞면과 뒷면을 연결가능함

SMD는 단면이라서 앞면과 뒷면을 연결할 수 없음

SMD는 뒷면에 아무것도 없음

88 of 554

88

네트라벨에 대해서 알아보기

1.네트라벨은 크게 전원 라벨과 네트 라벨이 있다!

2.전원 라벨(power symbol)은 5V, GND, 12V와 같이 전원과 관련된 라벨이다!

3.네트 라벨은 패드와 패드를 가상으로 연결하는 개념이라고 생각하면된다!

4.실제로 연결은 안되어있지만 연결되어있는 것이다!

5.복잡한 PCB기판의 회로도 작성시 깔끔하게 그릴 수 있지 않을까?(우리가 그런 수준까지 갈 수 있을까?)

89 of 554

89

네트라벨에 대해서 알아보기(전원기호/power symbol)

전원기호추가

90 of 554

90

네트라벨에 대해서 알아보기(전원기호/power symbol)

전원기호를 선택함

91 of 554

91

네트라벨에 대해서 알아보기(전원기호/power symbol)

92 of 554

92

네트라벨에 대해서 알아보기

네트라벨추가

93 of 554

93

네트라벨에 대해서 알아보기

아두이노 우노 템플릿에서 미리 정의해놓은 네트라벨임

아두이노의 각 핀에 해당함

94 of 554

94

네트라벨에 대해서 알아보기

연결이 안된것 같지만 이름이 같은거 끼리 서로 연결됨

95 of 554

95

네트라벨에 대해서 알아보기

96 of 554

96

심볼과 풋프린트를 다운로드 받을 수 있는 곳!

(회원가입하면 공짜)

https://www.snapeda.com/

97 of 554

97

심볼과 풋프린트를 다운로드 받는 절차

1.내가 원하는 것을 검색해서 심볼과 풋프린트의 압축파일을 다운로드 받는다!

2.~~~.kicad_mod파일이 풋프린트 파일이고 ~~~~.kicad_sym파일이 심볼파일이다!(이것을 추가해주면 된다)

(심볼추가하기)

3.라이브러리 추가에서 다운받은 심볼파일을 선택하면 끝!

(풋프린트 추가하기)

4.풋프린트를 모아둘 폴더를 하나 생성한다음 풋프린트편집기에서 추가해주기!

98 of 554

98

심볼을 등록하는 절차(최초로할때)

심볼 편집기

(심볼 추가하기)

99 of 554

99

심볼을 등록하는 절차(최초로할때)

라이브러리 추가

100 of 554

100

심볼을 등록하는 절차(최초로할때)

다운받은 kicad_sym파일 선택하기

101 of 554

101

심볼을 등록하는 절차(최초로할때)

추가한 심볼이 등록됨

102 of 554

102

심볼을 등록하는 절차(두번째부터 할때)

심볼 가져오기

추가해놓은 라이브러리에

마우스 오른쪽 클릭

103 of 554

103

심볼을 등록하는 절차(두번째부터 할때)

다운로드받은 심볼파일 선택하기

104 of 554

104

심볼을 등록하는 절차(두번째부터 할때)

다운로드받은 심볼 추가 완료!

심볼이 여러개 추가됨

라이브러리 이름을 바꾸는 방법은 다음에 알아보도록 함!

(아직 녹칸다도 모름)

105 of 554

105

풋프린트를 등록하는 절차

kicad 관련 폴더로 이동함

(특별히 이곳에 하는 이유는 없음)

myfootprint.pretty로 동일하게 파일명 만들기(잘모르겠으면 따라하기)

106 of 554

106

풋프린트를 등록하는 절차

다운받은 kicad_mod파일을 이곳에다가 이동시킴!

107 of 554

107

풋프린트를 등록하는 절차

풋프린트 편집기

(풋프린트 추가하기)

108 of 554

108

풋프린트를 등록하는 절차

라이브러리 추가

myfootprint.pretty 선택해주기

109 of 554

109

풋프린트를 등록하는 절차

다운로드받은 풋프린트 추가 완료!

110 of 554

110

아두이노용 온습도센서 회로도

111 of 554

111

실습에 활용할 심볼과 풋프린트

온습도센서(DHT-11) [링크]

112 of 554

112

예제 3번 캡쳐자료 넣기

113 of 554

113

예제 3번 캡쳐자료 넣기

114 of 554

114

아두이노용 MP3모듈 회로도

115 of 554

115

실습에 활용할 심볼과 풋프린트

DF MINI MP3 [링크]

116 of 554

116

예제 4번 캡쳐자료 넣기

117 of 554

117

예제 4번 캡쳐자료 넣기

118 of 554

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 of 554

119

아두이노용 RS485모듈(max485) 회로도

120 of 554

120

실습에 활용할 심볼과 풋프린트

MAX485모듈 [링크]

121 of 554

121

예제 5번 캡쳐자료 넣기

122 of 554

122

예제 5번 캡쳐자료 넣기

123 of 554

123

아두이노용 모스펫(IRF520)의 회로도

124 of 554

124

실습에 활용할 심볼과 풋프린트

모스펫(IRF520) [링크]

125 of 554

125

예제 6번 캡쳐자료 넣기

126 of 554

126

예제 6번 캡쳐자료 넣기

127 of 554

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 of 554

128

129 of 554

129

해야할 것!

1.회로도 편집기에서 참조필드필드값에 대해서 알아보기!

2.PCB 편집기에서 실크스크린(silkscreen) 레이어에 대해서 알아보기!

3.전압과 전류에 따라서 배선의 너비를 조정해보기!

4.조금더 멋있게 보기 위해서 3D 모델 적용해보기!

(위 내용을 활용해서 실습용 PCB보드 만들어보기)

(3D 모델 다운로드 받는 사이트)

https://grabcad.com/

130 of 554

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 of 554

131

참조필드와 필드값

1.회로도편집기에서 심볼(symbol)을 배치하면 참조필드와 필드값이 화면에 (자동으로) 출력된다!

2.참조필드는 PCB편집기에서 “실크스크린으로 표현”된다!

3.필드값은 사용자 눈에만 보일뿐 실제 PCB제작과는 아무런 관련이 없다!

4.참조필드와 필드값은 회로도편집기의 값을 기준으로한다!

5.참조필드는 그 부품이 저항인지 컨덴서인지 다이오드인지를 바로 알수있도록 하고 뒤에 있는 숫자는 그 푸품의 번호가된다!

6.필드값은 PCB제작에 아무런 영향이없으므로 메모하는 개념으로 활용하면 될듯하다!

7.PCB편집기에서도 참조필드와 필드값을 변경할 수 있는데 그 기준이 회로도편집기에 있기 때문에 오류가 생길 수 있다!

8.참조필드의 값은 언건드리는걸로 합의를 보도록 한다!

132 of 554

132

참조필드와 필드값

참조필드

필드값

참조필드

필드값

133 of 554

133

실크스크린 레이어

1.PCB기판을 제작할때 문자라던지 그림이 인쇄가 되는 영역!

2.PCB회로가 인쇄되는것은 동판을 기계가 깎아서 배선을 패드와 패드사이를 연결하는 것을 말하고 실크스크린은 A4용지에 프린트를 하듯이 PCB기판에 내가 필요한 부품의 이름이라던지 규격을 프린트 하는 레이어를 말한다!

3.실크스크린 레이어에 뭔가를 하게되면 나중에 PCB기판에 출력된다!

4.녹칸다는 양면기판을 기준으로 하고 있기때문에 앞면 실크스크린과 뒷면 실크스크린이 각각 존재한다!

5.kicad에서 사용하는 풋프린트에 기본적으로 실크스크린이 적용되어있다!

6.실크스크린은 배선라우트 이후로 프린트 되는것이기 때문에 배선위에 덮어 쓸 수 있다!

7.뒷면에 실크스크린으로 글자를 출력하려면 어떻게 해야겠는가?

134 of 554

134

실크스크린 레이어

앞면

실크스크린

뒷면

실크스크린

앞면

실크스크린

뒷면

실크스크린

실크스크린은 배선위에 있어도 상관없음

필드값은 실크스크린으로 프린트 안됨

참조필드는 실크스크린으로 프린트됨

135 of 554

135

전압과 전류에 대한 네트 너비

136 of 554

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 of 554

137

배선의 두께를 조절해보자!

1.PCB기판에 출력되는 배선의 너비는 전압과 전류에 따라서 달라질 수 있다!(영향을 끼치는 요소가 부품간의 간격와 온도등 많은 변수가 있다)

2.녹칸다는 복잡하게 배선의 너비를 계산하는 방법을 모른다!(기본적인것만 챙겨간다)

배선 더블클릭

원하는 너비 입력

138 of 554

138

3D모델에 대한 설명

1.kicad에서 사용하는 3D모델의 확장자는 .step이다!

2.kicad에 기본으로 포함된 라이브러리는 3D모델을 포함하고 있다!

3.사용자가 외부에서 다운로드받은 심볼과 풋프린트를 활용하면 3D모델을 별도로 추가해주어야 한다!

4.kicad에서 3D모델을 활용한다는 것은 실제 제품이 어떤 모양이 될지 확인하는 정도이고 실제 PCB제작과는 아무런 관련이없다!

5.녹칸다가 심볼하고 풋프린트를 다운로드 받는 사이트를 알려드린적이 있는데 거기서 3D모델을 함께다운받을 수 있다(있다면)

139 of 554

139

3D모델 적용하기

풋프린트 더블클릭

3D models 탭 선택

열기 버튼 클릭

여기서 다운로드받아서 어딘가에 저장해놓은 3D 모델을 찾음

140 of 554

140

3D모델 적용하기

방향이 안맞을때

회전 시키기

위치가 안맞을때 이동시키기

141 of 554

141

3편의 예제 3번에 3D모델 적용해보기!

온습도센서

DHT-11

142 of 554

142

결과물

143 of 554

143

3편의 예제 6번에 3D모델 적용해보기!

USB

DC Jack

모스펫

IRF520

144 of 554

144

3편의 예제 6번에 3D모델 적용해보기!

145 of 554

145

3편의 예제 6번에 3D모델 적용해보기!

146 of 554

146

결과물

147 of 554

147

아두이노용 이산화탄소센서(MH-Z19B) 회로도

녹칸다의 아두이노 148-1편예제 [링크]

148 of 554

148

실습에 활용할 심볼과 풋프린트

이산화탄소센서(MH-Z19B) [링크]

149 of 554

149

결과물

150 of 554

150

결과물

151 of 554

151

아두이노용 스탭모터드라이버(ULN2003) 회로도

152 of 554

152

아두이노용 스탭모터드라이버(ULN2003) 회로도

녹칸다의 아두이노 303-4편예제 [링크]

(앱인벤터와 블루투스로 스탭모터를 제어하는 예제)

153 of 554

153

결과물

154 of 554

154

결과물

주문하려고 검토해본결과 실제 스탭모터 핀배치와 다르게 배치해서 수정사항을 별도로 설명할 예정(완료되면 여기에 링크)

155 of 554

155

실습에 활용할 심볼과 풋프린트

스탭모터드라이버(ULN2003) [링크]

156 of 554

156

NEMA17을 제어하기위한 A4988 드라이버 회로도

녹칸다의 아두이노 417편예제 [링크]

157 of 554

157

실습에 활용할 심볼과 풋프린트와 3D 모델

A4988 [링크]

터미널블록 3D모델 [링크]

158 of 554

158

결과물

159 of 554

159

결과물

160 of 554

160

161 of 554

161

해야할 것!

1.PCB 외곽선인 edge cut 레이어에 둥근 테두리를 지정하는 방법을 알아보기!(매우 간단함)

  • 테두리가 각이 져있으면 다칠 수 있다!
  • 외곽선을 자유모양으로 바꾸는것은 다음에 알아보고 단순히 둥글게만 한다!

2.PCB보드에 드릴홀을 뚫는 방법 알아보기!

  • 마운팅홀(mounting hole)이라고도 부른다!
  • 이것은 서로 나뉘어진 PCB보드를 고정시킬때 사용하는 나사구멍이다!
  • PCB기판과는 상관없이 드릴머신이 구멍을 뚫어준다!

3.PCB기판에 이미지를 출력해보기!

  • 전면과 후면 실크스크린에 이미지를 출력하면 나중에 PCB보드 제작시 조금더 멋있어 진다!

4.via에 대해서 알아보기!

  • 양면 PCB를 사용할때 때때로 어느 경로로 라우트해도 불가능한 경우의수가 생길 수 있다!
  • 그럴때 via에 대해서 알고 있으면 이것을 극복할 수 있다!

162 of 554

162

오늘의 예제번호

1.PCB의 외곽선을 모깎기하고 드릴홀을 뚫어보고 이미지출력해보고 via에 대해서 알아볼 수 있는 예시를 보이시오! [링크]

2.녹칸다의 아두이노 예제중 16채널 릴레이를 제어하기 위한 아두이노 쉴드를 만드시오! [링크]

3.비접촉전류센서(SCT-013-030)의 값을 측정할 수 있는 아두이노 쉴드를 제작하시오! [링크]

4.ESP32보드에 온습도센서(DHT-11)을 연결하고 측정값을 0.91인치 OLED(SSD1306)에 출력하는 PCB를 제작하시오! [링크]

163 of 554

163

PCB외곽선 모깎기하기

엣지컷 레이어 선택

적당한 크기의 사각형 만들기

164 of 554

164

PCB외곽선 모깎기하기

마우스 오른쪽 클릭

모깎기 라인 클릭

165 of 554

165

PCB외곽선 모깎기하기

얼만큼 둥글게 할지 값 입력

모깎기 완료!

166 of 554

166

PCB에 마운팅홀 뚫기

풋프린트 추가

167 of 554

167

PCB에 마운팅홀 뚫기

MountingHole_3.2mm

검색하기

이거 추가!

168 of 554

168

PCB에 마운팅홀 뚫기

PCB만드는 기계가 여기에 구멍을 뚫어줌!

169 of 554

169

PCB에 이미지를 실크스크린으로 집어넣기

이미지 변환기

클릭!

170 of 554

170

PCB에 이미지를 실크스크린으로 집어넣기

PCB에 넣을 이미지 선택하기!

이미지는 가능하면 흑백이미지로 준비할 것!

171 of 554

171

PCB에 이미지를 실크스크린으로 집어넣기

출력할 이미지 사이즈 조정

파일로 내보내기!

풋프린트 저장하는 폴더에 저장하기!

172 of 554

172

PCB에 이미지를 실크스크린으로 집어넣기

풋프린트 추가

173 of 554

173

PCB에 이미지를 실크스크린으로 집어넣기

풋프린트로 변환된 이미지 선택하기!

174 of 554

174

PCB에 이미지를 실크스크린으로 집어넣기

여기 안에 글자 있는거 삭제해줘야함!

175 of 554

175

PCB에 이미지를 실크스크린으로 집어넣기

더블클릭

뒤로가기

176 of 554

176

PCB에 이미지를 실크스크린으로 집어넣기

이미지가 뒷면(B면)에 출력됨!

177 of 554

177

via에 대해서 알아보기

키보드 v키를 누르면 via가 생성되고 뒷면 배선으로 변경됨

via를 통해 배선이 지나갈 수 있음

다시 키보드 v키를 누르면 via가 생성되면서 앞면으로 변경됨

178 of 554

178

via에 대해서 알아보기

앞면과 뒷면에 둘다 배선이 되어있다면 일반적인 방법으로는 지나갈 수 없음

키보드 v키를 누르면 via가 생성되고 뒷면 배선으로 변경됨

다시 키보드 v키를 누르면 via가 생성되면서 앞면으로 변경됨

179 of 554

179

via에 대해서 알아보기

smd부품은 한쪽면만 쓰기 때문에 경로가 막힐 경우 via를 필수적으로 사용해야함

키보드 v키를 누르면 via가 생성되고 뒷면 배선으로 변경됨

다시 키보드 v키를 누르면 via가 생성되면서 앞면으로 변경됨

180 of 554

180

예제1번의 최종 결과물

181 of 554

181

16채널 릴레이를 제어하기 위한 74HC595회로도

녹칸다의 아두이노 375편예제 [링크]

182 of 554

182

실습에 활용할 심볼과 풋프린트

74hc595 [링크]

183 of 554

183

결과

184 of 554

184

결과

185 of 554

185

비접촉전류센서(SCT-013-030)측정 회로도

녹칸다의 아두이노 200편예제 [링크]

186 of 554

186

실습에 활용할 심볼과 풋프린트

(풋프린트)Jack_3.5mm_CUI_SJ1-3525N_Horizontal

(심볼)AudioJack2

187 of 554

187

결과

188 of 554

188

결과

189 of 554

189

ESP32에 온습도센서값을 측정하기 위한 회로도

녹칸다의 아두이노 553-8편예제 [링크]

190 of 554

190

실습에 활용할 심볼과 풋프린트

ESP32 dev v1(30핀) [링크]

191 of 554

191

결과

192 of 554

192

결과

주문하려고 검토해본결과 OLED를 반대로 배치해서 수정사항을 별도로 설명할 예정(완료되면 여기에 링크)

193 of 554

193

194 of 554

194

해야할 것!

1.정확한 위치에 부품 놓기(PCB편집기)

  • 그리드 간격 설정하는 방법 알아보기!
  • 좌표를 설정해서 부품을 정확한 위치에 갖다놓는 방법 알아보기!

2.티어드롭과 내부엣지컷

  • 티어드롭(tear drop)이 뭔지 알아보기!
  • 외곽선이 아니라 내부에 엣지컷(edge.cut)이 있으면 어떻게 되는지 알아보기!

3.심볼 만들어보기

  • 심볼 편집기에서 내가 필요한 심볼을 직접 만들어보기!

4.풋프린트 만들어보기

  • THT와 SMD 패드를 직접 디자인해보기!
  • 만능기판 만들어보기!
  • 부품자리 레이어(Countyard)에 대해서 알아보기!

195 of 554

195

예제목차

1.PCB보드에 내가 원하는 부품을 정확히 놓는 방법과 티어드롭과 내부엣지컷을 하는 방법을 보이시오! [링크]

2.아두이노용 MP3모듈의 도면을 보고 직접 심볼과 풋프린트를 만들어보시오!(nockanda1) [링크]

3.아두이노용 이산화탄소센서(MH-Z19)의 도면을 보고 심볼과 풋프린트를 만들어보시오!(nockanda2) [링크]

4.아두이노 쉴드를 만능기판 형태로 만들어보시오!(회로도없음) [링크]

5.아두이노에 릴레이 1개를 제어할 수 있는 회로를 구성하시오!(34-2번예제 기준) [링크]

196 of 554

196

예제1번이 가지는 의미

1.PCB편집기에서 부품을 배치할때 절대적인 위치에 따라 배치할 수 있고 상대적인 위치에 따라서 배치할 수 있다!

2.부품을 배치하는 그리드에 간격을 설정할 수 있다!(부품을 놓을 대략적인 기본 간격을 설정할 수 있다)

3.패드와 배선사이에 조금더 연결을 확실하게 하기 위해서 티어드롭이라는 것을 쓰면 좋을것 같다(녹칸다 생각)

4.내부 엣지컷을 이용해서 릴레이(relay) 제어보드를 만들어보도록 한다!

197 of 554

197

부품의 위치를 절대적 좌표로 이동시키기(1)

부품 더블클릭

좌표입력

x와 y에 둘다 0이라고 입력했을때 위치

198 of 554

198

부품의 위치를 절대적 좌표로 이동시키기(2)

부품에 마우스 오른쪽 클릭

이거 클릭

좌표입력

199 of 554

199

부품의 위치를 상대적 좌표로 이동시키기

(상황)

LED의 위치를 오른쪽으로 10mm 옮기고 싶다

부품에 마우스 오른쪽 클릭

이거 선택

200 of 554

200

부품의 위치를 상대적 좌표로 이동시키기

지금 위치에서 오른쪽으로 10mm만큼 이동하라는 의미

201 of 554

201

부품의 위치를 상대적 좌표로 이동시키기

202 of 554

202

티어드롭 적용하는법(PCB편집기)

티어드롭 설정

티어드롭 해제

티어드롭

203 of 554

203

예제1번

엣지컷을 내부에 하면 구멍이 뚫림

(내부 엣지컷이라고 부르도록 하겠음)

204 of 554

204

예제2번의 설명

1.내가 원하는 부품을 주문제작했는데 PCB보드에 쓸 심볼과 풋프린트가 없는 상태이다! -> 직접만들어야한다!

2.아두이노에서 주로 사용하는 모듈들은 피치가 2.54mm이기 때문에 특별하게 풋프린트를 안만들어도 그리드 간격만 조절하면 바로 쓸 수 있다!

3.나의 모듈의 도면의 치수가 이미 딱 정해져 있는 상태라면 우리가 직접 풋프린트와 심볼을 만들어서 쓸 수 있다!

4.우리가 고민해야하는 항목은 패드의 크기, 패드의 간격, 실크스크린, 부품자리 레이어 등이 있다!

5.심볼과 풋프린트는 한쌍이기는 하지만 “핀번호”라는 값을 기준으로 서로 연결되어있다!(그렇게 밀접한 연관이 있는 것은 아니다)

6.핀번호라고 해서 숫자만 입력되는게 아니라 문자로도 입력이 가능하다!

7.심볼을 만들때는 심볼편집기, 풋프린트를 만들때는 풋프린트 편집기를 활용한다!

205 of 554

205

쉬운 난이도의 풋프린트

스탭모터드라이버(A4988)

쉬프트레지스터(74HC595)

DFminiMP3모듈

206 of 554

206

쉬운 난이도의 풋프린트

이산화탄소센서(MH-Z19B)

RS485모듈(MAX485)

207 of 554

207

쉬운 난이도의 풋프린트

ESP32 DEV V1보드

208 of 554

208

심볼 만들기(심볼편집기)

심볼편집기 실행

나의 심볼 라이브러리에 새로운 심볼 추가하기

209 of 554

209

심볼 만들기(심볼편집기)

심볼의 이름

심볼의 참조필드 기호

(저항은 R, 다이오드는 D 등등)

임의로 입력 가능함

210 of 554

210

심볼 만들기(심볼편집기)

핀 추가

테두리 추가

회로가 연결될 핀

테두리

211 of 554

211

심볼 만들기(심볼편집기)

핀 더블클릭

핀의 이름(별로 안중요함)

이 핀은 무슨 핀이다~

핀번호(아주 중요함)

풋프린트와 연결할때 풋프린트의 핀번호와 같아야함!

숫자도 되고 문자도 가능!

212 of 554

212

THT와 SMD 패드 만들기(풋프린트편집기)

풋프린트편집기 실행

나의 풋프린트 라이브러리에 새로운 풋프린트 추가하기

풋프린트 이름

부품타입(THT or SMD)

213 of 554

213

THT패드 만들기(풋프린트편집기)

패드 추가

패드 더블클릭

모양

외경

내경

214 of 554

214

THT패드 만들기(풋프린트편집기)

215 of 554

215

SMD패드 만들기(풋프린트편집기)

216 of 554

216

풋프린트 만들기(풋프린트편집기)

풋프린트편집기 실행

나의 풋프린트 라이브러리에 새로운 풋프린트 추가하기

풋프린트 이름

부품타입(THT or SMD)

217 of 554

217

풋프린트 만들기(풋프린트편집기)

그리드 간격을 2.54로 설정!

패드추가

외경 1.7

내경 1.0

2.54간격으로 6회 옆칸으로 이동함

218 of 554

218

풋프린트 만들기(풋프린트편집기)

패드 더블클릭

여기 있는 패드번호와 심볼의 핀번호가 일치해야 서로 연결됨

219 of 554

219

직접 만든 심볼과 풋프린터로 결과물 만들기

그냥 가상으로 이렇게 연결함

220 of 554

220

예제3번 심볼과 풋프린트 만들기

221 of 554

221

예제3번 심볼과 풋프린트 만들기

4개 있는쪽 핀을 기준으로 29.54만큼 오른쪽으로 이동시켜야함

2줄의 핀을 완전 겹침

(x축을 일치시킴)

상대적 이동좌표로 29.54입력

222 of 554

222

예제3번 심볼과 풋프린트 만들기

실크스크린

네모모양

테두리 그리기

(26 * 22)

223 of 554

223

예제3번 심볼과 풋프린트 만들기

사각형을 원점에 놓음

상대적 위치이동 좌표입력

(원본 풋프린트 기준)

이동 완료!

224 of 554

224

부품자리(컨트리야드) 그리기

부품자리 레이어

다각형 선택

부품자리 경계선 그리기

225 of 554

225

예제 3번 결과물 만들기

226 of 554

226

예제 3번 결과물 만들기

부품자리끼리 겹쳐지면 검사할때 에러가 발생함

227 of 554

227

예제 3번 결과물 만들기

PCB보드를 생산할때는 아무런 문제가 없지만 실제 부품을 여기에 배치할때는 LED와 저항때문에 부품이 부착안되는 상황이 발생할 수 있음!

228 of 554

228

예제 4번 만능 기판 만들어보기

풋프린트 편집기에서

1개짜리 패드를 만듬

(외경2, 내경1으로 함)

그리드 간격을 2.54피치로 선택하고 만든 풋프린트를 마구마구 배치함

229 of 554

229

예제 4번 만능 기판 만들어보기

회로가 없기 때문에 회로도 편집기 없이 PCB편집기로만 가능함!

230 of 554

230

녹칸다의 릴레이 예제

녹칸다의 아두이노 34-2 [링크]

녹칸다의 아두이노 462-2 [링크]

231 of 554

231

릴레이 만들어보기

232 of 554

232

릴레이 만들어보기

배선 아주 두꺼움

내부 edge.cut

copper pour 안함

233 of 554

233

릴레이 만들어보기

234 of 554

234

릴레이 만들어보기

235 of 554

235

릴레이 만들어보기

236 of 554

236

릴레이 만들어보기

237 of 554

237

예제 5번 결과물

238 of 554

238

예제 5번 결과물

내부엣지컷

배선두께 3mm

여기만 copper pour함!

239 of 554

239

예제 5번 결과물

240 of 554

240

241 of 554

241

해야할 것!

1.거버(gerber)파일 생성해보기!

  • KiCad에서 PCB보드를 제작하기 위한 거버(gerber)파일을 생성하는 방법 알아보기!
  • KiCad파일은 수정가능한 프로젝트파일이고 거버파일은 PCB를 제작하기 위한 작업지시서 같은 것이다!

2.JLCPCB에 주문해보기!

  • PCB보드를 저렴하게 만들어주는 해외 업체이다!
  • 거버파일을 업로드해서 주문하는 방법 알아보기!

3.풋프린트 일부분 수정하기!

  • 풋프린트는 전역 풋프린트와 프로젝트 단위의 풋프린트로 나뉠 수 있다!
  • 프로젝트에 풋프린트를 배치하고 수정을 하게되면 프로젝트내 풋프린트만 지역적으로 수정되는 것이지 원본이 수정되는 것은 아니다!

4.기판으로 SMD 점퍼 만들기!

  • 필요에 따라 납땜해서 쓸 수 있는 점퍼 만들어보기!
  • I2C모듈 같은 경우 주소를 표현하기 위해서 이런 방식을 주로 사용함!

242 of 554

242

예제번호

1.kicad에서 전역풋프린트와 지역풋프린트의 차이를 보여주고 SMD타입의 점퍼를 생성하는 방법에 대해서 함께 알아보기! [링크]

2.녹칸다의 아두이노 462-2번 예제를 작동시키기 위해서 릴레이 2개와 버튼3개를 쓸수있는 아두이노 쉴드를 구현하시오!(24V비닐하우스모터제어용) [링크]

243 of 554

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 of 554

244

거버파일 생성하기(PCB편집기)

파일 - 플롯

245 of 554

245

거버파일 생성하기(PCB편집기)

1.폴더지정

2.출력할 레이어 선택하기

3.플롯버튼

지정한 폴더로 출력할 레이어가 생성됨!

4.드릴 파일 생성

246 of 554

246

거버파일 생성하기(PCB편집기)

누르기

저장해놓은 폴더에 gbr파일이 생성됨!

zip파일로 압축하기!

(이걸 업로드 하면됨!)

247 of 554

247

JLCPCB 주문 절차(회원가입)

이메일 온거 확인하기!

248 of 554

248

JLCPCB 주문 절차(로그인)

로그인 완료!

249 of 554

249

JLCPCB 주문 절차(거버파일 업로드하기)

250 of 554

250

JLCPCB 주문 절차(거버파일 업로드하기)

거버파일 압축해서 업로드 하기!

251 of 554

251

JLCPCB 주문 절차(거버파일 업로드하기)

거버파일 업로드 완료!

업로드된 거버파일 보기!

252 of 554

252

JLCPCB 주문 절차(거버파일 업로드하기)

3D를 눌러서 어떤 모양으로 만들어질지 확인할 수 있음!

(간혹가다가 오류가 나기도함)

253 of 554

253

JLCPCB 주문 절차(거버파일 업로드하기)

여기서 설정을 바꿀 수 있는데 수정없이 기본으로 주문하는것으로 해봄!

(기본) 두께 1.6mm, 녹색PCB보드

다했으면 카트에 담기

254 of 554

254

JLCPCB 주문 절차(주문하기)

배송비가 PCB제작비보다 비싸기 때문에 적당히 모아서 한번에 주문하는게 좋음!

그렇다고 너무 많이 주문하면 배송비가 비싸지거나 너무 무거우면 기본배송이 불가능함!

(아두이노 쉴드 사이즈로 10~11개가 한계인듯)

제일 처음 장바구니에 들어간 보드는 2달러임!

두번째 부터는 정상가격은 4달러임!

다 담았으면 체크아웃 클릭

255 of 554

255

JLCPCB 주문 절차(주문하기)

~~도

~~시

개인통관부호 입력하고 없으면 발급받아야함!(다음장에서 계속)

256 of 554

256

JLCPCB 주문 절차(주문하기)

번호 확인하기

없으면 발급받기

257 of 554

257

JLCPCB 주문 절차(주문하기)

이거 눌러서 그대로 복사 붙혀넣기 하면됨!

P로 시작함!

258 of 554

258

JLCPCB 주문 절차(주문하기)

여기까지 배송지 지정 완료!

259 of 554

259

JLCPCB 주문 절차(주문하기)

택배는 기본 e-Express로 함!

비쌀수록 더 빨리 배송됨!

260 of 554

260

JLCPCB 주문 절차(주문하기)

지금 바로 결제할건지 나중에 결제할건지 물어보는건데 바로 결제함!

261 of 554

261

JLCPCB 주문 절차(주문하기)

신용카드로 결제

(이거 선택)

처음주문하면 할인쿠폰을 많이줌!

(가능한 쿠폰이 있으면 알아서 적용됨)

262 of 554

262

JLCPCB 주문 절차(주문하기)

뒷면 서명하는데 있는 3자리 숫자

유효기간

263 of 554

263

JLCPCB 주문 절차(주문하기)

엔지니어가 확인함

264 of 554

264

JLCPCB 주문 절차(주문하기)

만들기 시작!

누르면 단계별로 진행사항을 알 수 있음!

265 of 554

265

JLCPCB 주문 절차(주문하기)

266 of 554

266

JLCPCB 주문 절차(주문하기)

까먹을때쯤 되면 배송됨!

267 of 554

267

JLCPCB 주문 절차(주문하기)

국내로 들어온다음 운송장번호를 여기 입력하면 조회 가능함!

(운송장번호)

LP로 시작 (숫자) HK로 끝남!

268 of 554

268

예제 1번

원본과 동일한 풋프린트

프로젝트 내에서 수정한 풋프린트

(원본은 바뀌지 않음)

프로젝트 내에서 풋프린트 편집기 열기

필요한부분 수정하기!

269 of 554

269

예제 1번

270 of 554

270

예제 1번

점퍼 선택

SMD 타입 점퍼 풋프린트

271 of 554

271

예제 1번

272 of 554

272

예제 2번

273 of 554

273

예제 2번

274 of 554

274

예제 2번

275 of 554

275

276 of 554

276

해야할 것!

1.부품 회전시키기!

  • PCB편집기에서 부품의 풋프린트를 회전시킬 수 있다!
  • 원점을 잡는 방법을 알아내고 원점을 기준으로 부품을 회전시켜보기!

2.링형태의 LED만들어보기!

  • edge.cut으로 동그란 기판에 방사형으로 부품을 배치해보기!
  • 링타입의 LED 조명등 같은거 만들어보기!(네오픽셀 같은거)

3.USB커넥터 직접만들기!

  • PCB보드를 컴퓨터나 노트북의 USB커넥터에 바로 연결할 수 있도록 도면을 보면서 나름대로 디자인 해보기!

4.아두이노 미니멀보드 만들기!

  • 나의 PCB보드에 아두이노 우노의 최소한의 부분을 회로도를 보면서 만들어보기!
  • 프로그램 업로드는 별도의 ISP를 이용해야하지만 아두이노 우노 한대가 더 있으면 가능함!

277 of 554

277

예제목차

1.PCB보드에 드릴원점을 사용하는 방법을 이해하고 동그란모양의 외형을 가지는 아두이노 쉴드타입의 PCB를 샘플로 만드시오!(쓰루홀 타입 LED로 시계를 표현해보기) [링크]

2.네오픽셀(WS2812B) 16개를 링형태로 배치해서 아두이노와 연결해서 쓸 수 있게 커넥터를 달아서 PCB보드를 제작하시오! [링크]

3.PCB가 컴퓨터의 USB포트에 바로 연결될 수 있도록 USB핀을 도면을 보면서 풋프린트로 생성하고 기판에 활용하시오! [링크]

4.아두이노 우노 보드의 미니멀한 버전으로 PCB보드를 만드시오!(나의 PCB보드에 아두이노 우노를 집어넣는다!) [링크]

278 of 554

278

원형으로 부품을 배치하기 위한 좌표이해하기

그리드 원점

-PCB편집기 상에서 원점이 어디인가?

-그리드원점은 PCB편집기 도면의 왼쪽 상단 모서리가 0,0이다!

오른쪽으로 갈수록 x가 커지고, 아래로 갈수록 y가 커진다

드릴홀 원점

-현재 녹칸다가 드릴홀 원점이 어디다가 구체적으로 사용되는지는 모르는 상태이다!

-부품을 원형으로 배치할때의 가상의 원점으로 활용할 생각이다!

279 of 554

279

드릴홀 원점을 기준으로 부품 회전시키기

원형 PCB보드

드릴홀 원점 지정

드릴홀 원점 설정 버튼

280 of 554

280

드릴홀 원점을 기준으로 부품 회전시키기

(상황) D2와 R2를 원의 중심을 기준으로 시계방향으로 30도만큼 회전하고싶음!

(상황) D1과 R1은 원의중심으로 부터 정확하게 12시방향에 있음

(원의 중심과 x좌표가 같음)

회전시키려는 부품을 정확하게 겹쳐줌

회전하려는 부품을 모두 선택해줌

(컨트롤버튼을 누르고 선택하면 여러개 선택됨)

281 of 554

281

드릴홀 원점을 기준으로 부품 회전시키기

드릴홀을 기준으로 시계방향으로 30도 회전하겠다는 의미

282 of 554

282

예제 1번 최종결과

283 of 554

283

예제 1번 최종결과

284 of 554

284

예제2번 네오픽셀 회로도

285 of 554

285

녹칸다의 네오픽셀 예제

녹칸다의 아두이노 567-7편예제 [링크]

아두이노랑 커넥터를 이용해서 연결하도록 만들어보기!

286 of 554

286

예제 2번 최종결과

287 of 554

287

예제 2번 최종결과

288 of 554

288

앞면과 뒷면의 copper pour를 다르게 해서 연결하기

기판 F면에는 GND로 구리를 도포함

기판 B면에는 5V로 구리를 도포함

289 of 554

289

앞면과 뒷면의 copper pour를 다르게 해서 연결하기

F면 copper에 의해 GND와 연결됨

B면 copper에 의해 5V와 연결됨

F면 copper에 의해 GND와 연결됨

F면 copper에 의해 GND와 연결됨

B면 copper에 via를 뚫어서 5V와 연결됨

B면 copper에 via를 뚫어서 5V와 연결됨

290 of 554

290

예제3번 PCB USB커넥터 도면(전원만 활용)

5V

GND

291 of 554

291

예제 3번 최종결과

292 of 554

292

예제4번 최소한의 회로를 갖춘 아두이노 우노

22pF

293 of 554

293

예제 4번 최종결과

294 of 554

294

예제 4번 최종결과

295 of 554

295

296 of 554

296

해야할 것!

1.Panelization 해보기!

  • JLCPCB에 주문할때 10cm*10cm가 기본주문 크기 범위내에서 크기가 작던 크던 비용이 동일함!
  • 녹칸다는 2cm*2cm의 작은보드가 필요한데 그것도 주문하면 PCB 1장으로 취급을 하게됨!
  • 그렇다면 2cm*2cm보드를 10cm*10cm범위 내에서 여러개 붙혀서 한판으로 주문할 수 없을까? (그게 Panelization이고 V-CUT과 Mouse Bite라는 방법이 있음)

2.V-CUT하는 방법!

  • V-CUT으로 JLCPCB에 주문하는 방법 알아보기!

3.Mouse Bite 하는 방법!

  • Mouse Bite로 JLCPCB에 주문하는 방법 알아보기!

4.Castellated holes 해보기!

  • PCB보드 테두리에 납땜 포인트를 생성하는 방법에 대해서 알아보기!

297 of 554

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 of 554

298

Panelization이란?

이부분에 잘릴듯 말듯하게 기계가 V-CUT으로 홈을 내어줌!

이부분에 Mouse Bite를 이용해서 쉽게 부러트릴수 있도록 할 수 있음!

V-CUT

Mouse Bite

299 of 554

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 of 554

300

V-CUT 주의사항

V-CUT 가능

V-CUT 가능

V-CUT 불가능

가다가 중간에 끊어지는 부분이 있으면 안된다고함!

(라이브방송에는 빼먹었지만 주의사항) V-CUT을 하려면 전체 PCB크기가 70mm * 70mm보다 커야함!

301 of 554

301

Mouse Bite footprint

302 of 554

302

Castellated holes란?

303 of 554

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 of 554

304

(예제1) KiCad에서 V-CUT하는 방법

하나의 완성된 PCB를 좌표를 계산해서 여러개 복붙해줌

부품사이사이에 있는 edge.cut은 제거하고 테두리 edge.cut만 남겨둠

원래 edge.cut이 있어야할 부분에 User2 레이어로 V-CUT라인을 그려줌

User2 레이어

(꼭 이걸로 해야하는건 아님)

305 of 554

305

(예제1) KiCad에서 V-CUT하는 방법

kicad상에서는 User2로 그린 V-CUT라인이 아무런 영향을 끼치지 않음

PCB를 제작해주는 JLCPCB에 엔지니어가 User2레이어가 엣지컷임을 확인하면 V-CUT을 작업해주는 기계로 V-CUT을 해줌!

KiCad에서는 여기에 V-CUT을 해주면 된다라는 의미로 작업을 함!

306 of 554

306

(예제1) JLCPCB에 V-CUT 주문하기

거버파일 생성하기

(중요) 거버파일 생성시 V-CUT라인이 있는 User2 레이어도 포함해야함!

V-CUT라인 레이어

거버파일 압축하기

307 of 554

307

(예제1) JLCPCB에 V-CUT 주문하기

거버파일 업로드

하단 PCB Remark부분에

“example9_1-User_2.gbr” is V-CUT Line. 이라고 입력해줌!

엔지니어가 해당 레이어를 기준으로 V-CUT작업을 해줌!

308 of 554

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 of 554

309

(예제2) mouse bite 해보기!

edge.cut레이어로 반지름이 20mm인 원 그리기!

그려진 원을 복사해서 겹쳐둔다음 복사된 원을 42mm만큼 오른쪽으로 좌표이동 시키기!

310 of 554

310

(예제2) mouse bite 해보기!

그려진 원을 2개를 복사해서 겹쳐둔다음 복사된 원을 42mm만큼 아래쪽으로 좌표이동 시키기!

311 of 554

311

(예제2) mouse bite 해보기!

사이사이를 mouse bite로 이어줘야함

첫번째 원의 중심좌표를 확인함!

mouse bite 풋프린트와 y좌표를 일치시켜줘야함!

(y좌표가 81임)

그리고 x좌표는 원의 중심으로부터 반지름길이에 두 원사이의 길이의 절반을 더해주면 됨!

현재 x좌표에서 21만큼 더해주면됨

(x좌표는 그러면 97.8이됨)

312 of 554

312

(예제2) mouse bite 해보기!

정확한 위치에 mouse bite 배치 완료

mouse bite를 복사해서 겹쳐둔다음 아래쪽으로 42mm만큼 좌표이동함

313 of 554

313

(예제2) mouse bite 해보기!

정확한 위치에 mouse bite 배치 완료

mouse bite 복사해서 붙히기!

첫번째 원의 x좌표와 x좌표가 동일함!(x = 76.8)

y좌표는 첫번째 원보다 21mm만큼 아래로 내려가야함

(y = 102)

314 of 554

314

(예제2) mouse bite 해보기!

정확한 위치에 mouse bite 배치 완료

하나더 복사해서

42mm만큼 오른쪽으로 옮기가

315 of 554

315

(예제2) mouse bite 해보기!

좌표를 계산해서 이런모양으로 만들어줌!

edge.cut으로 호를 그려줌

호 그리기

316 of 554

316

(예제2) mouse bite 해보기!

잘 안보이지만 이런 호 모양이 겹쳐져 있음

mouse bite 모두다 edge.cut으로 호를 그려줌

317 of 554

317

(예제2) mouse bite 해보기!

mouse bite와 mouse bite를 선으로 이어주기!

각도제한 해제하기

318 of 554

318

(예제2) mouse bite 해보기!

mouse bite와 mouse bite를 호로 연결해줌!

(시작위치)

mouse bite와 mouse bite를 호로 연결해줌!

(종료위치)

319 of 554

319

(예제2) mouse bite 해보기!

겹쳐져있는 원을 삭제해줌!

(호는 남겨둠)

나머지 원도 동일하게 작업해줌!

외곽에 사각형을 10cm*10cm 이내로 그려줌!

320 of 554

320

(예제2) mouse bite 해보기!(완성)

321 of 554

321

(예제3) Castellated holes 해보기!

THT PAD사이를 edge.cut이 가로지르면 castellated holes가 됨!

castellated holes!

322 of 554

322

(예제3) Castellated holes 해보기!(결과)

323 of 554

323

(예제4) Castellated holes 해보기!

연결하기 위한 footprint 만들기!

324 of 554

324

(예제4) Castellated holes 해보기!

여기에 예제 3번 PCB를 올려두고 납땜해서 활용하면 될 듯!

325 of 554

325

(예제5) 결과물

V-CUT 라인

326 of 554

326

(예제6) 결과물

327 of 554

327

(예제6) 결과물

V-CUT 라인

328 of 554

328

(예제7) E-paper를 ESP32에 연결하기 위한 회로도

녹칸다의 아두이노 563편예제 [링크]

329 of 554

329

(예제7) 결과물

330 of 554

330

(예제7) 결과물

V-CUT 라인

V-CUT 라인

331 of 554

331

332 of 554

332

해야할 것!

1.릴레이 제어보드 테스트해보기! [만들었던거 링크]

  • 예제 7-2에서 만들었던 5V릴레이 제어보드를 작동시켜보기!
  • 배송이 늦게 되어서 시간내 배송되면 미리 납땜하고 아니면 라이브방송중에 납땜할 예정!(방송 당일날 배송일정이 잡혔음)

2.RJ45커넥터로 POE해보기!(+RJ45커넥터 직접 공구로 만들어보기!)

  • 랜선을 연결할때 사용하는 RJ45커넥터를 아두이노에 활용해보기!
  • POE(power of ethernet)을 아두이노에 적용해보기!(해당 표준이 있긴한데 표준을 따르는게 아니라 단순히 개념만 적용하고자함)
  • POE는 간단히 설명하자면 랜선을 이용해서 전원도 공급하고 통신도 하는것을 말함!

3.그 동안 보았던 레이어에 대해 다시 정리해보기!

  • 전후면 구리, 실크, 솔더마스크, 솔더페이스트, 엣지컷에 대해서 정리하기!

4.금지구역(킵아웃) 설정하기!

  • 특별하게 작업을 금지하는 영역을 킵아웃으로 설정해보기!

333 of 554

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 of 554

334

RJ45커넥터를 녹칸다가 활용하는 의미(장점)

1.8개의핀을 보드와 보드사이에 연결하는데 편리하게 활용할 수 있음!

2.랜선을 공구만 있으면 내가 직접 만드는데 다른 커넥터를 만드는것보다 비교적 쉽게 만들 수 있다!

3.rj45커넥터를 이용하면 어디가서 POE를 했다고 주장할 수 있다!(RJ45커넥터가 이더넷 커넥터임)

335 of 554

335

예제7-2를 약간 수정해서 실제 주문한 프로젝트

336 of 554

336

예제7-2를 약간 수정해서 실제 주문한 프로젝트

산업용 누름버튼을 연결하기 위해서 2p 터미널블록 2개를 추가함!

337 of 554

337

예제7-2를 약간 수정해서 실제 주문한 프로젝트

338 of 554

338

JLCPCB에서 만든 PCB

339 of 554

339

녹칸다의 영혼의 납땜이 완료된 보드

340 of 554

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 of 554

341

(예제1번)보드와 비닐하우스 개폐기간의 연결

24V 전원

  • -

비닐하우스 개폐기 모터

(파란색) (갈색)

ㅇ ㅇ

스파크킬러

산업용 누름버튼

ㅇ ㅇ

산업용 누름버튼

ㅇ ㅇ

산업용 누름버튼

ㅇ ㅇ

역회전

정회전

정지

녹칸다는 RC스너버 사용

342 of 554

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 of 554

343

테스트를 위해서 기본 RJ45풋프린트로 주문해봄!

아직까지는 녹칸다가 구입할 수 있는 RJ45커넥터와 일치하는게 없음

(안맞음)

디바이스마트에서 구입한 RJ45커넥터(제일싼거) 일치함

344 of 554

344

테스트를 위해서 기본 RJ45풋프린트로 주문해봄!

(9~12번)

LED부분 패드 삭제하면 기본 라이브러리에 rj45커넥터 활용가능할것이라 기대해봄!(아직 실물 확인안됨)

여기도 9~12번은 불필요하므로 삭제해야할듯!

345 of 554

345

JLCPCB에서 주문한 결과

디바이스마트에서 구입한 RJ45커넥터(제일싼거) 일치함

346 of 554

346

RJ45커넥터를 만드는데 필요한 준비물!

랜선 + 랜선커넥터

테스터기

압착기

완성된 랜선을 서로 연결하면 작동테스트 가능함

커넥터에 선을 집어넣고 이부분으로 압착함

랜선 피복벗기는 부분

절단하는 부분

347 of 554

347

랜선 만드는 절차

1.랜선의 피복을 벗김

2.구불구불한 8개의 선을 바르게 펴줌!

3.랜선 커넥터에 아래 색상 순서에 맞게 배치해줌!

4.압착기로 눌러줌!

5.테스터기로 확인하기!

(줄무늬주황) (주황) (줄무늬녹색) (파랑) (줄무늬파랑) (녹색) (줄무늬 갈색) (갈색)

커넥터 돌기가 바닥을 향하는 방향

348 of 554

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 of 554

349

(예제2번)kicad 결과물(아두이노쪽)

350 of 554

350

(예제2번)kicad 결과물(센서쪽)

351 of 554

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 of 554

352

예제 3번의 중점 체크사항

배선의 너비로 감당못하는 전류면 납을 도포해서 보강하는데 어떻게 하지?

솔더마스크 레이어를 통해 PCB보드에 코팅을 하기 때문에 솔더마스크에 대해서 이해를 해야한다!

353 of 554

353

킵아웃 설정하기!

킵아웃 설정하기

전면만 할거면 F.Cu만 체크, 후면만 할꺼면 B.Cu만 체크, 둘다할거면 둘다 체크!

특별히 배선이나 네트가 있으면 안되는 구역이 있을때 keep out을 설정함!

354 of 554

354

예제 3번 결과물

전후면 copper pour 금지(킵아웃)

전면 copper pour 금지(킵아웃)

후면은 금지 아님!

솔더 마스크 레이어로 속이 채워진 사각형을 그려줌!

이 부분은 코딩이 안되기 때문에 납을 도포할 수 있음!

(근데 실제로 해보지는 않음)

355 of 554

355

예제 3번 결과물

이부분에 납이 도포될거라 예상함!

(기회가 되면 테스트 해보겠음!)

356 of 554

356

357 of 554

357

해야할 것!

1.배선 색깔바꾸기!(난이도 최하)

  • 배선 색을 바꿔서 작업을 용이하게 해보기!

2.도면시트와 심볼, 풋프린트 라이브러리 관리하는 방법 알아보기!(난이도 최하)

  • 도면시트에 각종 정보 추가해보기!
  • 심볼과 풋프린트 라이브러리 경로 관리하는 방법 알아보기!

3.각종 커넥터를 압착기로 만들어보기!

  • 아두이노용 듀퐁케이블(점퍼케이블) 만들어보기!
  • JST XH2.54, PH2.0 커넥터 만들어보기!

4.거버뷰어로 최종적으로 확인하는 방법 알아보기!(이거 빼먹었음)

  • JLCPCB에 주문하기 전에 거버뷰어로 결과물의 오류를 점검해보기!

5.ESP32보드를 직접 디자인해보기!(시간을 보면서 진행함)

  • 녹칸다가 EASYEDA로 SMT주문했더 ESP32보드를 kicad로 디자인해봄!
  • 쪼끄만한 부품이 있어서 손으로 납땜하긴 어렵겠지만 일단 해보기로함!

358 of 554

358

예제목차

1.배선색 바꾸는 방법을 예제로 구현하시오!(5V전원으로 LED 4개를 작동시키는 PCB) [링크]

2.ESP32보드를 직접 디자인해보시오! [링크]

359 of 554

359

예제1번 네트 색바꾸기

네트 선택

색을 바꾸려는 네트에 마우스 오른쪽 버튼 클릭

네트 색상 설정

360 of 554

360

예제1번 네트 색바꾸기

원하는 색상 선택

네트 표시 옵션으로 메뉴 확장

“모두” 선택하기

361 of 554

361

예제1번 네트 색바꾸기

네트의 색이 지정한 색으로 바뀜!

PCB편집기 상에서만 이렇게 보이고 실제 PCB제작과는 아무런 상관이 없음!

362 of 554

362

도면시트에 각종 정보 추가하기

회로도 편집기에서 이부분 더블클릭

정보 입력하기!

회로도 정보 입력 완료!

(이게 끝임…)

363 of 554

363

심볼 라이브러리 관리하기

설정 - 심볼 라이브러리 관리

내가 설정해놓은 경로에 해당되는 폴더가 있어야하고 없으면 에러가 발생함!

문제가 있으면 이걸 눌러서 삭제 가능!

추가도 할 수 있음!

364 of 554

364

풋프린트 라이브러리 관리하기

설정 - 풋프린트 라이브러리 관리

내가 설정해놓은 경로에 해당되는 폴더가 있어야하고 없으면 에러가 발생함!

문제가 있으면 이걸 눌러서 삭제 가능!

추가도 할 수 있음!

365 of 554

365

각종 커넥터 만들기 준비물

듀퐁커넥터

PH2.0

XH2.54

압착기

366 of 554

366

압착기의 주요 포인트

큰쪽

(높은쪽)

작은쪽

(높은쪽)

큰쪽

(낮은쪽)

작은쪽

(낮은쪽)

367 of 554

367

(예제2)ESP32보드 관련 회로도(1)

368 of 554

368

(예제2)ESP32보드 관련 회로도(2)

369 of 554

369

(예제2)ESP32보드 관련 회로도(3)

370 of 554

370

(예제2)필요한 심볼과 풋프린트

371 of 554

371

(예제2)필요한 심볼과 풋프린트

372 of 554

372

(예제2)필요한 심볼과 풋프린트

373 of 554

373

(예제2)회로도 편집기

USB부분

쇼트키 다이오드 이후로 5V라벨 사용

5V를 3.3V로 바꾸기!

ESP32는 3.3V로 작동됨!

374 of 554

374

(예제2)회로도 편집기

프로그램 업로드와 통신을 위한 통신칩

ESP32에 자동으로 프로그램을 업로드 하기 위한 부분

375 of 554

375

(예제2)회로도 편집기

ESP32의 GPIO를 29핀 커넥터와 연결함!

GPIO를 배치한 29핀과 나란하게 3.3v와 GND를 배치하는 커넥터

376 of 554

376

(예제2)회로도 편집기에서 45도로 배선하기

설정 - 환경 설정

45도 선택하기

회로도 편집기 - 편집 옵션

377 of 554

377

(예제2)회로도 편집기에서 45도로 배선하기

45도로 선그리기 가능!

이렇게 그리기 가능함!

378 of 554

378

(예제2)PCB 편집기

작동될지는 모름

(아몰랑)

379 of 554

379

380 of 554

380

해야할 것!

1.JLCPCB에서 주문한것 작동시켜보기!

  • DHT-11 연결해놓은 쉴드 [링크]
  • 아두이노용 소형 스탭모터 드라이버 쉴드 [링크]
  • ESP32에 온습도 센서와 0.91인치 OLED를 달아놓은 쉴드 [링크]

2.슬라이드에 남아있는 회로도 더 만들어보기!

  • 녹칸다의 아두이노 예제에서 재미있어 보이는것을 더 만들어보기!

3.녹칸다가 EASYEDA를 KiCad 시리즈의 부록으로 하려는 이유 알아보기!

381 of 554

381

예제목차

  1. 9핀커넥터로 사용하는 LoRa모듈을 연결할 수 있는 아두이노 우노 쉴드를 만드시오!
  2. 녹칸다의 기상관측소 시리즈에서 사용한 misol weather station을 연결할 수 있는 아두이노 쉴드를 구현하시오!
  3. EASYEDA로 간단한 예제만들기!

382 of 554

382

온습도센서 쉴드 실물

383 of 554

383

스탭모터 드라이버 쉴드 만들었던거 수정디자인

커넥터 반대로 해서 수정

384 of 554

384

스탭모터 드라이버 쉴드 만들었던거 수정디자인

385 of 554

385

스탭모터 드라이버 쉴드 만들었던거 실물

386 of 554

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 of 554

387

ESP32에 온습도센서와 OLED작동시킨 보드 수정

OLED부분 180도 회전함

(잘못 배치함)

388 of 554

388

ESP32에 온습도센서와 OLED작동시킨 보드 실물

389 of 554

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 of 554

390

녹칸다의 시스템베이스(systembase) LoRa 예제

녹칸다의 LoRa시리즈 [링크]

391 of 554

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 of 554

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 of 554

393

MAX3232 회로도

(5) GND

(3) RX

(2) TX

394 of 554

394

MAX3232 회로도

395 of 554

395

예제1 결과물 (작동 실패 ㅠㅠ)

396 of 554

396

예제1 결과물 (작동 실패 ㅠㅠ)

397 of 554

397

녹칸다의 misol 기상관측소 예제

녹칸다의 기상관측소 시리즈 [링크]

(RJ14)

6P4C커넥터

심볼

398 of 554

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 of 554

399

예제2 결과물

400 of 554

400

예제2 결과물

401 of 554

401

녹칸다가 EASYEDA를 부록으로 추가하려는 이유

  • EASYEDA는 kicad와 마찬가지로 PCB를 제작할 수 있는 편집툴이다!
  • 우리가 PCB를 주문하는 JLCPCB에는 SMT서비스가 있는데 이것은 PCB디자인과 BOM이라하는 부품목록을 제공해주면 제조사에서 납땜까지 해주는 서비스이다!(SMD)
  • kicad에서는 SMT주문을 위한 BOM을 출력하는게 쉽지않다!(JLCPCB에 SMT주문하는게 쉽지않다)
  • JLCPCB와 EASYEDA는 밀접한 연관이 있기때문에 EASYEDA에서 디자인한 PCB와 부품목록을 이용하면 바로 JLCPCB에 주문을 넣을 수 있다!
  • EASYEDA는 온라인툴을 제공한다!(설치가 필요없다)
  • EASYEDA는 심볼과 풋프린트를 검색해서 바로 활용가능하다!(다운받아서 설치할 필요가 없음)
  • 다른사람이 만들어놓은 심볼, 풋프린트, PCB디자인(공유를 해놓았다면)까지 활용가능하다!
  • EASYEDA는 내가 주문할 부품을 미리 선정을 하면서 PCB디자인을 할 수 있다!
  • 녹칸다가 kicad로 가능한것은 PCB보드를 주문하는것 까지이고 SMT를 하기 위해서는 EASYEDA를 활용하도록 한다!

402 of 554

402

EASYEDA로 기판을 만드는 절차

  • 회로도 편집기에서 내가 원하는 부품의 심볼을 선택해서 배치한다!
  • PCB편집기로 회로도를 옮겨서 풋프린트를 배치하고 배선한다!
  • 보드의 아웃라인을 지정한다!
  • GND나 VCC로 copper pour해준다!

(18650베터리로 LED에 전원을 넣는 PCB보드를 예시로 만들어보자!)

(EASYEDA는 모든 풋프린트를 SMD부품을 기준으로 함)

403 of 554

403

(예제3)EASYEDA로 간단한 예제 만들기

404 of 554

404

EASYEDA 시작하기

로그인하기

EasyEDA 디자이너

스탠다드 에디션 클릭하기!

405 of 554

405

EASYEDA 시작하기

406 of 554

406

EASYEDA 시작하기

라이브러리 클릭

내가 원하는 부품 검색

407 of 554

407

EASYEDA 시작하기

부품을 배선하고 배치함

라이브러리에서 선택한 부품에 심볼과 풋프린트가 지정되어있기 때문에 별도로 풋프린트를 선택할 필요는 없음!

(kicad에 footprint 할당은 여기서는 필요없음)

408 of 554

408

EASYEDA 시작하기

회로를 PCB로 변환

409 of 554

409

EASYEDA 시작하기

PCB디자인

410 of 554

410

EASYEDA 시작하기

3D 보기

411 of 554

411

412 of 554

412

해야할 것!(일단 간단한거 위주로 출발)

1.EasyEDA에서 기본 프로젝트 만드는방법 다시 알아보기!

2.KiCad에서 했던 주요 키워드를 EasyEDA에서 적용하는 방법 알아보기!

-참조필드, 필드값, 네트라벨, 전원라벨, copper pour, 배선 라우트, 전후면 구리레이어, 전후면 실크스크린, 보드아웃라인(엣지컷)

3.아두이노 쉴드 타입으로 KiCad에서 만들었던 PCB를 그대로 만들어보기!

-LED 3개를 제어 할 수 있는 쉴드! [링크]

-LED 2개 버튼 2개 [링크]

4.다른 사람이 만들어놓은 회로도나 풋프린트 수정해서 본격적은 쉴드 만들어보기!

413 of 554

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 of 554

414

EasyEDA를 접근하기위한 전략

1.우리가 만들고자 하는것이 단순히 PCB를 제작하는 것이다!(easyeda의 공용 라이브러리로 커버 가능하다)

2.우리가 만들고자 하는 것이 PCB를 제작한다음 JLCPCB에 SMT주문을 하는 것이라면 내가 실장하고자 하는 부품을 미리 배치해서 작업을 해야하기 때문에 기본 라이브러리가 아니라 JLCPCB의 SMT주문이 가능한 부품을 미리 선택을 해야한다!(라이브러리)

415 of 554

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 of 554

416

예제1번 심볼 배치하기

공용 라이브러리

이거 누르면 부품 패키지를 바꿀 수 있음

(풋프린트 모양이 바뀜)

3mm LED

2핀 소켓

패드와 패드 사이가

7.62mm인저항

GND 라벨

VCC 라벨

copper pour를 하기 위해서 필요함!

417 of 554

417

예제1번 심볼 배치하기

네트연결

네트라벨

전원라벨

(GND)

전원라벨

(VCC, 5V)

내가 원하는걸로 바꿔서 쓸수도 있음

연결안함

참조필드

필드값

전원라벨

418 of 554

418

예제1번 PCB편집기로 옮기기

회로를 PCB로 변환

배선라우트

이미지 실크스크린으로 넣기

Copper pour

레이어

실크스크린으로 문자 출력하기

419 of 554

419

예제1번 배선하고 copper pour하기

전면 구리 레이어

후면 구리 레이어

GND는 copper pour로 연결함

420 of 554

420

예제1번 배선하고 copper pour하기

다각형으로 외곽선을 감싸주면 전면 copper pour 완성!

하위레이어선택

421 of 554

421

예제1번 배선하고 copper pour하기

다각형으로 외곽선을 감싸주면 후면 copper pour 완성!

실크스크린

422 of 554

422

예제2번 아두이노 우노 쉴드 심볼과 풋프린트

423 of 554

423

예제2번 아두이노 우노 쉴드 심볼 가져오기

424 of 554

424

예제2번 회로도 편집기

네트라벨

425 of 554

425

예제2번 PCB 편집기

테두리를 쉴드모양으로 잘라야겠군!

426 of 554

426

예제3번 풋프린트 편집해서 저장하기

여기 클릭

편집기에서 풋프린트가 나옴!

427 of 554

427

예제3번 풋프린트 편집해서 저장하기

테두리 선택

레이어를 보드 아웃라인으로 바꿔줌!

실크스크린에서 아웃라인으로 바꾼 상황임!

428 of 554

428

예제3번 풋프린트 편집해서 저장하기

적당한 이름 입력

429 of 554

429

예제3번 풋프린트 편집해서 저장하기

심볼 선택하고 마우스 오른쪽 클릭

430 of 554

430

예제3번 풋프린트 편집해서 저장하기

풋프린트 만들었던거 이름 검색

선택

업데이트

431 of 554

431

예제3번 회로도 편집기

432 of 554

432

예제3번 실크스크린으로 이미지 넣기

이미지 열기

사이즈 설정하기

433 of 554

433

예제3번 PCB 편집기

앞면

뒷면

이미지 실크스크린의 레이어를 뒷면으로 바꾸면 뒤로 이동됨

434 of 554

434

예제4번 온습도센서 심볼 검색

435 of 554

435

예제4번 회로도편집기

436 of 554

436

예제4번 PCB편집기

437 of 554

437

예제5번 회로도편집기

438 of 554

438

예제5번 PCB편집기

439 of 554

439

예제6번 회로도편집기

440 of 554

440

예제6번 PCB편집기

441 of 554

441

다음시간에 할 내용

1.적극적으로 SMD부품을 활용해보기!

2.PCB를 주문하는 방법을 알아보기!

3.SMT주문 하는 방법을 알아보기!

4.배선의 두께를 조절하는 방법!

5.배선의 색을 바꾸는 방법!

6.V-CUT하는 방법!

442 of 554

442

443 of 554

443

해야할 것!

1.배선의 두께 바꾸기!

  • 전류량에 따라 배선의 두께 바꾸어보기 [kicad와 비교]

2.배선의 색 바꿔보기!

  • 배선이 한눈에 보이도록 색 바꿔보기! [kicad와 비교]

3.PCB주문하는 방법 알아보기!

  • 일반 PCB보드 주문하는 방법 알아보기! [kicad와 비교]

4.V-CUT하는 방법 알아보기!

  • EasyEDA로 패널화(Panelization)를 하기 위해서 V-CUT하는 방법 알아보기! [kicad와 비교]

2023-11-14 (수정사항)

JLCPCB에 V-CUT 추가비용이 발생함!

주문할때 Panel By Customer 체크 할 것!

추가비용 $3.8

444 of 554

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 of 554

445

easyeda에서 배선색 바꾸기

실제 PCB의 색이 바뀌는건 아님

446 of 554

446

easyeda에서 배선색 두께 바꾸기

바꾸고자 하는 배선 선택

폭 입력

447 of 554

447

easyeda에서 PCB 주문하기(자동업로드)

JLCPCB에 로그인 해둘것!(어차피 로그인 해야함)

JLCPCB로 거버파일이 자동업로드 됨!

(주문 진행)

448 of 554

448

easyeda에서 PCB 주문하기(수동업로드)

거버파일 생성

거버파일 생성후 업로드해서 주문

449 of 554

449

easyeda에서 v-cut 주문하기

(시나리오) 30mm * 30mm PCB를 가로3개 세로 3개씩 붙혀서 총 9개를 한판으로 주문하려는 상황

원본의 테두리 선택

시작X, 시작Y

값 메모하기

컨트롤+A를 눌러서 전체 선택해주기

450 of 554

450

easyeda에서 v-cut 주문하기

컨트롤+쉬프트+C를 눌러서 기준점을 테두리 왼쪽 상단으로 지정하기

컨트롤+쉬프트+V를 눌러서 꼭지점 끼리 이어붙히기!

451 of 554

451

easyeda에서 v-cut 주문하기

갯수대로 하고 각 PCB의 테두리는 모두 삭제하기

(전체를 포함하는 1개의 테두리를 그려줘야함)

452 of 554

452

easyeda에서 v-cut 주문하기

원본의 시작X, 시작Y입력

너비와 높이는 90*90

(30mm짜리가 가로3개 세로 3개씩 있으므로)

가운데 테두리없이 전체 테두리 1개만 있어야함

453 of 554

453

easyeda에서 v-cut 주문하기

454 of 554

454

easyeda에서 v-cut 주문하기

추가한 레이어선택

직선으로 V-CUT라인 그려줌

시작X+30mm

시작X+60mm

시작Y-30mm

시작Y-60mm

시작 지점

455 of 554

455

easyeda에서 v-cut 주문하기

거버파일 업로드

V-CUT 레이어 메모

"Gerber_MechanicalLayer.GME" is V-CUT LINE.

456 of 554

456

예제3 결과

457 of 554

457

예제3 결과

458 of 554

458

예제4 결과

459 of 554

459

예제4 결과

460 of 554

460

예제5 결과

461 of 554

461

예제5 결과

462 of 554

462

463 of 554

463

해야할 것!

1.내부 엣지컷 사용하는 방법 알아보기! [kicad와 비교]

  • 14-5에서 만든 결과물에 내부 엣지컷 적용해보기

2.via사용법 알아보기!

  • 앞면과 뒷면을 연결하는 via 사용해보기! [kicad와 비교]

3.LCSC 부품 고르기!

  • SMT주문을 위한 부품 선정하기!

4.BOM파일 생성하기!(내 PCB보드에 실장할 부품목록)

  • SMT주문을 위한 BOM파일 생성하기!

5.SMT주문 해보기!

  • EasyEDA로 SMT주문 해보기!(KiCad로는 어떻게 하는지 모르겠음)

464 of 554

464

예제목차

1.예제 14-5에서 만들었던 릴레이보드에 내부 엣지컷을 적용하시오! [링크]

2.EasyEDA에서 via를 사용해서 부품과 부품을 연결해보시오! [링크]

3.SMD타입의 LED와 저항이 있고 DC배럴잭을 이용해서 전원을 공급하면 LED가 켜지는 간단한 PCB를 SMT주문 해보시오! [링크]

4.최소한의 기능을 가진 아두이노 우노 보드를 SMT주문용으로 만드시오! [링크]

5.(4)예제에서 만든 아두이노 우노보드에 온습도센서(DHT-11)와 0.91인치 OLED를 붙힌 PCB보드를 구현하시오! [링크]

465 of 554

465

예제1) 내부 엣지컷 해보기

보드 아웃라인 선택

트랙 선택

내부 엣지컷 할 부분에 트랙 그리기

466 of 554

466

예제1) 내부 엣지컷 해보기

트랙 폭 변경

(원하는 대로)

467 of 554

467

예제1) 내부 엣지컷 해보기

트랙에 마우스 오른쪽버튼 클릭해서 보드 컷아웃으로 변환

완료된 모습

468 of 554

468

예제1) 내부 엣지컷 해보기

내부 엣지컷

469 of 554

469

예제2) via사용해보기

윗면에 트랙을 그리다가 막히면 키보드 v키를 눌러서 via를 생성해줌!

교차하는 부분은 뒷면으로 트랙을 그려줌

뒷면으로 배선을 그릴수 없으니 다시 v키를 눌러서 via를 생성해서 반댓면으로 그려줌

470 of 554

470

예제3) 결과물

471 of 554

471

예제3) 결과물

472 of 554

472

SMT주문을 위한 절차

1.회로도편집기에서 심볼을 배치할때 LCSC에서 내가 실장할 부품을 미리 선정해서 배치한다!(공용라이브러리는 해당안됨)

2.부품은 기본부품확장부품이 있고 기본부품이 재고보유량이 월등히 많고 저렴함!(확장부품의 경우 SMT주문시 단가가 조금더 높다고 함)

3.모든부품이 SMT주문이 되는것이 아니기에 SMT라는 문구가 붙은 부품을 선택해야함!

4.SMT주문을 위해서는 세가지 파일이 필요함!(거버파일,BOM파일,부품배치파일)

473 of 554

473

BOM 파일 내보내기

(눌렀을때 나오는 화면은 무조건 YES 하면됨)

부품 배치파일 내보내기

(이것도 무조건 YES)

예제3) SMT주문 해보기!

다운로드 폴더에 파일이 다운로드됨!

474 of 554

474

예제3) SMT주문 해보기!

475 of 554

475

예제3) SMT주문 해보기!

476 of 554

476

예제3) SMT주문 해보기!

(JLCPCB에 미리 로그인 해두면 좋음)

JLCPCB에 업로드 된거 확인!

477 of 554

477

예제3) SMT주문 해보기!

(옵션) JLCPCB 엔지니어가 잘못되면 뭔가 수정을 해주는듯함

(녹칸다도 잘 모름)

기본은 Economic이고 단면으로 SMT주문을 하되 가격을 저렴하게 하는 방식

양면을 다 활용할 경우 Standard로 해야하고 선택 안했더라도 이후 절차에서 자동으로 변경됨

478 of 554

478

예제3) SMT주문 해보기!

479 of 554

479

예제3) SMT주문 해보기!

BOM파일 업로드

부품자리파일 업로드

480 of 554

480

예제3) SMT주문 해보기!

SMT를 할 부품과 안할 부품을 선택해줌!

선택안한 부품이 있으면 나오는 화면인데 Do not place 선택해줌!

481 of 554

481

예제3) SMT주문 해보기!

부품이 정확히 배치되어 있는지 확인해보기!

(EasyEDA로 출력하면 특별히 어긋나지는 않는듯!)

확인 다 했으면 NEXT

482 of 554

482

예제3) SMT주문 해보기!

장바구니에 담은다음 결제하면 완료!

483 of 554

483

예제4) 결과물

484 of 554

484

예제4) 결과물

485 of 554

485

예제5) 결과물

486 of 554

486

예제5) 결과물

487 of 554

487

끝!

488 of 554

489 of 554

489

부록

녹칸다의 스마트팜 보드(1차)

490 of 554

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 of 554

491

구성요소

식물조명

모스펫

조도센서

DHT-22

DS18B20

가습기

100W스페이스히터

SSR릴레이

모스펫

24V워터펌프

수위센서

수위센서

아두이노 메가 미니

DS18B20

2004LCD

온도

습도

펌프

펌프

492 of 554

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 of 554

493

필요한 회로도

1.RELAY 회로도

2.IRF520 MOSFET 회로도

494 of 554

494

커넥터 정보

+

-

S

+

-

S

X

DS18B20

XKC-Y25-V

495 of 554

495

향후 테스트를 위해서 hmi 포트 만들어두기

VCC

TX

RX

GND

496 of 554

496

향후 테스트를 위해서 RS485 포트 만들어두기

497 of 554

497

향후 테스트를 위해서 RS485 포트 만들어두기

498 of 554

498

이어서 진행할 내용

1.보조기판의 RS45커넥터 전면에서 뒷면으로 이동시켜서 다시 배선하기!

2.연결안되어있는 부저, 모스펫, 릴레이에 배선하기!

3.모든 커넥터에 뭐가 뭔지 알 수 있도록 실크스크린으로 작성하기!

4.고정할 수 있게 드릴홀 뚫기!

5.전원상황에 맞기 배선 두께 조절하기!

6.릴레이쪽에 옵토커플러를 기준으로 copper pour를 재조정할 필요가 있음!(+릴레이쪽에 엣지컷 적용하기)

7.nextion hmi 커넥터 생성하기(JST XH2.54 4핀커넥터)

8.녹칸다 로고를 실크스크린으로 넣기!

9.최종적으로 JLCPCB에 PCBA주문해보기!

499 of 554

499

최종결과(회로도)

500 of 554

500

최종결과

501 of 554

501

최종결과

502 of 554

502

최종결과

503 of 554

503

최종결과

504 of 554

504

최종결과(BOM)

505 of 554

505

최종견적

506 of 554

506

결과물

507 of 554

507

508 of 554

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 of 554

509

건습구 온습도계 만들어보기!

DRY TEMP : 22.2 ‘C

WET TEMP : 19.1 ‘C

HUMI : 77%

전원 연결포트

RS485 연결포트

5V 쿨링팬

(외부에서 내부로 바람을 불어넣어줌)

510 of 554

510

건습구 온습도계 만들어보기!

ESP32

보정버튼

DHT22

RS485 모듈

DS18B20

습구온도

DS18B20

건구온도

5V쿨링팬

PCB가 있는 공간

온도측정부

물통

바람 방향

511 of 554

511

건습구 온습도계 만들어보기!

+

-

S

+

-

S

DS18B20

DHT22

512 of 554

512

건습구 온습도계 만들어보기!

+

-

513 of 554

513

건습구 온도계 회로도편집기

514 of 554

514

건습구 온도계 PCB편집기

515 of 554

515

건습구 온도계 3D뷰어

516 of 554

516

건습구 온도계 최종결과(납땜전)

517 of 554

517

건습구 온도계 최종결과(납땜후)

518 of 554

518

기본 작동테스트 결과

519 of 554

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 of 554

520

아두이노 메가 & ESP32 SMD 핀소켓

521 of 554

521

RS485 회로

정상작동확인!

522 of 554

522

L293D & RGB LED 회로도

정상작동확인!

정상작동확인!

523 of 554

523

UV LED & snubber 회로도

이건 잘 모르겠음

미확인

524 of 554

524

7805 & touch sensor & buzzer 회로도

정상작동확인!

정상작동확인!

작동안됨!

부저를 바꿔서 테스트 해볼 예정

525 of 554

525

릴레이 3종세트 회로도

모두 정상작동확인!

526 of 554

526

테스트보드 PCB편집기

527 of 554

527

테스트보드 3D 뷰어

528 of 554

528

테스트보드 최종결과

529 of 554

529

테스트보드 최종결과

530 of 554

530

테스트보드 작동테스트

531 of 554

531

532 of 554

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 of 554

533

양액통

전체적인 느낌

LCD

양액A펌프

양액B펌프

양액A통

양액B통

입수구

출수구

pH센서

TDS센서

온도센서

수위센서

오일레벨센서

534 of 554

534

도징펌프 도면

535 of 554

535

커넥터 정보

+

-

S

X

XKC-Y25-V

pH센서

536 of 554

536

커넥터 정보

TDS센서

ntc 서미스터(극성없음, 10k 저항필요)

537 of 554

537

커넥터 정보

538 of 554

538

커넥터 정보

오일레벨센서(극성없음, 저항필요)

녹칸다는 120옴 저항 활용함

539 of 554

539

함께 테스트 해볼 내용

1.MPU6050테스트 해보기

2.SHT20 온습도 센서 테스트 해보기

3.SHT35 온습도 센서 테스트 해보기

4.HX711 테스트해보기

5.단일 전원으로 12V펌프 작동 테스트 해보기

6.LCD사용을 위해서 0.5mm FFC 커넥터 실장해보기

7.안테나가 있는 38핀 ESP32 핀소켓 만들어보기

540 of 554

540

541 of 554

541

완료가 안되어서 계속 이어서 진행함(kicad 20편)

1.배선해서 주문가능한 상태 만들어놓기

2.크기를 조금더 줄여보기

3.수위센서는 내장형으로 교체하기

4.기판연결 커넥터 전원부 수정하기

5.ec센서를 외부에서 연결가능하도록 고민해보기

542 of 554

542

양액 컨트롤러 최종결과

543 of 554

543

양액 컨트롤러 최종결과

544 of 554

544

양액 컨트롤러 최종결과

라이브방송에서는 8p 커넥터였는데 녹칸다가 보유한 케이블이 10p라서 10p로 변경함

545 of 554

545

양액 컨트롤러 최종결과

546 of 554

546

양액 컨트롤러 최종결과

547 of 554

547

양액 컨트롤러 최종결과

548 of 554

548

양액 컨트롤러 약간 수정

방열판 들어갈 자리 약간 확보

(생각보다 사이즈가 컸다..!)

549 of 554

549

테스트용 보드 주요 회로

550 of 554

550

테스트용 보드 주요 회로

551 of 554

551

테스트용 보드 주요 회로

552 of 554

552

테스트용 보드 주요 회로

553 of 554

553

테스트용 보드 주요 회로

554 of 554

554

테스트용 보드 주요 회로