Está en la página 1de 35

I HC QUC GIA TP.

H CH MINH
I HC BCH KHOA TPHCM
B MN IN T

BO CO N 2:
TM HIU V RASPBERRY PI V NG DNG LM
WEBSERVER DNG GIM ST V IU KHIN
THIT B

GVHD: Ths. Bi Quc Bo


SVTH: Nguyn Huy Trung
MSSV: 41204142

Tp. H Ch Minh, ngy 3/6/2016


1

Ni dung:
Chng 1: Gii thiu v Raspberry Pi v Ci t c bn.........................................3
I. Gii thiu v Raspberry Pi (Chic my tnh nh nht th gii).........................3
II. Ci t c bn cho Raspberry Pi.......................................................................6
Chng 2: C bn v ngn ng Python....................................................................9
I. Bin dch Python t ca s Terminal..................................................................9
II. Lp trnh c bn vi ngn ng Python..............................................................9
Chng 3: Lp trnh WEB vi Flask.......................................................................15
I. Gii thiu v Flask............................................................................................15
II. Gii thiu v web ng v web tnh:...............................................................15
III. Ci t v v d c bn:..................................................................................17
IV. S dng Jquery trong lp trnh web...............................................................20
Chng 4: NG DNG WEBSERVER LM GIM ST V IU KHIN
THIT TRN RASPBERRY PI..............................................................................22
I. c nhit cm cm bin DS18B20..............................................................23
II. iu khin bt tt LED....................................................................................26
III. My pht nhc MP3.......................................................................................30
Kt lun:..................................................................................................................34
Ti liu tham kho:..................................................................................................35

SVTH: Nguyn Huy Trung_41204142

Chng 1: Gii thiu v Raspberry Pi v Ci t c bn


I. Gii thiu v Raspberry Pi (Chic my tnh nh nht th gii)
1. S ra i.
Raspberry Pi l mt my tnh n khi c kch thc nh nh chic th ATM, c
pht trin bi Qu Raspberry (nc Anh) vi mc tiu khuyn khch hc tp khoa hc my
tnh trong trng hc.

Hnh: Raspberry Model B


Raspberry Pi c bt u pht trin t nm 2006, bn concept sm nht da trn vi
iu khin AVR Atmel ATmega644. Ngy 16 thng 6 nm 2012, nhng chic Raspberry Pi u
tin c gi n tay ngi nhn. n ngy 22/5 hn 20.000 chic c bn ra. Ngy
16/7/2012, Qu Raspberry Pi thng bo c 4000 sn phm c phn phi mi ngy v bt
u cho php ngi dng mua my tnh nh ny vi s lng ln. Trong vng 3 nm k t
khi c bn ra, c hn 5 triu chic Pi c bn ra th trng (theo s liu thng k ca
trang ch Raspberry Pi).
Vy iu g lm nn thnh cng ngoi sc tng tng ca Raspberry Pi:

Raspberry Pi c mc gi qu hp dn: ch t 25$ cho mt chic bo mch c th lm hu


nh mi ng dng hng ngy nh lt web, lp trnh, xem phim HD n nhng tng
m bn khng ng n nh iu khin robot, nh thng minh,.. Mt iu quan trng l n
tit kim in v kh nng chy lin tc 24/24.
Raspberry Pi chy h iu hnh Linux: 99% nhng th m bn c th lm trn my tnh
u c th lm trn Window v quan trng l tt c u min ph!
Raspberry Pi c kch thc t hon: ch tng ng nh mt chic th ATM v nng cha
y 50 gram. Gn vi chic tivi, bn c th bin n thnh mt thit b gii tr thng minh
trong phng khch. Gn vi mn hnh v bn phm, chut, bn c th bin n thnh mt
chic my tnh ng ngha. Nh gn v tin li
Cng ng Raspberry Pi pht trin rt nhanh trn th gii: Hu ht nhng thc mc ca
bn u c gii p rt nhanh va cn hn th na: bn c th tm thy hang ngn d n
thc hin v v s tng c o.
Vi nhng u im c o trn, Raspberry vt khi bin gii va trng hc
v tr thnh thit b a thch ca rt nhiu ngi am m in t v lp trnh. S thnh

SVTH: Nguyn Huy Trung_41204142

cng ca n m mt bc pht trin mi cho tin hc: em my tnh v cm hng lp


trnh n gn mi ngi hn bao gi ht
Raspbery Pi s dng chip Broadcom BCM2835 SoC (System on Chip) c cha b x
l ARM1176JZF-S 700 Mhz (c th p xung ln 1Ghz), GPU Video Core IV, v b nh RAM
256 sau nng cp ln 512MB. N khng c cng hay SSD i km m s dng th SD lu
tr d v khi ng h iu hnh.

2. Phn cng
Do ch lm trn Raspberry Pi Model B nn ch tp trung gii thiu v con ny
2.1. Tng quan v thng s
Thng s

Model B

Chip

(Soc)Broadcom BCM2835

CPU

700 MHz, li ARM1176JZF-S

GPU

Broadcom VideoCore IV, OpenGL ES 2.0, MPEG-2 v


