กลับไปหน้ารวมไฟล์
reprap-3-dimentional-additive-manufacturing-printer-with-iot-37621f.md

Octoprint (ตัวช่วยคุมเครื่องพิมพ์แบบหล่อๆ)

Octoprint คือซอฟต์แวร์ที่เอาไว้ใช้จัดการและมอนิเตอร์เครื่อง 3D printer แบบรีโมท (ทางไกล) แถมยังต่อกล้อง Web camera ไว้ส่องดูความคืบหน้างานพิมพ์ของเราได้ด้วยนะ เดี๋ยวพี่จะเอากล้อง Raspberry Pi camera (เวอร์ชัน 1.3) มาใส่ให้ดู ตัวนี้สเปกไม่ธรรมดา 5 mega-pixels สตรีมมิ่งได้ชัดถึง 1080p เลยทีเดียว

งานนี้เราจะลุยกันบน Windows นะน้อง แต่ต้องมีใช้โปรแกรมสายเนิร์ดบ้างอย่างโปรแกรม Terminal ที่ชื่อ PuTTY และต้องเข้าไปแก้ไขไฟล์ในสภาพแวดล้อมแบบ Linux นิดหน่อย แต่ไม่ต้องห่วง เดี๋ยวพี่พาทำไปทีละ Step จะอธิบายให้หมดว่าแต่ละอย่างคืออะไร จัดไปวัยรุ่น!

Downloads (โหลดของเตรียมไว้ก่อน)

ดาวน์โหลด Octoprint ไปที่หน้า Official ของ Octoprint แล้วกดปุ่มดาวน์โหลดเลย ตรงนี้มันจะดูงงๆ หน่อยนะ ให้คลิกที่ชื่อ Guy Sheffer มันจะพาไปหน้าใหม่ มองหาหัวข้อ Popular repositories แล้วคลิกที่ OctoPi มันจะเด้งไปหน้า GitHub ที่มีของเยอะแยะไปหมด ลิงก์สำรอง (Mirror) ก็มีให้เลือกตามสะดวกเลย

พี่แนะนำให้ใช้ไฟล์ตัวล่าสุดจาก Official mirror นะ จริงๆ ตัว Nightly build มันมีฟีเจอร์ใหม่ๆ เพียบ พี่ก็อยากลองแหละ แต่เวอร์ชันล่าสุดดันไม่ค่อยถูกกับ WiFi dongle ของพี่เท่าไหร่

โหลดไฟล์ .zip ตัวที่วันที่ใหม่ที่สุดมานะน้อง ขนาดประมาณ 1 Gb ความเร็วเน็ตพี่ค่อนข้างช้า ล่อไปครึ่งชั่วโมงแน่ะ! โหลดเสร็จแล้วเอาไปวางไว้ใน Folder บน Desktop หรือที่ไหนก็ได้ที่หาง่ายๆ นะ

ดาวน์โหลด PuTTY การโหลด PuTTY ก็ชวนงงไม่แพ้กัน ไปที่หน้าหลักของมันแล้วหาคำว่า "You can download PuTTY here" พอกดเข้าไปก็จะเจอหน้าหน้าตาโบราณๆ หน่อย ให้มองหาบรรทัดที่เขียนว่า "For Windows on Intel x86" แล้วโหลดไฟล์ putty.exe มาไว้ใน Folder เดียวกับที่เก็บไฟล์ Octoprint เมื่อกี้เลย อาจจะต้องคลิกหลายทีหน่อยกว่าหน้าต่างดาวน์โหลดจะเด้งขึ้นมา สู้เขาน้อง!

ดาวน์โหลด Win32 Disk Imager ไปที่หน้า Win32 Disk Imager แล้วกดปุ่มดาวน์โหลดเลย รอแป๊บเดียวเดี๋ยวโปรแกรมก็เด้งมาให้เซฟเอง

ดาวน์โหลด Angry IP Scanner ไปที่หน้า Angry IP Scanner แล้วหาบรรทัดที่เขียนว่า "32-bit Executable" สำหรับคนที่ไม่อยากติดตั้งลงเครื่อง (Portable) โหลดมาไว้ที่เดียวกันกับเพื่อนๆ เลย

เอา Octoprint ลง SD Card ด้วย Disk Imager

