Thursday, September 26, 2013

ติด Wi-Fi ให้ Raspberry Pi

การต่อสาย LAN กับ Raspberry Pi บางทีก็ทำให้เคลื่อนย้ายไม่ค่อยสะดวก ถ้ามี Wi-Fi network อยู่แล้ว ลองหา Wi-Fi adapter มาต่อกับ USB port น่าจะทำงานได้สะดวกขึ้น

ข้อควรระวัง

USB port ของ Raspberry Pi จ่ายกระแสไฟได้น้อยมาก ดังนั้นควรเลือกอุปกรณ์ที่ใช้ไฟน้อยๆ หรือใช้ USB hub แบบที่มี power supply มาต่อพ่วงก่อน

Wi-Fi Adapter ตัวไหนใช้ได้บ้าง

Raspberry Pi มี driver สำหรับ Wi-Fi adapter หลายรุ่นมาก ดูได้จาก
http://elinux.org/RPi_USB_Wi-Fi_Adapters
ในประเทศไทยก็มีขายหลายราย ลองใช้ google ค้น
raspberry pi wifi ราคา
มีหลายตัวให้เลือก ตั้งแต่ราคาต่ำกว่า 300 บาทจนเกือบพันบาท

ทดสอบ

ก่อนทดสอบอย่าลืมทำ สิ่งที่ควรทำก่อนการติดตั้งโปรแกรมบน Raspberry Pi

จากนั้นก็ต่อ Wi-Fi adapter และสาย LAN เข้ากับ Raspberry Pi ทำการเปิดเครื่องและ login ให้เรียบร้อย แล้วใช้คำสั่ง
lsusb
เพื่อดูว่ามีอุปกรณ์อะไรต่อกับ USB port บ้าง หาก Wi-Fi adapter ของเรามี driver ติดตั้งไว้ถูกต้อง
จะมีข้อความขึ้นมาแสดงประมาณนี้
ดูบรรทัดที่มีคำว่า Wireless Adapter จะเห็นชื่อรุ่นและ chipset ของ Wi-Fi adapter
ถ้าไม่มีข้อความแบบนี้ แสดงว่าไม่มี driver สำหรับ Wi-Fi adapter ตัวนี้ ให้หาตัวใหม่มาลองดู

นอกจากนี้อาจใช้คำสั่ง
lsmod
เพื่อดูว่า kernel module สำหรับ driver นี้ ว่าถูกโหลดแล้วหรือไม่
สังเกตว่ามี driver ของ rtl8187 โหลดเข้ามาเรียบร้อยแล้ว

ตั้งค่า Wi-Fi

ต่อไปเข้าไปแก้ไขไฟล์ /etc/wpa_supplicant/wpa_supplicant.conf โดยใช้คำสั่ง
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
ถ้าไม่เคยติดตั้ง Wi-Fi มาก่อน ก็น่าจะมีแค่สองบรรทัดนี้

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

ให้เติมข้อความนี้ต่อท้าย

network={
        ssid="SSID"
        psk="PASSWORD"
}