VC-1, 1080p30 h.264/MPEG-4

B nh (SDRAM)

512 MB

USB 2.0 ports

2 (thng qua USB tch hp)

Video Outputs

Composite RCA hoc HDMI

Audio outputs

3.5 mm jack, HDMI

Lu tr

SD/MMC/SDIO Card Slot

Mng

10/100 Ethernet (RJ45) thng qua USB Hub

Xut nhp

8 x GPIO, UART, I2C Bus, +3.3V, +5V, Ground

Ngun

> 700 mA (3.5 W)

Kch thc

85.6 mm x 53.98 mm (3.370 in x 2.215 in)

Trng lng

45 g (1.6 oz)

H iu hnh

Debian GNU/Linux, Raspbian OS, Arch Linux ARM,


RISC OS, FreeBSD, Plan 9,..

SVTH: Nguyn Huy Trung_41204142

2.2. Cu to

CPU: Tri tim ca Raspberry Pi. Chip ca Raspberry Pi l 32 bit, 700 Mhz System on
Chip, c xy dng trn kin trc ARM11. Model B c 512MB RAM.
SD Card Slot: Raspberry khng c cng. V th mi th u c lu tr trn SD Card
t h iu hnh n d liu
Cng USB: Model B c 2 cng USB 2.0, c th s dng cm cc thit b ngoi vi nh
bn phm, con chut.
Cng Ethernet: Model B c cng Ethernet chun RJ45
Cng HDMI: Cng HDMI cung cp m thanh v video s. C 14 chun video khc nhau
c h tr, v tn hiu HDMI c th chuyn i v DVI (Digital Video Interface Cng
truyn trc tip t video s ti mn hnh), cp Composite (l loi 3 u dy ra 2 cho m
thanh v 1 cho hnh nh) hoc SCART (chun giao tip chu u) vi b chuyn i bn
ngoi
Trng thi Led (Status Leds): C 5 trng thi LED:
Led

Mu

Trng thi

ACT

Xanh

Sng khi SD Card c truy cp

PWR

