Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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
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
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
GPU
B nh (SDRAM)
512 MB
Video Outputs
Audio outputs
Lu tr
Mng
Xut nhp
Ngun
Kch thc
Trng lng
45 g (1.6 oz)
H iu hnh
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
PWR
FDX
Xanh
LNK
Xanh
Hot ng ca mng
100
Vng
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:
-
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
>>>
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
>>>
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'
>>>
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
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:
-
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.
-
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.
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
2. Kt qu:
$('#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.
User/
Client
Web
Server
response
Read
Tempareture
Turn on
Led Control
Turn off
Play
Mp3 Player
Stop
Next
Previous
2. Cch kt ni:
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
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:
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.
3. Kt qu
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 Chapter
Next Chapter
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
@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
$('#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
3. Kt qu
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