Saturday, August 30, 2014

Work Process-การทดลองใช้ Linear Hall Effect Sensor-KY024

ระบบปฏิบัติการที่ใช้


  • Ubuntu 12.10

อุปกรณ์ฮาร์ดแวร์มีดังนี้

  • บอร์ด Raspberry Pi 512 MB model B
  • SD card ขนาด 8+ GB
  • Wireless USB Adapter
  • micro USB Cable  + 5V. AC/DC Adapter
  • Linear Hall Effect Sensor-KY024
  • magnetic 



ขั้นตอนการดำเนินงาน

1.) เตรียมบอร์ด raspberry pi ให้พร้อมสำหรับการใช้งาน ผ่าน SSH โดยการเชื่อมต่อด้วย Wi-Fi

2.) เชื่อมต่อ pin ของ Linear Hall Effect Sensor-KY024 เข้ากับบอร์ด raspberry pi โดยต่อเข้ากับ GPIO Pin ดังนี้
     VIN     ต่อเข้ากับ    5V  Voltage pin
     GND     ต่อเข้ากับ    ground
     D0      ต่อเข้ากับ    GPIO 24

3.) ทดสอบการใช้งานด้วยการนำเซนเซอร์เข้าใกล้กับแม่เหล็ก

       - ก่อนนำเซนเซอร์เข้าใกล้กับแม่เหล็กจะเห็นได้ว่า หลอด LED ติดแค่ดวงเดียว


      - เมื่อนำเซนเซอร์เข้าใกล้กับแม่เหล็ก หลอด LED จะติดทั้ง 2 ดวง



4.) ทดสอบในส่วนของ Analog pin โดยการนำ Oscilloscope เข้ามาวัดแรงดันเอาต์พุตของเซนเซอร์ โดยแบ่งเป็นสองช่วงคือ ช่วงที่เซนเซอร์อยู่ห่างจากแม่เหล็ก LED ดับ 1 ดวง และช่วงที่เซนเซอร์อยู่ติดกับแม่เหล็ก LED ติดสองดวง

     - ช่วงแรก คือ ช่วงที่เซนเซอร์อยู่ห่างจากแม่เหล็ก วัดค่าแรงดันได้ที่ 2.20 V โดยเอาต์พุตของแรงดันที่ได้มีลักษณะเป็น linear




เซนเซอร์อยู่ห่างกับแม่เหล็ก วัดแรงดันได้ 2.20 V

- ช่วงที่สอง คือ ช่วงที่นำเซนเซอร์เข้ามาใกล้(ติด) กับแม่เหล็ก จะเห็นได้ว่าแรงดันเอาต์พุตที่ได้มีค่าลดลงจาก 2.20 V เป็น 1.64 V และยังมีลักษณะเป็น linear 



     
เซนเซอร์อยู่ใกล้(ติด) กับแม่เหล็ก วัดแรงดันได้ 1.64 V

     - จากการทดลองวัดแรงดันเอาต์พุตพบว่าค่าแรงดันที่ได้ขึ้นอยู่กับระยะห่างระหว่างเซนเซอร์กับแม่เหล็ก เมื่อแม่เหล็กเข้าใกล้กับเซนเซอร์แรงดันที่ได้จะต่ำลง แต่เมื่อแม่เหล็กออกห่างจากเซนเซอร์แรงดันที่ได้จะเพิ่มขึ้น

5.) ทดสอบการทำงานของเซนเซอร์โดยการเขียนโปรแกรมให้แสดงสถานะเมื่อเข้าใกล้แม่เหล็ก โดยเมื่อมีแม่เหล็กเข้ามาใกล้กับเซนเซอร์ จะได้เอาต์พุตเป็น Switch state active, rising edge detected - LED ON
แต่เมื่อ นำแม่เหล็กออกห่างจากเซนเซอร์จะได้เอาต์พุตเป็น switch state off,falling edge detected - LED OFF





ที่มา :










Work Process-การทดลองใช้ Barometric Pressure Sensor

ระบบปฏิบัติการที่ใช้

  • Ubuntu 12.10 

 

อุปกรณ์ฮาร์ดแวร์มีดังนี้

  • บอร์ด Raspberry Pi 512 MB model B
  • SD card ขนาด 8+ GB
  • Wireless USB Adapter
  • micro USB Cable  + 5V. AC/DC Adapter
  • Barometric Pressure Sensor(BMP180)


ขั้นตอนการดำเนินงาน

1.) เตรียมบอร์ด Raspberry Pi ให้พร้อมสำหรับการใช้งานผ่าน Wi-Fi และ log in เข้าสู่ระบบด้วยโปรแกรม Putty

2.) เชื่อมต่อ pin ของ  Barometric Pressure Sensor-BMP180 เข้ากับบอร์ด Raspberry Pi  โดยต่อเข้ากับ GPIO Pin ดังนี้
     VIN   ต่อเข้ากับ 3.3V Voltage pin
     GND   ต่อเข้ากับ ground
     SCL   ต่อเข้ากับ I2C Clock
     SDA   ต่อเข้ากับ I2C Data
   
อ้างอิ่ง ref: http://2014.makerland.org/event/tutorials/raspberrypi/



