วันศุกร์ที่ 8 กรกฎาคม พ.ศ. 2554

วิธีการ Set ให้ลินุกซ์ boot โปรแกรมหรือ Application ที่เราเขียนไว้ให้รันอัตโนมัติเมื่อเปิด

1. ไปที่  /etc/init.d/
2. สร้างไฟล์ .sh เช่น qtautorun.sh
3. พิมพ์ข้อความต่อไปนี้

#!/bin/sh

# Set Environment of QT
export TSLIB_TSEVENTTYPE=input
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_TSDEVICE=/dev/input/event2
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONFFILE=/etc/ts.conf
export TSLIB_PLUGINDIR=/usr/lib/ts
export QWS_MOUSE_PROTO=tslib:/dev/input/event2
export QTDIR=/usr/local/Qt

#run my application
chmod +x app
./app -qws &


4.  จากนั้นทำการ permission ไฟล์ .sh ที่สร้างขึ้นมาเมื่อสักครู่นี้ ก่อนโดยใช้คำสั่ง

chmod +x qtautorun.sh

5. เพื่อทำการ link ไปยัง level ในการบูตระบบด้วยคำสั่ง ln -s /etc/init.d/qtautorun.sh /etc/rc5.d/S105qtautorun  

วันจันทร์ที่ 4 กรกฎาคม พ.ศ. 2554

Beagle Board ทางเลือก สำหรับ Embedded Linux

              หลังจากที่ได้สัมผัสกับ Friendly ARM มาสักระยะ  ก็ได้มีโอกาสมาทดสอบ ทดลอง เล่นกับ Beagle Board ซึ่งก็ผมว่า Spec โดยรวมนั้น สูงกว่า Friendly ARM อย่างมากเลย ที่เดียว  ก็เลยถือโอกาสมา Review กับ BeagleBoard xM กันเลยน่ะครับ


                จุดเด่นหลัก ๆ ที่สำคัญของ Beagle Board ก็คือ CPU  1.0 GHz และ DDR Ram 512 MB ทำให้ความสามารถในการรัน Application ที่ต้องใช้ Resource มาก ๆ ทำได้ดีกว่า Friendly ARM อย่างแน่นอน  
                นอกจากนี้ ยังรวมไปถึง การแสดงผล  ที่มี Resolution สูงถึง Full HD  เลย รวมทั้งยังรองรับ DSP ไปในตัวอีกด้วย  เพียงเท่านี้  ก็คงจะเป็นที่น่าสนใจสำหรับ นักพัฒนา Embedded Linux กันน่ะครับ  เพราะ Beagle Board ก็ถือเป็นอีกทางเลือกที่น่าสนใจ  ทางเลือกหนึ่ง  

ซึ่งรายละเอียดและขุ้้นตอนการพัฒนา โดยเริ่มต้นสามารถดูได้จากข้อมูลที่เว็บไซต์ www.thaiembedded.com ซึ่งเป็นเว็บไซต์ที่ผมได้ศึกษามาโดยตลอด  และก็ต้องขอขอบคุณพี่  ๆ  ที่เว็บไซต์นี้เป็นอย่างมากที่คอยให้คำปรึกษา และ แลกเปลี่ยน องค์ความรู้กัน
     

วันอาทิตย์ที่ 26 มิถุนายน พ.ศ. 2554

สวัสดีครับ หลังจากที่ไม่ได้เข้ามาอัพเดตซะนาน

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

ตอนนี้ก็ทำงานแล้ว  แต่ก็ยังได้มีโอกาสสัมผัสกับ เทคโนโลยี Embedded Linux  อยู่เรื่อย ๆ น่ะครับ  

สำหรับผู้ที่เปิดมาเจอ  ก็อย่าเพิ่งเบื่อหน่ายกับข้อมูลที่ผมได้นำมาแบ่งปันน่ะครับ  และจะอัพเดตเข้ามาเรื่อย ๆ 

ถ้ามีเวลาน่ะครับ  ตอนนี้ก็กำลังลองเล่นกับ BeagleBoard xM น่ะครับ แล้วจะนำมาแชร์ให้อ่านกัน

