Technology

เปลี่ยน Printer ธรรมดา ให้สั่ง Print ไร้สาย ด้วย Raspberry Pi

By Arnon Puitrakul - 16 สิงหาคม 2020 - 3 min read min(s)

เปลี่ยน Printer ธรรมดา ให้สั่ง Print ไร้สาย ด้วย Raspberry Pi

ตอนนี้เรามี Printer ตัวนึงที่ซื้อมา ตอนแรกกะจะใช้แค่เครื่องเดียว ตอนนี้ไป ๆ มา ๆ กลายเป็นว่า เราอยากจะสั่ง Print ผ่านเครื่องอื่นด้วยเหมือนกัน วันนี้เราเลยจะมาเพิ่มความสามารถของ Printer ให้เราสามารถสั่ง Print จากที่ไหนก็ได้ในบ้านกัน ด้วย Raspberry Pi

อุปกรณ์ที่ต้องมี

เริ่มจากอุปกรณ์ที่เราต้องใช้กัน พระเอกของเราคือ Raspberry Pi ที่เป็นเครื่องคอมพิวเตอร์ขนาดเล็ก ตัวที่เราเอามาใช้ในวันนี้จะเป็น Raspberry Pi 2 อันนี้ซื้อมาเรียนเมื่อตอน ป.ตรี มันเก่าแล้วละ ถ้าใครที่กำลังหาซื้อใหม่อยู่ ไม่ต้องซื้อใหม่มากก็ได้ เอาสัก Raspberry Pi 3 ก็เพียงพอแล้ว อย่างในรูป เราใส่เคส เพื่อความสวยงามเฉย ๆ จะใส่หรือไม่ใส่ก็ได้

เพื่อให้ Raspberry Pi สามารถ Boot ขึ้นมาได้ เราจะต้องมีหน่วยความจำสำหรับเก็บ OS ก่อน เราแนะนำให้ใช้ Micro SD Card ขนาด 16 GB ขึ้นไป แน่นอนว่า เราก็ไม่ได้ซื้อใหม่ ก็เอาอันที่มันเสียบคาไว้ตั้งแต่เมื่อ 6 ปีก่อน มาใช้เลยละกัน ถ้าไปหาซื้อราคาตอนนี้น่าจะเกือบ ๆ พัน ถึงพันนิด ๆ เองนะ ถ้าเราเอามาทำอย่างอื่นด้วย เราแนะนำขั้นต่ำ 32 GB ไปเลย เหลือดีกว่าไม่พอนะ

และของอย่างสุดท้ายเป็น Additional คือ USB WiFi Dongle สำหรับการเชื่อมต่อ WiFi ถ้าเราต้องการที่จะเชื่อมต่อผ่าน WiFi หรือถ้าเราต้องการเชื่อมต่อผ่านสายก็สามารถเชื่อมต่อเข้าโดยตรงที่ Raspberry Pi ได้เลย ถ้าแนะนำ เราให้ใช้สายดีกว่า แต่ถ้าไม่สะดวก ใช้ WiFi ก็ได้ไม่ว่ากัน เราส่งข้อมูลไม่เยอะอยู่แล้ว ไม่ใช่เรื่องใหญ่

ทำ SD Card สำหรับ Boot

Sandisk Micro SD Card

ขั้นตอนแรก เราจะต้องเตรียม SD Card สำหรับการ Boot โดยที่เราจะเลือกใช้ Raspbian ซึ่งเป็น OS ที่น่าจะเป็น Standard ของ Raspberry Pi ละ เราเลือกตัวนี้เพราะว่า มันง่ายสุดแล้ว

เมื่อก่อน เราจะต้องโหลด ISO ของ Raspbian มา แล้วอาจจะใช้ Rufus ในการเขียนลง SD Card แต่เดี๋ยวนี้ อะไร ๆ ก็ง่ายขึ้นเยอะ เพราะมันมี Raspberry Pi Imager ออกมาให้เราใช้ ให้เราเข้าไปโหลด ใส่  SD Card เข้าไป เปิดโปรแกรม และ สั่งเขียนได้เลย เท่านี้ก็เสร็จแล้ว

