Showing posts with label Raspberry Pi. Show all posts
Showing posts with label Raspberry Pi. Show all posts

Jul 26, 2017

เริ่มต้นกับ ROS (Robot Operating System) บน Raspberry Pi 3

ROS (Robot Operating System) คือ ระบบปฏิบัติการหุ่นยนต์ ที่ประกอบไปด้วย library และ โปรแกรมต่างๆ ที่จะอำนวยความสะดวกในการสร้างหุ่นยนต์ บทความนี้จะรวบรวมข้อมูลในการตั้งต้นสำหรับการใช้งาน ROS บน Raspberry Pi 3 ที่ติดตั้ง Ubuntu MATE

1. ติดตั้ง Ubuntu MATE บน Raspberry Pi โดยส่วนตัวแล้วผมไม่คุ้นเคยกับระบบปฏิบัติการอย่างเป็นทางการของ Raspberry Pi นั่นคือ Raspbian แต่ผมได้ใช้ Ubuntu มาอย่างยาวนาน น่าจะสักตั้งแต่ปี 2007 โชคดีที่ในหน้าดาวน์โหลดของ Raspberry Pi มี OS ทางเลือกที่เป็น Ubuntu MATE  การติดตั้ง Ubuntu MATE บน Raspberry Pi 3 ให้ทำตามเอกสารนี้ ณ ขณะที่เขียนนี้  Ubuntu MATE เป็นเวอร์ชั่น 16.04 LTS

ปรับแต่ง Raspbery Pi เพื่อเตรียมพร้อมจะใช้งาน ROS ดังนี้


2. ติดตั้ง ROS ณ ขณะนี้ เวอร์ชั่นที่เป็น LTS คือ Kinectic Kame สำหรับการติดตั้ง ROS ใน Ubuntu MATE บน Raspberry Pi ให้ทำตามขั้นตอนในเอกสารในเวบไซต์ของ ROS หรือ www.intorobotics.com

3. ติดตั้ง ROS สำหรับ Arduino เป็นที่รู้กันว่า Raspberry Pi 3 นั้นมี PWM แค่ 1 ช่อง และไม่มี ADC ซึ่งจำเป็นต่อการสร้างหุ่นยนต์มาก ดังนั้นเพื่อเป็นการเติมเต็มส่วนที่ขาดหาย เราจะเชื่อมต่อ Raspberry Pi กับ Arduino ผ่าน serial port นั่นเอง การติดตั้งขอให้ทำตามเอกสารในเวบไซต์ของ ROS

4. ศึกษา Tutorial เมื่อทุกอย่างทำงานอย่างลงตัว ให้ศึกษาตัวอย่าง

Jul 25, 2017

ติดตั้ง RTIMULib เพื่อเชื่อมต่อกับ MPU9250 บน Raspberry Pi 3

เราจะติดตั้ง RTIMULib เพื่ออ่านค่าของเซนเซอร์ใน MPU9250 ซึ่งประกอบด้วย accelerometer, gyroscpope และ magnetometer ผ่าน I2C ดังนั้นต้องเปิดการใช้งาน I2C ตามนี้ก่อน จากนั้นให้ทำตามขั้นตอนตามคู่มือของ RTIMULib  ดังนี้

1. ติดตั้ง CMake

sudo apt-get install cmake

2. ติดตั้ง Qt dev

sudo apt-get install libqt4-dev

3. โคลนซอร์สโค๊ด

git clone https://github.com/RPi-Distro/RTIMULib/

4. คอมไฟล์ library

cd RTIMULib/RTIMULib/
mkdir build
cd build
cmake ..
make -j4
sudo make install
sudo ldconfig

ใน RTIMULib/Linux จะมีโปรแกรมต่างๆ เช่น RTIMULibCal, RTIMULibDrive, RTIMULibDrive10 and RTIMULibDrive11 ให้คอมไพล์ ตามนี้

make -j4
sudo make install

ในกรณีที่ Device ID ของ MPU9250 เป็น 115 (0x73) ให้แก้ไขไฟล์ RTIMULib/RTIMULib/IMUDrivers/RTIMUDefs.h คือ

#define MPU9250_ID                  0x73
แล้วคอมไฟล์อีกครั้ง 

ในบางครั้งโมดูลที่เราซื้อมาอาจจะเป็น MPU9255 ซึ่งเป็นชิปเบอร์ใหม่กว่า โดยเฉพาะที่ซื้อจากประเทศจีน แต่โชคดีที่มีคนทำ RTIMULib สำหรับ MPU9255 ไว้ ให้ไปดูรายละเอียดที่
https://github.com/Nick-Currawong/RTIMULib2

ในการใช้งานร่วมกับ ROS ศึกษารายละเอียดต่อที่นี่
http://www.jetsonhacks.com/2015/07/01/bosch-imu-under-ros-on-nvidia-jetson-tk1/

เปิดการใช้งาน I2C บน Raspberry Pi 3 ที่ติดตั้ง Ubuntu MATE 16.04

