raspberry pi 2 - web.rmutt.ac.th · จุดเชอื uมต่อของraspberry pi2 os...

Post on 23-May-2018

248 Views

Category:

Documents

8 Downloads

Preview:

Click to see full reader

TRANSCRIPT

บอรดคอมพวเตอร 32 บตรจกและใชงาน

Raspberry Pi 2

CPU : ARM V7 quad-core 900MHz 512kb Cache

RAM : 1GByte

แรงกวาเดม

6 เทา

Raspberry Pi2 Spec

Dual Core GPU

40 ขา GPIO USB 2.0 4 ชอง

JACK AV 3.5mm

10/100 ETERNET

จดตอ HDMI

จดตอ CSI ตอกลอง

จดตอ DSI ตอจอ LCD

ไฟเลยง 5V/1.5A microUSB

จดเชอมตอของ Raspberry

Pi2

จดเชอมตอของ Raspberry

Pi2

จดเชอมตอของ Raspberry

Pi2

จดเชอมตอของ Raspberry

Pi2

OS ของ Raspberry Pi 2 จะเกบท microSD โดยมชองเสยบการดอยใตบอรด

ระบบปฏบตการส าหรบ

Raspberry Pi2

windows 10

IOT

OpenELEC (media

center)

ส าหรบ

เร มตน

UBUNTU

DESKTOP

SNAPPY

UBUNTU(media center)

ระบบปฏบต

การ

ดาวนโหลดไฟล Image จาก

Raspberrypi.org

ใชโปรแกรม win32 Disk

Image

บนทกไฟลลง micro

SDCARDเสยบเขาไปทบอรด

Raspberry Pi

การเชอมตออปกรณเบองตน

อปกรณตอพวงเบองตน ส าหรบโหมด Stand Alone

จอคอมพวเตอร / จอ TV รองรบความละเอยด 1920x1080

สาย HDMI/HDMI หรอ HDMI/DVI

อแดปเตอร 5V/1.5A

USB Mouse

USB Keyboard

บตระบบปฏบตการ Raspbian

User : piPassword : raspberry

เขาส Graphic Mode

พมพ STARTX

การเขาสระบบเครอขายและ

อนเทอรเนต

สามารถตอสาย LAN เพอตอเขาอนเทอรเนตไดทนท

sudo apt-get update ตรวจสอบการอพเดตซอฟตแวร

sudo apt-get upgrade อพเกรดซอฟตแวรทงหมดทตดตง

การอพเดตและตดต งโปรแกรม

sudo apt-get install (ชอโปรแกรม)ตดตงโปรแกรม

ตวอยาง ตดตง browsersudo apt-get install chromium-browser

ค าส งทใชงานบอย

apt-get update อพเดตเวอรชน Raspbian

apt-get upgrade อพเกรดซอฟตแวรทงหมดทตดตงclear เคลยรหนาตาง Teminaldate แสดง วนเวลา ปจจบน

find-name *.* คนหาชอไฟลทตองการในทกโฟลเดอร

ค าส งทใชงานบอย

nano xxx.txt เปดไฟลดวย Text Editor

touch xxx.txt สรางไฟลใหม

ค าส งทใชงานบอย

sudo poweroff ปดเครองแบบทนท ทนใดsudo reboot รสตารตเครองใหม

startx เปดหนาตาง GUI ของ R-Pi

startlxde เปดหนาตาง GUI ของ R-Pi (Remote)

sudo shutdown -h now ปดระบบ

ค าส งทใชงานบอย

sudo raspi-config เปดหนาตางตงคาของ R-Pi

ls List files แสดงรายชอไฟลและไดเรคทอรcp Copy files ส าเนาไฟลmv Rename files เปลยนชอไฟลrm Delete files ลบไฟลcd Change directory ยายไปยงไดเรคทอรทตองการpwd Print directory name แสดงชอไดเรคทอรปจจบนmkdir Create directory สรางไดเรคทอรใหมrmdir Delete directory ลบไดเรคทอร (ทวางเปลาเทานน)

File/Directory Basics

ค าส งทใชงานบอย

cat View files ดเนอหาของ text fileless Page trough files เลอนดเนอหาของไฟล ออกกอน Crl+Zhead View file beginning แสดงสวนตนของไฟลtail View files ending แสดงสวนทายของไฟลnl Number lines แสดงหมายเลขบรรทดod View binary files แสดงเนอหาในไฟลไบนาร

File Viewer

ค าส งทใชงานบอย

ค าส งทใชงานบอย

teeCopy stdin to file and to stdout simultaneouslyส าเนาขอความออกทางไฟลและ stdout พรอมๆ กน

echo "Hello, world" | tee hello.txt

Hello, world

การเชอมตอผาน WIFI

USB WIFI Dongle

การต งคาผานโปรแกรม WiFi

Configuration

เปด WiFi Configurationกด Scan เพอคนหาเครอขาย

เลอกเครอขายทตองการใสรหสผาน ส าหรบเครอขายทเชอมตอ

IP Address ของ Raspberry Pi

เปด Browser เพอทดสอบเชอมตออนเทอรเนต

การต งคาผานโปรแกรม WiFi

Configuration

การแบงใชอนเทอรเนตจาก

Notebook

Notebook ตออนเทอรเนตดวย WiFi แชรให RPi ดวยสาย LAN

Router หรอ มอถอ

สาย LAN

ท าใหอยในเครอขายเดยวกนและเลนอนเทอรเนตไดดวย

คลกเมาสขวาเลอก Properties ท WIFI

เลอกแชรอนเทอรเนตให LAN

ต งคา Network ท Notebook

* ถาเปน windows 8 จะใชค าวา Eternet แทน Local Area Network

ต งคา Network ท Notebook

(windows 8)

ตรวจสอบ IP Address ตวทปลอย

การคนหาต าแหนง IP จากบอรด

RPi

สาย LAN

1. เชอมตอสาย LAN กบบอรด RPi

2. ใชโปรแกรม IPSCAN

3. คนหา IP ของบอรด RPi

การ Fix ต าแหนง IP ของบอรด

RPi

1. น า SD CARD เสยบทคอมพวเตอร

2. เปดไฟล cmdline.txt ดวย nodepad

3. เพม ขอความ ตอทาย แลว SAVEip=192.168.137.10::192.168.137.1

ตรวจสอบ ip address อกคร ง

1.เชอมตอบอรด RPi อกครง

สาย LAN

