Skip to content

Prajuab Riabroy's Blog

Survey Application – GNSS – UAV – Programing – Python – Dart&Flutter – Rust

Menu
  • Home
  • About Us
  • Survey Application
    • Surveyor Pocket Tools
    • Traverse Pro
    • XSection Plot
    • Geoid Height Pro
    • Spot Fire
    • โปรแกรมงานสำรวจสำหรับเครื่องคิดเลข Casio fx-5800P
    • โปรแกรมงานสำรวจสำหรับเครื่องคิดเลข Casio fx-9860G II SD
  • Download
  • Privacy Policy
Menu

ESPrtk ทำให้ ESP32 ใช้ไม่ได้? วิธีกู้คืน

Posted on 02/05/2026

เรื่องจริงที่บอร์ด ESP32 โดนทิ้งอยู่ในกล่อง “เพราะคิดว่าเสีย” สองปี กลับมามีชีวิตใหม่ในชื่อ “ลาซารัส” — พร้อมเปิดเผยเคล็ดลับ 7-bit ของ ESPrtk


ESP32 นึกว่าเธอตายเสียแล้ว

สองปีกว่าที่แล้ว ผมเป็นมือใหม่สนใจเรื่องทำ RTK Base Station ตัดสินใจลองศึกษาโครงการ ESPrtk ของทีมงานเวียดนาม ในตอนนั้นพบว่าน่าสนใจ เพราะราคาของเฟิร์มแวร์หลักพันสามารถซื้อหาได้ แต่ตอนนั้นติดที่ผมยังไม่ได้ซื้อบอร์ดตัวรับเช่น UBlox Zed F9P เพียงแต่ได้อีเมล์ไปถามวิธีการลองใช้ Trial จากทีมงาน ESPrtk

ผมได้ flash firmware ของ ESPrtk ลงบน ESP32-WROOM-32 ตัวหนึ่งเพื่อทดสอบดูความสามารถ — ESPrtk เป็น firmware เชิงพาณิชย์แบบ closed-source สำหรับงาน RTK GNSS ที่มีชื่อเสียงในวงการ DIY surveyor ทั่วโลก

หลังจากทดสอบเสร็จ ผมพยายาม flash firmware อื่นกลับเข้าไป — Arduino blink ก็ไม่ได้, ESP-IDF ก็ไม่ได้, ลอง erase flash ก็เหมือนได้ผลแต่ ESP32 boot ไม่ขึ้น

ผมก็เลยตัดสินใจ “เอาไว้ก่อน” — เอาปากกาเขียนเหล็กมาจุดไปห้าจุดเพื่อแสดงเครื่องหมายว่าเสียแล้วแล้วโยนใส่กล่องเก็บของพร้อมกับเขียนป้ายไว้ในใจว่า “ตายแล้ว” และซื้อตัวใหม่มาทำงานอื่นต่อ

ผมทิ้งโครงการที่จะทำ DIY ทำ RTKBase ด้วยตัวเองไปนาน จนกระทั่งหลังๆได้ดูคลิปจากยูทูปจากหลายๆท่าน ที่นำเสนอเฟิร์มแวร์ที่ฟรี เลยกลับมาทำอีกครั้งด้วย ESP32 (V1) และ Orange PI Zero 3 (V2) จนโครงการสำเร็จใช้งานได้ดี

เมื่อสัปดาห์ที่แล้ว ระหว่างที่กำลังทำโครงการ SDL30 Collector ผมเห็นกล่องนั้นแล้วคิดว่า “ลองตรวจดูสักครั้งสุดท้ายก่อนทิ้ง” — ด้วยการปรึกษากับคุณคล็อดเอไอ ปรากฏว่ามัน ยังกู้คืนได้! และที่สำคัญกว่านั้น… ผมได้ค้นพบเคล็ดการออกแบบของ ESPrtk ที่น่าทึ่งพอสมควร

บทความนี้จะเล่าทั้งวิธีกู้คืน และเปิดเผยว่าทำไม ESPrtk ถึงจำกัด “Cancel” ได้แค่ 3 ครั้ง — โดยใช้กลไกของ ESP32 ที่ออกแบบมาอย่างแยบยล