3.) ตั้งค่าการใช้งาน I2C บนบอร์ด Raspberry Pi (เนื่องจาก Barometric Pressure Sensor-BMP180 มีการสื่อสารด้วย I2C bus) โดยมีขั้นตอนดังนี้
  • ให้แก้ไขไฟล์ /etc/modules โดยคำสั่งต่อไปนี้
     sudo nano /etc/modules

  • เพิ่มบรรทัดดังต่อไปนี้ลงไปในส่วนล่างสุดของไฟล์       
     i2c-bcm2835
     i2c-dev
    
  • ติดตั้งเครื่องมือ i2c บน raspberry pi
     sudo apt-get install python-smbus
     sudo apt-get install i2c-tools

  • เปิดไฟล์ /etc/modprobe.d/raspi-blacklist.conf ด้วยคำสั่ง

     sudo nano /etc/modprobe.d/raspi-blacklist.conf

  • แก้ไขบรรทัดดังต่อไปนี้ด้วยการเพิ่ม # ไปข้างหน้า เพื่อเอา blacklist ออก  

     blacklist spi-bcm2708
     blacklist i2c-bcm2708

  • ทำการ reboot Raspberry Pi

     sudo reboot

  • log in เข้าไปยัง Raspberry pi และใช้คำสั่งดังต่อไปนี้เพื่อตรวจสอบ i2c address

     sudo i2cdetect -y 1



     จะเห็นได้ว่า i2c address ที่ปรากฏขึ้น คือ 77 เมื่อนำไปตรวจสอบกับ datasheet ของ BMP180 แล้วจะพบว่า i2c address นั้นตรงกัน



4.) ทดสอบการทำงานของ BMP180 โดยใช้ Adafruit BMP085 Python Library(สามารถใช้ได้กับ BMP180) ซึ่งสามารถ Download ได้จาก https://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code
หรือ Download ด้วยคำสั่ง
     git clone https://github.con/adafruit/Adafruit-Raspberry-Pi-Python-Code.git

  • เข้าไปภายใน directory Adafruit-Raspberry-Pi-Python-Code  

    cd Adafruit-Raspberry-Pi-Python-Code


  • เนื่องจากบอร์ด Raspberry Pi ที่ใช้ เป็น version 2 (512 MB) จึงต้องแก้ไขไฟล์ Adafruit_I2C.py จาก

     def __int__(self,address,bus=smbus.SMBus(0),debug = Faulse):
   เป็น

     def __int__(self,address,bus=smbus.SMBus(1),debug = Faulse):
     

  • ทดสอบการทำงาน ด้วยคำสั่ง

     sudo python example/simple.py 


ผลการทำงาน


ทดสอบการนำค่าจาก Barometric Pressure Sensor(BMP180) มา Plot Graph

ผลการทำงาน



ปัญหาที่เกิด

    - ในการนำค่าที่ได้จาก barometric pressure sensor มา plot graph มีการแสดงเอาต์พุตหรือจุดที่พล็อต ค่อนข้างช้ามาก
    - เกิดปัญหา raspberry pi มีอุณหภูมิที่ค่อนข้างสูงกว่าปกติ


ที่มา :

https://learn.adafruit.com/using-the-bmp085-with-raspberry-pi/using-the-adafruit-bmp085-python-library

https://learn.adafruit.com/adafruits-raspberry-pi-lesson-4-gpio-setup/configuring-i2c

http://elinux.org/RPi_Low-level_peripherals

Saturday, August 16, 2014

แหล่งข้อมูลและความรู้ที่เกี่ยวข้องในการทำ

Raspberry Pi Hall Effect switchแหล่งข้อมูลและความรู้ที่เกี่ยวข้องในการทำ

Android กับการใช้งาน AsyncTask เบื้องต้น :
http://devahoy.com/2014/05/android-asynctask-tutorial/

Link : การใช้งาน GPS Module กับ Raspberry Pi
Link : Low-pass filter Wikipedia
Link : SensorEvent : TYPE.ACCELEROMETER

บทความ

RestFul vs SOAP อันไหนดี
- Google App Engine
เครื่องวัดสนามแม่เหล็ก
Hall Effect Sensor( Magnetic Sensor) คืออะไร

Raspberry Pi

- Model B IO PIN
GPIO Electrical Specifications

Sensor

   
 Hall Effect Sensor  

   - Tutorial: How to use the hall effect sensor with Arduino
   - Using Hall Effect Switches and Sensors 
   - Raspberry Pi Hall Effect switch
   - Low Cost Hall Effect Sensor
   - A Strange Attraction. Various Hall Effect Sensors 
   - How do I measure the RPM of a wheel?
   - Reading Fan RPM
   - Hall effect and GPIO
   - Raspberry Pi Hall Effect switch

Other Devices 

- Interfacing an SPI ADC (MCP3008) chip to the Raspberry Pi using C++ (spidev)

Cloud Service

Google Cloud SQL
- Google App Engine
- Google Cloud Storage
Rackspace
- Cloud data
- xively
- APEX Fusion
- Cloud Platform


DIY

- Home automation with Remoht.us
- RPi Android HTML5 Realtime Servo Control
- Start Using HTML5 WebSockets Today
- Google Cloud Platforrm
- Raspberry Pi Temperature Logger With Xively
- *First test with EVRYTHNG cloud, Raspberry PI and Python
Live Web Bicycle Dashboard using ControlMyPi
***********Live Web Bicycle Dashboard - the code
Raspberry Pi + TMP36 Temperature Sensor
Movable Parts
Rest of You: Bike Forces
ReadingRPM

Books

- Beginning Sensor Networks with Arduino and Raspberry Pi




Sunday, June 29, 2014

การตั้งค่า Internert sharing บน Ubuntu และการตั้งค่า Wi-Fi บน Raspberry pi