สุดท้าย เราก็เอา SD Card ใส่เข้ากับ Raspberry Pi จากนั้นก็เสียบสาย Micro USB สำหรับจ่ายไฟเข้าไป ในครั้งแรกของการตั้งค่า เราจำเป็นจะต้องเสียบ Raspberry Pi เข้ากับจอ พร้อมกับ Keybaord เพื่อทำการ Config เบื้องต้น

(Optional) Wireless LAN Setup

Edimax USB WiFi Dongle

สำหรับคนที่ต้องการใช้งานผ่าน WiFi เราจะต้องมีขั้นตอนในการตั้งค่า SSID และ Password เพื่อให้ Raspberry Pi เชื่อมต่อกับ WiFi ของเรานั่นเอง

ในการที่เราจะเข้าเครื่องครั้งแรก เรามีให้สองทางเลือก คือ ให้เราเสียบสาย LAN หรือเราเสียบจอ และ Keyboard เพื่อเริ่มต้นก็ได้หมดถ้าสดชื่น ถ้าเราเสียบสาย LAN ก็ง่ายหน่อย ให้เราใช้ SSH Client เข้าไปที่ raspberry.local ได้เลย

แล้ว Login เข้า Raspberry Pi โดยการใช้ Username pi และ Password เป็น raspberry ซึ่งเป็น Default Username และ Password ในการเข้าเครื่อง

จากนั้นให้เราพิมพ์คำสั่ง sudo raspi-config เพื่อเข้า Config ของตัว Raspberry Pi ให้เราเลือก Network Options จากนั้นให้เลือก Wireless LAN

มันจะให้เราใส่ SSID หรือก็คือชื่อ WiFi และ Password เข้าไปก็เรียบร้อย จากนั้นให้เรา Reboot ด้วยคำสั่ง sudo reboot เพื่อทำการ Reboot เครื่องใหม่ ระหว่างนั้นเราก็เอาสายเสียบจอ กับ Keyboard หรือเอาสาย LAN ออกได้เลย เพราะเมื่อ Raspberry Pi reboot ใหม่ มันก็จะเชื่อมต่อกับ WiFi ที่เราใส่ไว้

Hostname Setup

เพื่อให้เราเข้าถึงตัว Raspberry Pi ได้ง่ายขึ้น เราจะต้องทำการตั้งสิ่งที่เรียกว่า Hostname เหมือนกับ เราเข้า google.com แทนที่จะเป็น 172.217.174.174 ซึ่งมันจำยากกว่าเยอะมาก โดยพื้นฐาน ตัว Raspberry Pi จะตั้งชื่อมาเป็น raspberrypi ทำให้เราสามารถเข้าถึงได้ผ่าน raspberry.local ได้เลย แต่ถ้าเราอยากจะเปลี่ยน เราก็สามารถเปลี่ยนได้เช่นกัน ให้เราเข้าไปหน้า Config อีกครั้ง ให้เราเลือก Network Options และ เลือก Hostname

Raspberry Pi Hostname Setup

จากนั้นให้เราใส่ Hostname ที่เราต้องการลงไป มันเหมือนเป็นชื่อเครื่องที่เราจะต้องใช้ในการเข้าถึง ดังนั้นใส่อะไรที่มันสื่อถึงเครื่อง เช่น printer หรือ printserver ก็ได้ แต่สำหรับเรา ก็ขอไม่เปลี่ยนละกัน ง่ายดี จากนั้นเลือก OK ก็เป็นอันเสร็จ Reboot สักที

เมื่อเครื่องกลับมา ให้เราเปลี่ยนที่อยู่ในการเข้าถึงเครื่องของเราจาก raspberrypi.local  เปลี่ยนเป็นชื่อที่เราตั้ง และ ตามด้วย .local พร้อมกับใช้ Username และ Password เดิมในการเข้าก็เรียบร้อยแล้ว

ติดตั้ง CUPS

ขั้นตอนสำคัญเลยคือ เราจะมาติดตั้งตัว Print Server กัน ซึ่งตัวที่น่าจะเป็นพื้นฐานมาก ๆ คือ CUPS มันเป็น Open Source Printing System ที่ผลิตโดย Apple ซึ่งมีทั้งใน macOS และ OS ต่าง ๆ ที่ใช้รากฐานเป็นระบบ UNIX ซึ่งแน่นอนว่า Raspbian นั้นใช้ได้เหมือนกัน การติดตั้งนั้นง่ายมาก ๆ โดยให้เรารันคำสั่งด้านล่าง

