메이커 페어 서울 2018 소개 자료입니다.
- 측우자격루
- 라즈베리파이, 아두이노, 레고를 활용하여 만든 작품입니다.
- 개발자용 소개 자료입니다.
목차
- 프로젝트 소개
- IoT 기술 소개
- 기능 상세
- 제작 과정
- 시연
- 느낀 점
작업 후기 링크입니다.
https://blog.skcc.com/3805
https://blog.skcc.com/3810
4. 목 차
1. 프로젝트 소개
2. IoT 기술 소개
3. 기능 상세
4. 제작 과정
5. 시연
6. 느낀 점
5. 1. 프로젝트 소개 - 개요
2016년에 ‘자격루’를 참고로 하여 일부를 응용한 ‘레고 자격루 디지털 시계’를 선보였습니다.
이번에는 자격루의 전체 모습을 구현하고자 했고, 자격루로 물을 올리는 것은 ‘측우기’로부터
시작하면 어떨까 싶어 측우기와 자격루를 결합한 ‘측우자격루’를 제작하게 되었습니다.
자격루 2016 자격루 2017
측우자격루
자격루측우기
6. 측우기[測雨器]
세종 때 발명되어 사용한 조선시대의
공식적인 우량 측정 기구.
1440년을 전후하여 발명되어 1442년(세종
24)부터 20세기 초까지 조선 왕조의
공식적인 우량 관측기구로 사용된 도구로,
현대의 우량계에 해당한다.
금속제 원통형 그릇에 빗물을 받아 표준화된
눈금의 자로 그 깊이를 측정했다.
측우대[測雨臺]
측우기를 안정(安定)하게 올려놓고 우량
측정을 편하게 하기 위하여 만든 대석(臺石).
[네이버 지식 백과] 측우기[測雨器] (한국민족문화대백과)
1. 프로젝트 소개 - 참고자료
7. 자격루[自擊漏]
자동으로 시보(時報, 정확한 시각을
알리는 신호)를 알려주는 장치가
되어 있는 물시계.
1434년(세종 16) 왕명으로 장영실·
김조·이천 등이 제작하였다.
시(時)·경(更)·점(點)에 맞추어 종과 북
·징을 쳐서 시각을 알렸으며, 파수호
(播水壺)와 수수호(受水壺), 동력전달
장치와 시보장치로 되어 있다.
사진 : 국립고궁박물관
1. 프로젝트 소개 - 참고자료
[네이버 지식백과] 자격루 [自擊漏] (두산백과)
8. 2. IoT 기술 소개 - 라즈베리파이 / 아두이노 비교
구분 라즈베리파이 아두이노(제누이노)
이미지
종류 싱글보드 컴퓨터 마이크로 컨트롤러
OS Linux(40여 종), Windows IoT 10 X
개발 환경 vi, nano, IDLE, Scratch, Eclipse Sketch
특징
- 진입장벽 존재(Linux 및 개발언어 사전지식)
- 하드웨어 성능 우수
- 초보자에게 적합(윈도우에서 개발 가능)
- 많은 레퍼런스 존재
검색 결과*
3320만 건(2016)
6130만 건(2017)
2억1700만 건(2018)
5930만 건(2016)
8200만 건(2017)
8840만 건(2018)
국내 도서*
27권(2016)
42권(2017)
59권(2018)
74권(2016)
153권(2017)
184권(2018)
* 이미지 출처 : wiki
* 2016년 9월, 2017년 10월, 2018년 9월 Google(영문으로 검색)/알라딘 검색 기준
9. GPIO*
* 라즈베리파이3 모델B 기준
* GPIO : General Purpose Input/Output
하드웨어
아답터
TV/모니터
공유기
키보드
마우스
HDMI Cable
유/무선
라즈베리파이 주변장치 연결*
모터LED
2. IoT 기술 소개 - 라즈베리파이 / 아두이노 비교
액츄에이터(Output)
스피커
거리센서 조도센서
센서(Input)
10. 아두이노 주변장치 연결*
PC/노트북
(USB Port)
다양한 쉴드
* 아두이노 우노 R3 기준
아답터
2. IoT 기술 소개 - 라즈베리파이 / 아두이노 비교
하드웨어모터LED거리센서 조도센서
액츄에이터(Output)센서(Input)
11. 2. IoT 기술 소개 - 라즈베리파이 GPIO
라즈베리파이3 GPIO Header
GPIO2~27 : 26개까지 GPIO 포트 사용 가능
이미지 출처 : https://docs.microsoft.com/en-us/windows/iot-
core/media/pinmappingsrpi/rp2_pinout.png
12. 2. IoT 기술 소개 - 아두이노 우노
아두이노 우노 보드
라즈베리파이와는 다르게 Analog Pin도 있음
이미지 출처 : https://wiki.eprolabs.com/index.php?title=Arduino_UNO
13. 2. IoT 기술 소개 - 저항
저항 읽는 법
이미지 출처 :
http://ggolbeng2.tistory.com/m/entry/%EC%A0%80%ED%95%AD-
%EC%9D%BD%EB%8A%94-%EB%B2%95
14. 2. IoT 기술 소개 - LED
LED(Light Emitting Diode)
C 소스
#include <stdio.h>
#include <wiringPi.h>
#define LED1 17 // GPIO 17
int main(void)
{
printf("Hello, worldn");
if (wiringPiSetupGpio() == -1) {
return 1;
}
pinMode(LED1, OUTPUT);
while(1)
{
digitalWrite(LED1, 1);
delay(1000);
digitalWrite(LED1, 0);
delay(1000);
}
return 0;
}
LED 깜빡임 무한 반복(1초 간격)
LED 저항
라즈베리파이
저항이 필요한 이유 :
[옴의 법칙(Ohm’s law)]
V = I×R(전압=전류×저항)
I = V/R(전류=전압/저항)
저항이 없으면(R=0이면) I는
무한대이므로 LED에 과부하
걸림
15. 2. IoT 기술 소개 - 모터
DC모터(DC motor)
pwm_pin = 26
dir_pin = 22
…
try:
while True:
gear = input("Press gear(-2, -1, 0, 1, 2
) : ");
if gear == "0":
pwm_motor.ChangeDutyCycle(0) #stop
elif gear == "1" or gear == "-1":
pwm_motor.ChangeDutyCycle(50) #go slow
elif gear == "2" or gear == "-2":
pwm_motor.ChangeDutyCycle(100) #go fast
if gear > "0":
GPIO.output(dir_pin, True) #go
else:
GPIO.output(dir_pin, False) #back
직류 전류(Direct Current)를 전원으로 하여 돌아가는 모터. 일반적으로 널리 쓰이는 모터
Python 소스
5V GND
PWM : Duty비 변경에
따라 속도 조절
DIR : High/Low에
따라 회전 방향 변경
AAA * 6
(9V)
G22 G26
모터 드라이버
Duty비(On Duty Ratio) :
한 주기(T)에 대해서 Pulse가
On인 상태의 비율
PWM(펄스 폭 변조) :
Pulse Width Modulation.
Pulse의 Duty비를 바꿈으로써
출력의 크기 제어
16. 2. IoT 기술 소개 - 모터
서보모터(Servomotor)
import RPi.GPIO as GPIO
import time
pin = 12
GPIO.setmode(GPIO.BCM)
GPIO.setup(pin, GPIO.OUT)
p = GPIO.PWM(pin,50) #50Hz(20ms cycle)
p.start(7.5)
try:
while True:
p.ChangeDutyCycle(7.5) #90 degree
time.sleep(1)
p.ChangeDutyCycle(12.5) #180 degree
time.sleep(1)
p.ChangeDutyCycle(2.5) #0 degree
time.sleep(3)
except KeyboardInterrput:
p.stop()
GPIO.cleanup()
각도를 조절할 수 있는 모터. 일반적으로 180도 이동이 가능함
Python 소스
참고 자료 : https://rpi.science.uoit.ca/lab/servo/
𝐝𝐜 =
𝟎. 𝟓
𝟐𝟎
× 𝟏𝟎𝟎 = 𝟐. 𝟓%
𝐝𝐜 =
𝟏. 𝟓
𝟐𝟎
× 𝟏𝟎𝟎 = 𝟕. 𝟓%
𝐝𝐜 =
𝟐. 𝟓
𝟐𝟎
× 𝟏𝟎𝟎 = 𝟏𝟐. 𝟓%
Duty Cycle = Length/Period
17. 2. IoT 기술 소개 - WiFi 통신
WebIOPi: 라즈베리파이 GPIO 포트를 웹 상에서
제어가 가능하게 개발된 Framework
<script type="text/javascript">
webiopi().ready(function() {
var content, button;
content = $("#content");
button = webiopi().createMacroButton("on",
"LED/Motor ON", "led_motor_on");
content.append(button);
button = webiopi().createMacroButton("off",
"LED/Motor OFF", "led_motor_off");
content.append(button);
});
</script>
JavaScript 소스
import webiopi
GPIO = webiopi.GPIO
…
@webiopi.macro
def led_motor_on():
GPIO.output(LED_MOTOR, GPIO.HIGH)
@webiopi.macro
def led_motor_off():
GPIO.output(LED_MOTOR, GPIO.LOW)
Python 소스
5V
GND
모터
On/Off
AAA * 6
(9V)
G18
WebIOPi
공유기
태블릿 PC노트북
참고 자료 : http://webiopi.trouch.com/
18. 2. IoT 기술 소개 - 사운드
사운드 출력
//music_test.c
#include <stdlib.h>
int main(void) {
system("omxplayer cheer_up.mp3");
return 0;
}
#music_test.py
from omxplayer import OMXPlayer
from time import sleep
player = OMXPlayer('cheer_up.mp3')
player.play()
sleep(5)
player.pause()
# Kill the `omxplayer` process gracefully.
player.quit()
C 소스
Python 소스
참고 자료 :
https://github.com/willprice/python-omxplayer-wrapper
http://elinux.org/Omxplayer
20. 2. IoT 기술 소개 - 센서
수위 센서(Liquid Level Sensor)
int Liquid_level=0;
void setup() {
Serial.begin(9600);
pinMode(5,INPUT);
}
void loop() {
Liquid_level=digitalRead(5);
//센서가 인식하면 1, 아니면 0으로 표시
Serial.print("Liquid_level= ");
Serial.println(Liquid_level,DEC);
delay(500);
}
아두이노 소스
비접촉 수위센서 모듈
참고 자료 : https://www.dfrobot.com/wiki/index.php/Non-
contact_Liquid_Level_Sensor_XKC-Y25-T12V_SKU:_SEN0204
21. 2. IoT 기술 소개 - 센서
거리측정 센서
//아날로그 0번핀 사용
int pinNum = A0;
//거리값 변수 생성
int distance = 0;
void setup() {
Serial.begin(9600); //시리얼 통신 초기화
//A0번핀을 INPUT으로 설정
pinMode (pinNum, INPUT);
}
void loop() {
//적외선 거리 센서로 부터 측정값을 읽어온다
int data = analogRead(pinNum);
//측정한 volt값을 0에서 5000사이의 값으로 변환
int volt = map(data, 0, 1023, 0, 5000);
//측정값을 통해 거리를 계산
distance = (21.61/(volt-0.1696))*1000/5;
//거리 출력
Serial.println(distance);
//지연시간을 500ms로 설정
delay(500);
}
아두이노 소스(적외선 거리측정 센서)
초음파 거리측정 센서
적외선 거리측정 센서
참고 자료 :
http://mechasolutionwiki.com/index.php?title=%EC%B4%88%EC%9D%8C%E
D%8C%8C_%EA%B1%B0%EB%A6%AC%EC%84%BC%EC%84%9C_(HC-SR04)
https://kocoafab.cc/tutorial/view/272
22. 2. IoT 기술 소개 - 센서
압력 센서(FSR, Force Sensing Resistor)
int FSR_Pin = A0; //analog pin 0
void setup() {
Serial.begin(9600);
}
void loop() {
int FSRReading = analogRead(FSR_Pin);
Serial.println(FSRReading);
delay(250);
}
아두이노 배선
라즈베리파이 배선
ADC(Analog-to-digital converter) 필요
아두이노 소스
import spidev, time
spi = spidev.SpiDev()
spi.open(0, 0)
def analog_read(channel):
r = spi.xfer2([1, (8 + channel) << 4, 0])
adc_out = ((r[1]&3) << 8) + r[2]
return adc_out
while True:
reading = analog_read(0)
voltage = reading * 3.3 / 1024
print("Data %dt Voltage %f V" % (reading, voltage)
)
time.sleep(0.2)
라즈베리파이(Python) 소스
참고자료 : http://bildr.org/2012/11/force-sensitive-resistor-arduino/
https://github.com/acaird/raspi-scale/raw/master/images/lamescale_bb.png
23. 2. IoT 기술 소개 - 집적회로(IC, Integrated Circuit)
MCP3008
(ADC: Analog-to-digital converter)
RPi Symbol Pin
Con1 CH0 1
Con2 CH1 2
Con3 CH2 3
Con4 CH3 4
Con5 CH4 5
Con6 CH5 6
Con7 CH6 7
Con8 CH7 8
Pin Symbol RPi
16 VDD 3V3
15 V_REF 3V3
14 AGND GND
13 CLK 11
12 D_OUT 9
11 D_IN 10
10 CS/SHDN 8
9 DGND GND
아날로그 신호를 디지털 신호로 변환
74HC595
(Shift Register)
RPi Symbol Pin
Con2 Q1 1
Con3 Q2 2
Con4 Q3 3
Con5 Q4 4
Con6 Q5 5
Con7 Q6 6
Con8 Q7 7
GND GND 8
Pin Symbol RPi
16 VCC VCC
15 Q0 Con1
14 DS
17 or
앞 Q7S
13 OE GND
12 STCP 27
11 SHCP 18
10 MR VCC
9 Q7S
X or
뒤 DS
사용해야 할 디지털 출력의 수가 많을 때 사용
참고 자료 : https://ko.wikipedia.org/wiki/%EC%95%84%EB%82%A0%EB%A1%9C%EA%B7%B8-
%EB%94%94%EC%A7%80%ED%84%B8_%EB%B3%80%ED%99%98%ED%9A%8C%EB%A1%9C
http://www.hardcopyworld.com/ngine/aduino/index.php/archives/2826
24. 2. IoT 기술 소개 - 릴레이
NC: Normally closed
NO: Normally open
C: Common terminal
입력전기 신호를 받아서, 출력부에 필요한 동작전기 신호를 보내, 전기회로를 ON/OFF하는 장치
릴레이(Relay)
5V 릴레이 단말/핀 설명
5V 릴레이와 아두이노 연결
5V GND
Signal
참고 자료 :
http://www.circuitbasics.com/setting-up-a-5v-relay-on-the-arduino/
https://steps2make.com/wp-content/uploads/2017/10/Arduino_KY-
019_5v_relay_module_connections.png
25. 2. IoT 기술 소개 - 적외선 통신
적외선(Infrared) 통신
#include <PowerFunctions.h>
PowerFunctions pf(2, 0, 1);
void setup() {
Serial.println("ready to send lego ir
commands");
}
void loop() {
pf.single_pwm(RED, PWM_BRK);
for (int i = 0; i < 7; i++) {
pf.single_increment(RED);
delay(200);
}
for (int i = 0; i < 14; i++) {
pf.single_decrement(RED);
delay(200);
}
}
아두이노 소스
적외선 송신기
(IR Transmitter)
레고 서보모터 작동시키기
레고 적외선 수신기
레고 서보모터
레고 배터리팩
적외선 송신기
아두이노
참고 자료 :
https://github.com/jurriaan/Arduino-PowerFunctions
https://raspberrypi.stackexchange.com/questions/56999/will-this-arduino-
module-work-with-raspberry-pi-3
26. 3. 기능 상세 - 측우기
로드셀(무게 센서), 적외선 센서, 모터
로드셀,
아두이노,
적외선 송신기
거리측정센서
모터
ㅋ
측우기
측우기 작동 시나리오
(PLAN A)
1. 측우기에 비(구슬)가 계속 내리면 로드셀에서 무게 측정
2. 일정량의 구슬을 모으면 측우기를 기울여서 구슬을 떨어뜨림
3. 거리측정센서에서 구슬을 인식하면 컨베이어 벨트를 움직여서 구슬을 위로 올려줌
(PLAN B)
1. 무선 조종기 통해서 측우기를 기울여서 구슬 떨어뜨림
2. 무선 조종기 통해서 컨베이어 벨트를 움직여서 구슬을 위로 올려줌
적외선 수신기
무선 조종기
스마트라이트
27. 3. 기능 상세 - 자격루A
자격루A 작동 시나리오
1. 중력을 이용해서, 맨 위 항아리에서부터 차례차례 구슬을 아래로 내려줌
자격루A
중력
스마트라이트
28. 자격루B
3. 기능 상세 - 자격루B
압력센서, LED, 모터, 사운드, Wi-Fi
모터
스마트라이트
스피커(사운드)
자격루B 작동 시나리오
(PLAN A)
1. 압력센서에서 떨어지는 구슬을 인식하면, 종/북/징을 움직이면서 소리 나게 해줌
(PLAN B)
1. WiFi 통해 Web화면으로 원격으로 시계를 작동시켜줌
1) 6개 도시 클릭하면 시간대 변경 가능
2) 종/북/징 이미지 누르면 움직이면서 소리 나게 해줌
Web화면
공유기
라즈베리파이
LED
압력센서
29. 3. 기능 상세 - 자격루B 하드웨어 아키텍처
라즈베리파이
스피커
아이패드
배터리팩
모터 +
미니피겨
모터
드라이버
LED 시계
공유기
시간 조정
LED 제어
(스마트라이트)
30. 3. 기능 상세 - 자격루B LED 배선도
Shift
Register
74HC595
5Φ LED
5V Relay
* 설계는 글자당 LED 3X5 사이즈로 했으나 실제 모델은 5X7 사이즈로 제작함
3.3V PWR
5V PWR
31. 3. 기능 상세 - 자격루B 모터 배선도
라즈베리파이 GPIO
레고 M 모터
모터 드라이버
L298N
AAA * 6
or
Adapter
(9V 0.3A)
DIRPWM
DIR PWM
PWM
DIR
종북징
37. 6. 느낀 점
- 3년 간 메이커 페어 참여를 위해 준비하다 보니 무심코 지나쳤던 부분이 ‘보이기‘ 시작함
전자제품 볼 때마다 원리에 대해 한 번 더 생각해 보게 됨
- 동료 검토하면서, 세상에 선보이면서, 많은 아이디어 수집됨
가능한 여러 곳에 공유할수록 좋은 아이디어 발굴 가능
- 1~2년 전 내용 다시 학습할 때 예전에 정리한 자료가 많은 도움이 됨
지속적으로 자료 정리할 필요 있음
- 잘못된 회로도를 현행화 하지 않아 나중에 문제 파악에 어려움 겪음
문제 파악하면 미루지 말고 바로 수정해야 함
- 자발적으로 진행하는 만큼 계획을 유연하게 세울 수 있으나, 언제나 시간이 부족함
충분한 Buffer 고려한 계획 수립 및 일정에 따른 실천 필요
- 메이커 페어 직전에 추석 연휴기간이 있어 부족한 부품 수급에 어려움
부품 구입 시 백업 부품도 구매해야겠다고 느낌
38. [Backup - 느낀 점(2017)]
‘창조’의 즐거움 및 나눔
- 주도적으로 기획/설계/개발
- 동료들과 창조적인 활동 공유
작년에는 혼자, 올해는 여럿.
- 다양한 아이디어 수집 가능
- 시행착오 시간 감소
많이 부족함을 느낌
- 기존 발명품 만든 선배들에 대한 존경심 생김
- 여러 분야 전문가 협업하고 싶음
(레고 디자이너, 전자회로 전문가, 하드웨어 제작자 : 연락 주세요)
메이커 페어 효과
- ‘취미’라고 부를 수 있는 활동 추가됨
- 여러 분야 메이커와 교류 기회
39. [Backup - 느낀 점(2016)]
1) 10년 만에 다시 해본 전공 공부
학생 때와 달리 스스로 하는 학습이다 보니 흥미 있게 공부 진행
2) 새로운 프로그래밍 언어 도전
매니저가 되어가면서 정체되고 있는 개발 Skill에 대한 불안감 해소
3) 소프트웨어와 하드웨어의 융합
전공지식(하드웨어)과 실무지식(소프트웨어) 결합하여 시너지 효과 발생
4) 레고의 놀라운 확장성 확인
‘레고 테크닉’이라는 신세계를 발견하여 다양한 확장 가능성 확인
40. [Backup - FAQ(1)]
Q. 제작 기간은 얼마나 되는지요?
A. 처음 시계 만들려고 했던 것부터 치면 3년 반 정도 소요되었습니다만, 실제로는 띄엄띄엄
제작했습니다. 측우기와 자격루A 부분은 6개월 정도 걸렸습니다.
Q. 제작 비용은 총 얼마나 될까요?
A. 약 100만원 정도 소요된 것 같습니다(공구 제외, 잘못 샀거나 백업으로 구매한 부품 제외).
Q. 기존에 파는 제품인가요?
A. 아닙니다. 다만 자격루 부분은 순수 창작이지만 측우기에서 자격루로 물(구슬) 이동하는 부분은
기존 창작한 다른 작가의 작품을 개조했습니다(작가님에게서 비영리 목적이면 사용 가능하다고 허락
받았습니다).
Q. 조립 설명서가 있나요?
A. 측우기 쪽 모듈의 개조 전 버전은 원 창작자의 홈페이지에 조립 설명서가 있습니다(참고 자료
페이지 참조). 자격루는 설명서가 별도로 없습니다. 자격루 초기 버전 제작 시에 레고 모델링 툴인
LDD(Lego Digital Designer) 및 Bricklink Studio를 활용해서 만든 모델링 파일은 있습니다.
41. [Backup - FAQ(2)]
Q. 레고 부품들은 어디에서 구했나요?
A. 거의 대부분 레고 부품 거래 사이트인 브릭링크(http://brinklink.com) 통해서 구했습니다. LED는
레고 부품이 아니며, 전자부품 쇼핑몰에서 구매했습니다.
Q. 스피커에서 소리 날 때 분수도 올라가던데요. 스피커도 제작한 건가요?
A. 스피커는 기성품입니다(다른 행사에서 상품으로 받았습니다).
Q. 태블릿 PC에서의 자격루 제어 프로그램은 스마트폰 앱인가요?
A. 아닙니다. 웹페이지입니다. 따라서 태블릿 PC/스마트폰 뿐 아니라 PC/노트북에서도 똑같이
보이고 똑같이 작동시킬 수 있습니다.
Q. 개발 언어는 어떻게 되는지요?
A. LED 시계/소리는 C로, 웹서버(WebIOPi) 및 레고 미니피겨 컨트롤은 파이썬으로, 웹페이지에는
HTML/CSS/JavaScript를 사용했습니다. 저울에는 C 기반인 아두이노 전용 언어를 사용했습니다.
프로그램 소스는 깃허브(https://github.com/pcmola)에 올려두었습니다.
42. [Backup - FAQ(3)]
Q. 전자부품은 아두이노로 만들었나요? 레고 마인드스톰을 썼나요?
A. 측우기 측정하는 저울 부분에는 아두이노를 사용했고, 자격루 시계에는 라즈베리파이를
사용했습니다. 레고 마인스트톰은 사용하지 않았고, 모터/리시버/리모컨은 레고 파워펑션 제품군을
사용했습니다.
레고 파워펑션 부품들. (왼쪽 위부터) 리시버,
서보모터, M모터, L모터, XL모터,
(왼쪽 아래부터) 일반리모컨, 스피드리모컨,
AAA 배터리박스, AA 배터리박스.
작품에 사용된 레고 파워평션 부품들
아두이노
라즈베리파이
이미지 출처 : Wiki, http://apparat.tistory.com/38
43. [Backup - 라즈베리파이 GPIO 연결]
GPIO
(BCM)
사용여부 사용처
2 O LED GREEN
3 O JING_DIR
4 O BUTTON_HOUR
5
6 O BUTTON_MINUTE
7 O LED COLON
8 O MCP3008
9 O MCP3008
10 O MCP3008
11 O MCP3008
12 O BOOK PWM
13 O JONG DIR
16 O BOOK DIR
17 O 74HC595
18 O 74HC595
19 O JONG PWM
20 O JING PWM
21 O RELAY
22 O TIMEZONE
23 O TIMEZONE
24 O TIMEZONE
25
26
27 O 74HC595
gpio readall
+-----+-----+---------+------+---+---Pi 3---+---+------+---------+-----+-----+
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
| | | 3.3v | | | 1 || 2 | | | 5v | | |
| 2 | 8 | SDA.1 | IN | 1 | 3 || 4 | | | 5V | | |
| 3 | 9 | SCL.1 | IN | 1 | 5 || 6 | | | 0v | | |
| 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 0 | IN | TxD | 15 | 14 |
| | | 0v | | | 9 || 10 | 1 | IN | RxD | 16 | 15 |
| 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 1 | IN | GPIO. 1 | 1 | 18 |
| 27 | 2 | GPIO. 2 | OUT | 0 | 13 || 14 | | | 0v | | |
| 22 | 3 | GPIO. 3 | OUT | 0 | 15 || 16 | 0 | IN | GPIO. 4 | 4 | 23 |
| | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 |
| 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | |
| 9 | 13 | MISO | IN | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 |
| 11 | 14 | SCLK | IN | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 |
| | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 |
| 0 | 30 | SDA.0 | IN | 1 | 27 || 28 | 1 | IN | SCL.0 | 31 | 1 |
| 5 | 21 | GPIO.21 | IN | 1 | 29 || 30 | | | 0v | | |
| 6 | 22 | GPIO.22 | IN | 1 | 31 || 32 | 0 | IN | GPIO.26 | 26 | 12 |
| 13 | 23 | GPIO.23 | IN | 0 | 33 || 34 | | | 0v | | |
| 19 | 24 | GPIO.24 | IN | 0 | 35 || 36 | 0 | IN | GPIO.27 | 27 | 16 |
| 26 | 25 | GPIO.25 | IN | 0 | 37 || 38 | 0 | IN | GPIO.28 | 28 | 20 |
| | | 0v | | | 39 || 40 | 0 | IN | GPIO.29 | 29 | 21 |
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |
+-----+-----+---------+------+---+---Pi 3---+---+------+---------+-----+-----+
44. [Backup - 참고 자료]
Railway System: Reverse module V-type(https://akiyuki.jp/en/works/889)
- Loading Unit, Unloading Unit을 개조하여 측우기 구동부 만드는 데 사용함