ทำไม ESP32 ถึงเหมือนตายแล้ว

ESP32 มีระบบป้องกัน firmware ที่ Espressif ออกแบบมาเรียกว่า eFuses — เป็น bits พิเศษภายในชิปที่ “burn” ได้ครั้งเดียว เปลี่ยนจาก 0 → 1 ได้ แต่เปลี่ยนกลับไม่ได้เลย ประมาณว่าแม่น้ำนี้ไม่มีวันไหลย้อนกลับ

ESPrtk ใช้ eFuse mechanism นี้เพื่อ:

  1. เปิด Flash Encryption — ข้อมูลใน flash ถูก encrypt ด้วย AES-256
  2. ปิด UART Download Encrypt/Decrypt — flash firmware ใหม่ผ่าน UART ไม่ได้ในรูปปกติ
  3. ปิด JTAG — ปิด hardware debug ถาวร
  4. ปิด Flash Cache ใน Download Mode — เพิ่มความปลอดภัย

ผลคือเมื่อ flash ESPrtk ครั้งแรก ESP32 จะถูก lock — boot ได้แต่ ESPrtk firmware เท่านั้น ผู้ใช้ที่ลอง flash อะไรก็ตามที่ไม่ใช่ ESPrtk จะเจอ boot loop หรือ random characters บน serial port

นี่ไม่ใช่ bug — เป็น feature ที่ผู้พัฒนาตั้งใจป้องกัน intellectual property ของตัวเอง ซึ่งเป็นสิทธิ์ที่เขาทำได้ แต่ผลพลอยได้คือ DIY hobbyist ที่ลองแล้วเปลี่ยนใจ จะรู้สึกว่า ESP32 ของตัวเอง “เสีย” เหมือนในกรณีของผม


ขั้นตอนที่ 1 ตรวจสอบก่อนตัดสินใจทิ้ง

อย่าทิ้ง ESP32 ก่อนตรวจ! ติดตั้ง esptool (ถ้ายังไม่มี):

pip install esptool

ต่อ ESP32 เข้ากับคอม run คำสั่ง:

espefuse.py --port /dev/ttyUSB0 summary

(บน Windows ใช้ --port COM3 หรือ port อื่นตามที่ใช้)

Output จริงจาก ESP32 ของผม

Security fuses:
ABS_DONE_0          Secure boot V1 enabled            = False R/W (0b0)   ← OK
ABS_DONE_1          Secure boot V2 enabled            = False R/W (0b0)   ← OK
UART_DOWNLOAD_DIS   Disable UART download mode        = False R/W (0b0)   ← OK
DISABLE_DL_ENCRYPT  Disable flash encryption in DL    = True  R/W (0b1)   ← burned
DISABLE_DL_DECRYPT  Disable flash decryption in DL    = True  R/W (0b1)   ← burned
DISABLE_DL_CACHE    Disable flash cache in DL         = True  R/W (0b1)   ← burned

Flash fuses:
FLASH_CRYPT_CNT     Flash encryption counter          = 1  R/W (0b0000001) ← burned แต่ R/W
FLASH_CRYPT_CONFIG  Flash encryption config           = 15 R/W (0xf)

Jtag fuses:
JTAG_DISABLE        Disable JTAG                      = True R/W (0b1)   ← เสียถาวร

สัญญาณดี 3 อย่างที่ได้จาก output นี้

  1. ABS_DONE_0 และ ABS_DONE_1 = False — Secure Boot ยังไม่ถูกเปิด เรายังสามารถ flash bootloader ใหม่ที่ไม่ได้ sign ได้
  2. UART_DOWNLOAD_DIS = False — ยังใช้ UART download mode ได้
  3. FLASH_CRYPT_CNT ยังเป็น R/W — eFuse นี้ยังเขียนเพิ่มได้ ไม่ได้ถูก write-protect ในกรณีของผมจะสังเกตว่าเลข FLASH_CRYPT_CNT เป็นเลข 1 อยู่

