“แฮกเกอร์สายฮาเปลี่ยนบุหรี่ไฟฟ้าเป็นเว็บเซิร์ฟเวอร์ — เมื่อของทิ้งกลายเป็นเครื่องมือออนไลน์สุดมินิมอล”
Bogdan Ionescu วิศวกรและนักทดลองสาย embedded ได้สร้างปรากฏการณ์สุดแปลกในวงการอิเล็กทรอนิกส์ เมื่อเขานำบุหรี่ไฟฟ้าแบบใช้แล้วทิ้ง (disposable vape) มาดัดแปลงให้กลายเป็นเว็บเซิร์ฟเวอร์ขนาดจิ๋ว โดยใช้ชิปไมโครคอนโทรลเลอร์ ARM Cortex-M0+ จากแบรนด์ PUYA ที่ซ่อนอยู่ภายในอุปกรณ์เหล่านี้
ชิปที่ใช้คือ PY32F002B ซึ่งมีหน่วยความจำเพียง 24KB flash และ 3KB RAM — เล็กกว่าหน่วยความจำในนาฬิกาดิจิทัลบางรุ่นเสียอีก แต่ Bogdan ใช้เทคนิค semihosting ร่วมกับโปรโตคอล SLIP (Serial Line Internet Protocol) เพื่อให้ Linux มองว่า vape นี้คือโมเด็มแบบ dial-up และสามารถส่งข้อมูล IP ได้จริง
เขาเลือกใช้ uIP ซึ่งเป็น TCP/IP stack ขนาดเล็กที่ไม่ต้องใช้ RTOS และสามารถรันเว็บเซิร์ฟเวอร์แบบ HTTP ได้ โดยในช่วงแรกประสิทธิภาพแย่มาก: ping ช้า 1.5 วินาที, packet loss 50%, และโหลดหน้าเว็บใช้เวลากว่า 20 วินาที แต่หลังจากปรับปรุงการจัดการข้อมูลให้ใช้ ring buffer และ batch write ประสิทธิภาพก็พุ่งขึ้นอย่างน่าทึ่ง — ping เหลือเพียง 20ms และโหลดหน้าเว็บใน 160ms
Bogdan ยังเพิ่ม API แบบ JSON เพื่อแสดงจำนวนการเข้าชมและ ID ของไมโครคอนโทรลเลอร์ ทำให้เว็บเซิร์ฟเวอร์นี้ไม่ใช่แค่ static page แต่สามารถตอบสนองแบบ dynamic ได้ด้วย แม้จะมีพื้นที่เก็บข้อมูลเหลือเพียง ~20KB ก็ตาม
ข้อมูลสำคัญจากโปรเจกต์
ใช้ชิป PUYA PY32F002B จากบุหรี่ไฟฟ้าแบบใช้แล้วทิ้ง
สเปก: ARM Cortex-M0+ @ 24MHz, 24KB flash, 3KB RAM
ใช้ semihosting + SLIP เพื่อให้ Linux ส่ง IP packet ผ่าน serial
ใช้ uIP stack เพื่อรันเว็บเซิร์ฟเวอร์ HTTP แบบเบา
การปรับปรุงประสิทธิภาพ
เพิ่ม ring buffer เพื่อจัดการข้อมูลแบบ batch ลด overhead
ปรับโครงสร้าง filesystem ให้เหมาะกับ alignment บน ARM
ลดเวลา ping จาก 1.5s เหลือ 20ms และโหลดหน้าเว็บใน 160ms
ใช้ RAM เพียง 1.4KB และ flash 5KB — เหลือพื้นที่สำหรับโค้ดอื่น
ข้อมูลเสริมจากภายนอก
SLIP เป็นโปรโตคอลที่ใช้ในยุคโมเด็ม dial-up ก่อนยุค Wi-Fi
uIP ถูกออกแบบมาเพื่ออุปกรณ์ 8/16-bit ที่มีหน่วยความจำจำกัด
semihosting เป็นฟีเจอร์ debug ที่สามารถใช้ส่งข้อมูลแบบ bidirectional
โปรเจกต์นี้แสดงให้เห็นว่า embedded device ขนาดเล็กสามารถรันเว็บเซิร์ฟเวอร์ได้จริง
https://bogdanthegeek.github.io/blog/projects/vapeserver/
Bogdan Ionescu วิศวกรและนักทดลองสาย embedded ได้สร้างปรากฏการณ์สุดแปลกในวงการอิเล็กทรอนิกส์ เมื่อเขานำบุหรี่ไฟฟ้าแบบใช้แล้วทิ้ง (disposable vape) มาดัดแปลงให้กลายเป็นเว็บเซิร์ฟเวอร์ขนาดจิ๋ว โดยใช้ชิปไมโครคอนโทรลเลอร์ ARM Cortex-M0+ จากแบรนด์ PUYA ที่ซ่อนอยู่ภายในอุปกรณ์เหล่านี้
ชิปที่ใช้คือ PY32F002B ซึ่งมีหน่วยความจำเพียง 24KB flash และ 3KB RAM — เล็กกว่าหน่วยความจำในนาฬิกาดิจิทัลบางรุ่นเสียอีก แต่ Bogdan ใช้เทคนิค semihosting ร่วมกับโปรโตคอล SLIP (Serial Line Internet Protocol) เพื่อให้ Linux มองว่า vape นี้คือโมเด็มแบบ dial-up และสามารถส่งข้อมูล IP ได้จริง
เขาเลือกใช้ uIP ซึ่งเป็น TCP/IP stack ขนาดเล็กที่ไม่ต้องใช้ RTOS และสามารถรันเว็บเซิร์ฟเวอร์แบบ HTTP ได้ โดยในช่วงแรกประสิทธิภาพแย่มาก: ping ช้า 1.5 วินาที, packet loss 50%, และโหลดหน้าเว็บใช้เวลากว่า 20 วินาที แต่หลังจากปรับปรุงการจัดการข้อมูลให้ใช้ ring buffer และ batch write ประสิทธิภาพก็พุ่งขึ้นอย่างน่าทึ่ง — ping เหลือเพียง 20ms และโหลดหน้าเว็บใน 160ms
Bogdan ยังเพิ่ม API แบบ JSON เพื่อแสดงจำนวนการเข้าชมและ ID ของไมโครคอนโทรลเลอร์ ทำให้เว็บเซิร์ฟเวอร์นี้ไม่ใช่แค่ static page แต่สามารถตอบสนองแบบ dynamic ได้ด้วย แม้จะมีพื้นที่เก็บข้อมูลเหลือเพียง ~20KB ก็ตาม
ข้อมูลสำคัญจากโปรเจกต์
ใช้ชิป PUYA PY32F002B จากบุหรี่ไฟฟ้าแบบใช้แล้วทิ้ง
สเปก: ARM Cortex-M0+ @ 24MHz, 24KB flash, 3KB RAM
ใช้ semihosting + SLIP เพื่อให้ Linux ส่ง IP packet ผ่าน serial
ใช้ uIP stack เพื่อรันเว็บเซิร์ฟเวอร์ HTTP แบบเบา
การปรับปรุงประสิทธิภาพ
เพิ่ม ring buffer เพื่อจัดการข้อมูลแบบ batch ลด overhead
ปรับโครงสร้าง filesystem ให้เหมาะกับ alignment บน ARM
ลดเวลา ping จาก 1.5s เหลือ 20ms และโหลดหน้าเว็บใน 160ms
ใช้ RAM เพียง 1.4KB และ flash 5KB — เหลือพื้นที่สำหรับโค้ดอื่น
ข้อมูลเสริมจากภายนอก
SLIP เป็นโปรโตคอลที่ใช้ในยุคโมเด็ม dial-up ก่อนยุค Wi-Fi
uIP ถูกออกแบบมาเพื่ออุปกรณ์ 8/16-bit ที่มีหน่วยความจำจำกัด
semihosting เป็นฟีเจอร์ debug ที่สามารถใช้ส่งข้อมูลแบบ bidirectional
โปรเจกต์นี้แสดงให้เห็นว่า embedded device ขนาดเล็กสามารถรันเว็บเซิร์ฟเวอร์ได้จริง
https://bogdanthegeek.github.io/blog/projects/vapeserver/
🛠️ “แฮกเกอร์สายฮาเปลี่ยนบุหรี่ไฟฟ้าเป็นเว็บเซิร์ฟเวอร์ — เมื่อของทิ้งกลายเป็นเครื่องมือออนไลน์สุดมินิมอล”
Bogdan Ionescu วิศวกรและนักทดลองสาย embedded ได้สร้างปรากฏการณ์สุดแปลกในวงการอิเล็กทรอนิกส์ เมื่อเขานำบุหรี่ไฟฟ้าแบบใช้แล้วทิ้ง (disposable vape) มาดัดแปลงให้กลายเป็นเว็บเซิร์ฟเวอร์ขนาดจิ๋ว โดยใช้ชิปไมโครคอนโทรลเลอร์ ARM Cortex-M0+ จากแบรนด์ PUYA ที่ซ่อนอยู่ภายในอุปกรณ์เหล่านี้
ชิปที่ใช้คือ PY32F002B ซึ่งมีหน่วยความจำเพียง 24KB flash และ 3KB RAM — เล็กกว่าหน่วยความจำในนาฬิกาดิจิทัลบางรุ่นเสียอีก แต่ Bogdan ใช้เทคนิค semihosting ร่วมกับโปรโตคอล SLIP (Serial Line Internet Protocol) เพื่อให้ Linux มองว่า vape นี้คือโมเด็มแบบ dial-up และสามารถส่งข้อมูล IP ได้จริง
เขาเลือกใช้ uIP ซึ่งเป็น TCP/IP stack ขนาดเล็กที่ไม่ต้องใช้ RTOS และสามารถรันเว็บเซิร์ฟเวอร์แบบ HTTP ได้ โดยในช่วงแรกประสิทธิภาพแย่มาก: ping ช้า 1.5 วินาที, packet loss 50%, และโหลดหน้าเว็บใช้เวลากว่า 20 วินาที แต่หลังจากปรับปรุงการจัดการข้อมูลให้ใช้ ring buffer และ batch write ประสิทธิภาพก็พุ่งขึ้นอย่างน่าทึ่ง — ping เหลือเพียง 20ms และโหลดหน้าเว็บใน 160ms
Bogdan ยังเพิ่ม API แบบ JSON เพื่อแสดงจำนวนการเข้าชมและ ID ของไมโครคอนโทรลเลอร์ ทำให้เว็บเซิร์ฟเวอร์นี้ไม่ใช่แค่ static page แต่สามารถตอบสนองแบบ dynamic ได้ด้วย แม้จะมีพื้นที่เก็บข้อมูลเหลือเพียง ~20KB ก็ตาม
✅ ข้อมูลสำคัญจากโปรเจกต์
➡️ ใช้ชิป PUYA PY32F002B จากบุหรี่ไฟฟ้าแบบใช้แล้วทิ้ง
➡️ สเปก: ARM Cortex-M0+ @ 24MHz, 24KB flash, 3KB RAM
➡️ ใช้ semihosting + SLIP เพื่อให้ Linux ส่ง IP packet ผ่าน serial
➡️ ใช้ uIP stack เพื่อรันเว็บเซิร์ฟเวอร์ HTTP แบบเบา
✅ การปรับปรุงประสิทธิภาพ
➡️ เพิ่ม ring buffer เพื่อจัดการข้อมูลแบบ batch ลด overhead
➡️ ปรับโครงสร้าง filesystem ให้เหมาะกับ alignment บน ARM
➡️ ลดเวลา ping จาก 1.5s เหลือ 20ms และโหลดหน้าเว็บใน 160ms
➡️ ใช้ RAM เพียง 1.4KB และ flash 5KB — เหลือพื้นที่สำหรับโค้ดอื่น
✅ ข้อมูลเสริมจากภายนอก
➡️ SLIP เป็นโปรโตคอลที่ใช้ในยุคโมเด็ม dial-up ก่อนยุค Wi-Fi
➡️ uIP ถูกออกแบบมาเพื่ออุปกรณ์ 8/16-bit ที่มีหน่วยความจำจำกัด
➡️ semihosting เป็นฟีเจอร์ debug ที่สามารถใช้ส่งข้อมูลแบบ bidirectional
➡️ โปรเจกต์นี้แสดงให้เห็นว่า embedded device ขนาดเล็กสามารถรันเว็บเซิร์ฟเวอร์ได้จริง
https://bogdanthegeek.github.io/blog/projects/vapeserver/
0 Comments
0 Shares
15 Views
0 Reviews