การตั้งค่า Internet sharing

     เนื่องจากการเชื่อมต่อ RPi  ผ่าน SSH โดยการต่อสาย LAN เข้ากับ router อาจไม่สะดวกในการใช้งาน จึงใช้อีกวิธีในการเชื่อมต่อ RPi แต่ยังคงใช้งานผ่าน PuTTY ซึ่งวิธีการใช้งานโดย Internet sharing มีข้อดีคือ อาจช่วยประหยัดพื้นที่ และลดการใช้อุปกรณ์ลงได้



อุปกรณ์ที่ใช้

1. บอร์ด Raspberry Pi Model B
2. SD card ที่ติดตั้ง Raspbian แล้ว
3. Ethernet connection LAN(RJ-45)
4. Micro USB

ขั้นตอนการตั้งค่า Internet sharing 

1. ต่ออุปกรณ์บอร์ด RPi รวมทั้งสาย LAN เข้ากับคอมพิวเตอร์
2. ไปยัง network และเลือก edit connections
3. เลือก wire connection และ edit
4. ไปยัง IPv4 setting เลือก method เป็น Shared to other computers กด save
5. เปิด terminal และ run command line ดังต่อไปนี้เพื่อดูหมายเลข IP ใหม่ ของ บอร์ด RPi
    cat /var/lib/misc/dnsmasq.leases





การตั้งค่า Wi-Fi บน Raspberry Pi


อุปกรณ์ที่ใช้

1. บอร์ด Raspberry Pi
2. SD card ที่ติดตั้ง Raspbian (Wheezy) แล้ว
3. Ethernet connection LAN(RJ-45)
4. Micro USB
5. wireless usb

ขั้นตอนการตั้งค่า Wi-Fi

1. log in เข้า RPi ผ่าน putty โดยการเชื่อมต่อด้วยสาย LAN
2. ต่อ Wi-Fi USB เข้ากับบอร์ด Raspberry Pi และตรวจสอบการเชื่อมต่อด้วยคำสั่ง
    ifconfig

    สังเกต wlan0 หมายถึง wireless adapter
3. list รายชื่อ USB device ที่ได้ติดตั้งเข้ามาใน บอร์ด RPi ด้วยคำสั่ง
    sudo lsusb


4. ติดตั้ง wireless-tools 
    sudo apt-get install wpasupplicant wireless-tools
5. อัพเดทไฟล์ /etc/network/interfaces
    sudo nano /etc/network/interfaces
    - ถ้าเป็นการเชื่อมต่อระบบความปลอดภัยแบบ WPA ให้อัพเดทดังนี้

      auto lo
      
      iface lo inet loopback
      iface eth0 inet dhcp

      auto wlan0
      allow-hotplug wlan0
      iface wlan0 inet dhcp
      wpa-ssid "your network"
      wpa-psk "password-here"

   - ถ้าเป็นการเชื่อมต่อระบบความปลอดภัยแบบ WEP ให้อัพเดทดังนี้

      auto lo
      
      iface lo inet loopback
      iface eth0 inet dhcp

      auto wlan0
      allow-hotplug wlan0
      iface wlan0 inet dhcp
      wireless-essid your network
      wireless-key your key

6. รีบูทบอร์ด Raspberry pi
      sudo reboot

7.login เข้า Raspberry pi และตรวจสอบการเชื่อมต่อกับ Wi-Fi สังเกตหมายเลข IP สำหรับใช้ใน  การเชื่อมต่อแบบ SSH โดยใช้ Wi-Fi
   หรือ
เปิด terminal และสแกนหา หมายเลข IP ด้วยคำสั่ง
      sudo nmap -sP 192.168.1.0/24  # computer จะต้องเชื่อมต่อ network เดียวกับบอร์ด RPi

นำหมายเลข IP ที่ได้เปิดใช้งานด้วย PuTTy

ที่มา :

How to set up Wi-Fi on a Raspberry Pi 

WiFi (with WEP security) on Raspberry Pi

Monday, June 16, 2014

Work Process - การเรียกใช้ข้อมูลแผนที่ Google Map


จากบทความที่ผ่านมา ได้ทำ การติดตั้ง Google Play Service SDK และ การขอ API Key ไปแล้ว ต่อไปจะทำการ อิมพอร์ต Google Map มาในแอพพลิเคชั่น

ขั้นตอนแรก สร้าง ชื่อโปรเจคให้ตรงกับค่า Android apps ในตอนที่ขอ API Key โดยที่ชื่อโปรเจคในที่นี้คือ bicydroid_v1


เมื่อสร้างโปรเจคเสร็จแล้วขั้นตอนต่อไปเราจะทำการอ้างอิง Google Play Service ที่อิมพอร์ตใน Eclipse แล้ว เข้ามาในแอพพลิเคชั่น ให้ทำการคลิกขวาที่โฟล์เดอร์โปรเจคที่เราเพิ่งสร้างขึ้นแล้วเลือก Properties


เมื่อเข้ามาที่หน้าต่าง Properties แล้ว จะเห็นแถบหัวข้อทางด้านซ้าย เลือก Android 

ในหัวข้อ Android นั้น จะมีกรอบของ Project Build Target กับ Library ในที่นี้เราสนใจที่ Library ในกรอบของ Library จะมีปุ่ม Add ทางด้านขวา ทำการคลิก Add 

เมื่อทำการคลิกแล้วจะปรากฎหน้าต่างของ Project Selection จะเจอ Library ที่ชื่อว่า google-play-service_lib การเลือกแล้วคลิกปุ่ม OK 