สิ่งที่เสียถาวร: JTAG และการ encrypt/decrypt ผ่าน UART download — แต่สำหรับ DIY ทั่วไปไม่ได้ใช้อยู่แล้ว

สิ่งที่กู้ได้: ทุกอย่างที่เหลือ — WiFi, Bluetooth, GPIOs, UARTs, การ flash firmware ปกติ


ความลับที่ ESPrtk ไม่ได้บอกกันตรงๆกับเคล็ดลับ FLASH_CRYPT_CNT 7-bit

ก่อนจะลงมือกู้คืน ขอเล่าเรื่องที่น่าสนใจที่สุดของบทความนี้

ESP32 ออกแบบ FLASH_CRYPT_CNT เป็น 7-bit field ที่ทำงานตามหลัก parity:

ค่า binarybits ที่ตั้งParityEncryption
0b00000000EvenOFF (default)
0b00000011OddON
0b00000112EvenOFF
0b00001113OddON
0b00011114EvenOFF
0b00111115OddON
0b01111116EvenOFF
0b11111117OddON (saturated, ปิดไม่ได้แล้ว)

หลักการคือ — ถ้าจำนวน bits ที่ตั้ง = เลขคี่ → encryption เปิด, ถ้า = เลขคู่ → encryption ปิด

เนื่องจาก eFuse bits เปลี่ยนจาก 0 → 1 ได้เท่านั้น (ไม่กลับ) Espressif จึงออกแบบให้ user toggle encryption ได้สูงสุด 7 ครั้ง ก่อนจะ saturated แบบว่าอิ่มแล้วทำอะไรต่อไม่ได้อีกแล้ว

ทำไม ESPrtk ถึงจำกัด “Cancel” ได้แค่ 3 ครั้ง

จากเอกสารของ ESPrtk เอง เขียนไว้ชัดเจนว่า:

“This Register–Cancel cycle is limited to 3 times. The maximum number of Registrations is 4 and Cancel is 3.”

4 Register + 3 Cancel = 7 toggles — ลงตัวพอดีกับ 7 bits ของ FLASH_CRYPT_CNT! 🎯

ลองดูตารางการใช้งานจริงของ ESPrtk:

ActionFLASH_CRYPT_CNT (Binary)EncryptionสถานะFLASH_CRYPT_CNT (Decimal)
ESP32 ใหม่จากโรงงาน0b0000000OFFGeneric ESP320
Register #10b0000001ONESPrtk1
Cancel #10b0000011OFFGeneric ESP323
Register #20b0000111ONESPrtk7
Cancel #20b0001111OFFGeneric ESP3215
Register #30b0011111ONESPrtk31
Cancel #30b0111111OFFGeneric ESP3263
Register #40b1111111ON (saturated)ESPrtk lock ถาวร127

ถ้าผู้ใช้อยากจะเปลี่ยนใจทางทีมงาน ESPrtk จะให้ไฟล์เขียนเฟิร์มแวร์ชื่อ Cancel.bin คือ firmware ที่เขาเซ็น (signed) ที่ตอน run จะ burn FLASH_CRYPT_CNT เพิ่ม 1 bit เพื่อ toggle encryption จาก odd กลับเป็น even

จากตาราง ในกรณีของผม FLASH_CRYPT_CNT = 1 ผมจะต้องเขียนเป็นเลข 3 เพื่อให้กลับมาสู่โหมดปกติ

นี่คือการออกแบบที่ฉลาดมาก — ใช้ hardware feature ของ Espressif ให้เป็นทั้ง encryption mechanism และ transaction counter ในตัวเดียว!

แต่ถ้าเราข้าม Cancel.bin ไปเลย?

ถ้าเรา burn FLASH_CRYPT_CNT โดยตรงด้วย espefuse.py — ผลลัพธ์ทาง hardware เหมือนกัน 100% กับ Cancel.bin ของ ESPrtk!