2.ตรวจสอบต าแหนง ip Address อกครง

Remote ดวยโปรแกรม Remote

Desktop Connection

user : pipassword : raspberry

XRDP ตดตงบน RPi ไวแลว เพอรองรบการ Remote ผานซอฟตแวรRemote Desktop Connection ของ windows

XRDP

หนาจอ Remote Desktop

การควบคมระยะไกลดวย SSH (Moba

XTerm)SSH : Secure Shell (เขารหสขอมลกอนสง)

1.ตดตงโปรแกรม Moba Xterm

2.สราง Session แบบ SSH

3. X มมบนขวา สเขยว

(Moba XTerm)

4. ปอน password : raspberry

ขณะปอน password ขอความไมปรากฎ

5. พรอมพมพ Command

โหมด Graphic

6. พมพค าสง startlxde เพอเรยกโหมด Graphic

การต งคาหนาจอของโหมด X11

การคดลอกไฟลผาน Moba Xterm

ฝก Python 3 ผาน Command Line

พมพแลวเหนผลลพธทนท>>> 2 + 2

4

>>> 50 - 5*6

20

>>> (50 - 5*6) / 4

5.0

>>> 8 / 5

1.6

>>> 17 / 3

5.666666666666667

>>> 5 ** 2

25

ผลลพธจากการหารเปน Float

ผลลพธจากการบวกเปน int

ยกก าลงออกจากโปรแกรมใช Ctrl+D

>>> print ("inex")

inex

>>> print ('inex')

inex

>>> print ('Line1\nLine2\nLine3')

Line1

Line2

Line3

>>> x=10

>>> print ('X=',x)

X=10

รปแบบ

ค าส ง Print

ผลลพธ\'\"\n\t

'"ขนบรรทดใหมTab 1 ครง

บวก ลบ คณ หาร

>>> 2 + 2

4

>>> 50 - 5*6

20

>>> (50 - 5*6) / 4

5.0

>>> 8 / 5

1.6

>>> 17 / 3

5.666666666666667

>>> 5 ** 2

25

ผลลพธจากการหารเปน Float

ผลลพธจากการบวกเปน int

ยกก าลง

ตวแปรภายใน Pythonใชค าสง type (var) ตรวจสอบชนดตวแปร

>>> x = 400 x เปน Integer>>> y = 4.5 y เปน Float>>> Z = True Z เปน Boolean

>>> i = [1, 2, 3, 4, ’Rasp’, 5, ’Pi’] i เปน List

Python ไมใช Array ใช List แทน หลายชนดอยทเดยวกนได

>>> print (i[4])

Rasp

>>> print (i[2:6])

[3,4,'Rasp',5]

>>> S = 'Rasp' S เปน String

>>> x = 100

>>> y = 20

>>> x+y

120

เครองหมาย = ใชก าหนดตวแปร

>>> x = 3.0

>>> y = 5

>>> x*y

15.0

การก าหนดคาตวแปร

nano prog1.py

เปด editor

print ("Innovative")

เขยนโคด

print ("Experiment")

บนทก แลวออกCTRL + X

Y

ENTER

ทดสอบเขยนโปรแกรมดวย nano

Graphic Mode : Geany โปรแกรม Editor ทชวยใหการเขยน Python งายขน

sudo apt-get install geany

ตดตงโปรแกรมผานInternet

ตงใหคอมไพลดวย python3

import time

x=0

while (True) :

print (x)

time.sleep(0.5)

x=x+1

ทดสอบโปรแกรม python ผาน Geany

กด F5 RUNกด CTRL+C ออก

> มากกวา>= มากกวาหรอเทากบ<= นอยกวาหรอเทากบ< นอยกวา== เทากบ!= ไมเทากบin ตรงกบคาใน List หรอเปลา

AND จรงทงคOR จรงอนใดอนหนงNOT สลบจรงเปนเทจ

การเปรยบเทยบ

while Condition:

Statements

.....

.....

x=1

while x<5 :

print ('Less')

x=x+1

ตวอยาง

การวนท าซ า while

ออกจาก while ไดดวย break

s='0'

while s!='x' :

s = input('Press key= ')

print (s)

ตวอยาง

ค าสง input รอรบการกดคยเกบในตวแปรสตรงSTR

การวนท าซ า while

การควบคมทศทางของโปรแกรม

1. การวนท าซ า (while)2. การตดสนใจ (if )3. การจดการความผดปกตของโปรแกรม (error)

if Condition:

Statements

.....

.....

import time

x=0

while (True) :

if (x is 10) :

break

print (x)

time.sleep(0.2)

x=x+1

ตวอยาง

การตดสนใจ : IF

if Condition:

Statements

.....

.....

else:

Statements

.....

.....

การตดสนใจ : if else

ตวอยางimport time

x=1

while True :

if (x>5) :

print (x*2)

else :

print (x*5)

time.sleep(0.5)

x=x+1

การตดสนใจ : if elif else

import time

x=1

while True :

if (x<5) :

print (x*2)

elif (x>=5 and x<10) :

print (x*5)

else :

break

time.sleep(0.5)

x=x+1

ตวอยางif Condition:

Statements

.....

.....

elif Condition:

Statements

.....

.....

else:

Statements

.....

.....

การวนท าซ าดวย for

for var in range(m, n [, step = 1]):

Statements

.....

.....

for i in range(0,10) :

if i%2 == 0 :

print (i,'even')

else :

print (i,'odd')

ตวอยาง

for ต วแปร in ช ดข อม ล :ค า ส ง 1ค า ส ง 2

ฟงกชนคณตศาสตรภายใน ทส าค

ก าหนดคาชวงของตวเลขrange(start, end [,step])

range (1,6) # จะประกอบดวย 1,2,3,4,5

หาผลรวมทงหมดในชดsum(n1,n2 [,nn])

sum(1,2,3,4,5) # ผลลพธคอ 15

ก าหนดจ านวนทศนยมround(var, digits)

round(1234.56789, 2) # ผลลพธคอ 1234.57

หาคาต าสด สงสด ของเลขในชดmin(var), max(var)

min(range(5,10)) # ผลลพธคอ 5

max(range(5,10)) # ผลลพธคอ 9

แสดงคาสมบรณ (เปลยนเปนคาบวก)abs(var)

abs(-50) # ผลลพธคอ 50

การดกจบ error

try:

Standard operation

except:

Error operation

finally:

End operation

try :

x=y