เมื่อกลับมาในหน้าต่าง Properties ในกรอบ Library จะพบว่าในแถบ Reference จะมีชื่อ Library  google-play-service_lib เพิ่มขึ้นมา แสดงว่าเราทำการอ้างอิงเสร็จเรียบร้อยแล้ว ก็ทำการกดปุ่ม OK 


ขั้นตอนต่อไปจะเข้าไปแก้ไขไฟล์ AndroidManifest.xml โดยภายในไฟล์ AndroidManifest.xml นั้นจะเห็นสองแท็กหลักๆ คือ แท็ก Manifest กับ แท็ก Application ซึ่งเราจะเพิ่มแท็ก กำหนด meta-data กับ permission ในการขอใช้งานที่เกี่ยวข้องกับ Google map

*ทำการเพิ่มแท็กต่อไปนี้ให้อยู่ ภายในแท็ก Aplication ในการประกาศเวอร์ชั่นของ Google Play Service

<meta-data  android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />


ต่อไปจะทำการแอด API Key ที่เราทำการขอใช้ GoogleMap API ก่อนหน้านี้ ในแอพพลิเคชั่นของเรา
โดยที่ MAP API จะทำการอ่านค่า API key เพื่อใช้ในการเข้าถึงเซิฟเวอร์ของ Google Map 

*ทำการเพิ่มแท็กต่อไปนี้ให้อยู่ ภายในแท็ก Aplication เช่นเดียวกัน ที่สำคัญในที่นี้คือ ภายในแท็กจะมีค่าของ android:value ให้เราทำการใส่ API Key ที่เราได้มาในส่วนนี้

<meta-data  android:name="com.google.android.maps.v2.API_KEY"
            android:value="หมายเลข API ของคุณ" />

ที่นี้เรามาทำการกำหนด permission ที่ต้องทำการแอดให้กับแอพพลิเคชั่นที่จะใช้ Google Map Android API จะมีที่สำคัญๆอยู่ 5 แท็กด้วยกัน 

*ทำการเพิ่มแท็กต่อไปนี้ให้อยู่ ภายในแท็ก Manifest 

<uses-permission android:name="android.permission.INTERNET" />
แท็กนี้จะถูกใช้โดย API ในการดาวน์โหลด Map tile จาก Google Map Server

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
แท็กนี้จะอนุญาตให้ API ในการเช็คสถานะการเชื่อมต่อเพื่อใช้ในการตัดสินใจในการโหลดข้อมูล

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
แท็กนี้จะอนุญาตให้ API แคชข้อมูล map tile ไว้ภายในหน่วยความจำภายนอกของอุปกรณ์ที่ติดตั้งแอพพลิเคชั่น

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
แท็กนี้จะอนุญาตให้ API สามารถใช้ WiFi หรือ Mobile cell data หรือทั้งสองในการค้นหาที่อยู่ของอุปกรณ์

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
แท็กนี้จะอนุญาตให้ API ใช้ GPS(Global Positioning System) ในการค้นหาที่อยู่ของอุปกรณ์ที่อยู่ภายในพื้นที่เล็กๆ

Google Map Android API ต้องการใช้ OpenGL version 2 ในการแสดงแผนที่ ถ้าไม่ทำการติดตั้งแผนที่ก็จะไม่แสดง เราต้องเพิ่มอีกแท็กในการแสดงแผนที่ 

*ทำการเพิ่มแท็กต่อไปนี้ให้อยู่ ภายในแท็ก Manifest 

<uses-feature  android:glEsVersion="0x00020000"
               android:required="true" />

เมื่อทำการเพิ่มแท็กทั้งหมดแล้วก็เป็นอันเสร็จสิ้นในการแก้ไขไฟล์ AndroidManifest.xml ดังรูปตัวอย่าง


ต่อไปเราจะทดสอบโดยวิธีที่ง่ายสุดคือการเพิ่ม Simple Map เข้าไปในแอพพลิเคชั่น 

ขั้นตอนนี้เราจะไปเพิ่ม Fragment ที่ Layout XML File ที่อยู่ใน Folder res/layout/activity_main.xml 
ทำการเปิดไฟล์ขึ้นมาแล้วทำการแก้ไขโดยการนำโค้ดต่อไปนี้ แทนที่โค้ดเดิมทั้งหมด (ถ้าสร้างโปรเจคใหม่) 

<?xml version="1.0" encoding="utf-8"?>
<fragment  xmlns:android="http://schemas.android.com/apk/res/android"
                 android:id="@+id/map"
                 android:layout_width="match_parent"
                 android:layout_height="match_parent"
                 android:name="com.google.android.gms.maps.MapFragment" /> 


ส่วนไฟล์ MainActivity.java ไม่ต้องไปทำการแก้ไขใดๆ ถ้าทำครบตามที่ได้เขียนไว้ เมื่อรันแอพพลิเคชั่นก็จะปรากฎแผนที่เต็มหน้าจอบนอุปกรณ์ที่ทำการติดตั้ง  

อัพเดท : หลังจากได้มีการตรวจพบเจอ Error ในไฟล์  MainActivity.java เนื่องจากเราทำการนำโค้ดไปแทนที่ใน activity_main.xml ทำให้ R.id.container ในไฟล์ MainActivity.java หายไป ให้ทำการลบ ส่วนนั้นทิ้งไป ดังรูปตัวอย่าง



หน้าตาของแอพพลิเคชั่น



Sunday, June 15, 2014

Work Process-ติดตั้งโปรแกรมที่ใช้งานร่วมกับ Raspberry pi ( PuTTy ,IP Scanner และ xrdp )