n ngun (lun sang khi c ngun

FDX

Xanh

Sng nu mng truyn song cng (full duplex)

LNK

Xanh

Hot ng ca mng

100

Vng

Sng nu kt ni mng 100Mps

Ng ra Audio analog: thit k cm gic audio chun 3.5mm, hng ti li ti c tr khng


cao, tuy nhin cht lng nh ra km hn so vi cng HDMI khi bn kt ni ti TiVi thng
qua HDMI.

SVTH: Nguyn Huy Trung_41204142

Ng ra Composite video: Cng chun loi RCA cung cp tn hiu video NTSC hoc PAL.
nh dng video qua cng ny phn gii thp hn so vi cng HDMI.
Ngun ng vo: iu u tin bn nhn ra l khng c cng chuyn i ngun trn Pi.
Cng micro USB ch c s dng l ngun cho Pi.

3. Phn mm:
-

Raspberry Pi chy h iu hnh da trn nhn Linux. Raspbian mt phin bn da trn


Debian c ti u cho phn cng ca Pi l h iu hnh c Qu Raspberry Pi
ngh s dng.
Di y l h iu hnh c Raspberry Pi h tr hoc ang c cng ng th
nghim
AROS
Android 4.0
Arch Linux ARM
Debian Squeezy
Fifefox OS
Gentoo Linux
Google Chronium OS
PiBang Linux
Raspberry Pi Fedora Remix
Raspbian
Slakware ARM
QtonPi
Open WebOS
Plan 9 (Bell Labs)
RISC OS
FreeBSD
NetBSD
Squeezy ARM Puppy
OpenELEC
XBMC (Kodi)
RaspBCM

II. Ci t c bn cho Raspberry Pi


Mun truy cp v iu khin Pi, bn cn ci t cho Raspberry Pi. s dng thit b
ca bn, bn cn ci t h iu hnh vo SD Card. Xong l bn c th vit code v iu khin
thit b khi bn kt ni vi GPIO.
C vi th cn bn cn chun b phn cng:

Board Raspberry Pi model B


Ngun ti thiu 5V 700mA
Th nh SD: ti thiu 4GB, class >= 4

SVTH: Nguyn Huy Trung_41204142

Mn hnh kt ni thng qua cng HDMI, chut, bn phm (nu cn)


Dy mng (nu kt ni mng)

C 2 cch ci t v s dng Raspberry Pi: trc tip dng nh mt my tnh (cn c


chut, bn phm v mn hnh) hoc gin tip ci t thng qua cp mng (ch cn dy cp)
Cc bc thc hin:
Bc 1: Format th nh SD Card
Dng phn mm SDFormat. Cc bn ti phn mm v m chng trnh ln. Chn th
nh vo my tnh.
Chy chng trnh Format th nh v tin hnh Format

Bc 2: Chp file h iu hnh Linux vo th nh


Dng phn mm Win32DiskImager. Sau m phn mm ln. Chn file cha h iu
hnh cn ci t. Ri nhn Write ghi h iu hnh vo th nh

Bc 3: Cm th nh vo Raspberry Pi. Cm ngun khi ng Raspberry Pi. Bn s


dng username v password mc nh l pi/raspberry ng nhp vo h thng. Sau khi
ng nhp thnh cng. S c ch giao din nh sau:
SVTH: Nguyn Huy Trung_41204142

Hnh: Giao din hin th ca Raspbery Pi h iu hnh Raspbian


Bn c th thao tc cc tc v nh trn Windows
Ngoi ra, khi bn khng c sn mn hnh cng nh bn phm, chut th c th s dng
mng LAN ci t v kt ni s dng Raspberry t xa qua Window. Sau khi ni ni ngun
v dy mng, bn c th dng phn mm Putty truy cp vo Raspberry Pi thng qua SSH

SVTH: Nguyn Huy Trung_41204142

Chng 2: C bn v ngn ng Python


C nhiu ngn ng c th vit trn Raspberry Pi, Python l ngn ng ph bin nht.
Python l ngn ng lp trnh hng i tng, bc cao, mnh m. Ngoi ra, hc Python kh
n gin v d dng. Python cng l mt ngn ng thng dch, tc l ngn ng khng cn phi
bin dch ra file chy m c code n u th chy n . Bi vit trong chng ny s gii
thiu c bn v lp trnh Python

I. Bin dch Python t ca s Terminal.


chy chng trnh python 2 t dng lnh, s dng lnh:
$ python myprogram.py
Nu bn mun chy chng trnh s dng Python 3, ch cn thay i lnh python thnh
python 3. Chng trnh Python s chy file c ui m rng .py
Bn c th chy hu ht cc chng trnh Python nh l ngi normal user; tuy
nhin, trong mt vi trng hp s dng cc GPIO, bn cn phi chy vi super user. Bn
cn thm dng lnh trc bng sudo
$ sudo python myprogram.py

II. Lp trnh c bn vi ngn ng Python.


1. Bin (Variables)
Trong Python, bn khng phi khai bo r rang loi bin, bn ch cn gn cho bin mt
gi tr. Xt v d di y:
a = 123
b = 12.34
c = Hello
d = Hello
e = True
Bn c th nh ngha mt chui s dng du nhy n hoc nhy kp. Tn bin bt
u bng t vit thng v nu tn bin ch hn mt t, cc t c th ni vi nhau bng k t
gach di. N lun lun l tng tt cho tn bin ca bn.

2. c v xut ra mn hnh hin th


2.1. Xut
Vn t ra: Bn mun in cc gi tr ra mn hnh
Gii php: S dng lnh print. Bn c th th v d di y trong Python console
>>> x =10
>>> print(x)
10
>>>
Trong Python 2, bn c th dng lnh print khng cn du ngoc trn. Tuy nhin nu
trong Python 3 th khng ng. V vy, thch hp cho c hai, nn s dng du ngoc trn
cho gi tr bn in ra.

SVTH: Nguyn Huy Trung_41204142

2.2. c
t vn : Bn mun ngi s dng nhp cc gi tr
Gii php: S dng lnh input (trong Python 3) hoc lnh raw_input( Python 2) nhp
gi tr.
V d:
>>> x= input(Enter Value:)
Enter Value: 23
>>> print(x)
23
>>>

3. Biu thc s hc
Vn t ra: Bn mun s dng cc biu thc s hc trong Python
Gii php: Cc ton t chung nht c s dng trong Python l cng (+), tr (-), nhn (*),
chia (/).
V d sau trnh by chuyn t Celsius sang Fahrenheit:
>>> tempC = input(Enter temp in C: )
Enter temp in C: 20
>>> tempF = (int(tempC)*9)/5 + 32
>>> print(tempF)
68.0
>>>

4. Tm v tr ca mt chui bn trong mt chui


Vn t ra: Bn mun bit c bao nhiu k t c trong chui
Gii php: S dng hm find
V d sau tm v tr ca chui def trong chui abcdefghi
>>> s = abcdefghi
>>> s.find(def)
3
>>>
Ch v tr bt u u tin l 0, v tr th 3 ngha l k t th 4 trong chui

5. S dng hm iu kin
Vn t ra: Bn mun chy lnh Python ch khi iu kin l ng
Gii php: S dng lnh if
V d di y s in ra dng x is big nu x c gi tr ln hn 100
>>>x=101
>>>if x>100:
...
print(x is big)
...
SVTH: Nguyn Huy Trung_41204142 10

x is big
Khi bn mun lm mt iu nu iu kin ng v mt iu khc nu lnh l sai.
Trong trng hp ny, s dng lnh else.

6. So snh hai gi tr
Vn t ra: Bn mun so snh cc gi tr vi nhau
Gii php: S dng ton t so snh: <(nh hn), >(ln hn), <= (nh hn hoc bng), >=
(ln hn hoc bng), ==(bng), hoc != (khc)
V d:
>>> 1 != 2
True
>>> 1 !=1
False
>>> 10 >= 10
True
>>> 10 >=11
False
>>> 10 == 10
True
>>>

7. Ton t Logic
Vn t ra: Bn cn xc nh iu kin kt hp vi lnh if
Gii php: S dng mt trong cc ton t logic: and, or, and not
V d, bn mun kim tra liu rng bin x c gi tr nm trong khong 10 v 20.
lm iu , bn cn s dng ton t and:
>>> x = 17
>>> if x >= 10 and x <= 20:
...
print(x is in the middle)
...
x is in the middle
Bn c th kt hp nhiu ton t and v or, bn cn c th s dng du ngoc n nu
biu thc phc tp

8. Vng lp while
Vn t ra: Bn cn lp li code chng trnh cho n khi mt ci g thay i
Gii php: S dng vng lp While. Vng lp While s thc hin lnh trong vng lp cho
n khi iu kin sai. V d di y s trong vng lp cho n khi ngi s dng nhp
nt X exit
>>> answer = ''
>>> while answer != 'X':
...
answer = input('Enter command:')
...
SVTH: Nguyn Huy Trung_41204142 11

Enter command:A
Enter command:B
Enter command:X
>>>

9. Thot khi vng lp s dng break


Vn t ra: Bn ang trong vng lp v cn thot ra khi vng lp nu mt s iu
kin xy ra
Gii php: S dng ln break thot khi vng lp while hoc for
V d:
>>> while True:
...
answer = input('Enter command:')
...
if answer == 'X':
...
break
...
Enter command:A
Enter command:B
Enter command:X
>>>

10. Khai bo hm trong Python


Vn t ra: Bn mun trnh lp li code ging nhau trong chng trnh
Gii php: To mt hm gom code thnh mt nhm, gip bn gi t nhiu ni
To v gi hm trong Pythin c minh ha v d di y:
def count_to_10():
for i in range(1, 11):
print(i)
count_to_10()
Trong v d ny, ta khai bo mt hm s dng lnh def, n gip in ra s t 1 n 10 khi
c gi: cont_to_10()

11. nh dng s:
Vn t ra: Bn mun nh dng s thnh mt s c ch s thp phn c nh
Gii php: S dng hm format
V d:
>>> x = 1.2345678
>>> "x={:.2f}".format(x)
'x=1.23'
>>>
Nu bn mun ch s c nh dng c chiu di ch l 7 khong trng, bn thm trc
nh dng ch thp phn nh sau:
SVTH: Nguyn Huy Trung_41204142 12

>>> "x={:7.2f}".format(x)
'x= 1.23'
>>>

12. nh dng ngy


Vn t ra: Bn mun chuyn ngy thnh chui v nh dng n
Gii php: S dng hm format vi i tng ngy
V d:
>>> from datetime import datetime
>>> d = datetime.now()
>>> "{:%Y-%m-%d %H:%M:%S}".format(d)
'2016-05-20 8:00:45'
>>>
Ngn ng Python gm nhiu k t c bit nh dng ngy nh %Y, %m v %d tng
ng vi nm, thng, ngy

13. Tr v hn mt gi tr
Vn t ra: Bn cn vit mt hm, tr v hn mt gi tr
Gii php: S dng nhiu c php bin
V d:
>>> def calculate_temperatures(kelvin):
...
celsius = kelvin - 273
...
fahrenheit = celsius * 9 / 5 + 32
...
return celsius, fahrenheit
...
>>> c, f = calculate_temperatures(340)
>>>
>>> print(c)
67
>>> print(f)
152.6

14. Khai bo hm
Vn t ra: Bn cn nhm cc data v hm lin quan vi nhau trong mt class
Gii php: Khai bo hm v s dng n cc bin thnh vin m bn cn
Xt v d:
class Person:
'''This class represents a person object'''
def __init__(self, name, tel):
self.name = name
self.tel = tel
SVTH: Nguyn Huy Trung_41204142 13

Dng u tin trong khai bo class s dng nhy n, nhy kp, hoc nhy ba biu th
chui ti liu. y l gii thch mc ch ca class.
Gi class: v d
p = Person("Simon", "1234567")
Gi chng ta kim tra i tng Person mi, p, c tn l Simon bng cc nhp
>>>p.name
Simon

SVTH: Nguyn Huy Trung_41204142 14

Chng 3: Lp trnh WEB vi Flask


I. Gii thiu v Flask
- Flask l mt ng dng framework (web application framework-WAF) nh, dng lp trnh web
bng ngn ng Python v da trn Werkzeug WSGI (Web Server Gateway Interface) tookit and
Jinja2 template engine
o Web application framework (WAF):
Framework c thit k h tr pht trin cc trang web ng, cc ng
dng web, dch v v ti nguyn web
Mc ch gim bt cc phn chung khng khng cn thit trong vic
pht trin website.
V d: Nhiu framework cung cp cc th vin cho vic truy cp database,
qun l cc framework, v chng thng dng y mnh vic s dng
li code mt cch hiu qu.
o Web Server Gateway Interface: c im giao din n gin v ph bin gia web
servers v ng dng web hoc framework s dng ngn ng lp trnh Python.
o Jinja: l mt template engine cho ngn ng lp trnh Python
- Hai method c s dng chnh ca HTTP l GET v POST dng gi d liu ti server
x l.
o GET: D liu c gi tng minh, chng ta c th nhn thy trn URL, y l l
do khin n khng bo mt so vi POST.
o POST: Bo mt hn GET v d liu c gi ngm, khng xut hin trn URL.
-

Flask gip bn d dng x l GET request v POST request t browser.

II. Gii thiu v web ng v web tnh:


1. Web tnh.
-

Trang web tnh thng c dng thit k cc trang web c ni dung t cn thay i v
cp nht.
Website tnh l website ch bao gm cc trang web tnh v khng c c s d liu i km.
Website tnh thch hp vi c nhn, t chc, doanh nghip va v nh mi lm quen vi
mi trng Internet.
Website tnh c cc u v nhc im c bn di y.

1.1. u im:
-

Tc truy cp nhanh: Tc truy cp ca ngi dng vo cc trang web tnh nhanh hn


cc trang web ng v khng mt thi gian trong vic truy vn c s d liu nh cc trang
web ng.

SVTH: Nguyn Huy Trung_41204142 15

Chi ph u t thp: Chi ph xy dng website tnh thp hn nhiu so vi website ng v


khng phi xy dng cc c s d liu, lp trnh phn mm cho website v chi ph cho vic
thu ch cho c s d liu, chi ph yu cu h iu hnh tng thch (nu c).

1.2. Nhc im:


-

Kh khn trong vic thay i v cp nht thng tin: Mun thay i v cp nht ni dung
thng tin ca trang website tnh Bn cn phi bit v ngn ng html, s dng c cc
chng trnh thit k ho v thit k web cng nh cc chng trnh cp nht file ln
server.
Thng tin khng c tnh linh hot, khng thn thin vi ngi dng: Do ni dung trn
trang web tnh c thit k c nh nn khi nhu cu v thng tin ca ngi truy cp tng
cao th thng tin trn website tnh s khng p ng c.
Kh tch hp, nng cp, m rng: Khi mun m rng, nng cp mt website tnh hu nh
l phi lm mi li website.

2. Web ng.
-

Web ng l thut ng c dng ch nhng website c c s d liu v c h tr


bi cc phn mm pht trin web.
Web ng thng c pht trin bng cc ngn ng lp trnh tin tin nh PHP, ASP,
ASP.NET, Java, CGI, Perl, v s dng cc c s d liu quan h mnh nh Access, My
SQL, MS SQL, Oracle, DB2.
Vi web ng, thng tin hin th c gi ra t mt c s d liu khi ngi dng truy vn
ti mt trang web. Trang web c gi ti trnh duyt gm nhng cu ch, hnh nh, m
thanh hay nhng d liu s hoc dng bng hoc nhiu hnh thc khc na.
Thng tin trn web ng lun lun mi v n d dng c bn thng xuyn cp nht
thng qua vic bn c th s dng cc cng c cp nht ca cc phn mm qun tr web .
Thng tin lun c cp nht trong mt c s d liu v ngi dng Internet c th xem
nhng chnh sa ngay lp tc. V vy website c h tr bi c s d liu l phng
tin trao i thng tin nhanh nht vi ngi dng Internet. iu d nhn thy l nhng
website thng xuyn c cp nht s thu ht nhiu khch hng ti thm hn nhng web
site t c s thay i v thng tin.
Web ng c tnh tng tc vi ngi dng cao. Vi web ng, Bn hon ton c th d
dng qun tr ni dung website v iu hnh website ca mnh thng qua cc phn mm h
tr m khng nht thit Bn cn phi c kin thc nht nh v cc ngn ng html, lp
trnh web.
Bn c th nhn nhn vn theo kha cnh khc: chng hn bn c sn nhng c s d
liu nh c s d liu sn phm, nhn s, khch hng hay bt k c s d liu no m
bn mun a thm giao din web vo ngi dng ni b hay ngi dng Internet u
c th s dng chng trnh ch vi trnh duyt web ca mnh.
Thit k tt c cc website tin tc, cc mng thng mi, cc mng thng tin ln, cc
website ca cc t chc, doanh nghip hot ng chuyn nghip trn

SVTH: Nguyn Huy Trung_41204142 16

Mng intenet u s dng cng ngh web ng. C th ni web ng l website ca gii
chuyn nghip hot ng trn mi trng Internet.

Hnh: Web ng v web tnh

III. Ci t v v d c bn:
1. Ci t:
ci t Flask, bn cn ci t pip. Nu bn cha ci t pip, s dng c php:
pi@raspberrypi ~ $ sudo apt-get install python-pip
Sau khi pip c ci t, bn c th ci t flask thng qua:
pi@raspberrypi ~ $ sudo pip install flask
V d c bn: In ch Hello Word ln a ch web ca Raspberry Pi
To file hello_flask.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return "Hello World!"
if __name__ == '__main__':
SVTH: Nguyn Huy Trung_41204142 17

app.run(host = "0.0.0.0",port = 5000, debug =True)


Gii thch:
@app.route(/): xc nh a ch web ca chng trnh. V d Raspberry Pi c a ch l
192.168.100.1 th khi vo a ch http://192.168.100.1:5000/ s chy vo hm
hello_world() tra v ch Hello World!"
app.run(host = "0.0.0.0",port = 5000, debug =True): web c kt ni vi bt k thit b
no trn Network.
Bn c th thm cc trang html thm vo ng dng web cho ngn gn. thm vo cc
trang html, bn cn import render_template v to th mc templates trong cha file html.
V d file index.html hin dng ch Hello World:
<html>
<body>
<p>Hello World</p>
</body>
</html>
Sau , bn m file python, chnh sa return Hello World thnh return
render_template(index.html).

SVTH: Nguyn Huy Trung_41204142 18

2. Kt qu:

SVTH: Nguyn Huy Trung_41204142 19

IV. S dng Jquery trong lp trnh web


1. Jquery l g?
Jquery l mt th vin c xy dng da trn m JavaScript. Jquery gip vic thc thi
cc on m JavaScript nhanh chng hn, nh gn hn cng tnh nng phong ph. Thay v bn
phi vit bng tay hon ton cc on m JavaScript thc thi mt kch bn no , bn c th
s dng cc th vin ca Jquery thc thi on m mt cch nhanh chng v n gin.

2. S dng th vin Jquery


jQuery l mt th vin vit bng Javascript nn mun s dng c n ta phi
download n v, sau t trong project v dng th script gi file jquery ra vi c php:
<script language="javascript" src="duong_dan_toi_file_jquery.js"></script>
Hoc bn c th nhng th chn jQuery t file jQuery c sn trn my ch ca Google.
Cc ny gip tit kim bng thng:
<script type=text/javascript src=http://code.jquery.com/jquery-2.0.3.min.js></script>
Bn phi import file file jQuery vo ri th mi s dng c cc hm ca n, ngha l
tt c cc on code no c s dng th vin jQuery u phi nm pha di on code import
script trn.
V d sau tr v kt qu t nhp text c thng bo ra mn hnh khi nhn nt button
Bc 1: To file index.html vi ni dung nh sau:
<!DOCTYPE html>
<html>
<head>
<title>Chy chng trnh jquery u tin</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script
language="javascript"
src="http://code.jquery.com/jquery2.0.0.min.js"></script>
</head>
<body>
<h1>jQuery</h1>
<input type="text" id="id-textbox" value=""/> <br/>
<input type="button" id="id-button" value="Alert"/>
<script language="javascript">
// Code jQuery ti y
</script>
</body>
</html>

SVTH: Nguyn Huy Trung_41204142 20

Bc 2: Vit s kin click vi jQuery


// Khi click vo button c id = id-button
$('#id-button').click(function()
{
// Cch 1: Khai bo bin v ly gi tr
var textbox = $('#id-textbox');
alert(textbox.val());
// Cch 2: Truy xut trc tip
alert($('#id-textbox').val());
});
Trong :

$('#id-button').click() c ngha l gn s kin click cho th HTML c id="idbutton", tham s truyn vo l mt hm x l khi xy ra s kin click.

$('#id-textbox') c ngha l ly th HTML c id="id-textbox"

$('#id-textbox').val() c ngha ly gi tr ca th HTML c id="id-textbox".


Kt qu sau khi chy demo:

SVTH: Nguyn Huy Trung_41204142 21

Chng 4: NG DNG WEBSERVER LM GIM ST


V IU KHIN THIT TRN RASPBERRY PI
Ngi s dng s iu khin v gim st cc thit b qua webserver nh nhit , iu
khin LED; cng nh c th iu khin MP3 t y.
Lu :
request

User/
Client

Web
Server

response

Read

Tempareture

Turn on

Led Control

Turn off

SVTH: Nguyn Huy Trung_41204142 22

Play

Mp3 Player

Stop

Next

Previous

I. c nhit cm cm bin DS18B20


1. Gii thiu v DS18B20
DS18B20 l nhit k s c phn gii 9-12 bit giao tip vi b iu khin trung tm
thng qua 1 dy duy nht ( 1 wire communication ). Nu cu hnh cho DS18B20 theo
9,10,11,12 bit th ta c chnh xc tng ng l : 0.5C , 0.25C ,0.125C, 0.0625C.( Theo
mc nh ca nh sn xut nu chng ta khng cu hnh ch chuyn i th n s t cu
hnh l 12 bit).
DS18B20 hot ng vi in p t 3V-5,5V ,c th c cp ngun thng qua chn
DQ- chn trao i d liu.
DS18B20 c th o c nhit trong tm -55 1250C vi chnh xc ( +0,5oC ).Mi DS18B20 c mt serial code 64 bit duy nht,iu ny cho php kt ni nhiu IC
trn cng ng Bus.
Chun 1 wire c c im sau:
-

Ch c 1 master trong h thng.


Ga thnh thp.
Tc t ti a l16kbps.
Khong cch truyn xa nht l 300m.
Lng thng tin trao i nh.

SVTH: Nguyn Huy Trung_41204142 23

2. Cch kt ni:

Chn s 1 (GND): c ni vi vi mass


Chn s 2 (DQ) : chn trao i d liu, ng thi cng l chn cp ngun cho ton b IC
(nu chn VDD khng c s dng). Khi kt ni vi Raspberry th cn c in tr ko
ln (khong 4.7k
Chn s 3 (VDD): cp ngun cho IC

3. c nhit vi Raspberry Pi
Thm dng di y vo file trong th mc: /boot/config.txt
dtoverlay=w1-gpio
Trong cm bin 1 dy (1-Wire), tt c data c gi xung bng 1 dy, Raspberry ch yu
cu 1 pin GPIO cho cm bin. Thm vo , hu ht cc cm bin 1-Wire cng i vi mt
SVTH: Nguyn Huy Trung_41204142 24

chui m code, iu ny c ngha bn c th kt ni vi nhiu MCU m khng chu s nh


hng ln nhau.
Ch vi vi set up, DS18B20 c th c trc tip t dng lnh command m khng cn
bt k chng trnh Python no. Tuy nhin, iu ny c ngha l bn s phi nhp lnh
command mi ln bn mun bit nhit l bao nhiu. Raspberry Pi c trang b cc driver
cho giao tip. Tuy nhin, n khng d dng load mi driver khi h thng khi ng, khi
s tang thi gian khi ng ng k v s dng vic xem xt s lng ti nguyn h thng cho
vic x l d tha. Cc driver ny s c lu tr khi c load cc module v lnh modprobe
c s dng khi ng chng vo Linux khi chng c yu cu.
Di y l 2 lnh load 1-Wire v cc driver:
sudo modprobe w1-gpio
sudo modprobe w1-therm
Sau cn phi di chuyn ti folder 1-Wire v s dng lnh ls m bo rng nhit k
c load chnh xc
cd /sys/bus/w1/devices/
ls
Trong cc driver ca device, cm bin ca bn s c lit k ra mt chui ch v s nh
vy 28-000005e2fdc3. Bn dau cn truy cp vo sensor bng lnh cd <code cm bin>
cd 28-000005e2fdc3
Gi tr nhit ca cm bin c vit trong file w1_slave, v vy, ch n gin s dng
lnh cat c n.
cat w1_slave
Hai dng di y ch ra nhit c c t DS18B20, sau t t= ch ra nhit dang
Celsius.
72 01 4b 46 7f ff 0e 10 57 : crc=57 YES
72 01 4b 46 7f ff 0e 10 57 t=23125

4. c nhit ln web:
File main.py: Gi gi tr c c vo bin temp gi qua trang html
@app.route("/temperature")
def temerature():
return render_template('temperature.html',temp=temp_class.readtemp())
File temperature.html: Hin th nhit
<div class="temperature">
<h1>Temperature</h1>
<h2> t = {{temp}}<sup>o</sup>C
</h2>
</div>
SVTH: Nguyn Huy Trung_41204142 25

5. Kt qu:

II. iu khin bt tt LED


Raspberry Pi s iu khin bt tt LED thng qua server cng nh gim st hot ng ca
LED bit c LED ang bt hay tt.

1. Ci t RPi.GPIO cho Raspberry Pi


Bn mun c th xut gi tr output cho pin GPIO v c gi tr input s dng Python.
Bn cn download v ci t th vin RPi.GPIO Python
T mn hnh Terminal ca Pi, bn nhp 2 dng sau ci t th vin RPi.GPIO
$ sudo apt-get install python-dev
$ sudo apt-get install python-rpi.gpio
Sau khi ci t xong, bn c th s dng xut cng nh c gi tr dng GPIO, ch
cn lnh:
import RPi.GPIO as GPIO
setup input hay output cho Raspberry s dng lnh:
GPIO.setup(<pin>,GPIO.IN hay GPIO.OUT)
bt pin ln mc cao, s dng lnh:
GPIO.output(<pin>,1/HIGH/True)
c gi tr input t pin, s dng lnh:
GPIO.input(<pin>)
SVTH: Nguyn Huy Trung_41204142 26

2. iu khin v gim st LED


File python main.py:
@app.route("/led")
@app.route("/led/<led_status>",methods = ['POST'])
def led_change(led_status= None):
if(led_status == 'led1on'):
led.led1on()
elif (led_status == 'led1off'):
led.led1off()
return render_template('led.html')
@app.route('/printledstatus1')
def printledstatus1():
status = request.args.get('state')
if led.readstatusled1()==1:
return jsonify(result1='led 1 is on')
elif led.readstatusled1()==0:
return jsonify(result1='led 1 is off')
Gii thch:
- iu khin LED: Webserver s nhn gi tr khi nhn button iu khin LED ca
client iu khin bt v tt LED.
- Gim st trng thi ca LED bng cch c gi tr ca PIN v gi ln Server
File html: LED.html
{% block script %}
<script src="https://code.jquery.com/jquery-2.2.2.min.js"></script>
<script type=text/javascript>
$(document).ready(function() {
$.getJSON('/printledstatus1', {state: "abc"},
SVTH: Nguyn Huy Trung_41204142 27

function(data){$('#result1').text(data.result1)});
$('#led1on').click(function() {
$.post('/led/led1on');
$('#led1off').click(function() {
$.post('/led/led1off');
});
});
</script>
{% endblock %}

{% block content %}
<div class="led">
<h1>Led Control</h1>
<p>
<h2>Led 1 </h2>
<button type="button" id="led1on" value="led1on">ON</button>
<button type="button" id="led1off" value="led1off">OFF</button>
<p id=result1></p>
</p>
</div>
{% endblock %}
Gii thch: Khi button c click th s gi request n server thc hin bt tt
LED cng nh cp nht trng thi ca LED hin th.

SVTH: Nguyn Huy Trung_41204142 28

3. Kt qu

SVTH: Nguyn Huy Trung_41204142 29

III. My pht nhc MP3


1. Trnh pht nhc OMXPlayer
Omxplayer l trnh pht video c s dng cho Raspberry Pi
-

ci t Omxplayer. Bn ch cn dng lnh n gin:


sudo apt-get install omxplayer
pht nhc hay video bn dng c php:
omxplayer <tn bi ht hay video>

Hoc omxplayer o hdmi <tn video> : dng cho pht qua cng HDMI
Mt s key c bn cho vic trnh pht OMXPlayer:
K EY

T C D N G

Increase Speed

Decrease Speed

Previous Audio stream

Next Audio stream

Previous Chapter

Next Chapter

Previous Subtitle stream

Next Subtitle stream

Toggle subtitles

Exit OMXPlayer

Space or p

Pause/Resume

Decrease Volume

Increase Volume

Left

Seek -30

Right

Seek +30

Down

Seek -600

Up

Seek +600

2. Trnh pht nhc MP3


File Python main.py
@app.route("/mp3")
SVTH: Nguyn Huy Trung_41204142 30

@app.route("/mp3/<change>",methods = ['POST'])
def mp3(change=None):
global mp3_player
if (change == None and mp3_player == False):
mp3_player = True
music.start()
if (change == 'pause'):
music.pause()
if (change == 'stop'):
music.stop()
mp3_player = False
if (change == 'next'):
music.next()
elif (change == 'previous'):
music.previous()
return render_template('mp3.html')
@app.route('/printsongmp3')
def printsongmp3():
return (music.name_song() + ' is playing')
Gii thch:
Cc hm start, pause, stop, next, previous dng bt u trnh pht nhc, tm
ngng pht, dng pht, chuyn bi ht k tip v chuyn bi ht trc .
ng dn /printsongmp3 dng in tn bi ht ang pht ln web
File html mp3.html
{% block script %}
<script src="https://code.jquery.com/jquery-2.2.2.min.js"></script>
SVTH: Nguyn Huy Trung_41204142 31

<script type = "text/javascript" language = "javascript">


$(document).ready(function() {

$('#pause').click(function() {
$.post('/mp3/pause');
});
$('#stop').click(function() {
$.post('/mp3/stop');
});
$('#next').click(function(event) {
$.post('/mp3/next');
$('#songname').load("printsongmp3");
});

$('#previous').click(function(event) {
$.post('/mp3/previous');
$('#songname').load("printsongmp3");
});

});
</script>
{% endblock %}

{% block content %}
<div class="mp3">
<h1>Mp3 Player</h1>
<p>
SVTH: Nguyn Huy Trung_41204142 32

<button type="button" id="pause" >Pause</button>


<button type="button" id="stop" >Stop</button>
<button type="button" id="next" onClick="history.go(0)">Next</button>
<button type="button" id="previous" onClick="history.go(0)">Previous</button>
</p>
<h2 id="songname">
</h2>
</div>
{% endblock %}
Gii thch: Khi cc button c nhn, s c gi ti server iu khin trnh pht
nhc. Mi ln nhn next hay previous u fresh li trang cp nht tn bi ht.

3. Kt qu

SVTH: Nguyn Huy Trung_41204142 33

Kt lun:
1. T nh gi kt qu:
Sau mt thi gian nghin cu v thc hin, nhng em cng hon thnh ng thi
gian. Tuy nhin, do cn hn ch v chuyn mn nn khng th trnh khi thiu st vi u
v nhc im nh sau:
u im:
iu khin hot ng ngay khi nhn button
c nhit mt cch chnh xc
Nhc im:
Cn phi refresh li trang khi cp nht tn bi ht v trng thi cc LED, nhit
Trang web cn n gin, s si

2. Hng pht trin:


Kt ni vi vi iu khin iu khin thit b nhanh v hiu qu hn
Kt hp vi camera gim st v pht hin t nhp

SVTH: Nguyn Huy Trung_41204142 34

Ti liu tham kho:

Trang web : raspi.vn - Cng ng Raspberry Pi Vit Nam


Sch: Get started with Raspberry - Matt Richardson and Shawn Wallace
Trang web : embed.vn
Trang web : codientu.org - Cng ng c in t Vit Nam
Trang web: innovationclub.vn
Sch: Raspberry Pi Cookbook - Simon Monk
Trang web : freetuts.net
Trang web : modmypi.com

SVTH: Nguyn Huy Trung_41204142 35

También podría gustarte