except :

print ('y not set')

try:

main()

finally:

GPIO.cleanup()

print("END")

def function_name( [Argument] ):

Statement

……

[return]

def add(x,y):

return x + y

def บอกวาเปนฟงกชนfunction_name ชอฟงกชนArgument คาทสงเขาไปในฟงกชนStatement ชดค าสงreturn การคนคาของฟงกชน add(3,4)

7

การสรางฟงกชน

การนบขาของ Rpi

ต าแหนงขา GPIO ของ Rpi

GPIO 26 ขา

PWM ทกขา

I2C /UART/SPI

การระบขาแบบ BCMBOARDBCM

บอรด Rpi-I/O 40 และการเชอมตอ

การระบต าแหนงขาของ Rpi-I/O 40

รปแบบการตอวงจรกบ Rpi-I/O 40

import RPi.GPIO as GPIO

เพมไลบรารในชอ GPIO

GPIO.setmode(GPIO.BCM)

setmode ก าหนดรปแบบขา

GPIO.setmode(GPIO.BOARD)

GPIO.setup(pin,GPIO.OUT)

setup ก าหนด input/output

GPIO.setup(pin,GPIO.IN)

GPIO.output(pin,1)

output สงคาออกไปทขา

GPIO.output(pin,0)

ไลบราร RPi.GPIO

x = GPIO.input(pin)

input รบคาลอจกจากขา

GPIO.cleanup()

cleanup เคลยรคาพอรตกลบ

GPIO.PWM(pin,freq)

PWM เปดการท างาน PWMGPIO.setwarning(0)

ปดการแจงเตอน

ไฟกะพรบทขา 18import RPi.GPIO as GPIO

import time

GPIO.setmode(GPIO.BCM)

GPIO.setup(18,GPIO.OUT)

while True :

GPIO.output(18,True)

time.sleep(0.3)

GPIO.output(18,False)

time.sleep(0.3)

Cleanup Port หลงเลกใช

import RPi.GPIO as GPIO

import time

GPIO.setmode(GPIO.BCM)

GPIO.setup(18,GPIO.OUT)

try :

while True :

GPIO.output(18,True)

time.sleep(0.3)

GPIO.output(18,False)

time.sleep(0.3)

finally :

GPIO.cleanup()

ตอวงจร LED 8 ดวง

import RPi.GPIO as GPIO

import time

GPIO.setmode(GPIO.BCM)

GPIO.setup(18,GPIO.OUT)

GPIO.setup(27,GPIO.OUT)

GPIO.setup(22,GPIO.OUT)

GPIO.setup(23,GPIO.OUT)

try:

while (True) :

GPIO.output(18,1)

GPIO.output(27,1)

GPIO.output(22,1)

GPIO.output(23,1)

time.sleep(0.5)

GPIO.output(18,0)

GPIO.output(27,0)

GPIO.output(22,0)

GPIO.output(23,0)

time.sleep(0.5)

finally:

GPIO.cleanup()

ขบ LED ไฟกะพรบ 4 ดวง แบบท 1

in ดงคาใน pins ออกมาทละตวเกบใน X

>>> i = [1, 2, 3, 4, ’Rasp’, 5, ’Pi’]

Python ไมใช Array ใช List แทน หลายชนดอยทเดยวกนได

pins = [18,27,22,23]

ประกาศตวแปรแบบ List

pins = [18,27,22,23]

for x in pins:

GPIO.setup(x,GPIO.OUT)

ค าสง For และตวแปรแบบ List

ขบ LED ไฟกะพรบ 4 ดวง แบบท 2import RPi.GPIO as GPIO

import time

pins = [18,27,22,23]

GPIO.setmode(GPIO.BCM)

for x in pins :

GPIO.setup(x,GPIO.OUT)

try:

while (True) :

for x in pins :

GPIO.output(x,1)

time.sleep(0.5)

for x in pins :

GPIO.output(x,0)

time.sleep(0.5)

finally:

GPIO.cleanup()

ขบ LED ไฟกะพรบ 8 ดวงimport RPi.GPIO as GPIO

import time

pins = [18,27,22,23,24,10,9,25]

GPIO.setmode(GPIO.BCM)

for x in pins :

GPIO.setup(x,GPIO.OUT)

try:

while (True) :

for x in pins :

GPIO.output(x,1)

time.sleep(0.5)

for x in pins :

GPIO.output(x,0)

time.sleep(0.5)

finally:

GPIO.cleanup()

ขบ LED ไฟวงimport RPi.GPIO as GPIO

import time

pins = [18,27,22,23,24,10,9,25]

GPIO.setmode(GPIO.BCM)

for x in pins :

GPIO.setup(x,GPIO.OUT)

try:

while (True) :

for x in pins :

GPIO.output(x,1)

time.sleep(0.5)

for x in pins :

GPIO.output(x,0)

time.sleep(0.5)

finally:

GPIO.cleanup()

import random

import RPi.GPIO as GPIO

import time

pin =[18,27,22,23,24,10,9,25]

GPIO.setmode(GPIO.BCM)

for i in pin : GPIO.setup(pin,GPIO.OUT)

try:

while True :

x=random.randint(0,7)

GPIO.output(pin[x],1)

time.sleep(0.2)

for i in pin :

GPIO.output(i,0)

finally :

GPIO.cleanup()

ทดสอบค าสง Random

การอานคาอนพตจากสวตช

import RPi.GPIO as GPIO

import time

pins = [18,27,22,23,24,10,9,25]

GPIO.setmode(GPIO.BCM)

GPIO.setup(11,GPIO.IN)

GPIO.setup(8,GPIO.IN)

for x in pins :

GPIO.setup(x,GPIO.OUT)

for x in pins :

GPIO.output(x,0)

try:

while (True) :

if GPIO.input(11) : GPIO.output(18,1)

else : GPIO.output(18,0)

if GPIO.input(8) : GPIO.output(27,1)

else : GPIO.output(27,0)

finally:

GPIO.cleanup()

การอานคาอนพตจากสวตช

and ตองเปนจรงทงค จงจะเปนจรงor เปนจรง อนใดอนหนง เปนจรงnot สลบ จรงเปนเทจ เทจเปนจรง

if GPIO.input(11)

if not GPIO.input(11)

if GPIO.input(11) or GPIO.input(8)

การกระท าทางลอจก

if GPIO.input(11) and GPIO.input(8)

import RPi.GPIO as GPIO