ขั้นแรก คลิกขวาที่ไฟล์ Octoprint แล้วแตกไฟล์ (Extract) ออกมาใน Folder นั้นแหละ จากนั้นเสียบ SD Card เข้าคอมพิวเตอร์ เช็คให้ชัวร์ว่ามันคือ Drive ไหน (เช่น E:, F:) แล้วคลิกขวาที่ไฟล์ Win32 Disk Imager เลือก "Run as Administrator" (สิทธิ์แอดมินต้องมานะงานนี้)

ตรง "Image File" ให้คลิกไอคอน Folder แล้วเลือกไฟล์ Octoprint ที่เราแตกไฟล์ไว้ ตรงช่อง Device เช็คอีกรอบว่าเลือก Drive ของ SD Card ถูกต้องนะน้อง ถ้ามั่นใจแล้วก็กดปุ่ม "Write" แล้วไปนั่งจิบน้ำรอเลย

Raspberry Pi

การ Boot เครื่อง Raspberry Pi

เสียบ SD Card เข้าที่ [Raspberry Pi](https://s.shopee.co.th/6pvZFdZdRf) ต่อสาย LAN เข้ากับวงเครือข่าย แล้วก็ต่อ Web camera หรือ Raspberry camera ที่มีอยู่ให้เรียบร้อย ถ้ามี USB WiFi ก็เสียบลงไปเลย

ถ้าอยากใช้ WiFi น้องต้องต่อ Raspberry Pi เข้ากับจอมอนิเตอร์แล้วใช้เมาส์ช่วยเซตนะ จริงๆ จะเซตผ่าน PuTTY ก็ได้แต่เดี๋ยวมันจะยาวไป ไว้คราวหน้าพี่มาสอน พอต่อครบหมดแล้วก็เสียบปลั๊กจ่ายไฟให้น้อง Pi ได้เลย!

หาไอพีของ Pi ด้วย Angry IP Scanner พอเปิดเครื่อง Raspberry Pi ทิ้งไว้สักพัก ก็เปิดโปรแกรม AngryIP Scanner ขึ้นมา ตรงช่อง "IP Range:" มันควรจะขึ้นช่วงไอพีที่เหมาะสมกับเครือข่ายเราให้อยู่แล้ว ถ้าโอเคก็กดปุ่ม Start เลย พอมันสแกนเสร็จจะมีหน้าต่างสรุปเด้งขึ้นมา ก็ปิดมันไปซะ

คราวนี้เลื่อนหาเครื่องที่มีชื่อขึ้นต้นว่า "Octopi" ในคอลัมน์ Hostname เจอแล้วก็จดเลข IP ไว้เลย อย่างของพี่ได้เลข 192.168.1.59

เชื่อมต่อเข้า Raspberry Pi ด้วย PuTTY พอได้เลข IP มาแล้ว ก็เปิด PuTTY ขึ้นมา ใส่เลข IP ลงในช่อง Host Name (or IP address) ส่วนช่อง Port ต้องเป็น 22 นะ อย่างอื่นไม่ต้องไปยุ่ง แล้วกดปุ่ม Open ได้เลย

มันจะมีหน้าต่าง PuTTY Security Alert เด้งขึ้นมาเตือนเรื่องใบรับรองความปลอดภัย ไม่ต้องตกใจนะน้อง กด Yes ไปเลย!

คราวนี้จะมีหน้าต่างดำๆ ขึ้นมาถาม "Login as:" ให้พิมพ์ pi แล้วกด Enter ส่วน Password ให้พิมพ์ raspberry (ตอนพิมพ์รหัสมันจะไม่ขึ้นตัวอักษรอะไรเลยนะน้อง ไม่ต้องงก พิมพ์ไปให้จบแล้วกด Enter พอ)

ข้อควรระวัง: การคลิกซ้ายใน PuTTY คือการ "วาง (Paste)" สิ่งที่ Copy มาทันทีนะ เพราะฉะนั้นเราจะลากคลุมดำแล้วคลิกขวา Copy ในนี้ไม่ได้ และพวกปุ่มลัดอย่าง CTRL-C ก็ใช้ไม่ได้เหมือนกันนะวัยรุ่น

ตั้งค่า Octopi บน Raspberry Pi

พิมพ์คำสั่งนี้เลย: `sudo raspi-config` คราวนี้หน้าจอ [Raspberry Pi](https://s.shopee.co.th/6pvZFdZdRf) Software Configuration Tool จะโผล่มา ให้ใช้ปุ่มลูกศรเลื่อนขึ้นลง ปุ่ม TAB เพื่อย้ายตำแหน่ง และ ENTER เพื่อตกลง บางเมนูใช้ Space bar เพื่อเลือกหลายอย่างพร้อมกันได้นะ

Expand Filesystem เลือกอันนี้แล้วกด ENTER มันจะรัน Code แป๊บนึงแล้วขึ้นหน้าต่าง ก็กด ENTER อีกรอบ ขั้นตอนนี้เป็นการบอกให้ Octopi ใช้พื้นที่ SD Card ให้คุ้มทุกตารางนิ้ว จะได้ไม่เต็มไวไงล่ะ

Change User Password อันนี้สำคัญมากน้อง! เพราะใครที่อยู่ใน WiFi เดียวกับเราอาจจะแอบล็อคอินมาคุมเครื่องพิมพ์เราได้ เลือกหัวข้อนี้แล้วกด ENTER ไปจนเจอหน้าจอดำๆ ที่เขียนว่า "Enter new UNIX password" พิมพ์รหัสใหม่ที่เราต้องการลงไป (มันจะไม่ขึ้นตัวอักษรเหมือนเดิมนะ) พิมพ์เสร็จกด ENTER แล้วพิมพ์ยืนยันอีกรอบ เป็นอันเสร็จ

Enable Boot to Desktop/Scratch ทำเฉพาะถ้าต้องตั้งค่า Wi-Fi นะ เพื่อเปิด Desktop mode ให้กด ENTER แล้วเลือก "Desktop Log in as user 'pi' at the graphical desktop" พอเสร็จแล้วมันจะพากลับหน้าเมนูหลักเอง

Internationalization Options (ตั้งค่าภาษาและเวลา) อันนี้จะทำหรือไม่ทำก็ได้ แต่ถ้าคีย์บอร์ดพิมพ์ไม่ตรงตัวอักษรก็มาเซตที่นี่แหละ กด ENTER เข้าไปจะมี 3 หัวข้อ:

  • Change Locale: เลือกโซนประเทศ (อย่างพี่เลือก da_DK เพราะอยู่เดนมาร์ก แต่น้องเลือกไทยหรือ US ก็ได้) ใช้ Space bar เลือกแล้วกด ENTER
  • Change Timezone: เลือกโซนเวลา ของเราก็เลือก Asia แล้วตามด้วย Bangkok เลย
  • Change Keyboard Layout: สำคัญสุดถ้าพิมพ์ไม่ตรง ให้มาเลือก Layout คีย์บอร์ดที่เหมาะสม

Enable Camera ใครใช้ Raspberry camera ต้องมาเปิดตรงนี้ (ถ้าใช้ USB camera ไม่ต้องทำ เพราะมันเลือกได้อย่างใดอย่างหนึ่ง) เลือก Enable แล้วตอบ Yes ได้เลย

Note: มีไฟล์ Option ใน SD Card ที่เอาไว้เปลี่ยน Framerate ของกล้องได้นะ ปกติมันตั้งไว้ที่ 10fps

Hostname ถ้าเบื่อชื่อ Octopi ก็มาเปลี่ยนที่นี่ เลือกแล้วกด ENTER พิมพ์ชื่อใหม่ได้เลย (ห้ามเว้นวรรค ห้ามใช้อักขระพิเศษ) พี่ใช้ชื่อว่า "Ultius" พอพิมพ์เสร็จกด ENTER

and Restart ใช้ปุ่มลูกศรขวาหรือ TAB เลือก แล้วตอบ เพื่อ Restart เครื่องซะ ทีนี้ค่าที่เราตั้งไว้ก็จะเริ่มทำงาน

PuTTY จะเด้งเตือนว่า "PuTTY Fatal Error" ไม่ต้องตกใจน้อง กด OK ไป แล้วเปิดหน้าต่างนั้นค้างไว้ก่อน เดี๋ยวเราต้องใช้อีก

VNC (รีโมทหน้าจอแบบเห็นภาพ)

ติดตั้งและเซต VNC สำหรับ Remote Desktop

ต่อเข้า Raspberry Pi ผ่าน PuTTY อีกรอบ ล็อคอินด้วย user: pi และรหัสที่ตั้งใหม่ (ถ้ายังไม่ได้เปลี่ยนก็ใช้ raspberry ไปก่อน แต่รีบเปลี่ยนซะนะน้อง)

เราจะติดตั้ง TightVNC กัน เริ่มเลยพิมพ์ตามพี่:

  • sudo apt-get install tightvncserver
  • กด Y แล้ว ENTER
  • พอเสร็จแล้ว พิมพ์: tightvncserver
  • ตั้งรหัสผ่านสำหรับรีโมทหน้าจอ
  • เลือก n ตรง view-only password

คราวนี้มาที่ฝั่งคอมพิวเตอร์ Windows ของเรา ไปโหลด TightVNC Viewer มาติดตั้ง หรือใช้ Java viewer ก็ได้ถ้าไม่อยากลงโปรแกรม

  • วิธีต่อ: ใส่เลข IP ของ Pi ตามด้วยพอร์ต 5901 (เช่น 192.168.1.59:5901) แล้วกด Connect ใส่รหัสที่ตั้งไว้เมื่อกี้ ก็จะเห็นหน้าจอ Desktop ของ Pi โผล่มาแล้ว หล่อเท่เลยงานนี้!

อัปเดตระบบให้สดใหม่เสมอ เปิดหน้าจอ Terminal (ไอคอนจอดำๆ) ในหน้า Desktop ของ Pi แล้วพิมพ์:

  • sudo apt-get update
  • ตามด้วย: sudo apt-get upgrade
  • ตอบ Y แล้วก็นั่งรอจนมันเสร็จ

Restart น้อง Pi อีกรอบ พิมพ์ sudo reboot ใน Terminal ได้เลย

การเริ่ม VNCServer เนื่องจากเรายังไม่ได้ตั้งให้มันรันอัตโนมัติ ทุกครั้งที่เปิดเครื่องใหม่ น้องต้องเข้า PuTTY มาสั่งพิมพ์ vncserver ก่อนนะ ถึงจะใช้ VNC Viewer ต่อเข้าไปได้

การตั้งค่าและการใช้งาน (Settings and Configurations)

ตั้งค่า WiFi ไปที่ Menu -> Preferences -> WiFi Configuration โปรแกรม wpa_gui จะเด้งขึ้นมา กดปุ่ม [Scan] เลือกเครือข่ายเรา ใส่รหัสผ่านในช่อง PSK แล้วกด Connect ถ้าไอพียังไม่ขึ้น ลอง Restart ดูสักรอบนะน้อง

พอเรียบร้อยแล้ว ถอดสาย LAN ออกได้เลย แล้วเอา Raspberry Pi ไปต่อกับบอร์ด Arduino Mega ของเรา เตรียมตัวใช้งานจริง!

การใช้งาน Octoprint

ใช้ Angry IP Scanner หาไอพีใหม่ของ Pi (เพราะพอสลับมา WiFi ไอพีจะเปลี่ยน) หรือจะลองพิมพ์ `ชื่อที่ตั้งไว้.local` ใน Browser ดูก็ได้

ตั้งค่า Access Control ถ้าอยู่บ้านคนเดียว ไม่กลัวใครมาแฮกเครื่องพิมพ์ จะปิดไปก็ได้นะ แต่พี่แนะนำให้ตั้ง Username กับ Password ไว้ดีกว่า ปลอดภัยไว้ก่อนน้องชาย

เชื่อมต่อ Octoprint เข้ากับ Arduino Mega มองที่มุมบนซ้ายตรงหัวข้อ Connection ปกติพี่จะตั้ง AUTO ไว้หมด แล้วติ๊กถูกที่ Save connection settings กับ Auto-connect on server startup

แต่ถ้ามันต่อไม่ติด ให้ลองตั้ง Serial Port เป็น /dev/ttyACM0 และ Baudrate เป็น 250000 ดูนะ (หรือ 115200 ถ้าเป็น Marlin รุ่นเก่า) ถ้าเครื่องขึ้นสถานะว่า Operational ก็แสดงว่าพร้อมลุยแล้ว!

เทคนิคสุดท้าย: ในหน้า Settings ของ Octoprint ทุกครั้งที่แก้เสร็จ อย่าลืมกด Save ก่อนข้ามไปเมนูอื่นนะ พี่เคยลืมกดมาแล้ว เสียเวลาทำใหม่หมดเลย กวนใจสุดๆ! ส่วนกล้อง ถ้าดูใน Internet Explorer ไม่ติด ให้ใช้ Google Chrome นะน้อง ลื่นปรื๊ดแน่นอน

รายละเอียดทางเทคนิคเพิ่มเติม

Delta/Cartesian Motion Engineering

โปรเจกต์นี้เป็นการบันทึกการสร้างและรวมระบบ Cloud เข้ากับเครื่องพิมพ์ RepRap 3D Printer รุ่นคลาสสิก เพื่อให้สามารถทำ Prototyping ระดับโปรได้จากบนโต๊ะทำงาน

  • Precision Stepper Drive: ใช้ Arduino Mega ร่วมกับ RAMPS 1.4 shield โดยมี Firmware (Marlin) คอยจัดการ A4988 stepper drivers ทั้ง 4 ตัว เพื่อคุมตำแหน่งแกน X, Y, Z ให้แม่นยำระดับ 0.05 มม.
  • Extrusion Control: ควบคุมอุณหภูมิส่วนหัวฉีด (Hotend) ผ่านระบบ PID loop ความเร็วสูงร่วมกับ Thermistor เพื่อให้พลาสติกไหลสม่ำเสมอ งานพิมพ์จะได้ออกมาเนียนกริบ

IoT Cloud Interface

  • Remote Monitoring Dashboard: เชื่อมต่อกับ OctoPrint ช่วยให้สั่ง Start, Pause และดูความเรียบร้อยของงานพิมพ์ (รวมถึงดูภาพสดจากกล้อง) ผ่าน Browser จากที่ไหนก็ได้ สบายสุดๆ!

ข้อมูล Frontmatter ดั้งเดิม

title: "RepRap 3-Dimentional Additive Manufacturing Printer with IOT"
description: "Self-replicating, rapid prototyping open source 3D printer using an Arduino 101 that can be controlled via Internet."
author: "Nagarajan-S"
category: "Lab Stuff"
tags:
  - "3d printing"
  - "remote control"
views: 13177
likes: 11
price: 299
difficulty: "Intermediate"
components:
  - "1x Wire Cable - By the Foot"
  - "1x heat bed"
  - "1x power chord"
  - "1x Stepper motor driver board A4988"
  - "1x kapton tape"
  - "1x tension springs"
  - "1x Ball Bearing – 625 2RS 5x16x5"
  - "1x Arduino 101"
  - "1x MicroSD Card (Generic)"
  - "1x Ramps v1.4"
  - "1x heat sinks"
  - "1x PLA filament"
  - "1x Idler Pulley Plate"
  - "1x industrial power supply"
  - "1x e3d extruder"
  - "1x connecting rods"
  - "1x Arduino Mega 2560"
  - "1x Allen Wrench"
  - "1x Ethernet Cable (Generic)"
  - "1x cooling fan"
  - "1x bolt and screws"
  - "1x wooden frame"
  - "1x Hot glue gun (generic)"
  - "1x SparkFun Serial Enabled 16x2 LCD - White on Black 3.3V"
  - "1x Soldering iron (generic)"
  - "1x glass plate"
  - "1x zip ties"
  - "1x Raspberry Pi 2 Model B"
  - "1x end stop switches"
  - "1x usb cables"
  - "1x Jumper wires (generic)"
  - "1x NEMA 17 Stepper Motor"
tools: []
apps:
  - "1x pronterface"
  - "1x slic3r"
  - "1x Arduino IDE"
  - "1x octo pi"
  - "1x Arduino Web Editor"
downloadableFiles:
  - "https://github.com/MarlinFirmware/Marlin"
  - "https://github.com/MarlinFirmware/Marlin"
documentationLinks: []
passwordHash: "61bd93a82cb46d9988c006f6ebf72585bf1499c49bc8d2c73afa3f4b67169f4a"
encryptedPayload: "U2FsdGVkX19Sko/mxHOGZ9501oIDyi/CW3FLhsmWKOwG+8e8pHDI8NQzkMvSTL1TcTSCeC4it1k4MIX0lGxyJcY7rCZL5hyq8h+2eSF0lXNBFSWoYdTWodfRvcbN9xe5C8z/yrnzODhyIHUVwTrmwOorKYpoNlkYwK5GV6sfHeiUUSPhjWUbWFjAzGVHs3OQ"
seoDescription: "Build a RepRap 3D printer using Arduino 101 with IOT capabilities for remote control and rapid prototyping."
videoLinks: []
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/reprap-3-dimentional-additive-manufacturing-printer-with-iot-37621f_cover.jpg"
lang: "th"