จากข้อมูล raspberrypi.stackexchange.com, github.com/RPi-Distro/RTIMULib และ kingtidesailing.blogspot.com การเปิดงานใช้งาน I2C เพื่อเชื่อมต่อ Raspberry Pi 3 กับโมดูลต่างๆ มีขั้นตอนดังนี้

1. เปิดการใช้งาน I2C โดยใช้คำสั่ง

sudo raspi-config

จากนั้นเลือก Advance Interface แล้วเลือก I2C จากนั้นทำตามคำสั่งที่โปรแกรมกำหนด

2. เปิดไฟล์ /etc/modules จะพบ

i2c-dev

ถ้าไม่พบให้เพิ่มเข้าไป

3. เปิดไฟล์ /etc/modprobe.d/raspi-blacklist.conf จะไม่พบข้อความเกี่ยวกับ i2c ในนั้น ถ้าพบให้ใส่คอมเมนต์ เช่น

# blacklist i2c-bcm2708

4. สังเกตุว่า /dev/i2c-1 จะเป็นโหมด 666 เพื่อใช้ user ธรรมดาไม่ใช่ root ใช้งานได้ (ไม่ต้องพิมพ์คำสั่ง sudo) แต่ถ้าไม่ใช่ให้เพิ่มไฟล์ /etc/udev/rules.d/90-i2c.rules โดยเพิ่ม

KERNEL=="i2c-[0-7]",MODE="0666"

5. แก้ไข  /boot/config.txt เพื่อให้ i2c ทำงานที่ความถี่สูงสุด 400 kHz โดยเพิ่มข้อความนี้

dtparam=i2c1_baudrate=400000

6. รีบู๊ต

7. ติดตั้ง I2C tool

sudo apt-get install i2c-tools

8. เชื่อมต่อ Raspberry Pi 3 กับโมดูล I2C โดยใช้ Pin 3 (SDA) และ Pin 5 (SCL) แล้วใช้คำสั่งเพื่อดู adress ของอุปกรณ์นั้น

i2cdetect -y 1

หากพบ address ของอุปกรณ์ ก็แสดงว่า I2C ก็พร้อมใช้งานแล้ว

Jul 21, 2017

เปิดการใช้งาน UART บน Raspberry Pi 3

ผมต้องการเปิดใช้งาน hardware serial บน Raspberry Pi 3 เพื่อในอนาคตจะเชื่อมต่อกับ Arduino ผ่านสายสัญญาณ Tx (Pin 8) และ Rx (Pin 10) จากการสืบเสาะข้อมูลจากเวบของ Raspberry Pi และ stackexchange สรุปได้ว่าใน Rasberry Pi 3 มี serial port อยู่ 2 ช่อง คือ /dev/ttyS0 ซึ่งติดต่ออยู่กับ serial console และ /dev/ttyAMA0 ซึ่งติดต่ออยู่ BlueTooth เพื่อจะทำให้  /dev/ttyAMA0 เชื่อมต่อกับ Tx (Pin 8) และ Rx (Pin 10) เราต้องดำเนินการดังนี้

1. ปิด serial console ก่อน โดยระบบปรับแต่งค่า
sudo raspi-config
2. แก้ไข /boot/config.txt 
sudo pluma /boot/config.txt
เพิ่มเนื้อหาดังต่อไปนี้ แล้ว save
a) เปิดใช้งาน UART
enable_uart=1

 b) ค่าความเร็วของ CPU ให้คงที่
force_turbo=1
arm_freq=1200
core_freq=250
c) ปิดการใช้งาน BlueTooth 
dtoverlay=pi3-disable-bt
3. แก้ไข /boot/cmdline.txt
sudo pluma /boot/cmdline.txt
ลบข้อความ "console=serial0,115200" หรือ "console=ttyAMA0,115200" ออก แล้วเซฟ
4. ปิดการใช้งาน modem
sudo systemctl disable hciuart
5. reboot

การติดตั้ง VNC ใน Ubuntu MATE 16.04 บน Raspberry Pi 3

บทความนี้เราจะติดตั้ง TightVNC  เพื่อทำระบบ remote control แบบไร้สายผ่าน WiFi สำหรับ Raspberry Pi 3 ที่ติดตั้ง Ubuntu Mate 16.04 โดยมีขั้นตอนดังนี้


1. ติดตั้ง TightVNC

sudo apt-get update
sudo apt-get install tightvncserver

2. ตั้งค่า lightdm

sudo pluma /etc/lightdm/lightdm.conf


จากนั้นใส่เนื้อหาดังนี้ แล้ว save

[VNCServer]
enabled=true
port=5900
width=800
height=600
depth=16
3. จากนั้นรีสตาร์ท lightdm

sudo /etc/init.d/lightdm restart


4. ตั้งค่า WiFi เพื่อให้เชื่อมต่ออินเทอร์เนตก่อนจะ login โดยการเข้าไปที่ Edit connection เลือก Edit ชื่อ WiFi hot spot ที่เชื่อมต่อ ในแทบ General เลือก All users may allow to connect 

ที่มา
http://panjitalk.com/connecting-ubuntu-mate-in-raspberry-pi-using-tightvnc/