import time

pins = [18,27,22,23,24,10,9,25]

GPIO.setmode(GPIO.BCM)

GPIO.setup(11,GPIO.IN)

GPIO.setup(8,GPIO.IN)

for x in pins :

GPIO.setup(x,GPIO.OUT)

for x in pins :

GPIO.output(x,0)

try:

while (True) :

if GPIO.input(11) and GPIO.input(8) :

GPIO.output(18,1)

else :

GPIO.output(18,0)

finally:

GPIO.cleanup()

ทดสอบกดสวตช

สง Pull up Pull Down ดวยซอฟตแวรก าหนดใหขา 20 เปนขาอนพต และมการพลอพGPIO.setup(20,GPIO.IN,pull_up_down=GPIO.PUD_UP)

ก าหนดใหขา 21 เปนขาอนพต และมการพลดาวนGPIO.setup(21,GPIO.IN,pull_up_down=GPIO.PUD_DOWN)

50 กโลโอหม พลอพ

import RPi.GPIO as GPIO

import time

pins = [18,27,22,23,24,10,9,25]

GPIO.setmode(GPIO.BCM)

GPIO.setup(11,GPIO.IN,pull_up_down=GPIO.PUD_UP)

GPIO.setup(8,GPIO.IN,pull_up_down=GPIO.PUD_UP)

for x in pins :

GPIO.setup(x,GPIO.OUT)

for x in pins :

GPIO.output(x,0)

try:

while (True) :

if GPIO.input(11) and GPIO.input(8) :

GPIO.output(18,1)

else :

GPIO.output(18,0)

finally:

GPIO.cleanup()

ทดสอบ พลอพสวตชดวยซอฟตแวร

อานคาสวตชขอบขาขน ขอบขาลงGPIO.wait_for_edge(23, GPIO.FALLING)

import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BCM)

GPIO.setup(11, GPIO.IN, pull_up_down = GPIO.PUD_UP)

GPIO.setup(8, GPIO.IN, pull_up_down = GPIO.PUD_UP)

try :

while True:

GPIO.wait_for_edge(11, GPIO.FALLING)

print('Button 1 Pressed')

GPIO.wait_for_edge(11, GPIO.RISING)

print('Button 1 Released')

GPIO.wait_for_edge(8, GPIO.FALLING)

print('Button 2 Pressed')

GPIO.wait_for_edge(8, GPIO.RISING)

print('Button 2 Released')

finally :

GPIO.cleanup()

GPIO.wait_for_edge(23, GPIO.RISING)

ขาลงขาขน

รปแบบการสรางฟงกชน

def add(x,y):

return x + ydef บอกวาเปนฟงกชนfunction_name ชอฟงกชนArgument คาทสงเขาไปในฟงกชนStatement ชดค าสงreturn การคนคาของฟงกชน

def function_name( [Argument] ):

Statement

……

[return]

import RPi.GPIO as GPIO

import time

GPIO.setmode(GPIO.BCM)

GPIO.setup(11,GPIO.IN)

def blink(CH,delay,cnt):

GPIO.setup(CH,GPIO.OUT)

for i in range(1,cnt):

GPIO.output(CH,1)

time.sleep(delay)

GPIO.output(CH,0)

time.sleep(delay)

try :

while GPIO.input(11):

blink(18,0.5,5)

time.sleep(2.0)

finally :

GPIO.cleanup()

ทดสอบใชงานฟงกชน

EVENTS AND CALLBACK FUNCTIONS

import RPi.GPIO as GPIO

import time

GPIO.setmode(GPIO.BCM)

GPIO.setup(11,GPIO.IN,pull_up_down=GPIO.PUD_UP)

GPIO.setup(18,GPIO.OUT)

def prints(CH) :

print ('Button 1 Pressed')

try :

GPIO.add_event_detect(11,GPIO.RISING,callback=prints,bouncetime=300)

while True :

GPIO.output(18,1)

time.sleep(0.2)

GPIO.output(18,0)

time.sleep(0.2)

finally :

GPIO.cleanup()

import RPi.GPIO as GPIO

import time

GPIO.setmode(GPIO.BCM)

GPIO.setup(11,GPIO.IN,pull_up_down=GPIO.PUD_UP)

GPIO.setup(8,GPIO.IN,pull_up_down=GPIO.PUD_UP)

GPIO.setup(7,GPIO.IN,pull_up_down=GPIO.PUD_UP)

GPIO.setup(5,GPIO.IN,pull_up_down=GPIO.PUD_UP)

GPIO.setup(18,GPIO.OUT)

def prints(CH) :

print ('Button', CH, 'Pressed')

try :

GPIO.add_event_detect(11,GPIO.RISING,callback=prints,bouncetime=300)

GPIO.add_event_detect(8,GPIO.RISING,callback=prints,bouncetime=300)

GPIO.add_event_detect(7,GPIO.RISING,callback=prints,bouncetime=300)

GPIO.add_event_detect(5,GPIO.RISING,callback=prints,bouncetime=300)

while True :

GPIO.output(18,1)

time.sleep(0.2)

GPIO.output(18,0)

time.sleep(0.2)

finally :

GPIO.cleanup() GPIO.remove_event_detect(23)

ปด Event

เพมต าแหนงขาใหเกด Event

import RPi.GPIO as GPIO

import time

GPIO.setmode(GPIO.BCM)

GPIO.setup(11,GPIO.IN,pull_up_down=GPIO.PUD_UP)

GPIO.setup(8,GPIO.IN,pull_up_down=GPIO.PUD_UP)

GPIO.setup(7,GPIO.IN,pull_up_down=GPIO.PUD_UP)

GPIO.setup(5,GPIO.IN,pull_up_down=GPIO.PUD_UP)

GPIO.setup(18,GPIO.OUT)

def prints(CH) :

print ('Button', CH, 'Pressed')

try :

GPIO.add_event_detect(11,GPIO.RISING,callback=prints,bouncetime=300)

GPIO.add_event_detect(8,GPIO.RISING,callback=prints,bouncetime=300)

GPIO.add_event_detect(7,GPIO.RISING,callback=prints,bouncetime=300)

while True :

GPIO.output(18,1)

time.sleep(0.2)

GPIO.output(18,0)

time.sleep(0.2)

if (not GPIO.input(5)):

print ('Close Event')

GPIO.remove_event_detect(11)

GPIO.remove_event_detect(8)

GPIO.remove_event_detect(7)