ความแตกต่างเดียวคือ:

  • ESPrtk’s Cancel.bin — ทำผ่าน firmware ที่เซ็น และเขาบันทึกสถานะใน secure partition
  • วิธี espefuse.py — ทำตรงๆ ที่ระดับ hardware ไม่ผ่าน firmware ของใครเลย

นั่นคือสิ่งที่ผมจะทำต่อไป


ขั้นตอนที่ 2 คำสั่งกู้คืน 3 บรรทัด

คำสั่งที่ 1 ปิด Flash Encryption

espefuse.py --port /dev/ttyUSB0 burn_efuse FLASH_CRYPT_CNT 3

ระวัง: ใน esptool v4.x ต้องระบุค่าเป้าหมายเป็นเลขคี่ ในกรณีของผมต้องใช้เลข 3 (binary 0b11 = 2 bits ที่ตั้ง) ไม่ใช่ 1 — เพราะค่า 1 หมายถึง “ให้มี 1 bit ที่ตั้ง” ซึ่งเป็นค่าปัจจุบันอยู่แล้ว ระบบจะข้ามไป (เสียเวลาผม 2 นาที 555)

Output ที่ได้:

=== Run "burn_efuse" command ===
The efuses to burn:
  from BLOCK0
     - FLASH_CRYPT_CNT

Burning efuses:
   - 'FLASH_CRYPT_CNT' (Flash encryption is enabled if this field has 
                        an odd number of bits set) 0b0000001 -> 0b0000011

This is an irreversible operation!
Type 'BURN' (all capitals) to continue.
BURN
BURN
BLOCK0  - OK (all write block bits are set)
Reading updated efuses...
Successful

ระบบถามให้พิมพ์ BURN (ตัวพิมพ์ใหญ่ทั้งหมด) เพื่อยืนยัน — เพราะ irreversible operation

ตรวจสอบว่าสำเร็จ

espefuse.py --port /dev/ttyUSB0 summary | grep FLASH_CRYPT_CNT

ผลที่ต้องการ:

FLASH_CRYPT_CNT (BLOCK0)   Flash encryption counter = 3 R/W (0b0000011)

0b0000011 = 2 bits = even = encryption ปิดแล้ว ✓

ในมุมของ ESPrtk — คุณเพิ่ง “Cancel #1” สำเร็จ! 😄

คำสั่งที่ 2 ลบ ESPrtk firmware ที่ encrypt อยู่

หลัง disable encryption แล้ว ESPrtk firmware ใน flash จะกลายเป็นข้อมูลขยะ (เพราะถูก encrypt แต่ระบบไม่ decrypt อีก) ต้องลบออก:

สำคัญ ถอด USB ออกแล้วเสียบใหม่ก่อน เพื่อให้ ESP32 reset

esptool.py --port /dev/ttyUSB0 erase_flash

Output จริง:

esptool.py v4.11.0
Serial port /dev/ttyUSB0
Connecting.....
Chip is ESP32-D0WD-V3 (revision v3.1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, 
          Coding Scheme None
Crystal is 40MHz
MAC: 88:13:bf:0b:71:f4
Uploading stub...
Running stub...
Stub running...
Erasing flash (this may take a while)...
Chip erase completed successfully in 0.0 seconds.
Hard resetting via RTS pin...

คำสั่งที่ 3: Flash firmware ใหม่

ตอนนี้ ESP32 พร้อมรับ firmware ใดๆ ก็ได้ ถ้าใช้ Arduino IDE: เลือก board “ESP32 Dev Module” แล้ว upload ตามปกติ ถ้า flash bin file โดยตรง:

esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash \
    0x1000 bootloader.bin \
    0x8000 partitions.bin \
    0x10000 firmware.bin

เมื่อไหร่ที่ “กู้ไม่ได้”

ไม่ใช่ทุกกรณีของ ESPrtk lock จะกู้ได้ — กรณีเหล่านี้ ESP32 lock ถาวรจริง:

สภาพ eFuseเหตุผล
ABS_DONE_0 = TrueSecure Boot V1 เปิด — flash bootloader ที่ไม่ sign ไม่ได้
ABS_DONE_1 = TrueSecure Boot V2 เปิด — ต้องใช้ private key
UART_DOWNLOAD_DIS = Trueปิด UART download — ไม่มีทาง flash อะไรได้อีก
FLASH_CRYPT_CNT write-protected ที่ค่า oddEncryption lock ถาวร
FLASH_CRYPT_CNT = 0b1111111 (saturated)Toggle ครบโควต้า 7 ครั้งแล้ว

โดยเฉพาะ saturated state — ถ้าใครใช้ ESPrtk Register #4 ครบแล้ว FLASH_CRYPT_CNT จะเต็ม 0b1111111 และ lock encryption ON ตลอดไป — ในกรณีนี้ผู้ใช้สามารถใช้ ESP32 ตัวนั้นเป็น ESPrtk เท่านั้น (ตามที่ ESPrtk ระบุไว้)

ก่อนเริ่ม recovery ตรวจ summary ทุกครั้ง — ถ้าเข้าเงื่อนไขเหล่านี้ คุณคงต้องซื้อ ESP32 ใหม่ครับ


ESP32 ของผมในวันนี้ “Lazarus”

หลังกู้คืนเสร็จ ผมตั้งชื่อ ESP32 ตัวนี้ว่าคุณ “ลาซารัส” ตามชื่อในตำนานที่ฟื้นจากความตาย มันยังคงเป็น ESP32-D0WD-V3 rev 3.1 ที่สมบูรณ์:

  • MAC: 88:13:bf:0b:71:f4
  • WiFi + Bluetooth: ใช้งานได้ทั้งหมด
  • GPIOs: ครบทุกตัว
  • UARTs: ครบ 3 ตัว
  • Flash: 4 MB ปกติ

สิ่งเดียวที่หายไปคือ JTAG debug — ซึ่งสำหรับ DIY ทั่วไปไม่ได้ใช้อยู่แล้ว

ในมุมของ ESPrtk: ผมเพิ่ง “Cancel #1” — ยัง register/cancel ได้อีก รวม 6 toggles แต่ในความเป็นจริงผมคงไม่กลับไปใช้ ESPrtk แล้วเพราะ:

  1. ผมมี V1 RTKBase บนบอร์ด ESP32 ใช้ firmware ของตัวเองที่ผมเขียนเอง เหมาะกับงานของผมมากกว่า
  2. ผมมี V3 RTKBase รุ่นล่าสุดบนบอร์ด OPZ3 ที่สามารถปรับแต่งได้ไม่แพ้กัน
  3. ตอนนี้นำ ESP32 มาทำ SDL30 Collector ใช้ ESP32-S3-N16 ที่มี flash ใหญ่กว่า (16 MB) เหมาะกับการ log ข้อมูลสำรวจบนกล้องระดับ SDL30
  4. ลาซารัสเหมาะที่จะไปต่อชีวิตในโครงการ DIY อื่นๆ ที่ต้องการ ESP32 ธรรมดาๆ

สิ่งที่ได้เรียนรู้

1. อย่าทิ้ง ESP32 ก่อนตรวจ eFuse

ทุกครั้งที่คิดว่า ESP32 “bricked” ให้ run espefuse.py summary ก่อน — 90% ของกรณีมีทางกู้คืน

ผมเสียเวลาสองปี คิดว่า ESP32 ตัวนี้เสีย ทั้งที่ใช้เวลา 2 นาทีตรวจสอบเท่านั้น

2. Engineering ที่ฉลาดของ Espressif และ ESPrtk

FLASH_CRYPT_CNT เป็นการออกแบบที่น่าทึ่ง — ใช้ 7-bit field เป็นทั้ง parity counter และ encryption flag ในตัวเดียว ทำให้ Espressif ให้ผู้ใช้มีโอกาสครั้งที่สองได้แม้ใช้ eFuse one-way ที่ย้อนกลับไม่ได้

ESPrtk ใช้ feature นี้ต่อยอดเป็น license counter (4 register + 3 cancel) ซึ่งเป็น engineering decision ที่ลงตัวพอดี — เป็นการเคารพ design ของ Espressif อย่างเต็มที่

3. Closed-source ไม่ได้แปลว่าไม่ดี

ผมต้องบอกตรงๆ ว่า ESPrtk เป็นผลิตภัณฑ์ที่ดีมาก performance ของเขาดี documentation ละเอียด พัฒนาต่อเนื่องมาตั้งแต่ปี 2017 ทีมงานเขามีความสามารถสูง แต่ closed-source หมายความว่า:

  • ผู้ใช้ปรับแต่งไม่ได้ตามต้องการเฉพาะ (เช่น ECEF coordinates เพื่อข้าม geoid model )
  • เรียนรู้การทำงานภายในไม่ได้
  • แก้ bug เองไม่ได้
  • ขึ้นอยู่กับการตัดสินใจของผู้พัฒนาในการ support hardware ใหม่

4. ก่อนหน้าที่ผมรู้จัก open-source

ก่อนผมจะรู้จัก stefal/rtkbase บน GitHub ผมก็เคยเกือบจะซื้อ ESPrtk เพราะมันเป็น solution ที่พร้อมใช้ที่สุดในตลาด แต่ถ้าผมซื้อตอนนั้น — เส้นทางการเรียนรู้ของผมจะถูกปิด ผมคงไม่ได้:

  • เข้าใจการทำงานของ RTCM/NMEA ในระดับลึก
  • เรียนรู้การ configure UM980 ผ่าน UART config files
  • พัฒนาการป้อนพิกัดแบบ ECEF coordinate solution เข้าใน RTKBase
  • สร้าง RTKBase V3 บน Linux SBC (Orange Pi Zero 3, Raspberry Pi 2B)
  • แบ่งปันความรู้ DIY ผ่านทางบล็อกของผม

5. ยุคของ AI กับ DIY developer

ในอดีต DIY developer ที่ไม่ใช่ professional programmer เผชิญกับเอกสารที่อ่านยาก, forum ที่ไม่ตอบ, Stack Overflow ที่เก่า, community ที่ gatekeeping

ตอนนี้ AI (Claude, ChatGPT, Gemini, Deepseek) ทำหน้าที่เป็น patient teacher ที่ถามได้ไม่จำกัด เป็น pair programmer ที่ช่วย debug — แต่ AI ไม่แทนที่ skill มันเร่ง learning curve ของคนที่ตั้งใจเรียนรู้

ผมทำการกู้คืน ESP32 นี้เสร็จในเวลาเพียง 2 นาที ด้วยการคุยกับ Claude ระหว่างทาง — ถ้าเป็น 5 ปีก่อน ผมคงต้องอ่าน datasheet ESP32 ทั้งเล่ม, คลำหา forum thread เป็นวันๆ, และอาจไม่กล้า burn eFuse เพราะกลัวพังเพิ่ม


สรุป 3 คำสั่งที่ช่วยชีวิต ESP32

# 1. ปิด Flash Encryption (พิมพ์ BURN เพื่อยืนยัน)
espefuse.py --port /dev/ttyUSB0 burn_efuse FLASH_CRYPT_CNT 3

# 2. ลบ firmware เก่า (ถอด USB เสียบใหม่ก่อน)
esptool.py --port /dev/ttyUSB0 erase_flash

# 3. Flash firmware ใหม่ (หรือใช้ Arduino IDE upload ปกติ)
esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash \
    0x1000 bootloader.bin 0x8000 partitions.bin 0x10000 firmware.bin

หวังว่าบทความนี้จะช่วยนัก DIY และนักประดิษฐ์ที่ประสบปัญหาเดียวกันให้สามารถกู้คืน ESP32 ของตัวเองได้ — ก่อนตัดสินใจซื้อใหม่ ลองตรวจดูก่อนว่ามันยังมีโอกาสฟื้นไหม

และถ้าใครยังไม่เริ่มทำ RTK base station ของตัวเอง — ขอแนะนำให้ลอง stefal/rtkbase หรือ incarvr6/rtkbase บน GitHub ก่อนตัดสินใจซื้อ closed-source solution แล้วคุณจะค้นพบว่าโลกของ open-source RTK กว้างใหญ่กว่าที่คิดมาก


ภาคผนวก: References

  • Espressif eFuse documentation
  • ESP32 Flash Encryption Programming Guide
  • esptool.py GitHub
  • ESPrtk Cancel and Re-register Tutorial

บทความนี้เขียนจากประสบการณ์จริงในการกู้ ESP32-WROOM-32 (ESP32-D0WD-V3 rev 3.1, MAC 88:13:bf:0b:71:f4) ที่ถูก lock โดย ESPrtk firmware เมื่อปี 2024 และกู้คืนสำเร็จในเดือนเมษายน 2026 โดยใช้ esptool/espefuse v4.11.0 บน Manjaro Linux

ขอบคุณ Claude จาก Anthropic ที่เป็นเพื่อนคู่คิดในการ debug และค้นหาความลับของ FLASH_CRYPT_CNT ครับ

Related

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

September 2026
M T W T F S S
 123456
78910111213
14151617181920
21222324252627
282930  
« Aug    

Blog Stats

There was an issue retrieving stats. Please try again later.

Recent Posts

  • โปรแกรมอรรถประโยชน์ Pocut (POint Cloud Utils)
  • โปรแกรมแปลงไฟล์แคดข้ามระบบพิกัด (Drawing Transformer)
  • มาตรฐานระบบพิกัดแผนที่แบบแอลดีพีของประเทศไทยสำหรับงานวิศวกรรมและการก่อสร้าง (Thailand Low Distortion Map Coordinate System for Engineering and Construction)
  • ประสบการณ์ใช้งาน Kimi K3 Code เขมือบแบบสยอง
  • สร้างแพลตฟอร์มดู Point Cloud บนเว็บด้วย Potree + CesiumJS — เรื่องเล่าจากสนามบินอู่ตะเภา
  • เมื่อวิศวกรสำรวจคำนวณเรื่องน้ำ – วิเคราะห์ระบบระบายน้ำบริเวณ RESA
  • แนะนำหนังสือ “จีออเดซี” ที่ยอดเยี่ยมของดร.พุทธิพล
  • ESPrtk ทำให้ ESP32 ใช้ไม่ได้? วิธีกู้คืน
  • กรณีศึกษา – คืนชีพ SDL30 ปี 2000 ด้วย ESP32 และแอพทำเอง SDL30 Collector
  • DIY RTK Base Station (survey-grade) รุ่น V3.21 ด้วย Raspberry Pi 2B + UM980 เมื่อคุณปู่กลับมาเป็นฮีโร่ ตอนที่ 4
  • รีวิวกูปรี (CoPre2) โปรแกรมประมวลผลไลดาร์จากค่าย CHCNav
  • DIY RTK Base Station (survey-grade) รุ่น V3.2 ด้วย Orange Pi 3 Zero + UM980 ตอนที่ 3
  • DIY RTK Base Station (survey-grade) รุ่น V3 ด้วย Orange Pi 3 Zero + UM980 ตอนที่ 2
  • เส้นทางและไทม์ไลน์ของใบรับรองความรู้ความชำนาญในการประกอบอาชีพวิศวกรรม(สำรวจ)ระดับวิศวกรวิชาชีพ
  • มัดแหนมรวมสามโปรแกรมไปใช้บนสโตร์ Snap ฝั่งลีนุกซ์
  • ปัดฝุ่น Traverse Pro เพิ่มรายละเอียดรายการคำนวณใหม่แบบแนวนอน (Landscape) และธีมมืด
  • DIY RTK Base Station (Survey-Grade) ด้วยชิป UM980 และบอร์ด ESP32 ตอนที่ 1
  • สร้าง NTRIP Caster ด้วย BNC บนคลาวด์แบบ DIY สำหรับ RTK Base Station ใช้ CHCNav P5
  • จับ AI มาไตรกรีฬา สร้างตัวติดตั้ง Snap สำหรับ Surveyor Pocket Tools กับประเด็นแฝงเร้นความเป็นส่วนตัวของผู้ใช้
  • ทดสอบรีด QGIS แบบโหดสัสด้วยชุดข้อมูล Open Building V3 โพลีกอน 74 ล้านหลัง
  • เมื่อ AI เป็นพิษชักจูงผู้ใช้ด้วยข้อมูลผิดๆ
  • เมื่อ AI กลายเป็นพิษด้วยอัตตา
  • คอมไพล์ PROJ 9.6.0 สำหรับแอนดรอยด์ แก้ปัญหาเพิ่มขนาด page size 16KB ตามกฎใหม่ของกูเกิ้ล
  • เครื่องมือช่วยออกแบบเส้นโครงแผนที่ความคลาดเคลื่อนต่ำ ด้วย LDP Companion เพื่อนคู่คิดมิตรคู่ใจ (#กำลังพัฒนา #Rust #Slint)
  • #Update แก้บั๊กหลุมดำ Surveyor Pocket Tools

Subscribe to Blog via Email

Enter your email address to subscribe to this blog and receive notifications of new posts by email.

Join 114 other subscribers

Archives

  • September 2026
  • August 2026
  • July 2026
  • May 2026
  • April 2026
  • March 2026
  • January 2026
  • December 2025
  • November 2025
  • September 2025
  • August 2025
  • July 2025
  • June 2025
  • May 2025
  • January 2025
  • December 2024
  • November 2024
  • October 2024
  • September 2024
  • July 2024
  • May 2024
  • April 2024
  • January 2024
  • November 2023
  • October 2023
  • September 2023
  • July 2023
  • June 2023
  • May 2023
  • March 2023
  • February 2023
  • January 2023
  • November 2022
  • October 2022
  • September 2022
  • July 2022
  • May 2022
  • December 2021
  • October 2021
  • September 2021
  • August 2021
  • May 2021
  • February 2021
  • January 2021
  • December 2020
  • November 2020
  • October 2020
  • September 2020
  • July 2020
  • June 2020
  • May 2020
  • April 2020
  • March 2020
  • February 2020
  • January 2020
  • December 2019
  • November 2019
  • September 2019
  • August 2019
  • July 2019
  • May 2019
  • April 2019
  • March 2019
  • February 2019
  • January 2019
  • November 2018
  • October 2018
  • September 2018
  • August 2018
  • July 2018
  • June 2018
  • May 2018
  • April 2018
  • March 2018
  • January 2018
  • November 2017
  • July 2017
  • June 2017
  • May 2017
  • April 2017
  • March 2017
  • February 2017
  • January 2017
  • December 2016
  • November 2016
  • October 2016
  • August 2016
  • November 2015
  • March 2015
  • August 2014
  • March 2014
  • January 2014
  • December 2013
  • February 2012
  • January 2012
  • November 2011
  • October 2011
  • August 2011
  • April 2011
  • February 2011
  • December 2010
  • November 2010
  • October 2010
  • September 2010
  • June 2010
  • April 2010
  • March 2010
  • January 2010
  • December 2009
  • November 2009
  • October 2009
  • September 2009
  • August 2009

Recent Comments

  • Konexana Yomleuangsa on โปรแกรมอรรถประโยชน์ Pocut (POint Cloud Utils)
  • priabroy on โปรแกรมอรรถประโยชน์ Pocut (POint Cloud Utils)
  • Konexana Yomleuangsa on โปรแกรมอรรถประโยชน์ Pocut (POint Cloud Utils)
  • priabroy on ทดสอบรีด QGIS แบบโหดสัสด้วยชุดข้อมูล Open Building V3 โพลีกอน 74 ล้านหลัง
  • ปุณญิศา on ทดสอบรีด QGIS แบบโหดสัสด้วยชุดข้อมูล Open Building V3 โพลีกอน 74 ล้านหลัง
©2026 Prajuab Riabroy's Blog | Design: Newspaperly WordPress Theme