มี USB to TTL Serial อยู่ตัวหนึ่งครับมันใช้ไอซี CP2102 โดยตั้งใจจะนำมาใช้กับ Arduino เพราะมันมีขา RST ด้วย แต่ขอเอามาลองกับ Raspberry Pi เพื่อใช้งาน console ผ่านทาง serial port กันหน่อย งานนี้ต้องกล้าๆ หน่อยครับ เพราะฉลากเขียนว่า TTL (Transistor–transistor logic) ซึ่งปกติจะหมายถึงไอซีตระกูล 74xx ทั้งหลายที่ใช้ไฟฟ้าแรงดัน 5 โวลต์ ซึ่งถ้าเอามาต่อกับ Raspberry Pi ซึ่งตามคู่มือระบุว่าทนได้แค่ 3.3 โวลต์อาจเป็นอันตราย ขอทดสอบวัดแรงดันก่อนครับ

usb-to-ttl-only-3.33-volt

ทดลองใช้ USB to TTL แบบยังไม่ต่อกับ Raspberry Pi วัดแรงดันที่ขา TXD ได้ 3.33 โวลต์ ดังนั้นอุปกรณ์ตัวนี้ไม่น่าทำอันตรายกับ Raspberry Pi ได้ครับ เดาว่าที่ปล่อย 3.3 โวลต์ จะได้ใช้งานเป็น logic 1 ของทั้งวงจรที่ใช้ไฟเลี้ยง 3.3 และ 5 โวลต์ จากนั้นก็ต่อกับ Raspberry Pi กันเลย

connect-notebook-cp2102-raspberry-pi

งานนี้ผมใช้ไฟ 5 โวล์ตจาก USB to TTL มาเลี้ยงให้ Raspberry Pi ด้วยครับด้วยสายไฟสีแดง สายไฟสีดำต่อกับ ground ส่วนสายสีเขียวต่อกับ TXD ของ USB to TTL และต่อกับ TXD ของ Raspberry Pi และสายสีน้ำเงิน ต่อกับ RXD ของ USB to TTL และต่อกับ RXD ของ Raspberry Pi แสดงว่าที่ฉลากของ USB to TTL ที่บอก RXD และ TXD หมายถึงให้ไปต่อกับชื่อ TXD หรือ RXD ตามระบุที่คอมพิวเตอร์ (กรณีนี้คือ Raspberry Pi) ครับ (ฉลากบน USB to TTL ไม่ได้บอกว่ามันทำหน้าที่   TXD หรือ RXD ของ USB to TTL ที่ต้องไขว้ TXD กับ RXD กันระหว่าง USB to TTL กับ Raspberry Pi)

สำหรับ Windows อาจต้องลง driver จากผู้ผลิตก่อนนะครับ ของผมใช้วิธีเรียกโปรแกรม compmgmt.msc แล้ว update driver โดยเลือกจาก folder ทีได้ unzip ไฟล์ driver จากผู้ผลิตไว้ก่อนแล้ว จากนั้นก็ใช้โปรแกรม PuTTY ตัวเดียวกับที่ใช้ SSH ได้ละครับ

cp2102-raspberry-pi-putty-0001 cp2102-raspberry-pi-putty-0002

ก็คลิ๊กเรียกโปรแกรม PuTTY ของผมได้ USB to TTL เป็น COM7 ในตอนที่ติดตั้ง driver จากนั้นตั้งความเร็วเป็น 115200 ซึ่งตรงกับที่กำหนดใน /etc/inittab และ /boot/cmdline.txt บน Raspbian และตั้งค่า Data bits = 8, Stop bits = 1, Parity = None, Flow control = None ด้วยครับ

cp2102-raspberry-pi-putty-003

จากนั้นเราก็จะสามารถใช้ console ผ่าน /dev/ttyAMA0 ของ Raspberry Pi ได้

สำหรับบน Linux จะคล้ายคลึงกัน ของผมหลังจากเสียบ USB to TTL แล้ว dmesg แล้วเจอ CP210X เลยครับ คงใช้งานได้เลย

cp2102-linux-001

และเมื่อดูที่ /dev (ตอนนี้ Linux ตัวอื่น ไม่ใช่ที่ Raspbian นะครับ) ก็มี /dev/ttyUSB0 ด้วย จากนั้นผมก็เรียก PuTTY ซึ่งมีเวอร์ชันบน Linux เหมือนกัน หน้าตาคล้ายๆ กัน ตั้งค่าแนวเดียวกันเลยครับ ต่างกันที่ต้องใช้ชื่ออุปกรณ์เป็น /dev/ttyUSB0

cp2102-linux-005 cp2102-linux-006

และก็ใช้งานได้เหมือนกันครับ

cp2102-linux-007

เกี่ยวกับการตั้งค่าที่ Raspbian ให้ใช้งาน console ผ่านทาง serial port ได้ปกติในไฟล์ /etc/inittab บรรทัดสุดท้ายจะเป็นตัวบ่งบอกว่าจะให้ใช้งานได้ไหม บรรทัดสุดท้ายนั้นข้อความประมาณนี้ครับ

T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

ถ้าเราอยากใช้ serial port ของ Raspberry Pi ไปทำงานอื่น อาจต้อง comment บรรทัดนี้ และแก้ที่ไฟล์ /boot/cmdline.txt เอาตรง console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 ออกไป ซึ่งถ้า OS ของใครตั้งให้เป็นแบบนี้ ก็อาจใช้เป็น console ไม่ได้นะครับ