finally :

GPIO.cleanup()

ทดสอบปด Event

สรางเสยงออกล าโพง

def sound(pins,freq,times):

GPIO.setup(pins,GPIO.OUT)

for i in range(0,times):

GPIO.output(pins,1)

time.sleep(0.5/freq)

GPIO.output(pins,0)

time.sleep(0.5/freq)

สรางเสยงออกล าโพง

import RPi.GPIO as GPIO

import time

def sound(pins,freq,times):

GPIO.setup(pins,GPIO.OUT)

for i in range(0,times):

GPIO.output(pins,1)

time.sleep(0.5/freq)

GPIO.output(pins,0)

time.sleep(0.5/freq)

GPIO.setmode(GPIO.BCM)

GPIO.setup(11,GPIO.IN,pull_up_down= GPIO.PUD_UP)

try:

while(1):

if (not GPIO.input(11)) :

sound(4,1000,100)

sound(4,2000,100)

sound(4,500,100)

finally:

GPIO.cleanup()

สรางเสยงออกล าโพง

PWM : พลสวธมอดเลเตอร

p=GPIO.PWM(pin,freq)

เปดการใช PWM

p.start(%dutycycle)

เรมตน PWM

p.ChangeFrequency(freq)

เปลยนความถ PWM

p.ChangeDutyCycle(%duty)

เปลยนคาความกวางพลส

p.stop()

หยด PWM

ไฟกะพรบดวย PWM

import RPi.GPIO as GPIO

import time

GPIO.setmode(GPIO.BCM)

GPIO.setup(18,GPIO.OUT)

GPIO.setup(11,GPIO.IN,pull_up_down=GPIO.PUD_UP)

p=GPIO.PWM(18,1)

p.start(50)

input('Press return to stop')

p.stop()

GPIO.cleanup()

1 Hz

import RPi.GPIO as GPIO

import time

GPIO.setmode(GPIO.BCM)

GPIO.setup(18,GPIO.OUT)

p=GPIO.PWM(18,50)

p.start(0)

try:

while True :

for x in range(0,101,5) :

p.ChangeDutyCycle(x)

time.sleep(0.1)

for x in range(100,-1,-5) :

p.ChangeDutyCycle(x)

time.sleep(0.1)

except KeyboardInterrupt:

pass

p.stop()

GPIO.cleanup()

ไฟกะพรบดวย PWM

import RPi.GPIO as GPIO

import time

pin =[18,27,22,23,24,10,9,25]

p=[0,1,2,3,4,5,6,7,8]

GPIO.setmode(GPIO.BCM)

for i in pin : GPIO.setup(i,GPIO.OUT)

for i in range(0,8) : p[i]=GPIO.PWM(pin[i],50)

for i in range(0,8) : p[i].start(0)

try:

while True :

for i in range(0,8) :

for x in range(0,101,5) :

p[i].ChangeDutyCycle(x)

time.sleep(0.01)

for i in range(0,8) :

for x in range(100,-1,-5) :

p[i].ChangeDutyCycle(x)

time.sleep(0.01)

except KeyboardInterrupt:

pass

for i in range(0,8) : p[i].stop()

GPIO.cleanup()

ไฟน าตก

import RPi.GPIO as GPIO

import time

x=2000

GPIO.setmode(GPIO.BCM)

GPIO.setup(4,GPIO.OUT)

GPIO.setup(11,GPIO.IN,pull_up_down=GPIO.PUD_UP)

GPIO.setup(8,GPIO.IN,pull_up_down=GPIO.PUD_UP)

p=GPIO.PWM(4,2000)

p.start(50)

try:

while True:

if not GPIO.input(11):

x=x+100

print (x)

p.ChangeFrequency(x)

time.sleep(0.2)

if not GPIO.input(8):

if x>100:

x=x-100

print (x)

p.ChangeFrequency(x)

time.sleep(0.2)

finally:

p.stop()

GPIO.cleanup()

การใชงานโมดลกลอง Pi-camera

ความละเอยดถง 5 ลานพกเซล เลนสแบบ Fixed-Focus ภาพขนาดสงสด 2592x1944 พกเซล ภาพเคลอนไหวคณภาพ ระดบ 1080p 30 เฟรมตอวนาท (1080p) ตดตอกบบอรด Raspberry Pi ดวย

บส CSI (Common System Interface)

เคสอะครลกปองกนตวกลอง

การประกอบเคสอะครลก

1. แกะกระดาษออกกอน

2. วางกลองลงไป 3. สอบสาย 4.ประกบเขาไป

การประกอบเคสอะครลก (ตอ)

5. ประกบชนท 5 โดยสอดสายเขาไป

6. ใชสกรขนยดใหแนน

การตดตงกลอง

ถงขาลอกขนกอน เสยบสายแพ แลวกดขาลอกใหแนน

การตงคาเพอตดตอโมดลกลอง

pi@raspberrypi ~ $ sudo raspi-config

Enable Camera > Enable

ค าสงควบคมโหมดภาพนง

raspistill เปดโมดลกลองเพอถายภาพนงo --width , -w ปรบขนาดความกวางของภาพo --height , -h ปรบขนาดความสงของภาพo --quality , -q ปรบแตงคณภาพของรปทถาย คา 0-100o --output , -o บนทกภาพในชอไฟลทก าหนด

เชน raspistill –o image.jpg

ค าสงควบคมโหมดภาพนง (ตอ)

--timeout , -t ใชก าหนดชวงเวลาเปดโมดลกลอง ปกต 5 วนาทเชน raspistill –t 10000 (สงเปดโมดลกลองนาน 10 วนาท)

--verbose , -v แสดงรายละเอยดตาง ๆ ออกมาขณะเกบภาพ

ค าสงควบคมโหมดภาพนง (ตอ)

--timelapse , -tl ใหกลองถายเปนชวง ๆ หนวยเปน millisecเชน raspistill –t 20000 -tl 2000 -o x%03d.jpg

เปดกลองนาน 20 วนาท ถายภาพนงทก ๆ 2 วนาท บนทกภาพในชอ x001.jpg - x011.jpg

--encoding , -e บบอดไฟลรปแบบอน เชน png ,bmp ,gifเชน raspistill -o x%03d.png -e png

ค าสงควบคมอนๆ

ส าหรบตอทาย raspistill o --preview , -p แสดงภาพออกจอดวยขณะถายรป (รโมตใชไมได)ก าหนดพกด x,y หนาจอ และขนาดภาพดวยเชน