sudo apt install cups

เราก็จะได้ CUPS มาเรียบร้อยแล้ว จากนั้นให้เราเพิ่ม Username ของเราเข้าไปใน Group สำหรับการสั่ง Print ได้โดยใช้คำสั่ง

sudo usermod -a -G lpadmin pi

สำหรับคนที่อาจจะไม่คุ้นเคยกับคำสั่งนี้ เรามาดูทีละ Option อันแรกคือ -a เอาไว้เพิ่ม User ที่เรากำลัง Login เข้าไป และ -G คือเพิ่ม User เข้าไปที่ Group ที่มีอยู่แล้ว คือ lpadmin ที่ CUPS เอาไว้ใช้ในการจัดการ User ที่สามารถสั่ง Print ได้นั่นเอง ถ้าเรามี User อื่นอีก เราก็รันคำสั่งเดิมแต่เปลี่ยน Username แค่นั้นก็จะทำให้ User นั้น ๆ สามารถสั่ง Print ได้

โดยค่าพื้นฐาน CUPS จะไม่เปิดให้เครื่องอื่นเข้ามาจัดการ หรือทำงานกับมันเอง เพื่อความปลอดภัย การที่เราจะใช้งาน เราจะต้องเข้าไปตั้งค่าผ่าน การแก้ไขไฟล์ Config ของมัน

sudo vim /etc/cups/cupsd.conf 

คำสั่งด้านบนคือ เราเปิดไฟล์ cupsd.conf เพื่อแก้ไขผ่านโปรแกรม vim ที่เป็น Text Editor ซึ่งการจะใช้ได้ เราจะต้องติดตั้งก่อนผ่าน apt ได้เลย หรือถ้าใครใคร่ใช้ nano ก็เอาที่ชอบละกัน ไม่ขัด

# Only listen for connections from the local machine
# Listen localhost:631
Port 631

ลองหาบรรทัดที่เขียนว่า Listen localhost:631 ดูในไฟล์ ให้เราเอา Sharp ไปใส่ด้านหน้าเพื่อ Comment Config อันเก่าออกไป และให้เราใส่แบบด้านล่าง เพื่ออนุญาตให้มีการเข้าถึงจาก Host หรือเครื่องอื่น ๆ ได้ผ่าน Port 631

< Location / >
# Restrict access to the server...
Order allow,deny
Allow @local
< /Location >

< Location /admin >
# Restrict access to the admin pages...
Order allow,deny
Allow @local
< /Location >

< Location /admin/conf >
AuthType Default
Require user @SYSTEM

# Restrict access to the configuration files...
Order allow,deny
Allow @local
< /Location >

ถัดไป เราจะต้องเปิดการอนุญาตให้เราสามารถเข้าถึงหน้าสำหรับตั้งค่า และ การใช้งาน ให้เราลองเลื่อนหามันจะมี Config ที่เริ่มต้นด้วย < Location / > และจบด้วย < /Location > เป็นเหมือน HTML Tag มันจะมีอยู่ 4 จุดในไฟล์ ให้เราเติม Allow @local ก่อนปิด < /Location >

sudo /etc/init.d/cups restart

เพื่อเป็นการเรียกใช้การตั้งค่าใหม่ที่เราพึ่งแก้ไขไป ให้เรา Reboot Service ของ CUPS ด้วยคำสั่งด้านบน ถ้าเกิด เราเจอ Error อะไรขึ้นมา ให้กลับไปเช็ค Config ว่าเราทำอะไรผิดรึเปล่า

เพิ่ม Printer

ในขั้นตอนต่อไป เราจะมาเพิ่ม Printer เข้ากับ CUPS กัน เริ่มจากใช้ Web Browser ของเราเข้าไปที่ <hostname>.local:631 เราควรจะได้หน้าแรกของ CUPS แบบในรูปมา

