ใช้ราสเบอรี่ไพติดต่อสื่อสารกับอุปกรณ์อย่างอื่นผ่าน UART
จากรูปด้านบน pin connector ของราสเบอรี่ไพ จะมี pin ที่สามารถเชื่อมต่อผ่านโพรโตคอล UART ได้สองพินคือ GPIO14 และ GPIO15 ตามรูปโดยฟังก์ชั่นเริ่มต้นของสองพินนี้ เป็น UART และภายใน kernel ยังใช้เป็น console อีกด้วยสังเกตุได้จาก kernel parameter ดังต่อไปนี้
dma.dmachans=0x7f35 bcm2708_fb.fbwidth=1920 bcm2708_fb.fbheight=1080 bcm2708.boardrev=0x3 bcm2708.serial=0x85d14de1 smsc95xx.macaddr=B8:27:EB:D1:4D:E1 sdhci-bcm2708.emmc_clock_freq=100000000 vc_mem.mem_base=0xec00000 vc_mem.mem_size=0x10000000 dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
จริงๆ มีหลายตัวที่น่าสนใจครับแต่บทนี้เราสังเกตุแค่ console=ttyAMA0,115200 ตรงนี้ละครับตัวบอกให้ kernel เข้าใจว่าจะใช้พอร์ตไหนเป็น console port โดยตัวราสเบอรี่ไพมันก็มีพอร์ต uart พอร์ตเดียวคือ /dev/ttyAMA0 แล้วก็ใช้คอนโซลไปแล้วละซิ
ต่อมาเรามาหาวิธีทำให้ Linux ไม่ใช้ UART กันเถอะเพราะว่าต้องการจะใช้เอง อิอิ
/boot/cmdline.txt
ไฟล์เจ้าปัญหาไฟล์แรกของเราที่ต้องแก้ไขซะก่อน
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
เนื้อในก็จะมีประมาณด้านบนแก้ไขซะ อ่อ ก่อนจะแก้ให้ใช้สิทธิของ root ในการแก้นะครับเช่น sudo vi /boot/cmdline.txt
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
หลังจากแก้ตรงนี้จะเป็นการป้องกันไม่ให้ system ใช้ serial port ในการแสดงผล แต่เมื่อถึงขั้นตอน root file system
promt จะขึ้นมาต้อนรับเราเหมือนเดิม T^T เราต้องมาแก้ไขอีกที่หนึ่งในไฟล์
/etc/inittab
ในไฟล์นี้ไปที่บรรทัดสุดท้ายที่เขียนว่า
#Spawn a getty on Raspberry Pi serial line
T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
คอมเมนท์ซะเลยให้กลายเป็น
#Spawn a getty on Raspberry Pi serial line
#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
จบขั้นตอนนี้ ถ้าทำมาถูกต้องก็ไม่ควรที่จะมี Application หรือว่า Kernel ใช้ Serial Port แข่งกับเราแล้วเรามาทดลองพัฒนาซอฟแวร์กับ Serial Port เพื่อส่งข้อมูลมาที่คอมพิวเตอร์กัน โดยเราจะใช้ไลบรารี่ที่ชื่อว่า python-serial สนใจรายละเอียดดูได้ที่
http://pyserial.sourceforge.net/
เขียนแบบเบื้องต้น เลยนะครับ โดยเราจะส่งข้อมูลจาก ราสเบอรี่ไพมาที่ terminal บนคอมพิวเตอร์
เท่านี้เราก็จะสามารถใช้ Raspberry PI เชื่อมต่อกับอุปกรณ์อื่นๆ โดยไม่ต้องกังวลเรื่อง console มากวนใจแล้วครับ
แล้วพบกับบทความดีดี ต่อไปที่ DEAWARE ครับ