Files
liteauthdocs/Chapter3/Chapter3.typ
T
2026-01-23 20:47:02 +07:00

337 lines
16 KiB
Typst

#import "../PageTemplate.typ": *
#import "@preview/tiaoma:0.3.0"
#import "@preview/fletcher:0.5.8" as fletcher: diagram, edge, node
#import fletcher.shapes: circle, diamond, pill
#show: chapter-page
#set heading(numbering: "บทที่ 1")
#heading([#linebreak()วิธีการดำเนินโครงงาน])
#set heading(numbering: "1.1")
#i ในการดำเนินการศึกษาครั้งนี้
คณะผู้จัดทำโครงงานได้ศึกษาข้อมูลเบื้องต้นในการสร้างเครื่องยืนยันตัวตนด้วย NFC
และได้ดำเนินการตามขั้นตอนนี้
+ วางแผนการดำเนินงาน
+ การออกแบบ
+ วัสดุอุปกรณ์
+ ขั้นตอนการประกอบ
+ การทดลอง
+ การวิเคราะห์ข้อมูล
== วางแผนการดำเนินงาน
#show table.cell.where(y: 1): strong
#set par(leading: 0.5em)
#let arrow = [
#place(
left + horizon,
text(weight: "bold", size: 14pt)[#sym.arrow.l],
dx: -5pt,
dy: -0.7pt,
)
#place(
horizon,
line(length: 100%, stroke: (thickness: 1pt)),
dx: 0pt,
dy: 0pt,
)
#place(
right + horizon,
text(weight: "bold", size: 14pt)[#sym.arrow.r],
dx: 5pt,
dy: -0.7pt,
)
]
=== แผนขั้นตอนและวิธีการดำเนินงาน
ตาราง 3.1 ระยะเวลาการดำเนินงาน
#v(0.5em, weak: true)
#table(
columns: (2fr, 1fr, 1fr, 1fr, 1fr, 1fr),
align: (
left + horizon,
center,
center,
center,
center,
center,
),
table.header(
table.cell(
[ขั้นตอนการดำเนินการ],
rowspan: 2,
),
table.cell(
[พ.ศ.2568],
colspan: 3,
),
table.cell(
[พ.ศ.2569],
colspan: 2,
),
[ต.ค.],
[พ.ย.],
[ธ.ค.],
[ม.ค.],
[ก.พ.],
),
[ศึกษาค้นคว้าข้อมูล],
table.cell(arrow, colspan: 3),
[],
[],
[เสนอหัวข้อ], arrow, [], [], [], [],
[เสนอครั้งที่ 1], [], arrow, [], [], [],
[ออกแบบและสร้าง], [], table.cell(arrow, colspan: 3), [],
[จัดซื้ออุปกรณ์ทดลอง],
[],
table.cell(arrow, colspan: 3),
[],
[ทดลองการทำงาน], [], [], table.cell(arrow, colspan: 2), [],
[ปรับปรุงแก้ไข], [], [], [], [], arrow,
[เสนอครั้งที่ 2], [], [], [], arrow, [],
[จัดทำรูปเล่ม], table.cell(arrow, colspan: 5),
[นำเสนอโครงงาน], [], [], [], [], [],
)
#show: page-theme
#set par(leading: 0.5em)
=== ผังการดำเนินงาน
#include "ProjectFlowchart.typ"
#pagebreak()
=== ผังการทำงาน
#include "ProductFlowchart.typ"
#pagebreak()
#set par(leading: 1em)
== การออกแบบ
== วัสดุอุปกรณ์
+ บอร์ด ESP32 (NodeMCU)
+ กล่องพลาสติก
+ Buzzer
+ เซนเซอร์ PIR
+ เซนเซอร์ NFC 2 ชิ้น
== ขั้นตอนการประกอบ
=== การติดตั้งอุปกรณ์
โครงงานแบ่งออกเป็น 3 โมดูล
+ โมดูลเซนเซอร์ NFC ขาเข้าและบอร์ด ESP32
+ โมดูลเซนเซอร์ NFC ขาออก
+ โมดูลเซนเซอร์ PIR
#show heading: it => {
if it.level > 2 {
block(
it,
inset: (left: -3em * (it.level - 2)),
)
} else {
it
}
}
==== โมดูลเซนเซอร์ NFC ขาเข้าและบอร์ด ESP32
#iiii ทำการเจาะรู
==== โมดูลเซนเซอร์ NFC ขาออก
#iiii ดำเนินการเจาะรูบริเวณตัวกล่องเพื่อใช้เป็นช่องสำหรับสายไฟ
จากนั้นนำสายไฟร้อยผ่านช่องดังกล่าวและต่อเข้ากับเซนเซอร์ NFC ให้เรียบร้อย
==== โมดูลเซนเซอร์ PIR
=== การเขียนเฟิร์มแวร์ <writingFirmware>
#iii โครงงานนี้ใช้ซอฟต์แวร์ PlatformIO ในการสร้างและจัดการโปรเจกต์เฟิร์มแวร์
โดยหากต้องการเพียงแค่เขียนเฟิร์มแวร์ลงไปยังบอร์ด ESP32 คุณจำเป็นต้องใช้ซอฟต์แวร์หลัก คือ
PlatformIO Core และ Git (ไม่จำเป็น แต่เพื่อความสะดวกสบาย) อย่างไรก็ตาม PlatformIO
จำเป็นต้องใช้ Python เวอร์ชัน 3.6 ขึ้นไปด้วยเช่นกัน ดังนั้นคุณจำเป็นต้องติดตั้ง Python
ด้วยหากคุณยังไม่มี
#iii ในขั้นตอนแรก โปรดเปิดเทอร์มินัลของคุณ ซึ่งโดยทั่วไปแล้วคุณสามารถค้นหาแอปพลิเคชัน#jb
"Terminal" ได้เลย โดยบน Windows 10 เวอร์ชั่นใหม่ และ Windows 11 จะมาพร้อมกับแอปพลิเคชัน
Windows Terminal อย่างไรก็ตาม เมื่อเปิดแล้ว โปรดตรวจสอบให้แน่ใจว่าคุณกำลังใช้ PowerShell
และไม่ใช่ Command Prompt
#iii โดยในปัจจุบัน Python เวอร์ชันล่าสุดคือ Python 3.14.2 โดยคุณสามารถติดตั้ง Python และ Git
บน Windows ได้ด้วยการใช้คำสั่งต่อไปนี้
```sh
winget install Python.Python.3.14 Git.Git -e -s winget
```
#iii สำหรับระบบปฏิบัติการอื่นนั้น โดยปกติแล้วจะไม่ต้องติดตั้ง Python
เพิ่มเนื่องจากมีติดมากับระบบปฏิบัติการอยู่แล้ว อย่างไรก็ตาม บน Linux อาจต้องมีการติดตั้งการรองรับ
Virtual Environment แยก โดยแต่ละระบบจะมีชื่อแพคเกจไม่เหมือนกัน โดยบน Debian, Fedora,
และ Arch สามารถใช้คำสั่งต่อไปนี้ในการติดตั้งทั้ง Python Virtual Environment และ Git
พร้อมกันได้
#pagebreak()
```sh
# Debian
sudo apt install python3-venv git
# Fedora
sudo dnf install python3-virtualenv git
# Arch
sudo pacman -S python-virtualenv git
```
#show raw.where(block: true): set block(below: 2em)
==== การติดตั้ง PlatformIO Core ผ่านแพคเกจ
#iiii หากคุณใช้ Fedora Linux หรือ Arch Linux (หรือลูก ของมัน) คุณสามารถติดตั้งแพคเกจ
PlatformIO ได้โดยตรง โดยมีคำสั่งดังนี้:
```sh
# Fedora Linux
sudo dnf install platformio
# Arch Linux
sudo pacman -S platformio-core
```
- หากคุณติดตั้งแพคเกจ Fedora นั้นแล้ว คุณไม่จำเป็นที่จะต้องติดตั้งกฎ udev ด้วยตนเอง
(ที่จะถูกกล่าวถึงใน@pioudev)
- หากคุณใช้ Arch คุณสามารถติดตั้งแพคเกจกฎ udev ได้โดยตรงโดยไม่ต้องดาวน์โหลดเอง
```sh
sudo pacman -S --asdeps platformio-core-udev
```
==== การติดตั้ง PlatformIO Core ผ่านสคริปต์
#iiii ถัดไป ในการติดตั้ง PlatformIO Core สามารถทำได้โดยการใช้สคริปต์ติดตั้ง โดยสำหรับ `curl`
สามารถใช้คำสั่งนี้ได้:
```sh
curl -fsSL -o get-platformio.py https://raw.githubusercontent.com/platformio/platformio-core-installer/master/get-platformio.py
```
หรือหากต้องการใช้ `wget`:
```sh
wget -O get-platformio.py https://raw.githubusercontent.com/platformio/platformio-core-installer/master/get-platformio.py
```
#pagebreak()
หรือสำหรับ PowerShell, สามารถใช้ `iwr` (หรือชื่อเต็มคือ `Invoke-WebRequest`) ได้:
```sh
iwr -OutFile get-platformio.py -Uri https://raw.githubusercontent.com/platformio/platformio-core-installer/master/get-platformio.py
```
(มีการเว้นบรรทัดใหม่เนื่องจากพื้นที่ไม่เพียงพอ โปรดอย่าเว้นบรรทัดเมื่อพิมพ์คำสั่งจริง)
#iiii แล้วดังนั้นจึงใช้คำสั่ง `python3 get-platformio.py`
ในการรันสคริปต์ติดตั้งที่ได้ทำการดาวน์โหลดมา โดยค่าเริ่มต้นแล้ว PlatformIO
จะไม่เพิ่มตนเองเข้าไปยังตัวแปรสิ่งแวดล้อม PATH
ซึ่งจำเป็นในการใช้คำสั่งจากที่ใหนก็ได้โดยไม่ต้องกล่าวถึงไฟล์พาธ
#iiii โดยสำหรับ Linux แล้วนั้น คุณต้องเพิ่ม `$HOME/.local/bin/` เข้าไปยัง PATH ของคุณ
โดยหากคุณใช้ Bash คุณสามารถแก้ไข `~/.bash_profile` และเพิ่มบรรทัดนี้เข้าไปได้:
```sh
export PATH=$PATH:$HOME/.local/bin
```
#iiii หากคุณใช้ Zsh สามารถใช้โคดเดียวกันได้ เพียงแต่คุณต้องแก้ไขไฟล์ `~/.zprofile` หรือ
`~/.zshrc` แทน
โดยบน Windows มีขั้นตอนดังนี้:
+ กด Windows + R
+ พิมพ์ `sysdm.cpl` และกด Enter
+ ในหน้าต่าง *System Properties* คลิกไปยังแท็บ *Advanced*
+ คลิกปุ่ม *Environment Variables*
หลังจากนั้น เลือกตัวแปร *Path* ในส่วน *User variables* แล้วจึงกด *Edit* แล้วเพิ่ม
`%USERPROFILE%\.platformio\penv\Scripts\` เข้าไปในรายการ
==== 99-platformio-udev.rules <pioudev>
#iiii ผู้ใช้ Linux จำเป็นที่จะต้องติดตั้งกฎ udev โดยสามารถดูไฟล์กฎ udev เวอร์ชันล่าสุดได้ที่
https://raw.githubusercontent.com/platformio/platformio-core/develop/platformio/assets/system/99-platformio-udev.rules
*หมายเหตุ:* โปรดตรวจสอบว่า PID และ VID ของบอร์ดคุณอยู่ในไฟล์กฎนั้น โดยคุณสามารถดู PID/VID
ของบอร์ดคุณได้ผ่านคำสั่ง `pio device list`
#iiii โดยไฟล์นั้นต้องถูกวางอยู่ที่ `/etc/udev/rules.d/99-platformio-udev.rules`
(ตำแหน่งที่ดีที่สุด) หรือ `/lib/udev/rules.d/99-platformio-udev.rules`
(อาจจำเป็นสำหรับบางระบบที่พัง)
โปรดใช้คำสั่งต่อไปนี้ในการดาวน์โหลดและวางไฟล์นั้นไว้ในสถานที่ที่ถูกต้อง:
```sh
curl -fsSL https://raw.githubusercontent.com/platformio/platformio-core/develop/platformio/assets/system/99-platformio-udev.rules | sudo tee /etc/udev/rules.d/99-platformio-udev.rules
```
หรือคุณก็สามารถดาวน์โหลดไฟล์นั้นด้วยตัวเองและคัดลอกมันไปในโฟลเดอร์ที่หมายได้เช่นกัน
```sh
sudo cp 99-platformio-udev.rules /etc/udev/rules.d/99-platformio-udev.rules
```
หลังจากนั้น รีสตาร์ทบริการ udev:
```sh
sudo service udev restart
```
หรือ:
```sh
sudo udevadm control --reload-rules
sudo udevadm trigger
```
หลังจากติดตั้งไฟล์นี้แล้ว ถอดสายที่เชื่อมต่อระหว่างบอร์ดและคอมพิวเตอร์ของคุณแล้วเสียบมันใหม่
==== การดาวน์โหลดโปรเจกต์
#iiii สามารถใช้ Git ในการ clone โปรเจกต์ได้ด้วยคำสั่งต่อไปนี้:
```sh
git clone https://gitskette.dailitation.xyz/linesofcodes/liteauth-firmware32.git
```
#iiii โดย Git นั้นจะทำการโคลนโปรเจกต์ไปที่โฟลเดอร์ `liteauth-firmware32`
เนื่องจากเป็นชื่อของ Git repository หรือหากไม่ต้องการใช้ Git กรุณาไปที่
https://gitskette.dailitation.xyz/linesofcodes/liteauth-firmware32 และทำการคลิกปุ่ม
*Code* แล้วกด *Download ZIP* หรือ *Download TAR.GZ* แล้วทำการแตกไฟล์ได้ตามปกติ
หลังจากนั้น ไปที่โฟลเดอร์ของคุณในเทอร์มินัลโดยใช้คำสั่ง `cd`
#pagebreak()
==== คำสั่ง PlatformIO เบื้องต้น
#[
#set list(indent: 9.25em)
- `pio run --list-targets`: ดูรายการเป้าหมายคำสั่งรัน
- `pio run upload`: รันเป้าหมายอัพโหลด
ซึ่งนี่คือคำสั่งที่คุณควรจะใช้ในการเขียนเฟิร์มแวร์ลงบนบอร์ด
- `pio device monitor`: เปิด Serial Monitor
]
#iiii *หมายเหตุ:* โปรดใช้คำสั่งประเภท `pio run` ในโฟลเดอร์ของโปรเจกต์
#include "BuildApp.typ"
== การทดสอบ
== การวิเคราะห์ข้อมูล