ระบบปฏิบัติการที่ใช้

  • Ubuntu  12.10

    วิธีการ ตรวจสอบ version ของ Ubuntu ทำได้โดยการพิมพ์ command line

        lsb_release -a


การติดตั้งโปรแกรม PuTTy 

1. ใช้คำสั่งดังต่อไปนี้ เพื่อ download และติดตั้งโปรแกรม
    sudo apt-get install putty

  



2. เมื่อติดตั้งเรียบร้อยแล้วให้ไปที่ Dash home และ ค้นหา โปรแกรม PuTTy จะได้โปรแกรมพร้อมใช้งาน




การติดตั้งโปรแกรม IP Scanner

    โปรแกรมที่เลือกใช้ คือ โปรแกรม nmap ซึ่งเป็นโปรแกรมที่มีความสามารถในการสแกนหา port และเหมาะที่จะเป็น IP scanner และมีการรายงานผลการสแกนพร้อมกับ MAC ADDRESS

ขั้นตอนการติดตัั้ง

1. ใช้คำสั่งดังต่อไปนี้ เพื่อ download และติดตั้งโปรแกรม
    sudo apt-get install nmap


2. คำสั่งในการสแกน IP ADDRESS
   sudo nmap -sP 192.168.1.0/24  # สแกนตั้งแต่ 192.168.1.0 ถึง 255.255.255.0
     


    เมื่อพบหมายเลข IP ของบอร์ด Raspberry pi แล้วก็นำไประบุในช่อง Host name(IP Address)บนโปรแกรม PuTTy และ log in เข้าสู่ระบบ Raspbian

การ Remote Desktop โดยใช้ xrdp

     xrdp คือ Remote Desktop Protocal ที่ช่วยให้เข้าใช้งานเครื่อง server โดยจะเชื่อมต่อไปยัง Raspberry Pi และจะใช้ร่วมกับ Program Rammina Remote Desktop Client ซึ่งส่วนใหญ่จะติดตั้งไว้แล้วในระบบปฏิบัติการ Ubuntu

การติดตั้ง

ใช้คำสั่ง command line ต่อไปนี้ในการติดตั้ง xrdp
    sudo apt-get install xrdp เมื่อติดตั้งแล้วโปรแกรม xrdp จะ run โดยอัตโนมัติ


ขั้นตอนการเข้าใช้งาน  Remote Desktop
1. ไปที่ Dash Home และค้นหาโปรแกรม Rammina Remote Desktop Client


2. เลือกเมนู create a new remote desktop file


3. เลือก Protocol เป็น RDP - Remote Desktop Protocol กรอก username และ password ที่ใช้ในการ log in เข้าใช้งาน RPi เลือก color depth เป็น 256 colors (8 bpp) จากนั้นให้เลือก connect





ที่มา:

How to use Remote Desktop in Ubuntu
Video การติดตั้ง Remote Desktop บน Raspberry pi
FTP Server Samba Server » IP and Port scanning using ‘nmap (Network Mapper)’ in Ubuntu  

Thursday, May 29, 2014

Work Process-การติดตั้ง Cloud ลงบน Raspberry Pi

ระบบปฏิบัติการที่ใช้


  • Windows 7

อุปกรณ์ฮาร์ดแวร์มีดังนี้

  • บอร์ด Raspberry Pi Model B
  • USB Cable
  • SD card ขนาด 8 GB
  • สาย LAN/RJ45

บอร์ด Raspberry Pi Model B

ซอฟแวร์หรือโปรแกรมที่ใช้มีดังนี้

  • ownCloud ( Open-source, ซอฟต์แวร์ระดับองค์กร )
  • Nginx ( Open-source, server ประสิทธิภาพสูง  )
  • OpenSSL (Open-source, ชุดเครื่องมือสำหรับ SSL/TLS)
  • php5 
  • Raspbian Wheezy (ระบบปฏิบัติการบนบอร์ด Raspberry Pi)
  • PuTTy for Windows

ขั้นตอนการติดตั้ง Cloud บน Raspberry Pi


1.) การเตรียมฮาร์ดแวร์และซอฟแวร์เพื่อเริ่มต้นใช้งานบอร์ด Raspberry Pi 


ใช้คำสั่ง command line sudo raspi-config ดังที่เคยปฏิบัติใน blog : การเตรียมฮาร์แวร์และซอฟต์แวร์เพื่อเริ่มต้นใช้งานบอร์ด Raspberry Pi เพื่อเรียกเมนูการตั้งค่าบอร์ด raspberry pi แต่ในการติดตั้ง cloud ควรจะตั้งค่าเริ่มต้นให้กับบอร์ดดังนี้   

  • ขยาย root filesystem เพื่อให้มีพิ้นที่รองรับ cloud
     select "Expand Filesystem"
  • เลือกการทำงานของ clock เป็น Modest or Medium
     select "Overclock" (เมื่อตั้งค่าเริ่มต้นให้กับบอร์ดเสร็จแล้วควร reboot บอร์ด RPi)

2.) อัพเดท package list บนบอร์ด Raspberry Pi

sudo apt-get update

sudo apt-get dist-upgrade

3.) สร้าง users

สำรับการติดตั้งนี้ใช้ groupName เป็น www-cloud
sudo groupadd groupName
 

สร้าง users ผู้ดูแล ซึ่งใช้ชื่อเป็น www-data เข้าไปใน group 
sodo usermod -a -G www-cloud www-data  

4.) ติดตั้ง packages 

