Passive infrared sensor...

Post on 03-Sep-2021

6 views 0 download

Transcript of Passive infrared sensor...

รายงาน

เรื่อง Passive infrared sensor (PIR)

จัดท าโดย

นายคมกริช วรรณปะโค รหัสนิสิต 58011211032

นางสาวนฤมล ทุมรินทร์ รหัสนิสิต 58011211077

นางสาวพนิดา เอกพันธุ์ รหัสนิสิต 58011211092

นางสาววิภาวรรณ บุหรัน รหัสนิสิต 58011211123

นายจีรวัฒน์ ศรีบุตร รหัสนิสิต 58011211172

เสนอ

ผศ.โอฬาริก สุรินต๊ะ

ชั้นปีที่4 สาขาเทคโนโลยีสารสนเทศ

ภาคเรียน1 ปีการศึกษา 2561 มหาวิทยาลัยมหาสารคาม

ค ำน ำ

รายงานฉบับนี้เป็นส่วนหนึ่งของรายวิชา Linux command line and shell-scripting ซึ่งมีเนื้อหา

เกี่ยวกับการCodeidng and IoT เป็นการจ าลองการใช้งาน IoT ในรูปแบบ sensor เพ่ือตรวจจับการ

เคลื่อนไหวแสดงถึงหลักการและวิธีการต่างๆและกระบวนการขั้นตอนปฏิบัติ

ทางผู้จัดท าหวังเป็นอย่างยิ่งว่ารายงานฉบับนี้จะเป็นประโยชน์แก่ผู้ที่เข้ามาศึกษาและน าความรู้จาก

รายงานไปใช้ให้เกิดประโยชน์สูงสุด หากมีข้อบกพร่องประการใดผู้จัดท าขอน้อมรับและขออภัยมา ณ ที่นี้

ด้วย

ผู้จัดท า

สารบัญ

เรื่อง หน้า

อุปกรณ์ 1

วิธีการด าเนินงาน

ขั้นตอนการติดตั้งUbuntu mate 2-3

ขั้นตอนการติดตั้ง Raspbian Image ลงบน micro SD card 4-10

ขั้นตอนการสร้างnetpie 11-14 ขั้นตอนการสร้างคีย์ Application 15-16 ขั้นตอนการสร้างFreeboards 16-17 ขั้นตอนการเพ่ิมแหล่งข้อมูล 17-20

ติดตั้งโปรแกรม Microgear 21-24 ขั้นตอนการต่อหลอดไฟ 24-27 ขั้นตอนการท า Feeboard 28-31

เอกสารอ้างอิง 32

เตรียมอุปกรณ์

1. Raspberry Pi

2. สายชาร์จ

3. SDการ์ด

4. แผ่นโพรโทบอร์ด

5. หลอดไฟ

6. ไดโอด

7. สายเชื่อม

8. เซ็นเซอร์

9. เมาส์

10. คีย์บอร์ด

11. สายhtml

12. ทีวี

วิธีการด าเนินงาน

SDการ์ดไปลงUbuntu mate

ขั้นตอนกำรติดตั้งUbuntu mate

เข้าไปในเว็บhttps://ubuntu-mate.org/download/ จากนั้นเลือกหรือคลิกตรงท่ีราสเบอร์รี่ Pi