raspistill -p 100,150,1000,800o --fullscreen , -f แสดงรปภาพเตมจอ เชน raspistill -fo --nopreview , -n ปดการแสดงออกหนาจอ เชน raspistill -no --opacity , -op ก าหนดความเขมของรปภาพ ชวง 0-255 255 ชดสด

ค าสงควบคมโหมดภาพเคลอนไหว

raspivid เปดโมดลกลองเพอถายภาพเคลอนไหว

o --width , -w ปรบขนาดความกวางอยในชวง 64 ถง 1920po --height , -h ปรบขนาดความสงอยในชวง 64 ถง 1080po --output , -o บนทกภาพเคลอนไหวในชอและนามสกล h264เชน raspivid –o movie1.h264o --timeout , -t ก าหนดชวงเวลาเปดกลอง ปกต 5 วนาทหรอกด Ctrl+C เพอหยดการท างานได

raspivid –t 60000 –o Clip1.h264

สงการกลองดวย Python

import time

import picamera

with picamera.PiCamera() as camera:

camera.resolution = (1024,768)

camera.start_preview()

time.sleep(2)

camera.capture(‘Picam_P1.jpg’)

import picamera

import time

import RPi.GPIO as GPIO

GPIO.setwarnings(0)

GPIO.setmode(GPIO.BCM)

GPIO.setup(18,GPIO.IN)

camera= picamera.PiCamera()

camera.resolution =(1024,768)

camera.start_preview()

x=0

while 1:

if(not GPIO.input(18)) :

camera.capture(str(x)+'.jpg')

time.sleep(0.5)

x=x+1

กดป ม ถายรป

camera.sharpness = 0

camera.contrast = 0

camera.brightness = 50

camera.saturation = 0

camera.ISO = 0

camera.video_stabilization = False

camera.exposure_compensation = 0

camera.exposure_mode = 'auto'

camera.meter_mode = 'average'

camera.awb_mode = 'auto'

camera.image_effect = 'none'

camera.color_effects = None

camera.rotation = 0

camera.hflip = False

camera.vflip = False

camera.crop = (0.0, 0.0, 1.0, 1.0)

import picamera

import time

import RPi.GPIO as GPIO

import datetime

GPIO.setwarnings(0)

GPIO.setmode(GPIO.BCM)

GPIO.setup(17,GPIO.IN)

namex=str(datetime.datetime.now())+".jpg"

camera= picamera.PiCamera()

camera.resolution =(1024,768)

camera.start_preview()

camera.rotation =45

while 1:

if(not GPIO.input(17)) :

camera.capture(namex)

time.sleep(0.5)

ถายรปโชววนท

Sensor

PIR DHT11

MCP9701

reolution

การอานคาAnalog

คณสมบต-แปลงส าณสงสดถง 12 บต(0-4095) -ตดตอ แบบระบบบส SPI (Serial Peripheral Interface)-8 ชองส าน(CH0-CH7)

ตงคาเปด SPI

เปดการตงคาsudo raspi-config

ตงคาเปด SPI

เลอก A6 SPI

ตงคาเปด SPI

เลอก Yes

ตงคาเปด SPI

เลอก ok

โหมดการอาคา

ซงเกลเอนด

ดฟเฟอเรนเซยล

สงค าสง-รบคากบMCP3208

สงค าสง-รบคากบMCP3208สงค าสงอานคาในหนงครงจะใชทงหมด 3 ไบต

ไบตทสดทายไบตแรก ไบตทสอง

รบคาทอานไดใช 2 ไบต

สง

รบ

คาอนาลอก

ก าหนดชอง

สงค าสงไปยงMCP3208สงค าสงอานคาในหนงครงจะใชทงหมด 3 ไบต

x x x x x บตเรม โหมด D2

D1 D0 x x x x x x

x x x x x x x x

ไบตแรก

ไบตทสอง

ไบตทสดทาย

x x x x x

ไบตทสดทายไบตแรก ไบตทสอง

สงค าสงไปยงMCP3208

x x x x x บตเรม โหมด D2

D1 D0 x x x x x x

x x x x x x x x

ไบตแรก

ไบตทสอง

ไบตทสดทาย

บตเรม มคาเทากบ 1 เสมอโหมด 0=ดฟเฟอเรนเชยล,1=ซงเกลเอนดD2 D1 D0 เลขฐานสองของชองส าณทเลอกเชน CH3=011X = เปนอะไรกได แตจะก าหนดเปน 0 เสมอ

สงค าสงไปยงMCP3208

0 0 0 0 0 1 1 0

1 1 0 0 0 0 0 0

0 0 0 0 0 0 0 0

ไบตแรก

ไบตทสอง

ไบตทสดทาย

ผลลพท: 00000110 11000000 00000000 เลขฐานสอง

ตวอยาง เลอกอานส าณทชอง CH3 ในโหมดซงเกลเอนดบตเรม=1:โหมด=1:CH3=011 ดงนน D2=0,D1=1,D0=1:x=0

รบคาจากMCP3208รบคาอนาลอกจะใช 2 ไบตสดทาย

? ? ? ? ? ? ? ?

? ? ? ? B11 B10 B9 B8

B7 B6 B5 B4 B3 B2 B1 B0

ไบตแรก

ไบตทสอง

ไบตทสดทาย

x x x x x x x x x x x x

ไบตทสดทายไบตแรก ไบตทสอง

x x x x

ไบตทสอง

x x x x x x x x

ไบตทสดทายไบตแรก

x x x x

ไบตทสอง

รบคาจากMCP3208

? ? ? ? ? ? ? ?

? ? ? ? 1 0 0 1

0 1 1 1 0 0 1 1

ไบตแรก

ไบตทสอง

ไบตทสดทาย

ตวอยางคาทอานได

ใช 2 ไบตสดทายจะได ????1001 01110011

รบคาจากMCP3208

ใช 2 ไบตสดทายจะได ????1001 01110011

ไบตท 2 = ????1001ไบตท 3= 01110011

วธท า ไบตท 2 (???? 1001 AND 0000 1111) = 0000 1001(0000 1001 << 8)=00001001 00000000

แลว OR กบไบตท 3(00001001 00000000 OR 01110011)ผลลพธ 00001001 01110011 (2419)

ตอวงจร

รบคาจากMCP3208import spidevimport time analog_ch = 1spi = spidev.SpiDev()spi.open(0,0)def readADC(adcnum):