โดยเปลี่ยน SSID กับ PASSWORD ในเครื่องหมายคำพูดให้เป็นชื่อกับ password ของ Wi-Fi ที่จะใช้
ระวังตรง network={ ไม่มีเว้นวรรคนะครับ

จากนั้นไปแก้ไฟล์ /etc/network/interfaces โดยใช้คำสั่ง
sudo nano /etc/network/interfaces
มองหาข้อความ

allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp


เติม auto wlan0 เข้าไปหนึ่งบรรทัด ให้เป็น

auto wlan0
allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp


เสร็จแล้วหยุดการทำงานของ wlan0 โดยใช้คำสั่ง
sudo wpa_action wlan0 stop

แล้วสั่งให้เริ่มทำงานใหม่
sudo ifup wlan0

ตรวจสอบสถานะโดยใช้คำสั่ง
sudo wpa_cli status

ต่อไปสามารถถอดสาย LAN ออก ทำการ reboot โดยใช้คำสั่ง
sudo reboot
พอ boot ขึ้นมาแล้ว Raspberry Pi  ก็จะต่อ network ผ่าน Wi-Fi ได้ทันที


References:

http://elinux.org/RPi_USB_Wi-Fi_Adapters
https://www.modmypi.com/blog/how-to-set-up-the-ralink-rt5370-wifi-dongle-on-raspian



Monday, September 23, 2013

สิ่งที่ควรทำก่อนการติดตั้งโปรแกรมบน Raspberry Pi

ก่อนการติดตั้งโปรแกรมบน Raspberry Pi ทุกครั้ง ควรทำให้ OS และโปรแกรที่ติดตั้งอยู่แล้วใน Raspberry Pi เป็น version ใหม่ล่าสุดเสียก่อน โดยมีขั้นตอนดังต่อไปนี้

Update ฐานข้อมูลของ package manager (apt-get)

ฐานข้อมูลนี้เป็นส่วนที่สำคัญมาก เพราะจะเป็นข้อมูลที่บอก apt-get ว่ามีโปรแกรมอะไรบ้างและ version ล่าสุดคืออะไร การ update ทำโดยใช้คำสั่ง
sudo apt-get update

Upgrade โปรแกรมที่ติดตั้ง

พอฐานข้อมูลถูกต้องเป็นปัจจุบัน เราก็สามารถ upgrade โปรแกรมต่างๆที่ติดตั้งไว้แล้ว ให้เป็น version ล่าสุด โดยใช้คำสั่ง
sudo apt-get dist-upgrade
คำสั่งนี้ใช้คำว่า upgrade ไม่ใช่ update อย่าพิมพ์ผิดนะครับ

ลบสิ่งที่ไม่ได้ใช้ออก

หลังการติดตั้งโปรแกรม version ล่าสุด อาจมีโปรแกรมที่ไม่ได้ใช้เหลืออยู่ในระบบ สามารถลบออกโดยใช้คำสั่ง
sudo apt-get autoremove



ปล. อย่าลืมต่อ internet ก่อนทำนะครับ

References:
https://help.ubuntu.com/community/AptGet/Howto



Sunday, September 15, 2013

เปลี่ยน Dynamic IP ให้เป็น Static IP

เมื่อแรกติดตั้ง Raspbian OS สำหรับ Raspberry Pi นั้น ค่า IP address ของเครื่องจะเป็นแบบ dynamic คือเปลี่ยนไปตามที่ DHCP server จะกำหนดมา ทำให้ยากต่อการนำไปใช้งาน เพราะถ้าอยากรู้ว่าตอนนี้ IP address เป็นค่าใด ก็ต้องมีจอภาพกับ keyboard เพื่อทำการ login เข้าไปดู
การตั้งค่า IP address ให้เป็นค่าใดค่าหนึ่งไปเลยจะทำให้ไม่จำเป็นต้องใช้จอภาพกับ keyboard เหมาะกับการนำ Raspberry Pi ไปทำเป็น server การตั้งค่าแบบนี้เรียกว่าการทำ static IP

เข้าสู่โหมด Command Line

เปิดเครื่อง Raspberry Pi ขึ้นมา ถ้าหน้าจอเป็น GUI Desktop ให้เปิดโปรแกรม Terminal แต่ถ้าขึ้นมาถาม User & Password ก็ให้ทำการ login

ตรวจสอบค่าของ Network ปัจจุบัน

ใช้คำสั่ง
cat /etc/network/interfaces
จะมีข้อความขึ้นมาแสดงประมาณนี้
บรรทัดที่มีข้อความ
iface eth0 inet dhcp
แสดงว่า network (eth0) เป็น dhcp อยู่

ต่อไปใช้คำสั่ง
ifconfig
จะมีข้อความขึ้นมาแสดงประมาณนี้
ใต้หัวข้อ eth0 บรรทัดที่มีข้อความ
inet addr:192.168.1.142  Bcast:192.168.1.255  Mask:255.255.255.0
เป็นการบอกว่า
ip address 192.168.1.142
broadcast 192.168.1.255
netmask 255.255.255.0

ต่อไปใช้คำสั่ง
netstat -nr
จะมีข้อความขึ้นมาแสดงประมาณนี้
ค่าที่ column Destination กับ Gateway เป็นการบอกว่า
destination network 192.168.1.0
gateway 192.168.1.1

ตั้งค่า Static IP

ตอนนี้เราได้ค่า network ปัจจุบันมาครบแล้ว สมมุติว่าจะตั้งค่า IP address เป็น 192.168.1.20
ให้ใช้ editor เข้าไปแก้ไฟล์ที่ /etc/network/interfaces ใครถนัด vi หรือ nano ก็เลือกใช้กันได้ครับ
sudo vi /etc/network/interfaces
หรือ
sudo nano /etc/network/interfaces
แก้ที่บรรทัด
iface eth0 inet dhcp
ให้เป็น
iface eth0 inet static
   address 192.168.1.20
   netmask 255.255.255.0
   network 192.168.1.0
   broadcast 192.168.1.255
   gateway 192.168.1.1
ห้าบรรทัดที่เติมเข้าไปใส่ space หรือ tab ที่ด้านหน้าเพื่อให้รู้ว่าเป็นการตั้งค่าของ iface eth0
จะไม่ใส่ก็ได้นะครับ หลังจาก save แล้ว ให้ทำการ reboot
sudo reboot
เมื่อ boot เสร็จเราจะได้ IP address เป็น 192.168.1.20 ตามที่ตั้งไว้
สามารถทดสอบได้จากคำสั่ง
ifconfig


ต่อไปนี้เราสามารถติอต่อกับ Raspberry Pi จาก IP 192.168.1.20 ได้โดยตรง


References:

https://www.modmypi.com/blog/tutorial-how-to-give-your-raspberry-pi-a-static-ip-address




Friday, September 13, 2013

วิธีติดตั้ง Raspbian OS บน Raspberry Pi

Raspbian เป็น OS ซึ่งทาง Raspberry Pi Foundation แนะนำสำหรับติดตั้งบน Raspberry Pi โดยพัฒนามาจาก Debian Linux ซึ่งเป็น Distro ยอดนิยมอันหนึ่ง และทำการปรับแต่งให้เหมาะกับตัว Raspberry Pi
Raspbian สามารถติดตั้งบน SD card ขนาด 2GB ได้ แต่ขนาดที่แนะนำคือตั้งแต่ 4GB ขึ้นไป

Download

download Raspbian ได้จาก http://www.raspberrypi.org/downloads
หลังจาก download เสร็จแล้วให้ทำ unzip จะได้ไฟล์นามสกุล .img
ไฟล์ล่าสุดขณะเขียนบล็อกนี้คือ 2013-07-26-wheezy-raspbian.img

เขียนลง SD card

หลังจากได้ไฟล์ .img มาแล้วก็เตรียมเขียนลงใน SD card  
สำหรับ Windows
  • download โปรแกรมสำหรับเขียน SD card ชื่อ Win32DiskImager ได้จากที่นี่ http://sourceforge.net/projects/win32diskimager/
  • สร้าง directory สำหรับเก็บโปรแกรมนี้ เช่น C:\Win32DiskImager
  • unzip ไฟล์ที่ download ไปไว้ใน directory ที่สร้างขึ้น
  • รันโปรแกรม Win32DiskImager.exe ที่ unzip มา จะได้หน้าตาประมาณนี้
  • เลือก Image File เป็น .img ที่ unzip ไว้
  • เลือก Device ไปที่ SD card ที่จะเขียน
  • กด Write รอจนเสร็จ แล้วทำ Safely Remove Hardware ของ SD card
สำหรับ Mac
  • ใส่ SD card ลงใน card reader
  • เปิดโปรแกรม Terminal
  • ต้องหาว่า SD card อยู่ที่ device อะไร โดยใช้คำสั่ง
    diskutil list
    ตัวอย่าง SD card ขนาด 4GB จะได้ผลลัพธ์ประมาณนี้
    ดูขนาดจาก column SIZE แล้วดู device จาก column IDENTIFIER จะเห็นได้ว่า SD card ตัวนี้อยู่ที่ disk1 (ไม่ต้องสนใจ disk1s1 เพราะ s1 ที่ตามหลังคือ partition 1 ของ disk1)
  • สั่ง unmount device (ในตัวอย่าง device คือ disk1) โดยใช้คำสั่ง
    diskutil unmountDisk /dev/disk1
  • ทำการเขียน SD card โดยใช้คำสั่ง
    sudo dd bs=1m if=XX.img of=/dev/disk1
    แทนที่ XX.img ด้วยชื่อไฟล์ .img ที่ download และ unzip ไว้ตั้งแต่ต้น
    ส่วน disk1 คือ device ที่ unmount ไว้
    อาจมีการถาม password ด้วย
  • หลังจากเขียนเสร็จ Mac OS X จะทำการ mount device กลับมาให้อัตโนมัติ และทำการสร้าง directory .Trashes กับ .fseventsd เพิ่มลงใน device ซึ่งจะทำให้เกิดปัญหาตอนติดตั้ง ต้องลบสอง directory นี้ออก
    ไปที่ /Volumes/Boot โดยใช้คำสั่ง
    cd /Volumes/boot
    ทำการลบ directory ที่เกินมาโดยใช้คำสั่ง
    rm -f -r .Trashes .fseventsd
    ออกจาก /Volumes/Boot กลับไปที่ home โดยใช้คำสั่ง
    cd
  • สั่ง unmount device อีกครั้งโดยใช้คำสั่ง
    diskutil unmountDisk /dev/disk1

Boot Raspbian

  • ใส่ SD card ที่เตรียมไว้ลงใน socket ที่อยู่ด้านล่างของบอร์ด Raspberry Pi
  • ต่อจอภาพโดยใช้สาย HDMI หรือ composite RCA
  • ต่อ keyboard เข้าทางช่อง USB
  • ต่อสาย network เข้าทางช่อง RJ45
  • ต่อสายไฟเข้าที่ช่อง MicroUSB
จะเห็น boot message ออกทางจอภาพ รอจนกระทั้งเห็นเมนูตามภาพ
การเลือกหัวข้อให้ใช้ลูกศรขึ้นลงกับ Tab เมื่อต้องการทำหัวข้อนั้นให้กด Enter

ข้อควรระวัง เนื่องจาก Raspberry Pi ใช้ CPU ความเร็วต่ำกว่า PC ที่เราคุ้นเคย เวลากด Enter ต้องรอซักนิด เพราะอาจดูเหมือนมันไม่ทำงาน

หัวข้อที่ควรทำ

  • Expand Filesystem จะเป็นการขยาย file system ให้เต็มตามขนาดของ SD card และจะมีผลหลังจาก reboot ครั้งถัดไป
  • Change User Password เป็นการตั้ง password ของ user pi
  • Internationalisation Options เข้าไปเปลี่ยน timezone ให้เป็น Bangkok กับเปลี่ยน keyboard layout จาก UK เป็น US
หลังจากออกจากเมนูนี้อาจจะมีการ reboot

หากต้องการเข้าเมนูนี้อีก ก็เปิด terminal หรือ login ด้วย secure shell แล้วใช้คำสั่ง
sudo raspi-config

การปิด/เปิดเครื่อง

ตัวบอร์ด Raspberry Pi ไม่มีปุ่มเปิดปิด เวลาปิดก็ถอดสายหรือปิดไฟที่จ่ายทางช่อง MicroUSB ได้เลย
แต่หากต้องการ shutdown OS ให้สมบูรณ์ก่อน ให้ใช้คำสั่ง
sudo shutdown -h now
แล้วรอให้ไฟสถานะบนบอร์ดเหลือแค่ LED สีแดงดวงเดียว



ตอนนี้เราก็จะได้ Raspberry Pi เอาไว้ทดลองกันแล้ว
ขอให้สนุกนะครับ

References:

http://elinux.org/RPi_Easy_SD_Card_Setup