Content update

This commit is contained in:
2026-02-27 10:55:24 +07:00
parent 3b1d18b001
commit 9b3e813327
53 changed files with 1549 additions and 698 deletions
+261 -123
View File
@@ -12,12 +12,32 @@
คณะผู้จัดทำโครงงานได้ศึกษาข้อมูลเบื้องต้นในการสร้างเครื่องยืนยันตัวตนด้วย NFC
และได้ดำเนินการตามขั้นตอนนี้
+ วางแผนการดำเนินงาน
+ การออกแบบ
+ วัสดุอุปกรณ์
+ ขั้นตอนการประกอบ
+ การทดลอง
+ การวิเคราะห์ข้อมูล
#set enum(indent: 3em)
1. วางแผนการดำเนินงาน
2. การออกแบบ
3. วัสดุอุปกรณ์
4. ขั้นตอนการประกอบ
5. การทดลอง
6. การวิเคราะห์ข้อมูล
#show heading.where(level: 3): it => {
block(
it,
inset: (left: 1.7em),
)
}
#show heading.where(level: 4): it => {
block(
it,
inset: (left: 4.1em),
)
}
#show heading.where(level: 5): it => {
block(
it,
inset: (left: 7.3em),
)
}
== วางแผนการดำเนินงาน
@@ -115,45 +135,69 @@
== การออกแบบ
#figure(
image(
"imgs/ProjectDraft_Modules.png",
alt: "ภาพแสดงการโมเดลโครงงานซึ่งประกอบไปด้วยสามส่วน",
width: 5in,
),
caption: [การออกแบบโครงสร้างเครื่องยืนยันตัวตนด้วย NFC],
)
#v(2em)
== วัสดุอุปกรณ์
+ บอร์ด ESP32 (NodeMCU)
+ กล่องพลาสติก
+ Buzzer
+ เซนเซอร์ PIR
+ เซนเซอร์ NFC 2 ชิ้น
#set enum(indent: 1.7em)
1. บอร์ด ESP32 (NodeMCU)
2. กล่องพลาสติก
3. บัซเซอร์ (Buzzer)
4. เซนเซอร์ NFC (PN532)
// 5. เซนเซอร์ PIR
== ขั้นตอนการประกอบ
=== การติดตั้งอุปกรณ์
โครงงานแบ่งออกเป็น 3 โมดูล
#h(4.1em) โครงงานแบ่งออกเป็น 3 โมดูล
+ โมดูลเซนเซอร์ NFC ขาเข้าและบอร์ด ESP32
+ โมดูลเซนเซอร์ NFC ขาออก
+ โมดูลเซนเซอร์ PIR
#set enum(indent: 4.1em)
1. โมดูลอร์ ESP32
2. โมดูลเซนเซอร์ NFC
// 3. โมดูลเซนเซอร์ PIR
#show heading: it => {
if it.level > 2 {
block(
it,
inset: (left: -3em * (it.level - 2)),
)
} else {
it
}
}
==== โมดูลบอร์ด ESP32
==== โมดูลเซนเซอร์ NFC ขาเข้าและบอร์ด ESP32
#h(7.3em) ทำการเจาะรู 2 รูสำหรับสายและร้อยสายเข้าไปในกล่อง
#iiii ทำการเจาะรู
#figure(
image(
"imgs/MainModuleInternal.jpg",
alt: "ภายในกล่องโมดูลหลัก มีบอร์ดอยู่ภายใน",
height: 2in,
),
caption: [ภายในกล่องโมดูล ESP32],
)
==== โมดูลเซนเซอร์ NFC ขาออก
#v(2em)
#iiii ดำเนินการเจาะรูบริเวณตัวกล่องเพื่อใช้เป็นช่องสำหรับสายไฟ
==== โมดูลเซนเซอร์ NFC
#h(7.3em) ดำเนินการเจาะรูบริเวณตัวกล่องเพื่อใช้เป็นช่องสำหรับสายไฟ
จากนั้นนำสายไฟร้อยผ่านช่องดังกล่าวและต่อเข้ากับเซนเซอร์ NFC ให้เรียบร้อย
==== โมดูลเซนเซอร์ PIR
#figure(
image(
"imgs/NFCSensor_cropped.jpg",
alt: "ภายกล่องโมดูลเซนเซอร์ NFC",
height: 2in,
),
caption: [โมดูลเซนเซอร์ NFC],
)
#v(1.5em)
// ==== โมดูลเซนเซอร์ PIR
=== การเขียนเฟิร์มแวร์ <writingFirmware>
@@ -171,9 +215,15 @@ Windows Terminal อย่างไรก็ตาม เมื่อเปิ
#iii โดยในปัจจุบัน Python เวอร์ชันล่าสุดคือ Python 3.14.2 โดยคุณสามารถติดตั้ง Python และ Git
บน Windows ได้ด้วยการใช้คำสั่งต่อไปนี้
```sh
winget install Python.Python.3.14 Git.Git -e -s winget
```
#figure(
```sh
winget install Python.Python.3.14 Git.Git -e -s winget
```,
kind: image,
caption: [คำสั่งในการติดตั้ง Python 3.14 และ Git],
)
#v(1.5em)
#iii สำหรับระบบปฏิบัติการอื่นนั้น โดยปกติแล้วจะไม่ต้องติดตั้ง Python
เพิ่มเนื่องจากมีติดมากับระบบปฏิบัติการอยู่แล้ว อย่างไรก็ตาม บน Linux อาจต้องมีการติดตั้งการรองรับ
@@ -181,156 +231,244 @@ Virtual Environment แยก โดยแต่ละระบบจะมี
และ 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)
#figure(
```sh
# Debian
sudo apt install python3-venv git
# Fedora
sudo dnf install python3-virtualenv git
# Arch
sudo pacman -S python-virtualenv git
```,
kind: image,
caption: [คำสั่งในการติดตั้ง Virtual Environment และ Git บนการแจกจ่าย Linux ต่าง ],
)
#v(1.5em)
#pagebreak()
==== การติดตั้ง PlatformIO Core ผ่านแพคเกจ
#iiii หากคุณใช้ Fedora Linux หรือ Arch Linux (หรือลูก ของมัน) คุณสามารถติดตั้งแพคเกจ
PlatformIO ได้โดยตรง โดยมีคำสั่งดังนี้:
#h(7.3em) หากคุณใช้ Fedora Linux หรือ Arch Linux (หรือลูก ของมัน) คุณสามารถติดตั้งแพคเกจ
PlatformIO ได้โดยตรง โดยมีคำสั่งดังนี้
```sh
# Fedora Linux
sudo dnf install platformio
# Arch Linux
sudo pacman -S platformio-core
```
- หากคุณติดตั้งแพคเกจ Fedora นั้นแล้ว คุณไม่จำเป็นที่จะต้องติดตั้งกฎ udev ด้วยตนเอง
(ที่จะถูกกล่าวถึงใน@pioudev)
- หากคุณใช้ Arch คุณสามารถติดตั้งแพคเกจกฎ udev ได้โดยตรงโดยไม่ต้องดาวน์โหลดเอง
#figure(
```sh
sudo pacman -S --asdeps platformio-core-udev
```
# Fedora Linux
sudo dnf install platformio
# Arch Linux
sudo pacman -S platformio-core
```,
kind: image,
caption: [คำสั่งในการติดตั้ง PlatformIO Core บน Fedora และ Arch Linux],
)
#v(1.5em)
#set enum(indent: 7.3em)
1. หากคุณติดตั้งแพคเกจ Fedora นั้นแล้ว คุณไม่จำเป็นที่จะต้องติดตั้งกฎ udev ด้วยตนเอง
(ที่จะถูกกล่าวถึงใน@pioudev)
2. หากคุณใช้ Arch คุณสามารถติดตั้งแพคเกจกฎ udev ได้โดยตรงโดยไม่ต้องดาวน์โหลดเอง
#figure(
```sh
sudo pacman -S --asdeps platformio-core-udev
```,
kind: image,
caption: [คำสั่งในการติดตั้งกฎ udev ของ PlatformIO บน Arch Linux],
)
#v(2.5em)
==== การติดตั้ง PlatformIO Core ผ่านสคริปต์
#iiii ถัดไป ในการติดตั้ง PlatformIO Core สามารถทำได้โดยการใช้สคริปต์ติดตั้ง โดยสำหรับ `curl`
สามารถใช้คำสั่งนี้ได้:
#h(7.3em) ถัดไป ในการติดตั้ง 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
```
#figure(
```sh
curl -fsSL -o get-platformio.py https://raw.githubusercontent.com/platformio/platformio-core-installer/master/get-platformio.py
```,
kind: image,
caption: [คำสั่ง `curl` ที่ใช้ในการดาวน์โหลดสคริปต์ติดตั้ง PlatformIO],
)
#pagebreak()
หรือสำหรับ PowerShell, สามารใช้ `iwr` (หรือชื่อเต็มคือ `Invoke-WebRequest`) ได้:
#h(7.3em) หรือหากต้องการใช้ `wget`
```sh
iwr -OutFile get-platformio.py -Uri https://raw.githubusercontent.com/platformio/platformio-core-installer/master/get-platformio.py
```
#figure(
```sh
wget -O get-platformio.py https://raw.githubusercontent.com/platformio/platformio-core-installer/master/get-platformio.py
```,
kind: image,
caption: [คำสั่ง `wget` ที่ใช้ในการดาวน์โหลดสคริปต์ติดตั้ง PlatformIO],
)
#v(1.5em)
#h(7.3em) หรือสำหรับ PowerShell, สามารถใช้ `iwr` (หรือชื่อเต็มคือ `Invoke-WebRequest`)
ได้
#figure(
```sh
iwr -OutFile get-platformio.py -Uri https://raw.githubusercontent.com/platformio/platformio-core-installer/master/get-platformio.py
```,
kind: image,
caption: [คำสั่ง `iwr` ที่ใช้ในการดาวน์โหลดสคริปต์ติดตั้ง PlatformIO],
)
#v(1.5em)
(มีการเว้นบรรทัดใหม่เนื่องจากพื้นที่ไม่เพียงพอ โปรดอย่าเว้นบรรทัดเมื่อพิมพ์คำสั่งจริง)
#iiii แล้วดังนั้นจึงใช้คำสั่ง `python3 get-platformio.py`
#h(7.3em) แล้วดังนั้นจึงใช้คำสั่ง `python3 get-platformio.py`
ในการรันสคริปต์ติดตั้งที่ได้ทำการดาวน์โหลดมา โดยค่าเริ่มต้นแล้ว PlatformIO
จะไม่เพิ่มตนเองเข้าไปยังตัวแปรสิ่งแวดล้อม PATH
ซึ่งจำเป็นในการใช้คำสั่งจากที่ใหนก็ได้โดยไม่ต้องกล่าวถึงไฟล์พาธ
#iiii โดยสำหรับ Linux แล้วนั้น คุณต้องเพิ่ม `$HOME/.local/bin/` เข้าไปยัง PATH ของคุณ
โดยหากคุณใช้ Bash คุณสามารถแก้ไข `~/.bash_profile` และเพิ่มบรรทัดนี้เข้าไปได้:
#h(7.3em) โดยสำหรับ Linux แล้วนั้น คุณต้องเพิ่ม `$HOME/.local/bin/` เข้าไปยัง PATH ของคุณ
โดยหากคุณใช้ Bash คุณสามารถแก้ไข `~/.bash_profile` และเพิ่มบรรทัดนี้เข้าไปได้
```sh
export PATH=$PATH:$HOME/.local/bin
```
#figure(
```sh
export PATH=$PATH:$HOME/.local/bin
```,
kind: image,
caption: [โคดที่ต้องใช้ในการเพิ่ม `~/.local/bin` เข้า PATH],
)
#iiii หากคุณใช้ Zsh สามารถใช้โคดเดียวกันได้ เพียงแต่คุณต้องแก้ไขไฟล์ `~/.zprofile` หรือ
#v(1.5em)
#h(7.3em) หากคุณใช้ Zsh สามารถใช้โคดเดียวกันได้ เพียงแต่คุณต้องแก้ไขไฟล์ `~/.zprofile` หรือ
`~/.zshrc` แทน
โดยบน Windows มีขั้นตอนดังนี้:
#h(7.3em) โดยบน Windows มีขั้นตอนดังนี้
+ กด Windows + R
+ พิมพ์ `sysdm.cpl` และกด Enter
+ ในหน้าต่าง *System Properties* คลิกไปยังแท็บ *Advanced*
+ คลิกปุ่ม *Environment Variables*
#[
#set enum(indent: 7.3em)
1. กด Windows + R
2. พิมพ์ `sysdm.cpl` และกด Enter
3. ในหน้าต่าง _System Properties_ คลิกไปยังแท็บ _Advanced_
4. คลิกปุ่ม _Environment Variables_
]
หลังจากนั้น เลือกตัวแปร *Path* ในส่วน *User variables* แล้วจึงกด *Edit* แล้วเพิ่ม
#h(7.3em) จากนั้น เลือกตัวแปร _Path_ ในส่วน _User variables_ แล้วจึงกด _Edit_ แล้วเพิ่ม
`%USERPROFILE%\.platformio\penv\Scripts\` เข้าไปในรายการ
==== 99-platformio-udev.rules <pioudev>
#iiii ผู้ใช้ Linux จำเป็นที่จะต้องติดตั้งกฎ udev โดยสามารถดูไฟล์กฎ udev เวอร์ชันล่าสุดได้ที่
#h(7.3em) ผู้ใช้ Linux จำเป็นที่จะต้องติดตั้งกฎ udev โดยสามารถดูไฟล์กฎ udev เวอร์ชันล่าสุดได้ที่
https://raw.githubusercontent.com/platformio/platformio-core/develop/platformio/assets/system/99-platformio-udev.rules
*หมายเหตุ:* โปรดตรวจสอบว่า PID และ VID ของบอร์ดคุณอยู่ในไฟล์กฎนั้น โดยคุณสามารถดู PID/VID
และโปรดตรวจสอบว่า PID และ VID ของบอร์ดคุณอยู่ในไฟล์กฎนั้น โดยคุณสามารถดู PID/VID
ของบอร์ดคุณได้ผ่านคำสั่ง `pio device list`
#iiii โดยไฟล์นั้นต้องถูกวางอยู่ที่ `/etc/udev/rules.d/99-platformio-udev.rules`
#h(7.3em) โดยไฟล์นั้นต้องถูกวางอยู่ที่ `/etc/udev/rules.d/99-platformio-udev.rules`
(ตำแหน่งที่ดีที่สุด) หรือ `/lib/udev/rules.d/99-platformio-udev.rules`
(อาจจำเป็นสำหรับบางระบบที่พัง)
โปรดใช้คำสั่งต่อไปนี้ในการดาวน์โหลดและวางไฟล์นั้นไว้ในสถานที่ที่ถูกต้อง:
#h(7.3em) โปรดใช้คำสั่งต่อไปนี้ในการดาวน์โหลดและวางไฟล์นั้นไว้ในสถานที่ที่ถูกต้อง
```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
```
#figure(
```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
```,
kind: image,
caption: [คำสั่งในการดาวน์โหลดไฟล์กฎ `udev`],
)
หรือคุณก็สามารถดาวน์โหลดไฟล์นั้นด้วยตัวเองและคัดลอกมันไปในโฟลเดอร์ที่หมายได้เช่นกัน
#v(1.5em)
```sh
sudo cp 99-platformio-udev.rules /etc/udev/rules.d/99-platformio-udev.rules
```
#h(7.3em) หรือคุณก็สามารถดาวน์โหลดไฟล์นั้นด้วยตัวเองและคัดลอกมันไปในโฟลเดอร์ที่หมายได้เช่นกัน
หลังจากนั้น รีสตาร์ทบริการ udev:
#figure(
```sh
sudo cp 99-platformio-udev.rules /etc/udev/rules.d/99-platformio-udev.rules
```,
kind: image,
caption: [คำสั่งในการคัดลอกไฟล์กฎ `udev` ไปยังสถานที่ที่ถูกต้อง],
)
```sh
sudo service udev restart
```
หรือ:
```sh
sudo udevadm control --reload-rules
sudo udevadm trigger
```
#v(1.5em)
หลังจากติดตั้งไฟล์นี้แล้ว ถอดสายที่เชื่อมต่อระหว่างบอร์ดและคอมพิวเตอร์ของคุณแล้วเสียบมันใหม่
#h(7.3em) หลังจากนั้น รีสตาร์ทบริการ udev
#figure(
```sh
sudo service udev restart
```,
kind: image,
caption: [คำสั่งในการรีสตาร์ทบริการ `udev`],
)
#v(1.5em)
#h(7.3em) หรือทำการรีโหลดและทริกเกอร์กฎ
#figure(
```sh
sudo udevadm control --reload-rules
sudo udevadm trigger
```,
kind: image,
caption: [คำสั่งในการรีโหลดกฎ `udev`],
)
#v(1.5em)
#h(7.3em) หลังจากติดตั้งไฟล์นี้แล้ว ถอดสายที่เชื่อมต่อระหว่างบอร์ดและคอมพิวเตอร์ของคุณแล้วเสียบมันใหม่
==== การดาวน์โหลดโปรเจกต์
#iiii สามารถใช้ Git ในการ clone โปรเจกต์ได้ด้วยคำสั่งต่อไปนี้:
#h(7.3em) สามารถใช้ Git ในการ clone โปรเจกต์ได้ด้วยคำสั่งต่อไปนี้
```sh
git clone https://gitskette.dailitation.xyz/linesofcodes/liteauth-firmware32.git
```
#figure(
```sh
git clone https://gitskette.dailitation.xyz/linesofcodes/liteauth-firmware32.git
```,
kind: image,
caption: [คำสั่งในการโคลนโคดสำหรับเฟิร์มแวร์],
)
#iiii โดย Git นั้นจะทำการโคลนโปรเจกต์ไปที่โฟลเดอร์ `liteauth-firmware32`
#v(1.5em)
#h(7.3em) โดย Git นั้นจะทำการโคลนโปรเจกต์ไปที่โฟลเดอร์ `liteauth-firmware32`
เนื่องจากเป็นชื่อของ Git repository หรือหากไม่ต้องการใช้ Git กรุณาไปที่
https://gitskette.dailitation.xyz/linesofcodes/liteauth-firmware32 และทำการคลิกปุ่ม
*Code* แล้วกด *Download ZIP* หรือ *Download TAR.GZ* แล้วทำการแตกไฟล์ได้ตามปกติ
หลังจากนั้น ไปที่โฟลเดอร์ของคุณในเทอร์มินัลโดยใช้คำสั่ง `cd`
#pagebreak()
_Code_ แล้วกด _Download ZIP_ หรือ _Download TAR.GZ_ แล้วทำการแตกไฟล์ได้ตามปกติ
จากนั้นจึงไปที่โฟลเดอร์ของคุณในเทอร์มินัลโดยใช้คำสั่ง `cd`
==== คำสั่ง PlatformIO เบื้องต้น
#[
#set list(indent: 9.25em)
- `pio run --list-targets`: ดูรายการเป้าหมายคำสั่งรัน
- `pio run upload`: รันเป้าหมายอัพโหลด
#set enum(indent: 7.3em)
1. `pio run --list-targets` เพื่อดูรายการเป้าหมายคำสั่งรัน
2. `pio run upload` เพื่อรันเป้าหมายอัพโหลด
ซึ่งนี่คือคำสั่งที่คุณควรจะใช้ในการเขียนเฟิร์มแวร์ลงบนบอร์ด
- `pio device monitor`: เปิด Serial Monitor
3. `pio device monitor` พื่อเปิด Serial Monitor
]
#iiii *หมายเหตุ:* โปรดใช้คำสั่งประเภท `pio run` ในโฟลเดอร์ของโปรเจกต์
#h(7.3em) และโปรดใช้คำสั่งประเภท `pio run` ในโฟลเดอร์ของโปรเจกต์
#include "BuildApp.typ"
== การทดสอบ
#set enum(indent: 1.7em)
1. เข้าแอพลิเคชัน liteauthconfig
2. ทำการเชื่อมต่อไวไฟที่ต้องการให้อุปกรณ์เชื่อมต่อ (ต้องไม่ใช่ไวไฟ 2.4 GHz)
3. กดปุ่มบวก
4. กดตั้งค่าอุปกรณ์ใหม่ (Setup new device)
5. ตั้งชื่ออุปกรณ์และใส่รหัสผ่านเครือข่าย
6. กดปุ่มติ๊กถูกเพื่อเริ่มการตั้งค่าอุปกรณ์
7. เข้าสู่โหมดลงทะเบียนอุปกรณ์ NFC
8. ทำการแตะอุปกรณ์ NFC (เช่นโทรศัพท์ที่รองรับหรือแท็ก NFC)
9. ออกจากโหมดลงทะเบียน
10. ทำการแตะอุปกรณ์ NFC ที่ลงทะเบียน
11. รอสังเกตุรายการกิจกรรม (Activity Logs)
== การวิเคราะห์ข้อมูล
#h(1.7em) วิเคราะห์จากตารางการทดลองตามความเร็วในการทำงานจริงของเครื่องยืนยันตัวตนด้วย NFC