จากนั้นให้เราเข้าไปที่ Administration โดยที่มันจะเรียกให้เราใส่ Username และ Password ให้เราใช้อันที่เราเข้าเครื่องได้เลย อันเดียวกัน เมื่อเราเข้ามาแล้วให้เราเลือก Find New Printer

มันควรจะต้องมี Printer ที่เราเสียบอยู่ขึ้นมาให้เราเลือก ถ้าไม่มี ให้เราเสียบ Printer แล้วกด Find New Printer ในหน้าเมื่อกี้ใหม่อีกครั้ง มันควรจะต้องขึ้นมาใน List แล้ว กด Add this printer ของอันที่เราต้องการ

ให้เราใส่รายละเอียดของ Printer เราลงไป ตามข้อมูลที่เราต้องการได้เลย อย่าลืมติ๊กที่ Share This Printer แล้วกด Continue

ตรงช่อง Make มันจะมีตัวเลือกให้เราเลือกยากมาก ให้เรามองหายี่ห้อของ Printer ที่เราเสียบอยู่ คิดว่า มันน่าจะมีทุกยี่ห้อแล้วนะ ถ้าไม่มีในนั้น ให้เราไปหาโหลดไฟล์ PPD มาแล้วอัพโหลดลงไปได้เลย

เข้าไปหน้าต่อไป มันจะมีช่อง Model งอกออกมา ให้เราหาชื่อรุ่นของ Printer ที่เราเสียบลงไป มั่นใจว่าส่วนใหญ่น่าจะมีแล้วละ ถ้าเกิดไม่มีขึ้นมา นี่แหละ เราอาจจะต้องไปหา Driver มาลง แล้วมันน่าจะมีให้เราเลือก สำหรับเราเองใช้ของ HP หลังจากลงไป มันก็จะมีรุ่นของเราขึ้นมาเลย

สุดท้าย เราก็กด Set Default Option เพื่อใช้ค่าพื้นฐานได้เลย ก็เป็นอันเสร็จในการเพิ่ม Printer แล้ว

เราอาจจะทดลองสั่ง Print หน้าตัวอย่างได้ โดยให้เรากลับไปหาแรกของ Administration ใหม่ เลือก Manage Printer มันจะมี List ของ Printer ที่เราเพิ่มไปแล้วกดเข้าไปได้เลย แล้วกดตรง Maintenance มันจะมีตัวเลือก Print Test Page เลือกตัวนั้นได้เลย เราก็จะได้หน้าตัวอย่างออกมาจาก Printer

ตั้งค่าเครื่องปลายทาง

และสุดท้าย ท้ายสุด เราต้องมาเพิ่ม Printer ที่เครื่องของเรากัน ในตัวอย่างนี้ เราจะเพิ่มบน macOS กัน ให้เราเข้าไปที่ System Preferences > Printers & Scanners ให้เรากดบวกด้านล่าง

ใน List มันควรจะขึ้น Printer ที่เราเพิ่มไว้อยู่ ให้เรากดเลือก Printer และ กด Add ก็เป็นอันเสร็จ จากนั้นเวลาเราจะสั่ง Print อะไร เราก็สั่งมาที่ Printer นี้ได้เลย

สรุป

Raspberry Pi 2B

ก่อนเราจะจบ Project เราอาจจะเอา Raspberry Pi ติดเข้ากับตัว Printer ไปเลย เพื่อความง่ายเวลาเราจะย้าย มันจะได้เป็นชิ้นเดียวกันไปเลย แต่เรายังหาวิธีที่เราจะรวมปลั๊กเข้าด้วยกันไม่ได้ แต่ก็ไม่เป็นไร ก็เสียบเป็น 2 ช่องไป ไม่ได้เดือดร้อนอะไรเท่าไหร่อยู่แล้ว สำหรับงานนี้เราจะบอกว่า ถ้ากำลังคิดว่า จะหาซื้อ Printer และ Raspberry Pi มาเพื่อทำแบบเรา เราจะบอกว่า อย่าหาทำ มันจะถูกและง่ายกว่า ถ้าเราไปซื้อ Printer ที่มี WiFi มาเลย อันนี้สำหรับคนที่มี Printer ที่ไม่ได้รองรับการต่อ Network กับมี Raspberry Pi อยู่แล้ว ก็จะดีเลย