เป็นการติดตั้ง  pakages ที่กล่าวไว้ข้างต้นด้วย command line
 sudo apt-get install nginx openssl ssl-cert php5-cli php5-sqlite php5-gd php5-curl php5-common php5-cgi sqlite3 php-pear php-apc curl libapr1 libtool curl libcurl4-openssl-dev php-xml-parser php5 php5-dev php5-gd php5-fpm memcached php5-memcache varnish

5.) สร้างใบรับรอบ SSL ให้มีระยะเวลาเป็น 2 ปี

 sudo openssl req $@ -new -x509 -days 730 -nodes -out /etc/nginx/cert.pem -keyout /etc/nginx/cert.key

sudo chmod 600 /etc/nginx/cert.pem
sudo chomd 600 /etc/nginx/cert.key


6.) กำหนดค่า Ngnix webserver

sudo nano /etc/nginx/sites-available/default

ให้ทำการกำหนดค่า โดยเพิ่ม code ดังต่อไปนี้ลงไป

* เปลี่ยนหมายเลข IP ตรงส่วนของ server_name ให้ตรงกับ หมายเลข IP ของ บอร์ด RPi

server {
    listen 80;
    server_name 192.168.XXX.XXX;
    rewrite ^ https://$server_name$request_uri? permanent; # enforce https
}
server {
    listen 443 ssl;
    server_name 192.168.XXX.XXX;
    ssl_certificate /etc/nginx/cert.pem;
    ssl_certificate_key /etc/nginx/cert.key;
    root /var/www/owncloud;
    index index.php;
    client_max_body_size 1000M; # set maximum upload size
    fastcgi_buffers 64 4K;
    location ~ ^/owncloud/(data|config|\.ht|db_structure\.xml|README) {
       deny all;
    }
    location / {
       try_files $uri $uri/ index.php;
    }
    location @webdav {
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param HTTPS on;
        include fastcgi_params;
    }
    location ~ ^(?<script_name>.+?\.php)(?<path_info>/.*)?$ {
        try_files $script_name = 404;
        include fastcgi_params;
        fastcgi_param PATH_INFO $path_info;
        fastcgi_param HTTPS on;
        fastcgi_pass 127.0.0.1:9000;
    }
}

จากนั้น กด ctrl+X แล้วเลือก Y ตามด้วย Enter

7.) กำหนดค่า max upload ใน php

sudo nano /etc/php5/fpm/php.ini

ใช้ ctrl+w ในการหาบรรทัดด้านล่างนี้
upload_max_filesize
และเปลียนเป็น
upload_max_filesize = 1000M

post_max_size 
เป็น
post_max_size = 1000M

และในตอนล่างของไฟล์ ให้เพิ่มบรรทัดต่อไปนี้ลงไป
upload_tmp_dir = /srv/http/owncloud/data
extension = apc.so
apc.enabled =1  
apc.include_once_override = 0 
apc.shm_size = 256 
จากนั้น สร้าง folder สำหรับ owncloud data
sudo mkdir -p /svr/http/owncloud/data
sudo chown www-data:www-data /srv/http/owncloud/data

8.) การตั้งค่า PHP 

sudo nano /etc/php5/fpm/pool.d/www.conf

เปลี่ยนบรรทัดด้านล่างนี้จาก
listen = /var/run/php5-fpm.sock
เป็น
listen = 127.0.0.1:9000

sudo nano /etc/dphys-swapfile
เปลี่ยนบรรทัดด้านล่างนี้จาก
CONF_SWAPSIZE = 100
เป็น
CONF_SWAPSIZE = 512


9.) Restart web server และ PHP

sudo /etc/init.d/php5-fpm restart
sudo /etc/init.d/nginx restart


10.) ติดตั้ง ownCloud

sudo mkdir -p /var/www/owncloud
sudo wget http://download.owncloud.com/download/5.0.11/owncloud_enterprise-5.0.11.tar.bz2
sudo tar xvf owncloud_enterprise-5.0.11.tar.bz2
sudo mv owncloud/ var/www/
sudo chown -R www-data:www-data /var/www
rm -rf owncloud owncloud-5.0.7.tar.bz2

11.) ติดตั้ง account ผู้ดูแลระบบ

เข้าไปยัง web browser และพิมพ์หมายเลข IP ของบอร์ด RPi และให้สร้าง account ผู้ดูแล





เมื่อเข้าสู้ระบบได้แล้ว หากยังติดตั้งโปรแกรมไม่ครบจะมีการแจ้งเตือน


ให้เลือกไปยัง installation guide และทำตามคำแนะนำ(ถ้าหากใช้ windows ให้นำหน้าคำสั่ง command line ด้วย sudo)



เมื่อติดตั้งเสร็จแล้วจะสามารถเข้าใช้งาน ownCloud ได้ตามปกติ


ปัญหาและอุปสรรค

    ในช่วงที่ทำการดาวน์โหลด package สำหรับซอฟต์แวร์อย่าง openSSL,Nginx และ php5 โดยการใช้ Internet ของมหาวิทยาลัยในบางเว็บไซต์ไม่สามารถทำการดาวน์โหลดได้ จึงไม่สามารถเรียกไฟล์ที่ต้องใช้มากำหนดค่าเริ่มต้นได้ทำให้การติดตั้ง cloud บนบอร์ด RPi ไม่สำเร็จ

การแก้ปัญหาและอุปสรรค

    การที่ไม่สามารถดาวน์โหลด package ข้างต้นได้นั้นคาดว่าน่าจะมีสาเหตุมาจากระบบ Internet ของมหาวิยาลัยมีการป้องกันไม่ให้เข้าใช้บางเว็บไซต์ จึงทดลองเปลี่ยนสถานที่การใช้ Internet ซึ่งสามารถดาวน์โหลดได้ครบทุก package และสามารถติดตั้งระบบ cloud ได้