if adcnum > 7 or adcnum < 0:return -1;

r = spi.xfer2([4 | 2 | (adcnum >> 2), (adcnum & 3) << 6, 0])adcout = ((r[1] & 15) << 8) + r[2]return adcout

while True:value = readADC(analog_ch)print("analog_ch1=",value)time.sleep(0.3)

รบคาจากMCP3208

จาก : r = spi.xfer2([4 | 2 | (adcnum >> 2), (adcnum & 3) << 6, 0])ตวอยาง ตองการอานชอง CH3 โหมด ซงเกลเอนadcnum=3ไบต 1: 4|2|(3>>2)=000 0110ไบต 2: (3&3)<<6=1100 0000ไบต 3: 0000 0000ผลลพท 0000110 11000000 00000000

0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0

ไบตทสดทายไบตแรก ไบตทสองไบตทสอง ไบตทสดทายไบตแรก ไบตทสอง

0 0 0 0 0 0 0 0

รบคาจากMCP3208

จาก : adcout = ((r[1] & 15) << 8) + r[2]จากตวแปร r[2] =ไบตท 3 : r[1]=ไบตท 2 : r[0]ไบตท 1 r[1] = ???? 1001r[2]= 01110011ไบต สงสด: (????1001&00001111)<<8=00001001 00000000ไบต ต าสด:01110011ไบต สงสด+ ไบต ต าสด=00001001 01110011(2419)

? ? ? ? ? ? ? ? ? ? ? ? 1 0 0 1

ไบตทสดทายไบตทสองไบตทสอง ไบตทสดทายไบตแรก ไบตทสอง

0 1 1 1 0 0 1 1

MCP9701 ไอซวดอณหภม

MCP9701 ไอซวดอณหภม

ตอวงจร

เขยนโคด

import spidevimport timeanalog_ch = 1spi = spidev.SpiDev()spi.open(0,0)def readADC(adcnum):

if adcnum > 7 or adcnum < 0:retrun -1;

r = spi.xfer2([4|2|(adcnum >> 2), (adcnum & 3) << 6, 0])adcout = ((r[1] & 15) << 8) + r[2]return adcout

เขยนโคด(ตอ)

while True:value = readADC(analog_ch)voltage = value*3.3/4096temp = (voltage-0.5)/0.0195print(“Temperature = %2.2f*C” % temp)time.sleep(0.3)

ZX-DHT11

บอรดวดความชนสมพทธและอณหภม

ZX-DHT11

รปแบบขอมลของ DHT11ไบตท 1 ขอมลจ านวนเตมของความชนสมพทธ (%RH) 8 บตไบตท 2 ขอมลทศนยมของความชนสมพทธ (%RH) 8 บตไบตท 3 ขอมลจ านวนเตมของอณหภม (องศาเซลเซยส) 8 บตไบตท 4 ขอมลทศนยมของอณหภม (องศาเซลเซยส) 8 บตไบตท 5 ขอมลตรวจสอบผลรวม (check sum)

ZX-DHT11

เสนสด า:ชวงทRaspberryPi ก าหนดสถานะลอจกของบส

เสนสแดง:ชวงท DHT11 ก าหนดสถานะลอจกของบส

ZX-DHT11

ตอ DHT11

ทดสอบ

sudo python3import Adafruit_DHTAdafruit_DHT.read_retry(11, 4)

ทดสอบimport time

import Adafruit_DHT

Sensor = Adafruit_DHT.DHT11

GPIO = 4

while True:

humidity, temperature = Adafruit_DHT.read_retry(Sensor,GPIO)

if humidity is not None and temperature is not None:

print('Temp={0:0.1f}*C Humidity={1:0.1f}%'.format(temperature,humidity))

else:

print('Failed to get reading. Try again!')

วดความเขมแสง

คณสมบต

ไฟเลยง +3 ถง +5 V1-65535 (ลกซ)ทดตอการรบกวนจากแสงอนฟราเรด

เปดใช i2c

เปดใช i2c

เปดใช i2c

เปดใช i2c

ตอวงจร

ทดสอบการเชอมตอ

แสดงคาความเขมแสงimport time

import smbus

bus = smbus.SMBus(1)

addr = 0x23 # i2c adress

while True:

data = bus.read_i2c_block_data(addr,0x11)

lum=(data[1] + (data[0]<<8) / 1.2)

print ("Luminosity " ,lum,"lx")

time.sleep(0.5)

เตอน

PIR

PIR

PIR

วงจร

PIR

เตอนGPIO.setwarnings(False)

GPIO.setmode(GPIO.BCM)

GPIO.setup(24,GPIO.OUT)

blink = GPIO.PWM(18,500)

blink.start(0)

GPIO.setup(21,GPIO.IN)

st=0

while (1):

da=datetime.now()

microsec=da.microsecond

if microsec > 700000:

blink.ChangeDutyCycle(st)

else:

blink.ChangeDutyCycle(0)

state=GPIO.input(21)

if (state==1):

st=50

else:

st=0

การตงคาใหชดค าสงเรมท างานอตโนมต

import RPi.GPIO as

GPIO

import time

GPIO.setmode(GPIO.BC

M)

ledPin=16

swPin=22

GPIO.setup(ledPin,GP

IO.OUT)

GPIO.setup(swPin,GPI

O.IN)

1.สรางชดค าสงทตองการจะรนแบบอตโนมต โดยในทนใชชดค าสง LED.py และไดมการเพมการตอสวตชไวท GPIO 22 (ตอแบบ Active low) เมอมการกดสวตชโปรแกรมกจะหยดการท างาน

try:

while

(GPIO.input(swPin)):

GPIO.output(ledPin,

0)

time.sleep(0.5)

#print("Relay=OFF")

3. เปด Terminal แลวท าการแกไขไฟล rc.local โดยพมพชดค าสง sudo nano /etc/rc.local

2.บนทกไฟลชอ LED.py แลวเลอเมน Build > Exrcute บนโปรแกรม Geanyหรอ เปดเทอมนอลแลวสงรนดวยค าสง

sudo python3 LED.py

และใหจ าต าแหนงของไดเรคทอรใด ซงในทนอยท /home/pi/Desktop/LED.py

4. จะพบชดค าสงตางๆ แลวใหพมพชดค าสง sudo python3 /home/pi/Desktop/LED.py &