วันจันทร์ที่ 28 กุมภาพันธ์ พ.ศ. 2554

ARM 9 Communication MCUs Boards Via USB Protocol

การทดสอบการเชื่อมต่อและการติดต่อสื่อสารระหว่างไมโครคอนโทรเลอร์กับบอร์ด ARM 9 ผ่าน
ยูเอสบี


รายละเอียดของซอฟต์แวร์และเฟิมแวร์ที่ใช้ทดสอบ

  • ใช้ไลบราลี่ยูเอสบีแสตค (Microchip USB/Stack Libraries) ของบริษัทไมโครชิพ
  • ใช้ยูเอสบีคลาสเจเนริกดีไวซ์ (Generic Device USB)

เมื่อทำการเชื่อมต่อ MCUs Board เข้ากับ ARM9 ใช้คำสั่งเพื่อตรวจสอบอุปกรณ์




ทดสอบโดยอ่านค่าแอนะลอกช่องที่ 0



ภาพประกอบการทดสอบ

วันจันทร์ที่ 20 ธันวาคม พ.ศ. 2553

เซ็นเซอร์ตรวจจับความเคลื่อนไหว (Motion Sensor)

                เซ็นเซอร์ตรวจจับความเคลื่อนไหว เป็นอุปกรณ์ที่แปลงการตรวจจับความเคลื่อนไหวเป็นสัญญาณไฟฟ้า โดยทั่วไปเซ็นเซอร์ตรวจจับความเคลื่อนไหวมี 3 ประเภทคือ
เป็นเซ็นเซอร์ที่รับความร้อนจากร่างกายเมื่อเคลื่อนที่ ไม่มีการปล่อยพลังงานออกมาจากเซ็นเซอร์
2. Ultrasonic
- เป็นเซ็นเซอร์ที่มีการปล่อยคลื่นอัลตร้าโซนิกออกมาและตรวจวัดการสะท้อนของคลื่นเมื่อวัตถุเคลื่อนที่
3. Microwave
- เป็นเซ็นเซอร์ที่มีการปล่อยคลื่นไมโครเวฟออกมาและตรวจวัดการสะท้อนของคลื่นเมื่อวัตถุเคลื่อนที่
                ในโครงงานนี้ได้เลือกใช้เซ็นเซอร์ตรวจจับความเคลื่อนไหวประเภท Passive infrared sensors

                เป็นอุปกรณ์ที่ตรวจจับความเคลื่อนไหวด้วยการตรวจวัดความร้อนในพื้นที่ที่ต้องการ ความร้อนวัดได้จากการเปลี่ยนแปลงระดับรังสีอินฟราเรดที่ปล่อยออกมาจากวัตถุ เมื่อวัตถุเคลื่อนที่ ( สิ่งมีชีวิตทุกชนิด จะแผ่รังสีอินฟราเรดออกมาจากตัวเอง การแผ่รังสีดังกล่าวเกิดจากการเคลื่อนที่ของอิเล็กตรอนในอะตอม ปริมาณรังสีจะมีมากน้อยตามแต่โครงสร้างทางเคมี และอุณหภูมิของวัตถุหรือสิ่งมีชีวิตนั้นๆ ) จึงทำให้สามารถตรวจจับสัญญาณลอจิกที่เปลี่ยนแปลงที่ขาเอาต์พุตได้

ส่วนประกอบที่สำคัญของ PIR sensor
1. เลนส์ - สำหรับควบคุมหรือโฟกัสพื้นที่ในการตรวจจับความเคลื่อนไหว
2. เซ็นเซอร์ - เป็นตัวแปลงพลังงานความร้อนจากรังสีอินฟราเรด มาเป็นสัญญาณทางไฟฟ้า
                ในโครงงานนี้ได้เลือกใช้โมดูล PIR sensor #555-28027 ของบริษัท Parallax

PIR sensor #555-28027


