Week1
Hello RPi
Hello RPi
- บอร์ด Raspberry Pi 2 Model B
- Micro SD card ขนาด 2 GB ขึ้นไป (แนะนํา class 10 นะครับ)
- สาย Micro USB
- สาย HDMI
- หน้าจอแสดงผล (สามารถเชื่อมต่อแบบ HDMI ได้)
- USB Keyboard และ USB Mouse
- สาย LAN สําหรับเชื่อมต่อ Internet หรือ USB Wifi
- คอมพิวเตอร์ + Card Reader
- OS Raspbian.img
- โปรแกรม Win32DiskImager
- โปรแกรม VNC Viewer
- โปรแกรม SDFormat
- โปรแกรม Advanced IP Scanner
- USB Camera
- ตัวต้านทาน
***********************************************
1.Install
“2018-03-13-raspbian-stretch”
การติดตั้งระบบปฎิบัติการลง MICRO SD CARD
2.ใส่ SD card เข้ากับเครื่องคอมพิวเตอร์หรือ card reader
3.ที่ช่อง Image File ให้เลือก OS ที่เราจะทําการติดตั้งใน Micro SD card โดยคลิ๊กที่รูป แฟ้มสีน้ําเงิน ดังภาพ
4.ให้เลือกไฟล์อิมเมจของ Raspbian ที่เราโหลดไว้
5.กดปุ่ม Write เพื่อติดตั้ง OS ลง Micro SD card แล้วกด YES เพื่อยืนยัน
6.เมื่อติดตั้งเสร็จแล้วให้ถอด Micro SD card ออกจากคอมพิวเตอร์แล้วใส่ไปที่ Raspberry Pi ต่อไป
การเชื่อมต่อและตั้งค่าเพื่อควบคุม
1.ทำการเชื่อมต่อดังรูป แล้วตั้งค่า ip ตัวบอร์ดโดยทำขั้นตอนตามรูป
2.เข้า Interfaces แล้วกด Enabled ทุกอันแล้วกด OK ตามรูป
3.จากนั้น ต่อสายแลน เข้าคอม แล้วตั้ง ip คอมที่จะใช้ควบคุมโดยคลิกขวา properties ตั้งให้คล้ายกับ ip บอร์ด
- หาว่า บอร์ดเราใช้ ip อะไร- นำ ip ที่เราตั้งที่บอร์ด มาใส่ในช่อง 1 แล้ว เข้าควบคุมด้วย Username :pi Password:raspberry ด้วยใช้โปรแกรม VNC Viewer ตามรูป
- เมื่อเข้าได้แล้วจอเล็กไป สามารถ ต้องค่าจอแล้วทำการ wifi ให้เรียบร้อย ตามรูป
4.ทำการ update โดยเข้าไปที่ terminal แล้วพิมพ์ sudo apt-get update แล้วกด Enter เมื่อเสร็จจะขึ้น Done ตามรูป
---------------------------------------------------------------------------------
2.Hello I/O
HELLO WORLD! RASPBERRY PI
2.1กระพริบ (BLINK LED)
การต่อวงจร
- ใช้ ขา 6 (GND) ต่อตัวต้านทาน 330 โอมห์ และต่อ ขาลบของ LED
- ใช้ ขา 8 (GP14) ต่อเข้ากับขาบวกของ LED
ขั้นตอนการทดลอง
- เข้าโปรแกรม Menu > Programming > Python 3 (IDLE)
- เข้าเมนู File > New File
- ใส่ Code
- File > Save As ตั้งชื่อ blink.py แล้วกด save
การทดสอบ
- เข้าที่ Terminal พิมพ์คําสั่ง sudo python blink.py แล้ว Enter ตามรูป
-จะเห็น ว่า ไฟ LED จะติดดับครั้งละ 1 วินาที
ไฟกระพริบ แดง เหลือง เขียว
- ใส่ Code แล้วกด Save As ตั้งชื่อ 3D.py
การทดสอบ
- เข้าที่ Terminal พิมพ์คําสั่ง sudo python 3D.py แล้ว Enter ตามรูป
- จะเห็นว่า ไฟ จะกระพริบจาก แดง > เหลือง > เขียว
2.1ปุ่มกด
การทดลองนี้จะต่อปุ่มกดแบบ Pull-up โดยต่อจากวงจรเดิมโดยไฟ LED จะติดค้าง เมื่อกดปุ่มไฟ LED จะดับ
การต่อวงจร
การต่อวงจร
- ต่อจากวงจรของการทดลองที่ 1
- ใช้ ขา 1 (3V3) ต่อตัวต้านทาน 330 โอมห์ และต่อ ขาข้างหนึ่งของปุ่มกด แบบ Pull-up(ดังภาพ)
- ใช้ ขา 7 (GP4) ต่อเข้ากับขาอีกข้างหนึ่งของปุ่มกด
- ใส่ Code แล้วกด Save As ตั้งชื่อ button.py
การทดสอบ
- เข้าที่ Terminal พิมพ์คําสั่ง sudo python button.py แล้ว Enter ตามรูป
- จะเห็นว่า ไฟ LED จะติดค้าง และ เมื่อกดปุ่มกดไฟ LED จะดับ.
- เมื่อต้องการออกให้กด CTRL+Z เพื่อยกเลิกการทํางานของโค้ด
2.3 DHT-22 Temperature Test
วิธีที่ 1. อ่านค่า temperature จาก GPIO4 ของ Raspberry Pi
Step.1 ต่อวงจรตามภาพนี้
Step.2 เปิดโปรแกรม VNC ขึ้นมาแล้วเลือก IP ของบอร์ดที่ใช้ จากนั้นเปิดหน้าต่าง terminal แล้วใส่ code ดังนี้
sudo apt-get update
sudo apt-get install build-essential python-dev
git clone https://github.com/adafruit/Adafruit_Python_DHT.git
cd Adafruit_Python_DHT
sudo python setup.py install
Step.3 ทดสอบ อ่านค่าอุณหภูมิโดยใส่โค๊ดนี้
cd examples
sudo ./AdafruitDHT.py 11 4
Step.4 จะได้ค่าอุณหภูมิและความชื้นออกมา
วิธีที่ 2. ป้อนโค๊ดแล้วรัน
Step.1 เปิด Python 3 >> file new >> เขียน code >> Save
#!/usr/bin/python
import sys
import time
import Adafruit_DHT
sensor = Adafruit_DHT.DHT22
pin = 4
while True:
humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)
if humidity is not None and temperature is not None:
print 'Temp={0:0.1f}*C Humidity={1:0.1f}%'.format(temperature, humidity)
time.sleep(2)
else:
print 'Failed to get reading. Try again!'
Step.2 ทดสอบการรัน อ่านค่าอุณหภูมิโดยใส่โค๊ดนี้ ในหน้าต่าง terminal
sudo python tem.py
Step.3 จะได้ผลการ Run ดังนี้
วิธีที่ 1. อ่านค่า temperature จาก GPIO4 ของ Raspberry Pi
Step.1 ต่อวงจรตามภาพนี้
Step.2 เปิดโปรแกรม VNC ขึ้นมาแล้วเลือก IP ของบอร์ดที่ใช้ จากนั้นเปิดหน้าต่าง terminal แล้วใส่ code ดังนี้
sudo apt-get update
sudo apt-get install build-essential python-dev
git clone https://github.com/adafruit/Adafruit_Python_DHT.git
cd Adafruit_Python_DHT
sudo python setup.py install
Step.3 ทดสอบ อ่านค่าอุณหภูมิโดยใส่โค๊ดนี้
cd examples
sudo ./AdafruitDHT.py 11 4
Step.4 จะได้ค่าอุณหภูมิและความชื้นออกมา
วิธีที่ 2. ป้อนโค๊ดแล้วรัน
Step.1 เปิด Python 3 >> file new >> เขียน code >> Save
#!/usr/bin/python
import sys
import time
import Adafruit_DHT
sensor = Adafruit_DHT.DHT22
pin = 4
while True:
humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)
if humidity is not None and temperature is not None:
print 'Temp={0:0.1f}*C Humidity={1:0.1f}%'.format(temperature, humidity)
time.sleep(2)
else:
print 'Failed to get reading. Try again!'
Step.2 ทดสอบการรัน อ่านค่าอุณหภูมิโดยใส่โค๊ดนี้ ในหน้าต่าง terminal
sudo python tem.py
Step.3 จะได้ผลการ Run ดังนี้
2.4 MAX7219 Display Test
Step.1 ต่อวงจรตามภาพนี้
Step.2 เปิด Python 3 >> file new >> เขียน code >> Save
import time
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
LATCH = 24 # CS
CLK = 23 # Clock
dataBit = 19 # DIN
GPIO.setup(LATCH, GPIO.OUT)
GPIO.setup(CLK, GPIO.OUT)
GPIO.setup(dataBit, GPIO.OUT)
# Setup IO
GPIO.output(LATCH, 0)
GPIO.output(CLK, 0)
def pulseCLK():
GPIO.output(CLK, 1)
time.sleep(.001)
GPIO.output(CLK, 0)
return
def pulseCS():
GPIO.output(LATCH, 1)
time.sleep(.001)
GPIO.output(LATCH, 0)
return
# shift byte into MAX7219
# MSB out first!
def ssrOut(value):
for x in range(0,8):
temp = value & 0x80
if temp == 0x80:
GPIO.output(dataBit, 1) # data bit HIGH
else:
GPIO.output(dataBit, 0) # data bit LOW
pulseCLK()
value = value << 0x01 # shift left
return
# initialize MAX7219 4 digits BCD
def initMAX7219():
# set decode mode
ssrOut(0x09) # address
ssrOut(0x00); # no decode data
# ssrOut(0xFF) # 4-bit BCD decode eight digits
pulseCS();
# set intensity
ssrOut(0x0A) # address
ssrOut(0x04) # 9/32s
pulseCS()
# set scan limit 0-7
ssrOut(0x0B); # address
ssrOut(0x07) # 8 digits
# ssrOut(0x03) # 4 digits
pulseCS()
# set for normal operation
ssrOut(0x0C) # address
# ssrOut(0x00); // Off
ssrOut(0x01) # On
pulseCS()
# clear to all 0s.
for x in range(0,9):
ssrOut(x)
ssrOut(0x0f)
pulseCS()
return
def writeMAX7219(digit, location, data):
ssrOut(location)
ssrOut(data | (digit<<7))
pulseCS()
returnPage 31 of 42
def displayOff():
# set for normal operation
ssrOut(0x0C) # address
ssrOut(0x00); # Off
# ssrOut(0x01) # On
pulseCS()
return
def displayOn():
# set for normal operation
ssrOut(0x0C) # address
# ssrOut(0x00); # Off
ssrOut(0x01) # On
pulseCS()
return
Encode7Seg = [ 0b1111110,0b0110000,0b1101101,0b1111001,
0b0110011,0b1011011,0b1011111,0b1110000,
0b1111111,0b1111011,0b1110111,0b0011111,
0b1001110,0b0111101,0b1001111,0b1000111 ]
time.sleep(1)
initMAX7219()
while True:
Tempp2 = 7
Tempp1 = 6
Tempp0 = 5
Humid2 = 4
Humid1 = 3
Humid0 = 2
writeMAX7219( 0, 8, Encode7Seg[Tempp2])
writeMAX7219( 1, 7, Encode7Seg[Tempp1])
writeMAX7219( 0, 6, Encode7Seg[Tempp0])
writeMAX7219( 0, 5, 0b00001101) #Code=tabcdefgh
writeMAX7219( 0, 4, Encode7Seg[Humid2])
writeMAX7219( 1, 3, Encode7Seg[Humid1])
writeMAX7219( 0, 2, Encode7Seg[Humid0])
writeMAX7219( 0, 1, 0b00010111) #Code=tabcdefgh
time.sleep(1)
Step.3 ทดสอบการรัน อ่านค่าอุณหภูมิโดยใส่โค๊ดนี้ ในหน้าต่าง terminal
sudo python temdisplay.py
Step.4 จะได้ผลการ Run ใน 7-Segment
Step.1 ต่อวงจรตามภาพนี้
Step.2 เปิด Python 3 >> file new >> เขียน code >> Save
import time
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
LATCH = 24 # CS
CLK = 23 # Clock
dataBit = 19 # DIN
GPIO.setup(LATCH, GPIO.OUT)
GPIO.setup(CLK, GPIO.OUT)
GPIO.setup(dataBit, GPIO.OUT)
# Setup IO
GPIO.output(LATCH, 0)
GPIO.output(CLK, 0)
def pulseCLK():
GPIO.output(CLK, 1)
time.sleep(.001)
GPIO.output(CLK, 0)
return
def pulseCS():
GPIO.output(LATCH, 1)
time.sleep(.001)
GPIO.output(LATCH, 0)
return
# shift byte into MAX7219
# MSB out first!
def ssrOut(value):
for x in range(0,8):
temp = value & 0x80
if temp == 0x80:
GPIO.output(dataBit, 1) # data bit HIGH
else:
GPIO.output(dataBit, 0) # data bit LOW
pulseCLK()
value = value << 0x01 # shift left
return
# initialize MAX7219 4 digits BCD
def initMAX7219():
# set decode mode
ssrOut(0x09) # address
ssrOut(0x00); # no decode data
# ssrOut(0xFF) # 4-bit BCD decode eight digits
pulseCS();
# set intensity
ssrOut(0x0A) # address
ssrOut(0x04) # 9/32s
pulseCS()
# set scan limit 0-7
ssrOut(0x0B); # address
ssrOut(0x07) # 8 digits
# ssrOut(0x03) # 4 digits
pulseCS()
# set for normal operation
ssrOut(0x0C) # address
# ssrOut(0x00); // Off
ssrOut(0x01) # On
pulseCS()
# clear to all 0s.
for x in range(0,9):
ssrOut(x)
ssrOut(0x0f)
pulseCS()
return
def writeMAX7219(digit, location, data):
ssrOut(location)
ssrOut(data | (digit<<7))
pulseCS()
returnPage 31 of 42
def displayOff():
# set for normal operation
ssrOut(0x0C) # address
ssrOut(0x00); # Off
# ssrOut(0x01) # On
pulseCS()
return
def displayOn():
# set for normal operation
ssrOut(0x0C) # address
# ssrOut(0x00); # Off
ssrOut(0x01) # On
pulseCS()
return
Encode7Seg = [ 0b1111110,0b0110000,0b1101101,0b1111001,
0b0110011,0b1011011,0b1011111,0b1110000,
0b1111111,0b1111011,0b1110111,0b0011111,
0b1001110,0b0111101,0b1001111,0b1000111 ]
time.sleep(1)
initMAX7219()
while True:
Tempp2 = 7
Tempp1 = 6
Tempp0 = 5
Humid2 = 4
Humid1 = 3
Humid0 = 2
writeMAX7219( 0, 8, Encode7Seg[Tempp2])
writeMAX7219( 1, 7, Encode7Seg[Tempp1])
writeMAX7219( 0, 6, Encode7Seg[Tempp0])
writeMAX7219( 0, 5, 0b00001101) #Code=tabcdefgh
writeMAX7219( 0, 4, Encode7Seg[Humid2])
writeMAX7219( 1, 3, Encode7Seg[Humid1])
writeMAX7219( 0, 2, Encode7Seg[Humid0])
writeMAX7219( 0, 1, 0b00010111) #Code=tabcdefgh
time.sleep(1)
Step.3 ทดสอบการรัน อ่านค่าอุณหภูมิโดยใส่โค๊ดนี้ ในหน้าต่าง terminal
sudo python temdisplay.py
Step.4 จะได้ผลการ Run ใน 7-Segment
------------------------------------------------------------------------------
3.USB Cameras
3.1 Capture from usb cam
- ทำการ Install package ต่างๆ
sudo apt-get install fswebcam
sudo apt-get install libjpeg8-dev
sudo apt-get install imagemagick
- ทำการถ่ายภาพด้วย
fswebcam -r 1280x720 image.jpg -s 20 image.jpg
3.2 Press switch control capture
- เข้าโปรแกรม python แล้วใส่ภาษาตามนี้ - ทดสอบโดย ใส่ sudo python camera.py
- จากนั้น กดปุ่ม ถ่ายภาพตาม Video
------------------------------------------------------------------------------
4.USB Camera live view
1. ทำการ Update Version ล่าสุดของบอร์ดด้วย
--> sudo apt-get update
--> sudo apt-get upgrade
2. ติดตั้ง package ทั้งหมด
--> sudo apt-get install libmariadbclient18 libpq5 libavcodec57 libavformat57 libavutil55 libswscale4
--> sudo wget https://github.com/Motion-Project/motion/releases/download/release-4.0.1/pi_stretch_motion_4.0.1-1_armhf.deb
--> sudo dpkg -i pi_stretch_motion_4.0.1-1_armhf.deb
3. ทำการแก้ไขไฟล์ motion.conf โดย
--> sudo nano /etc/motion/motion.conf
แก้ไขให้เป็น
-> daemon on
-> output_pictures off
-> ffmpeg_output_movies off
-> stream_localhost off
ทำการ Ctrl+O แล้ว Ctrl+X เพื่อ save และ ออก
4. แก้ไข daemon file โดย
-> sudo nano /etc/default/motion
เปลี่ยนเป็น
-> start_motion_daemon=yes
ทำการ Ctrl+O แล้ว Ctrl+X เพื่อ save และ ออก
5: ทำการ live camera ด้วย
-> sudo service motion start
6. เข้าไปที่ address url 192.168.1.29:8081 หรือ IP:8081
7.ทำการหยุด live camera ด้วย
->sudo service motion stop
No comments:
Post a Comment