กอนบรรทด exit0 ดงภาพ จากนนบนทกการแกไขไฟลโดยกด Ctrl+Xและ Y แลวตามดวย Enter

หมายเหต เครองหมาย & ตอทายค าสงเปนการบอกวาค าสงนใหท างานอยเบองหลงและถาหากไมใชงานการท างานชดค าสงแบบอตโนมตใหเขามาเพม # ทหนาชดค าสงทเพมขนน

5. เมอแกไขไฟลเสรจเรยบรอยแลวใหลองรบตใหมดวยค าสง sudo reboot

6.เมอบอรดเรมกลบมาท างานใหมกจะเหนวาหลอด LED จะกระพรบตลอดเวลาโดยทไมตองพมพค าสงใหท างานเลยหลงจากตวบอรดเรมท างาน

หมายเหต ระบบตองตงคาแบบ Console Text console, requiring login (default)ซงยงไมเขาส startx

ทดสอบการท างานชดค าสงเรมท างานอตโนมต

แตถาหากทดลองกดสวตชกจะพบวาโปรแกรมหลกจาก loop while และหยดท างาน (เปนผลมาจากการตงคาเงอนไขอานคาการกดสวตช)

วธการ Kill process ทท างานอย1. Remote เขาไปยงบอรดทท างานอย เปด Terminal ท าการคนหา Process ID ของโปรแกรมทท างานอย โดยใชค าสง

ps ax | grep {ชอไฟล}

2. จะเหนไดวาม Process ของ LED.py อย 3 ตวทท างาน ซงจะเหนเลข Process ID อยดวย

3. ใชค าสง Kill Process แลวใชการระบ Process ID ทตองการจะปด ใหใช Process ID ของตวไหนกไดทมาจากค าสง python3

(จะเปนตวทมค าสง sudo น าหนาหรอไมกได)

sudo kill 2207

4. หลงจากชดค าสงหยดท างานแลว ตรวจสอบProcess ทท างานอกครงกจะพบวาไมม Process ของชดค าสง LED.py หลงเหลออยแลว

WiringPi เขยนภาษา C บน RPiตดตง wiringPi

git clone git://git.drogon.net/wiringPi

cd wiringPi

git pull origin

./build

ทดสอบผาน Terminal (สง LED ตดและดบท ขา 18)gpio -g mode 18 output

gpio -g write 18 1

gpio -g write 18 0

ทดสอบผาน Terminal (ใหขา 22 เปนอนพตพลอพ และอานคา)gpio -g mode 22 up

gpio -g read 22

ถาไมไดตองลง Make กอนsudo apt-get install Make

WiringPi เขยนภาษา C บน RPiก าหนดคาเรมตนwiringPiSetupGpio(); // ก าหนดคาเรมตนให RPi แบบบขา BCM

ก าหนดคาเรมตนpinMode(22,INPUT)

pinMode(23,OUTPUT)

pinMode(18,PWM_OUTPUT)

สงงานเอาตพตdigitalWrite(23, HIGH);

pwmWrite(18, 723);

อานคาอนพตif (digitalRead(22))

printf("Pin 22 is HIGH\n");

else

printf("Pin 22 is LOW\n");

ก าหนดขาพลอพpullUpDnControl(22, PUD_UP);

หนวงเวลาdelay(2000);

ปรบคาการคอมไพลส าหรบ WiringPi

การใช wiringpi2 กบ Python และ Rpi

wiringPi พฒนา Rpi ใหงายเหมอนเขยน Arduinoby Gordon‘Drogon’ Henderson

ตดตงผาน githubgit clone https://github.com/Gadgetoid/WiringPi2-Python.git

cd WiringPi2-Python

sudo python3 setup.py

import wiringpi2 as gpio

เพมไลบราร

gpio.wiringPiSetupGpio()

setmode ก าหนดรปแบบขา

gpio.wiringPiSetup()

gpio.pinMode(pin,1)

ก าหนดขาเปน output

gpio.digitalWrite(pin,1)

output สงคาออกไปทขา

gpio.digitalWrite(pin,0)

ไลบราร wiringPi2

gpio.digitalRead(pin)

input รบคาลอจกจากขา

gpio.pullUpDnControl(pin,2)

pull up

gpio.pinMode(pin,0)

ก าหนดขาเปน inputgpio.pullUpDnControl(pin,1)

pull down

gpio.pullUpDnControl(pin,0)

ไม pull up/down

ใชค าสง pwm ดวย wiringPi2

wiringpi.pinMode(18,2)

ก าหนดขา 18 เปน PWMwiringpi.pwmWrite(18,duty)

ก าหนดคา dutycycle

import wiringpi2 as pi

import time

leds = [18,23,24,25]

sw = [16,20,21]

pi.wiringPiSetupGpio()

pi.pinMode(16,0)

pi.pinMode(18,2)

while True:

for i in range(1025):

pi.pwmWrite(18,i)

time.sleep(0.001)

for i in range(1025,-1,-1):

pi.pwmWrite(18,i)

time.sleep(0.001)

ภาคผนวก

รปแบบการตดตอ LED ACTLinux ใชการตงคา Config ตางๆ ผาน Text ไฟลใน /etc/

การเปลยนสถานะของอปกรณระบบ ท ากบไฟลเสมอน จะถกเกบใน /sys/ และ /proc/

LED ACT บน R-Picat /sys/class/leds/led0/trigger

echo "timer"|sudo tee /sys/class/leds/led0/trigger

ปกตโชวคาการอานเขยน SD-CARD

ยายมาโชวคา Timer แทน

LED ACT กะพรบ

LED ACT บน R-Pi

สง LED ไมใหถกควบคมจากใคร

echo "none"|sudo tee /sys/class/leds/led0/trigger

echo "1" |sudo tee /sys/class/leds/led0/brightness

สง LED ตด

echo "0" |sudo tee /sys/class/leds/led0/brightness

สง LED ดบ

คนคาเดม (แสดงสถานะ อานเขยน SDCARD

echo "mmc0"|sudo tee /sys/class/leds/led0/trigger

กฤษดา ใจเยน KRITSADA JAIYENบรษท อนโนเวตฟ เอกเพอรเมนต จ ากด108 ซอยสขมวท 101/2 ถ.สขมวทแขวงบางนา เขตบางนา กรงเทพฯ 10260โทรศพท 02-7477001-4 โทรสาร 02-7477005

Email : kritsada@inex.co.th

www.inex.co.th

top related