อ้างอิงจาก : How to setup your own cloud on Raspberry Pi





Thursday, May 22, 2014

Work process- การเตรียมฮาร์ดแวร์และซอฟต์แวร์เพื่อเริ่มต้นใช้งานบอร์ด Raspberry Pi Model B

ขั้นตอนการเตรียมฮาร์ดแวร์และซอฟต์แวร์เพื่อเริ่มต้นใช้งานบอร์ด Raspberry Pi Model B


  • ดูได้จากบทความจาก Embeded System Lab(ESL) @ KMUTNB

การทดลองการเตรียมฮาร์ดแวร์และซอฟต์แวร์

ระบบปฏิบัติการที่ใช้

  • Windows 7

อุปกรณ์ฮาร์แวร์มีดังนี้

  • บอร์ด Raspberry Pi Model B
  • 5V adapter + USB cable
  • SDHC card ขนาด 4 GB
  • สาย LAN
  • Wireless Router

โปรแกรมที่ใช้มีดังนี้

  • SD Formatter 4.0 
  • Win32 Disk Imager
  • PuTTY for Windows
  • Angry IP Scanner
  • Wheezy Raspbian Image File: 2014-01-07-wheezy-raspbian.img

ขั้นตอนการทำงาน 

    สามารถดูรายละเอียดเพิ่มเติมได้ที่

1.) Download โปรแกรมที่ต้องใช้งาน

2.) ทำการ Format SDHC card ที่เตรียมไว้ด้วยโปรแกรม SD Formattet 4.0 และเลือก option ที่ต้องการจะ format ซึ่งมีให้เลือก 3 แบบ คือ
     - Quick เมื่อ format ไปแล้วสามารถกู้คืนข้อมูลได้
     - Full(erase) เมื่อ format ไปแล้วสามารถกู้คืนได้บางส่วน
     - Full(overwrite) เมือ format ไปแล้วไม่สามารถกู้คืนได้
    ซึ่งในการทำงานนี้เลือกการ format แบบ Quick  และ เลือก Format Size Adjustment ให้เป็น ON

3.)ติดตั้งระบบปฏิบัติการ Wheey Raspbian โดยการใส่ SCHD card ในช่องสำหรับ SD การ์ดของเครื่องคอมพิวเตอร์ จากนั้นจึงเรียกโปรแกรม Win32 Disk Imager และเลือกไดรฟ์ให้ตรงกับ SD การ์ดที่เตรียมไว้
จากนั้นจึงเลือก ไฟล์ 2014-01-07-wheezy-raspbian.img แล้วกด write

4.)บูทระบบ โดยการนำ SD การ์ด ที่ได้จากขั้นตอนข้างต้น มาเสียบในช่องสำหรับหน่วยความจำของบอร์ด RPi และจ่ายไฟเลี้ยง +5V ให้กับบอร์ดด้วย 5V adapter + USB cable และต่อสาย LAN เข้ากับ router ที่มีวง LAN เดียวกับ คอมพิวเตอร์ที่จะใช้งาน เมื่อเชื่อมต่อแล้วบอร์ดจะเริ่มทำงานโดยสังเกตได้จากหลอด LED จะเริ่มกระพริบ

5.)เปิดโปรแกรม Angry IP Scaner เพื่อค้นหา IP ของบอร์ด RPi โดยอันดับแรกเลือกเมนู Tools >> Fetchers และเลือก MAC ADDRESS ในช่องทางซ้าย ต่อมาเลือก IP range แล้วกดปุ่ม start หาอุปกรณ์จากเลข MAC ADDRESS ที่ขึ้นต้นด้วย B8:27:EB:xx:xx:xx  แล้วดูว่า ตรงกับหมายเลข IP ADDRESS อะไร

6.)เข้าใช้งาน Raspberry Pi แบบ Remote ผ่าน SSH ด้วยโปรแกรม Putty โดยใส่หมายเลข IP ADDRESS ที่ได้มาในช่อง Host name เมื่อเชื่อมต่อได้แล้วให้ทำการ login ด้วยชื่อผู้ใช้ pi และ password raspberry

7.)กำหนดค่าตัวเลือกในการใช้งานสำหรับ Wheezy Raspbian ด้วยคำสั่ง sudo raspi-config แล้ว enter จะขึ้นหน้าหลักสำหรับ เมนูคำสั่งมา จากนั้นให้กำหนดค่าต่างๆ

8.)ทำการ reboot ด้วยคำสั่ง sudo reboot

9.)ปิด โปรแกรม PuTTY และเชื่อมต่อใหม่อีกครั้งแล้ว check ขนาดความจุของ SD card ด้วยคำสั่ง sudo df -h

10.) ทำการ update ข้อมูลเกี่ยวกับซอฟต์แวร์สำหรับ Wheezy Raspbian  ด้วยคำสั่ง sudo apt-get update และให้พิมพ์คำสั่ง sudo apt-get dist-upgrade รอจนกระทั่งเสร็จ

11.)ปิดระบบ โดยใช้คำสั่ง sudo shutdown -h now และรอจนหลอด LED ดับยกเว้นหลอดสีแดง จึงถอดปลั๊กแรงดันไฟเลี้ยงออก



เว็บไซต์อ้างอิงเกี่ยวกับการใช้ SD Formatter 4.0 :
การ Format SD แบบง่าย






   



Tuesday, May 20, 2014

Work Process-การขอ API Key (Android)

