This lesson is only available in Korean for now.
Dr. Yoo's mRNA Vaccine Synthesiser Firmware, First Steps

You bought every part.
It still doesn't move.

/mech picked every part for you. And the box just sits there โ€” because nothing in it knows how to tell a valve to open.
This course puts Python firmware on a single Raspberry Pi: one module per device โ€” pumps, valves, Peltiers, sensors, magnet, screen โ€” then binds them all with a master scheduler, fault detector and exception handler.
You learn it without the hardware. We write against mock drivers, and the code runs right inside this page.

๐Ÿ Python๐Ÿ“ Raspberry Pi๐Ÿ”Œ GPIOยทSPIยทI2C ๐Ÿ” PIDโฑ๏ธ scheduler๐Ÿšจ fail-safe๐Ÿ‡ฌ๐Ÿ‡ง English
Start lesson 1 โ†’

How you'll learn

๐ŸงฑOne module per device

Every pump, valve and sensor gets the same shape of Python class โ€” seventeen devices, one pattern.

๐ŸŽญWritten without hardware

We write against mock drivers first โ€” which is how real firmware is actually built.

๐ŸšซWhat Python can't do

You cannot generate stepper pulses from Python. We draw that line before writing code.

๐ŸšจDesign for failure first

It is an eight-hour process. Fail-safe, watchdog and exceptions come before features.

Full curriculum