เลือกRaspberry Pi Linux ที่ใช้ส าหรับ16.04.2 (Xenial)คลิกท่ี `16.04.2 (Xenial) เพ่ือเข้าสู่หน้าดาวน์โหลด

จากนั้นสามารถดาวน์โหลดส าหรับubuntu-mate-16.04.2-desktop-armhf-raspberry-pi.img.xz

ขั้นตอนกำรติดตั้ง Raspbian Image ลงบน micro SD card

หลังจากท่ีเตรียมเครื่องมือพร้อมแล้ว ก็มาเริ่มติดตั้ง Raspbian Image ลงบน micro SD card กันได้เลยครับขั้นแรกให้เปิดโปรแกรม Etcher ขึ้นมาก่อนครับ หน้าตาโปรแกรมตอนเปิดขึ้นมาจะได้แบบนี้ครับ

ขั้นตอนที่ 1 กดปุ่ม Select Image จากนั้นเลือกไฟล์ Raspbian Image ที่เราโหลดมาเป็นไฟล์ .zip เช่น 2017-09-07-raspbian-stretch.zip (ถ้าเป็นโปรแกรมอ่ืนๆ ส่วนใหญ่จะต้อง unzip ให้ได้ไฟล์ .img ออกมาก่อนครับ)

ขั้นตอนที่ 2

เสียบ micro SD card เข้ากับคอมฯ เลย อาจจะใช้ SD Adapter หรือ External Card Reader อันนี้ก็ได้พอเสียบ micro SD card เรียบร้อย ตัวโปรแกรมก็จะเลือกไดร์ฟ micro SD card ที่เราเสียบเข้าไปให้โดยอัตโนมัติ

*** กรณีเสียบที่ micro SD card, Flash Drive หรือ External HardDisk Drive ตัวอ่ืนๆ เอาไว้ให้กดปุ่ม Change แล้วเลือกไดร์ฟให้ถูกต้อง ให้เป็น micro SD card ที่เราเพ่ิงเสียบเข้าไป เลือกไดร์ฟให้ถูกต้อง ไม่อย่างนั้นข้อมูลในไดร์ฟอ่ืนอาจสูญหายได้ โดยสังเกตได้จากความจุว่ากี่ GB และ Label ที่แสดงครับ หรือถ้าไม่ม่ันใจจริงๆ ว่าที่เลือกอยู่ถูกตัวหรือไม่ ให้ดึงอุปกรณ์ประเภทเก็บข้อมูลตัวอ่ืนๆ ออกไปก่อนก็ได้ ***

ขั้นตอนที่ 3 กดปุ่ม Flash! เพ่ือเริ่มติดตั้ง Raspbian Image ลง micro SD card ได้เลยครับ ระยะเวลาติดตั้งก็ราวๆ 15นาท ี

เมื่อติดตั้งเสร็จแล้วโปรแกรมจะแจ้งว่า Flash Complete! หลังจากนั้นก็ถอด micro SD card ไปเสียบใช้งานกับ Raspberry Pi ได้เลย

น า SD Card ที่ติดตั้ง Ubuntu Mate ด้วยโปรแกรม applePi-Baker มาเสียบที่ Raspberry Pi

เสียบสาย HDMI จาก Raspberry Pi ไปที่จอคอมพิวเตอร์หรือแอดแวร์

ใช้แป้นพิมพ์และเมาส์ที่เป็น USB เข้าท่ี Raspberry Pi

เสียบปลั๊กเข้าทางช่อง micro usb เพ่ือจ่ายไฟให้กับ Raspberry Pi

เมื่อเปิดปลั๊กกับ Raspberry Pi ระบบจะท าการติดตั้ง Ubuntu Mate

จากนั้นตั้งชื่อและรหัสผ่านให้กับ Ubuntu Mate

เมื่อรันเสร็จให้เชื่อมต่อWi-Fi หรือสายแลน

เมื่อเชื่อมSDการ์ดเข้ากับRaspberry Piแล้วท าการต่อเข้ากับหน้าจอทีวีแล้วรันหน้าจอผลรับจะได้

ดังรูปภาพ

ส าหรับการอัพเดท Unubtu Mate ท าได้โดยเปิด Terminal และพิมพ์ค าสั่ง $ sudo apt-get update $ sudo apt-get upgrade

ขั้นตอนกำรสร้ำงnetpie เข้าไปที่เว็บ https://netpie.io/ แล้วเลือกสมัครสมาชิกnetpie

จากนั้นกรอกข้อมูลลงไป

Thailand ข้อมูลที่ใช้ในห้างหุ้นส่วนจ ากัดหัวเรื่อง: การสมัครงานสมาชิกประกอบด้วย

อีเมลอีเมล

ชื่อชื่อ

องค์กรชื่อหน่วยงาน

รหัสประเทศรหัสประเทศ

หมายเลขโทรศัพท์มือถือหมายเลข

เลือกที่คลิกช่องI agree to the Privacy Statement and Terms of Use จากเนชั่นั้นคลิกที่ปุ่มSIGN UPเพ่ือยืนยันหัวเรื่อง: การลงทะเบียนหัวเรื่อง: การใช้NETPIE

เมื่อคลิกท่ี SIGN UP จากระบบจะส่งข้อความ (ข้อความ) ไปยังเบอร์โทรศัพท์ที่กรอกลงไปในกล่องจดหมายmobile phone numberจะเป็นรหัสผ่านแบบOne Time Password: otpฟอร์มหรือรหัสผ่านแบบใช้ครั้งเดียวเพ่ือใช้ส าหรับการLOG INเข้าสู่ระบบ

จากนั้นLoginด้วยUsernameหรือEmail ตามด้วยรหัสผ่าน

การปรับแต่งAPPLICATIONS (การประยุกต์ใช้งาน) เพ่ือใช้ส าหรับการรับข้อมูลจากอุปกรณ์ IoT

คลิกเมนู ทรัพยากร>การประยุกต์ใช้งาน

หากต้องการสร้างรูปแบบAPPLICATIONSคลิกท่ีปุ่มเครื่องหมายบวก

จากนั้นระบบจะแสดงหน้าต่างป๊อป อัพ (pop up) ให้กรอกชื่อของAPPLICATION (APPID)โดยให้กรอกเป็นคุณตัวอักษรและตัวเลขโดยห้ามเว้นช่องว่างและใช้เครื่องหมายพิเศษใดๆ แล้วกดท่ีปุ่มสร้าง เพ่ือสร้าง APPID

สร้างเมื่อAPPIDเสร็จจะปรากฏรายชื่อของappid

ขั้นตอนกำรสร้ำงคีย์ Application APPLICATION KEYให้คลิกท่ีปุ่มบวกจากเนชั่นนั้นจะมีหน้าต่างป๊อปอัพปรากฏขึ้น

เมื่อมีหน้าต่างป๊อปอัพให้ปรากพิมพ์ชื่อของapplication keyและเลือกtypeของส าคัญให้เลือกโดยDevice Keyสุดท้ายคลิกที่ปุ่มCREATE

คลิกท่ีเมื่อปุ่มCREATEจะปรากฏรายชื่อkeyในห้างหุ้นส่วนจ ากัดส่วนของAPPLICATION KEYโดยในห้างหุ้นส่วนจ ากัดตัวอย่าง arrow ได้ก าหนดชื่อของการประยุกต์ใช้คีย์คือ IoI

ต่อมาให้คลิกท่ีkeyชื่อIoI เพ่ือท าการเอาkeyกับSecretไปใส่ใน Freeboardsต่อไป

ขั้นตอนกำรสร้ำงFreeboards การสร้าง dashboard ในNETPIEจะเรียกว่าFreeboards

การสร้าง dashboard สามารถท าได้โดยคลิกเมนู RESOURCES>FREEBOARDS

เมื่อคลิกท่ีFREEBOARDSจะปรากฏ หน้า: ภาพประกอบจอระบบดังต่อไปนี้หากยังไม่เคยสร้าง Freeboards จะไม่ปรากฏรายชื่อใด ๆ แต่ในกรณีนี้ได้เคยสร้าง Freeboards ไว้แล้วจึงปรากฏชื่อoogan จากเนชั่นั้นให้คลิกที่เครื่องหมายบวกเพ่ือ สร้าง Freeboard (สร้าง freeboard)

คลิกท่ีเมื่อเครื่องหมายบวกจะปรากฏหน้าต่างป๊อปอัพขึ้นมาเพ่ือให้กรอกชื่อของ Freeboards กด create

รายชื่อMayที่สร้างขึ้นจะเป็นแบบดิสเพลย์ในส่วนของFREEBOARD

จากนั้นให้คลิกที่Freeboardที่ต้องการในกรณีท่ีคุณเลือกท่ีMayจะดูหน้าNETPIE Freeboard

ขั้นตอนกำรเพิ่มแหล่งข้อมูล

เมื่อเพ่ิมค าFreeboardอธิบายขั้นตอนต่อไปคือการเพ่ิมDatasources ในการสร้างแหล่งข้อมูลโดยคลิกที่ปุ่ม ADD

เมื่อคลิกท่ีADDหน้าต่างปรากฏขึ้นให้เลือกtypeแหล่งข้อมูลในกรณีนี้ให้เลือกNETPIE Microgear

เลือกออกประเภทเมื่อเป็นNETPIE Microgearจะปรากฏหน้าต่างดังต่อไปนี้

NAME ก าหนดชื่อแหล่งข้อมูล APPID ก าหนด APPID ที่จะใช้งาน KEY ก าหนด KEY ที่จะใช้งาน

SECRET ก าหนดความลับที่จะใช้งานรูปแบบทั้ง appid, key, secret เป็นรหัสที่จ าเป็นส าหรับลูกค้าในพ้ืนที่ที่ต้องการ รับข้อมูลได้

โดยAPPID คือรหัสที่APPIDสามารถเรียกดูได้https://netpie.io/app/Oogan

ในส่วนของkeyและsecretได้มาจากAPPLICATION KEYที่สร้างขึ้นดังต่อไปนี้

เมื่อทราบAPPID, keyและSECRETให้น ามากรอกลงไปในห้างหุ้นส่วนจ ากัดฟอร์มและให้กดท่ีปุ่มSAVEเพ่ือบันทึก

รายชื่อของdatasourceที่สร้างขึ้นจะเป็นแบบรายการต่อไปนี้ในตัวอย่างแสดงชื่อtest

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

ในการใช้งาน Library microgear ส าหรับ Python ท่านจะต้องมี Python และ pip ติดตั้ง อยู่ในเครื่องของ

ท่านเรียบร้อยแล้ว ขณะนี้ Library รองรับการท างานร่วมกับ Python 2.7 และ Python 3.4 สามารถ

ตรวจสอบได้ดังนี้

$ python -V

Python 3.4.3

$ pip -V

pip 7.1.2 from /usr/local/lib/python3.4/site-packages (python 3.4)

ท่านสามารถเริ่มท าการติดตั้งตัว library โดยใช้

pip จะท าการติดตั้ง library และ package อ่ืนๆ ที่จ าเป็นต้องใช้ หากมีปัญหาในการติดตั้ง ตรวจสอบได้ท่ีนี่

หลังจากท่ีท าการติดตั้งแล้ว ให้ท าการสร้างไฟล์ ส าหรับติดต่อกับ NETPIE ในที่นี้จะใช้ชื่อว่า app.py โดยท าการ import microgear library

import microgear.client as client

Key management menu

เลือกเมนู Key management จาก Developer menu

Key management page

Copy App key, App secret และ App ID มาใส่ไว้เป็น พารามิเตอร์ gearkey, gearsecret, appid ฟังก์ชั่น create()

โดยในที่นี้ เราก าหนด Option debugmode ให้เป็น True เพ่ือท าการแสดงข้อความ debug ออกมาทาง STDOUT เพ่ือแสดงสถานะการท างานด้วย

ในมุมมองของ NETPIE มองว่าการสื่อสารระหว่างกันของอุปกรณ์ท่ีมี microgear library อยู่ภายใน เป็นการพูดคุยระหว่างกัน chat() เพ่ือให้ microgear (ใน App ID เดียวกัน) สามารถพูดคุยกันได้ ควรจะต้องมีการตั้งชื่อให้ microgear เช่นในที่นี้ ตั้งชื่อว่า "doraemon" ผ่านฟังก์ชั่น setname()

client.setname("doraemon")

นอกจาก microgear จะได้รับข้อความ จากการ chat แล้ว ยังสามารถระบุ หัวข้อที่ microgear นั้นสนใจได้ โดย ฟังก์ชั่น subscribe() เช่นในที่นี้ สนใจหัวข้อเกี่ยวกับ "/mails" เป็นต้น

client.subscribe("/mails")

เมื่อมีการตั้งชื่อ และระบุหัวข้อที่สนใจแล้ว เราสามารถส่งฟังก์ชั่น ที่จะถูกเรียกใช้งานเมื่อเกิดเหตุการณ์ต่างๆ (callback) ได้ เช่น on_connect, on_message ซึ่งจะถูกเรียกใช้งาน เมื่อเกิดเหตุการณ์ connect และ ได้รับข้อความ ข้อควรระวัง: การท างานของฟังก์ชั่นเหล่านี้ ไม่ควรนานเกินไป หรือเป็น infinite loop เนื่องจากจะท าให้ไม่สามารถรับส่ง/ติดต่อ กับ NETPIE ได้

เมื่อเตรียมการเรียบร้อยแล้ว เริ่มท าการเชื่อมต่อกับ NETPIE ได้โดยเรียกฟังก์ชั่น connect() ซึ่งในท่ีนี้ เราใส่ พารามิเตอร์ True ด้วย เพื่อให้ library ท าการวนรอข้อความ และปฏิบัติตามฟังก์ชั่น callback ที่ก าหนดไว้

client.connect(True)

และเม่ือเขียนโปรแกรมเสร็จสมบูรณ์ จะได้ app.py ในลักษณะนี้

สามารถเรียกใช้งานได้โดย

เมื่อออนไลน์สามารถตรวจสอบสถานะการเชื่อมต่อได้จากหน้า Key management ดังภาพ

จะเห็นว่ามีสถานการออนไลน์จ านวน 1 Token ซึ่งเป็น Token เดียวกับท่ีปรากฎบน output ของ program แสดงว่า microgear สามารถติดต่อ NETPIE ได ้

ขั้นตอนกำรต่อหลอดไฟ ท าการต่อหลอดไฟและไดโอด เข้ากับแผ่นโพรโทบอร์ด โดยหลอดไฟเสียบกับ ขาแรก(16/E) ขาสอง(19/E) ไดโอดเสียบกับบอร์ด ขาแรก(19/D) ขาสอง(25/D)

ดังรูปภาพ

จะได้รูปการต่อหลอดไฟไดโอดเสียบ

กับบอร์ด

จากนั้นน าRaspberry Pi มาเชื่อมต่อกับแผ่นโพรโทบอร์ด ดังรูปภาพ

การควบคุม Raspberry Pi ผ่าน ssh

เมื่อติดตั้ง Ubuntu Mate เป็นที่เรียบร้อยจะยังไม่สามารถ ssh เข้าไปเพ่ือสั่งให้ Raspberry Pi ท างานได้ จะต้องติดตั้งโปรแกรม OpenSSH Server เสียก่อน

การติดตั้งอุปกรณ์ OpenSSH Server

เชื่อมต่อ Raspberry Pi เข้ากับจอคอมพิวเตอร์ผ่านสาย HDMI

เชื่อมต่ออินเทอร์เน็ต เพราะการติดตั้งทุกโปรแกรมจะต้องติดตั้งผ่านระบบอินเทอร์เน็ต

เปิดโปรแกรม Terminal หรอืใช้คีย์ลัด ctrl+alt+T เพ่ือเปิด Terminal

พิมพ์ค าสั่งต่อไปนี้เพ่ือติดตั้งโปรแกรม OpenSSH Server

$ sudo apt-get install openssh-server

เมื่อติดตั้งเสร็จเรียบร้อยให้ค้นหา ip address ของ Raspberry Pi โดยพิมพ์ค าสั่ง

$ ifconfig

เมื่อได้หมายเลข ip address สมมุติได้หมายเลข 10.152.14.1

จากนั้นให้พิมพ์ค าสั่ง

$ ssh <user>@10.152.14.1

โดย ให้เปลี่ยนตาม user ที่ใช้ในการ login เข้า Raspberry Pi

จากนั้นระบบจะให้กรอกรหัสผ่าน (password) หากผ่านก็จะสามารถเข้าสู่ระบบของ Raspberry Pi ได้

เมื่อ Login เข้าระบบได้ จะปรากฎหน้าจอดังตัวอย่างต่อไปนี้

จากนั้นเขียนโค้ดทดสอบไฟให้กะพริบ

โดยไลบรารี่ gpiozero และ RPi ติดตั้งมาพร้อมกับ Ubuntu Mate เป็นที่เรียบร้อย

ตัวอย่างการเรียกใช้ไลบรารี่ from gpiozero import LED หรือ import RPi.GPIO as GPIO

ในที่นี้เราใช้ import RPi.GPIO as GPIO

หลอดLED ตอบสนอง กระพริบ ดังรูป

\ Raspberry Pi||

ขั้นตอนกำรท ำ Feeboard

TYPE : Indicator Light

TITLE: door

ON TEXT: Open

OFF TEXT: Close

ส่วน VALUE: ให้เลือก.JS EDITOR จากนั้นพิมพ์โค้ดตามรูป

datasources["test"]["/077/gearname/smartFarm"].split(',')[0] == 'LED_ON'

โค๊ดท าการทดสอบไฟกระพริบ เพื่อให้ทราบว่าระบบสามารถท างานได้

จากนั้นต่อ Sensor เข้ากับ Raspberry Pi โดยเชื่อมกับ

เชื่อมต่อสายระหว่าง PIR sensor ไปยัง RPi

VCC --> 5V (Pin 2)

OUT --> GPIO 17 (Pin 11)

GND --> GND (Pin 6)

เชื่อมต่อ LED ไปยัง RPi

led pin --> GPIO 04 (Pin 7)

GND -- > GND (Pin 30)

ภาพดังกล่าวแสดง เพ่ือเปิดการใช้งาน Sensor เข้ากับ Raspberry Pi เพ่ือให้ sensor ตรวจจับการเคลื่อนไหว

แสดงค่าเม่ือมีวัตถุเคลื่อนไหวผ่าน senser จะส่งค่าไปยัง Raspberry Pi เพ่ือไห้ Raspberry Piแสดงผล

ตรวจจับวัตถุแสดงค่าไฟกระพริบเมื่อ ตรวจจับส าเร็จ

1. Import แพคเก็ต เพ่ือไห้ Raspberry Pi ท างานโดยประกอบ ด้วย

Microgear.client เชื่อมต่อกับ netpie

Base64, zlib, time เชื่อมต่อกับ freeboard

Random ท าการสุ่ม

Datetime ตรวจสอบเวลา

RPI.GPIO เชื่อมต่อ Raspberry Pi

2. น า key secret app ของ netpie เพ่ือ เชื่อมต่อกับ freeboard เพ่ือไห้ระบบท างาน

3. โค๊ดตั้งแตบ่รรทัดที่ 11

แสดงถึงการเข้ารหัส

บรรทัด 13-17 แสดงไห้เห็นให้เห็นถึงข้อความของ netpie

ถ้าสามารถเชื่อมต่อ แสดงข้อความ now I am connected with netpie

บรรทัดที่ 19-24 เป็นการตั้งชื่อ เพ่ือ เชื่อมต่อและส่งข้อความ มาที่ netpie

บรรทัดที่30 - 31

ก าหนดไห้ sensor = GPIO17(11)

ก าหนดไห้ ไฟ led = GPIO18(12)

บรรทดัที่ 33 – 34

33 อ่านค่าส่งออกของ PIR

34 อ่านค่าoutput จาก pin

บรรทัดที่ 36-53

ถ้าsencerมีค่าเป็นtrue ให้ส่งข้อความเป็น motion detected และข้ึนสถาณะเป็น on แล้ว GIOอ่านค่าของ

output ของ led ไห้เปิดไฟเป็นเวลา 3 วินาที ถ้าไม่ไช่ true ไห้ mas1 แสดงข้อความ motion not Dected

สถาณะถูกเปลี่ยนเป็น off และ GPIO อ่านค่า LED ไห้ปิดเป็นเวลา 0.5 วินาที ท างานวนลูปไปเรื่อยๆ