การขอ API Key (สำหรับการเรียกใช้ข้อมูลแผนที่ Google Map)

Google กำหนดให้นักพัฒนาต้องขอ API Key หากต้องการเรียกใช้ข้อมูลแผนที่ Google Map ใน App Android ทั้งนี้เพื่อที่ Google จะได้ตรวจสอบได้ว่าแผนที่ถูกใช้งานโดยใครบ้างและถูกนำไปใช้อย่างไร

Google APIs Console คือ เครื่องมือที่ Google ทำไว้ให้นักพัฒนาใช้บริหารจัดการการใช้งาน API ต่างๆของ google

มีขั้นตอนการขอ API Key ดังนี้

1. เริ่มต้นเข้าที่เว็ปไซต์ https://code.google.com/apis/console/ จะปรากฎหน้า Google APIs Console
* ต้องใช้บัญชีของ Google ในการดำเนินการ หากไม่มีให้สมัครแล้วทำการ Log in จะปรากฎหน้า "Start using the Google APIs console " ทำการคลิก Create Project... ดังภาพ


2. ระบบจะสร้างชื่อโปรเจ็คว่า APIs Project ขึ้นมาด้านมุมซ้ายบน ด้านล่างชื่อโปรเจ็คจะมีแถบเมนู ทำการเลือก Services  


3. ตอนนี้จะปรากฎหน้าต่าง All service ให้ทำการหา API ที่ชื่อว่า "Google Maps Android API v2" ทางด้านขวาชื่อ API จะมีสวิตซ์ สถานะ OFF ทำการ ON โดยคลิกที่สวิตซ์ ระบบจะทำการเข้าสู่การแสดงเงื่อนไขในการใช้งาน (Review terms of service) 


4. ที่หน้าเงื่อนไขในการใช้งาน (Review terms of service) ด้านล่างทำการติ้กเครื่องหมายหน้า "I Agree to these terms." แล้วกด Accept แล้วระบบจะกลับมาที่หน้าโปรเจ็คดังเดิม 


5. เลือกเมนู API Access ทางด้านซ้าย จะปรากฎหน้า API Access ด้านล่างจะมีปุ่ม Create new Android Key ... ให้ทำการคลิกแล้วจะปรากฎหน้าต่างใหม่ขึ้นมา

6. หน้าต่างใหม่จะปรากฎหน้า Configure Android Key for API Project 


This key can be deployed in your Android applications.
API requests are sent directly to Google from your clients' Android devices. Google verifies that each request originates from an Android application that matches one of the certificate SHA1 fingerprints and package names listed below.

You can discover the SHA1 fingerprint of your developer certificate using the following command:
keytool -list -v -keystore mystore.keystore


เราจะต้องนำข้อมูลที่เรียกว่า SHA1 fingerprint จาก certificate ที่ใช้ในการ sign app ตามด้วย package name ที่ต้องการใช้ API ตามหลัง 
เนื่องจากโปรแกรม Eclipse ได้มีการพัฒนาทำให้สามารถดูได้จากโปรแกรมได้เลย แต่ในที่นี้จะแนะนำวิธีในการหา SHA1 fingerprint สองวิธี 

วิธีที่ 1 (Eclipse เวอร์ชั่นเก่า)
ไปที่ Command Line แล้วเข้า Directory Folder Bin ใน โปรแกรม java 
ตัวอย่างเช่น cd C:\Program Files\Java\jdk1.7.0_45\bin (ที่อยู่หรือเลขเวอร์ชั่น JDK อยู่ที่เครื่องของแต่ละบุคคลไม่เหมือนกัน)
แล้วพิมพ์คำสั่งดังนี้ 
keytool -list -v -keystore "ชื่อ Path ของไฟล์ debug.keystore" -alias androiddebugkey -storepass android -keypass android 
*ไฟล์ debug.keystore คือไฟล์ที่เก็บ Debug Certificate ที่ ADT นำมา sign ให้กับแอพให้เราในช่วงพัฒนา โดยชือ Path นี้สามารถตรวจสอบได้จาก Eclipse Window>Preference>Android>Build>Default debug keystore 
ตัวอย่างเช่น keytool -list -v -keystore "C:\Users\USER\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android 
จะปรากฎ Certificate fingerprints ดังภาพ


ก็จะได้ตัวเลขของ SHA1 fingerprint มา 

วิธีที่ 2 (Eclipse เวอร์ชั่นใหม่ v22.6.2-1085508 ที่ผู้เขียนใช้ปัจจุบัน)

เข้าที่โปรแกรม Eclipse ที่เมนูบาร์เลือก Window>Preference>Android>Build


จากรูปจะเห็นว่าจะบอกที่อยู่ของ debug.keystore ที่วิธีที่ 1 และบอก SHA1 fingerprint พร้อมทั้ง MD5 fingerprint พร้อมเสร็จ โดยที่หมายเลขของ SHA1 fingerprint ทั้งสองวิธีมีเลขเหมือนกัน

7. นำเลข SHA1 fingerprint ตามด้วยชื่อเครื่องหมาย semicolon แล้วจึงตามด้วยชื่อ package ของ Appication ที่จะนำมาสร้าง มากรอกในหน้าต่าง Configure Android Key for API Project แล้วคลิก Create 


8. หลังจากที่กด Create ก็จะมีกรอบ Key for Android apps (with certificates) เพิ่มขึ้นมา ซึ่งภายในกรอบจะปรากฏหมายเลข API Key  ซึ่งหมายเลข API นี้จะนำไปใช้ในโปรเจ็คแอนดรอยด์ต่อไป