รูป โมดูลตรวจความเคลื่อนไหว (PIR sensor #555-28027)
                PIR sensor #555-28027 เป็นแผงวงจรตรวจจับความเคลื่อนไหวด้วยการตรวจวัดความร้อน สามารถวัดได้ไกลถึง 6 เมตร มีขนาดเล็ก ถูกออกแบบมาให้ใช้งานกับไมโครคอนโทรลเลอร์ได้ง่ายโดยใช้ขาเชื่อมต่อเพียง 1 ขา และสามารถเลือกโหมดสัญญาณเอาต์พุตได้

คุณสมบัติ 
- ใช้ไฟเลี้ยง +3 ถึง +5 โวลต์ ต้องการกระแสไฟฟ้ามากกว่า 3 มิลลิแอมป์ 
- สามารถตรวจจับความเคลื่อนไหวได้ในช่วง 6 เมตร
 - รัศมีในการตรวจจับ 70 องศา 
- สัญญาณเอาต์พุต 1 บิต 
- อุณหภูมิในการทำงานอยู่ในช่วง 0 ถึง 50 องศาเซลเซียส (ใช้ในพื้นที่ร่ม) 
- ใช้เวลาในการเรียนรู้สภาพแวดล้อม 10  ถึง 60 วินาที ในช่วงเวลานี้ควรจะมีตามการเคลื่อนไหวน้อยที่สุดในพื้นที่ที่มีการตรวจจับ เพื่อให้สามารถทำงานได้อย่างถูกต้อง
- ขนาด 32.2 มิลลิเมตร × 24.3 มิลลิเมตร × 25.4 มิลลิเมตร (กว้าง  × ยาว  × สูง)

โหมดสัญญาณเอาต์พุต
โหมดสัญญาณเอาต์พุตสามารถเลือกใช้งานได้ 2 แบบ คือ
1. สัญลักษณ์ H (HIGH) หมายถึง เอาต์พุตเป็นลอจิก 0 เมื่ออยู่ในสภาวะปกติ และเอาต์พุตเป็นลอจิก 1 เมื่อตรวจจับความเคลื่อนไหวได้
2. สัญลักษณ์ L (LOW) หมายถึง เอาต์พุตเป็นลอจิก 0 เมื่ออยู่ในสภาวะปกติ และเอาต์พุตเป็นลูกคลื่นลอจิก 1 สลับกับ 0 อย่างต่อเนื่อง(pulse) เมื่อตรวจจับความเคลื่อนไหวได้
                ในโครงงานนี้ได้เลือกใช้สัญญาณเอาต์พุตในโหมด H

จุดเชื่อมต่อการใช้งานของ PIR sensor #555-28027

รูปแสดงจุดเชื่อมต่อการใช้งานของ PIR sensor #555-28027
จุดเชื่อมต่อสำหรับใช้งานมีทั้งหมด 3 จุด
                1. ขาไฟเลี้ยง (+) สำหรับต่อไฟเลี้ยงแรงดัน +3.3 ถึง +5 โวลต์
                2. ขาเอาต์พุต (OUT) สำหรับต่อเข้ากับขาอินพุตของไมโครคอนโทรเลอร์
                3. ขากราวน์ (-) สำหรับต่อกราวด์ 0 โวลต์


แหล่งอ้างอิง

วันพฤหัสบดีที่ 14 ตุลาคม พ.ศ. 2553

Light Dependent Resistor (LDR)

ตัวต้านทานเปลี่ยนค่าตามแสง ( Light Dependent Resistor ) เป็นอุปกรณ์ประเภทสารกึ่งตัวนำชนิด 2 ขั้วต่อ ทำมาจากสารแคดเมียมซัลไฟล์ (Cds) หรือแคดเมียมซีลิไนด์ (Cdse) ซึ่งเป็นสารประกอบชนิดกึ่งตัวนำมาฉาบบนแผ่นเซรามิคที่ใช้เป็นฐานรอง แล้วต่อขาจากสารที่ฉาบเอาไว้


           
รูป LDR โครงสร้าง และสัญลักษณ์ของ LDR

คุณสมบัติของ LDR
ค่าความต้านทานในตัว LDR ระหว่างขั้วต่อทั้งสองจะเปลี่ยนแปลงไปตามความเข้มของแสงที่มาตกกระทบ ความเข้มของแสงน้อย LDR มีค่าความต้านทานสูง และถ้าความเข้มของแสงมาก LDR มีค่าความต้านทานต่ำ

รูปกราฟแสดงความสัมพันธ์ระหว่างความเข้มแสงและค่าความต้านทานของ LDR

คุณสมบัติทางแสง LDR
ไวต่อแสงในช่วงคลื่น 400-1000 นาโนเมตร (1 นาโนเมตร = 10 ^ -9 เมตร) ซึ่งครอบคลุมช่วงคลื่นที่ไวต่อตาคน (400-700 นาโนเมตร) นั่นคือ LDR ไวต่อแสงอาทิตย์ และแสงจากหลอดไส้ หรือ หลอดเรืองแสง และยังไวต่อแสงอินฟราเรดที่ตามองไม่เห็นอีกด้วย (ช่วงคลื่นตั้งแต่ 700 นาโนเมตรขึ้นไป)

คุณสมบัติทางไฟฟ้า
ความต้านทานในขณะไม่มีแสงจะอยู่ในช่วงตั้งแต่ 0.5 เมกะวัตต์ขึ้นไป และความต้านทานขณะที่มีแสงจะอยู่ในช่วงตั้งแต่ 10 กิโลวัตต์ ลงมาทนแรงดันสูงสุดได้มากกว่า 100 โวลต์ และทนกำลังไฟได้ประมาณ 50 มิลลิวัตต์

วันพุธที่ 29 กันยายน พ.ศ. 2553

การใช้งาน apache2 + php5 + Sqlite และ Qt + Sqlite

            เนื่องจากการใช้งานบน linux-pc และ การใช้งานบน mini2440 นั้นมีความคล้ายคลึงกันจึงขออธิบายเฉพาะการใช้งานบน linux-pc น่ะครับ

  1. เริ่มต้นให้ทำการติดตั้งแพกเกจ apache2 + php5 + Sqlite โดยใช้คำสั่ง

    sudo apt-get install  apache2  php5  php5-cli  php5+sqlite  sqlite3


  2. เนื่องจาก tool ที่ใช้ในการจัดการของ Sqlite แบบ GUI  สำหรับที่ใช้ในการทดสอบคือ sqlitebrowser สามาถติดตั้งโดย

    sudo apt-get install sqlitebrowser
  3. ทดสอบโดยการสร้างฐานข้อมูลชื่อ dbtest และสร้างตาราง profile ขึ้นมาดังรูป




  4. จากนั้นทำการ save และ copy ไฟล์ไปไว้ในโฟลเดอร์ที่ทำการรันhttp ในที่นี้คือ /var/www โดยใช้คำสั่ง 

    sudo cp -p /dbtest /var/www

  5. ทำการทดสอบโดยสร้างโปรเจค Qt ขึ้นมาแล่ะทดสอบโดยการเขียนโคดอย่างง่าย ๆ เพื่อ insert ข้อมูลเข้าไปใน database Sqlite
    โดยเมื่อสร้างโปรเจคแล้วให้เข้าไปเพิ่ม path plugin ของ sql ในไฟล์ .pro ดังรูป



  6. จากนั้นทำการพิมพ์โคดเพื่อทดสอบ และ รันโปรแกรมโดยใช้สถานนะเป็น root ด้วยการ

    sudo ./test


  7. เข้าไปที่โฟลเดอร์ /var/www และทำการสร้างไฟล์ php เพื่อทดสอบการติดต่อกับฐานข้อมูล

    cd /var/www
    sudo gedit new.php





    จากนั้นทดสอบโดยการเปิดหน้าเว็บขึ้นมาโดยเรียก ip ไปที่เครื่องที่เก็บฐานข้อมูลดังรูป

                    สำหรับการใช้งานใน mini2440 มีการติดตั้งและการใช้งานเหมือนกับ linux-pc แต่เพื่อความสะดวกในการสร้างและจัดการฐานข้อมูลจึงเลือกที่จะสร้างฐานข้อมูลและตารางต่างๆ ให้พร้อมก่อนทำการย้ายไปเก็บไว้บน mini2440 แล้วใช้ Qt ในการจัดเก็บข้อมูลอีกทีหนึ่ง