01
๋ถ€ํ’ˆ์„ ๋‹ค ์‚ฌ๋„ ์›€์ง์ด์ง€ ์•Š๋Š”๋‹ค
/mech 17๊ฐ•์ด ๋‚จ๊ธด ์ž๋ฆฌ โ€” ๋…ผ๋ฌธ์€ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ณต๊ฐœํ•˜์ง€ ์•Š์•˜๋‹ค
โœ“
02
๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด์™€ ๋ฐ๋น„์•ˆ โ€” ์‹ค์‹œ๊ฐ„์ด ์•„๋‹ˆ๋‹ค
2026๋…„ ๊ธฐ์ค€ Trixie ยท ํŒŒ์ด์ฌ 3.13 ยท ๊ทธ๋ฆฌ๊ณ  Pi 5 ๊ฐ€ ๋ฐ”๊พผ ๊ฒƒ
โœ“
03
์„ธ ์ธต์œผ๋กœ ๋‚˜๋ˆˆ๋‹ค โ€” ๋“œ๋ผ์ด๋ฒ„ ยท ์žฅ์น˜ ยท ์ˆœ์„œ
๋ชจ์˜ ๋“œ๋ผ์ด๋ฒ„๋กœ ์‹ค๋ฌผ ์—†์ด ์“ด๋‹ค
โœ“
04
๋ฒ„์Šค ๋„ท โ€” GPIO ยท SPI ยท IยฒC ยท RS485
๋ˆ„๊ฐ€ ์–ด๋””์— ๋ถ™๊ณ , ์ฃผ์†Œ๋Š” ์–ด๋–ป๊ฒŒ ๊ฐˆ๋ฆฌ๋‚˜
โœ“
05
์†”๋ ˆ๋…ธ์ด๋“œ ๋ฐธ๋ธŒ โ€” GPIO ๋Š” ์ฝ”์ผ์„ ๋ชป ์ผ ๋‹ค
MOSFET ยท ํ™˜๋ฅ˜ ๋‹ค์ด์˜ค๋“œ ยท ํ™€๋”ฉ ์ „๋ฅ˜
โœ“
06
์—ฐ๋™ํŽŒํ”„ ์ผ๊ณฑ โ€” ํ•œ ์ค„์— ์ฃผ์†Œ ์ผ๊ณฑ
RS485 Modbus RTU ยท ๊ทธ๋ฆฌ๊ณ  ๋ ˆ์ง€์Šคํ„ฐ ํ‘œ๊ฐ€ ์—†๋‹ค๋Š” ๋ฌธ์ œ
โœ“
07
ํ”Œ๋Ÿฐ์ € ํŽŒํ”„ โ€” ๋„ค ๊ฐ’์„ ์ฝ”๋“œ๋กœ
steps ยท speed ยท interval ยท loops
โœ“
08
์Šคํ…Œํผ โ€” ํŒŒ์ด์ฌ์œผ๋กœ ํ•˜๋ฉด ์•ˆ ๋˜๋Š” ์ผ
ํŽ„์Šค ํญ์€ 1 ยตs, ๋ฌธ์ œ๋Š” ์ง€ํ„ฐ๋‹ค
โœ“
09
์ž์„ ๋ถ„๋ฆฌ โ€” ์žฅ์น˜ ๊ณ„์ธต์€ โ€˜90์ดˆโ€™ ๋ฅผ ์•ˆ๋‹ค
์›์ ๋ณต๊ท€ ยท ๋ฆฌ๋ฐ‹ ยท ํƒ€์ž„์•„์›ƒ
โœ“
10
์˜จ๋„ ์„ผ์„œ โ€” MAX31865 ์™€ PT-1000
SPI ยท 3์„ ์‹ ยท ๊ทธ๋ฆฌ๊ณ  50 Hz
โœ“
11
TEC ์ œ์–ด โ€” ์–‘๋ฐฉํ–ฅ PID
H-๋ธŒ๋ฆฌ์ง€ ยท ํ•˜๋“œ์›จ์–ด PWM ยท ์ฃผํŒŒ์ˆ˜๊ฐ€ ์ˆ˜๋ช…์„ ์ •ํ•œ๋‹ค
โœ“
12
๋ฐ›์นจ ๋จผ์ €, ์•ก์ฒด ๋‚˜์ค‘ โ€” ์„ค์ •๊ฐ’์„ ์ฝ”๋“œ๊ฐ€ ์›€์ง์ธ๋‹ค
์บ์Šค์ผ€์ด๋“œ ์ œ์–ด
โœ“
13
์••๋ ฅ ์ œ์–ด๊ธฐ โ€” ํ”„๋กœํ† ์ฝœ์„ ๋ชจ๋ฅด๋Š” ์žฅ๋น„ ๊ฐ์‹ธ๊ธฐ
์‹œ๋ฆฌ์–ผ ยท ์–ด๋Œ‘ํ„ฐ ๊ณ„์ธต
โœ“
14
์œ ๋Ÿ‰ ์„ผ์„œ โ€” IยฒC ์™€ CRC ๊ฒ€์‚ฐ
๊ทธ๋ฆฌ๊ณ  ๊ด€ ์†์˜ ๊ณต๊ธฐ๋ฅผ ์•Œ๋ ค ์ฃผ๋Š” ๋น„ํŠธ ํ•˜๋‚˜
โœ“
15
SHM ์œ ๋Ÿ‰ ์ œ์–ด โ€” 3:1 ์„ ์ง€ํ‚ค๋Š” ํ๋ฃจํ”„
๋‘ ์ฑ„๋„์„ ํ•จ๊ป˜ ๋ฏผ๋‹ค
โœ“
16
ํ„ฐ์น˜์Šคํฌ๋ฆฐ๊ณผ ํ‚คํŒจ๋“œ
๋ฐ์Šคํฌํ†ฑ ์—†์ด ยท ๋””๋ฐ”์šด์Šค ยท ํ™”๋ฉด์€ ์ œ์–ด๊ฐ€ ์•„๋‹ˆ๋‹ค
โœ“
17
์•Œ๋žŒ ๋ถ€์ € โ€” ๊ฒฝ๋ณด์—๋Š” ๋“ฑ๊ธ‰์ด ์žˆ๋‹ค
IEC 60601-1-8 ยท PWM ํ†ค
โœ“
18
๋งˆ์Šคํ„ฐ ์Šค์ผ€์ค„๋Ÿฌ โ€” ์›Œํฌํ”Œ๋กœ ํŒŒ์ผ์„ ๋Œ๋ฆฐ๋‹ค
์ƒํƒœ๊ธฐ๊ณ„ ยท ๋น„๋™๊ธฐ ยท ์žฌ์‹œ์ž‘
โœ“
19
๊ฒฐํ•จ ๊ฒ€์ถœ โ€” ๊ณ ์žฅ๋ถ€ํ„ฐ ์„ค๊ณ„ํ•œ๋‹ค
์›Œ์น˜๋… ยท ๋ฒ”์œ„ ยท ์ •์ฒด ยท ํƒ€์ž„์•„์›ƒ ยท ํŽ˜์ผ์„ธ์ดํ”„
โœ“
20
์˜ˆ์™ธ ยท ๋กœ๊ทธ, ๊ทธ๋ฆฌ๊ณ  ๋ชป ํ•˜๋Š” ๊ฒƒ
์—ฌ๋Ÿ ์‹œ๊ฐ„์„ ์ง€ํ‚ค๋Š” ์ผ๊ณผ, ์ด ์ฝ”๋“œ๊ฐ€ ์•„๋‹Œ ๊ฒƒ
โœ“