Beruflich Dokumente
Kultur Dokumente
N/KHO LUN
TT NGHIP I HC
Ngi hng dn :
Sinh vin thc hin: Trn Vn Tip
Lp : D12DTMT
NHN XT, NH GI, CHO IM
(Ca ging vin hng dn)
.....................................................................................................................................................
.....................................................................................................................................................
.....................................................................................................................................................
.....................................................................................................................................................
.....................................................................................................................................................
.....................................................................................................................................................
.....................................................................................................................................................
.....................................................................................................................................................
.....................................................................................................................................................
.....................................................................................................................................................
.....................................................................................................................................................
.....................................................................................................................................................
.....................................................................................................................................................
.....................................................................................................................................................
.....................................................................................................................................................
.....................................................................................................................................................
.....................................................................................................................................................
.....................................................................................................................................................
.....................................................................................................................................................
.....................................................................................................................................................
.....................................................................................................................................................
.....................................................................................................................................................
.....................................................................................................................................................
.....................................................................................................................................................
Page i
DANH MC CC K HIU V CH VIT TT
Page ii
DANH MC CC BNG/ HNH V
Hnh 4. 1 Mch in iu khin thit b bng wifi trong m hnh smart home, mt top .................. 34
Hnh 4. 2 Mch in iu khin thit b bng wifi trong m hnh smart home, mt bottom ............ 34
Hnh 4. 3 Lu thut ton code x l cm bin in dung ........................................................ 35
Hnh 4. 4 Code s dng ngt ngoi ESP8266 pht hin trm phm ......................................... 37
Hnh 4. 5 Hm x l sau trm phm .............................................................................................. 40
Hnh 4. 6 Chng trnh m t cho qu trnh trn .......................................................................... 44
Hnh 4. 7 Lu thut ton phn tch x l d liu t mqtt broker gi v .................................. 45
Hnh 4. 8 Chng trnh m t cho bc lng nghe v phn tch d liu t MQTT broker .......... 47
Hnh 4. 9 M t phn cng cm bin nhit .............................................................................. 48
Hnh 4. 10 Lu thut ton hot ng ESP8266 cm bin nhit .......................................... 48
Page iii
MC LC
LI CM N ................................................................................................................................. i
DANH MC CC K HIU V CH VIT TT ................................................................... ii
MC LC ...................................................................................................................................... v
M U......................................................................................................................................... 1
CHNG 1 GII THIU V SMART HOME ........................................................................ 2
1.1 Gii thiu v smart home ...................................................................................................... 2
1.2 Yu cu tng th .................................................................................................................... 2
1.3 Phn cng .............................................................................................................................. 3
1.4 Kch bn cho tng phng....................................................................................................... 3
CHNG 2: LINK KIN V MODULE S DNG .............................................................. 5
2.1 Server raspberry pi 2.............................................................................................................. 5
2.1.1 Gii thiu v raspberry pi 2 ........................................................................................... 5
2.1.2 Mc ch s dng Raspberry pi 2 trong ti smart home ............................................ 5
2.2 Module wifi ESP8266 ....................................................................................................... 6
2.2.1 Gii thiu v module ESP8266 ...................................................................................... 6
2.1.2 S chn v chc nng ................................................................................................ 6
2.3 IC cm bin in dung TTP223-BA6 ................................................................................... 7
2.3.1 Gii thiu v IC cm bin in dung TTP223-BA6 ....................................................... 7
2.3.2 S chn v chc nng ................................................................................................ 7
2.3.3 Mc ch s dng IC TTP223-BA6 ............................................................................... 8
2.4 Mosfet knh N- IRFR3709 30V ............................................................................................ 8
2.4.1 Gii thiu mosfet knh N- IRFR3709 30V .................................................................... 8
2.4.2 Nguyn l hot ng ...................................................................................................... 8
2.4.3 Kim tra hot ng ca mosfet ....................................................................................... 8
2.4.4 Mc ch s dng Mosfet IRFR3709 ............................................................................. 8
2.5 IC chuyn i USB UART IC PL2303 ............................................................................. 9
2.5.1 Gii thiu IC chuyn i gii thiu IC PL2303 ........................................................... 10
2.5.2 S chn v chc nng .............................................................................................. 10
2.5.3 Mc ch s dng mch np UART ............................................................................. 10
2.6 Cm bin nhit DS18B20 .............................................................................................. 10
2.6.1 Gii thiu v cm bin nhit DS18B20 ................................................................... 10
2.6.2 S chn v chc nng .............................................................................................. 11
2.6.3 Mc ch s dng cm bin nhit trong ti ........................................................ 11
2.7 IC cm bin hng ngoi ....................................................................................................... 12
2.7.1 Gii thiu IC cm bin hng ngoi.............................................................................. 12
2.7.2 Mt s lu khi lp t cm bin hng ngoi ............................................................. 12
2.7.3 Mc ch s dng cm bin hng ngoi trong ti smart home ................................ 13
2.8 Module cm bin kh gas MQ2 .......................................................................................... 13
2.8.1 Gii thiu v module cm bin kh gas MQ2 ............................................................... 13
Page v
2.8.3 Mc ch s dng module cm bin kh gas MQ2 ....................................................... 14
2.9 Remote a cm bin cho smart home ................................................................................. 14
2.9.1 Gii thiu v remote a dng cho smart home ............................................................. 14
2.9.2 Mc tiu t c ......................................................................................................... 15
CHNG 3 TNG QUAN V M HNH SMART HOME XY DNG ......................... 15
3.1 Giao thc MQTT ................................................................................................................. 15
3.1.1 MQTT l g ................................................................................................................... 15
3.1.2 Publish v subcribe trong giao thc MQTT ..................................................................... 15
3.1.3 QoS trong giao thc MQTT ........................................................................................ 16
3.1.4 Retain trong giao thc MQTT ..................................................................................... 16
3.2 Kin trc MQTT .................................................................................................................. 16
3.3 Bo mt ca giao thc MQTT ............................................................................................. 19
3.4 Ci t h iu hnh v phn mm cho Raspberry pi 2 ...................................................... 19
3.4.1 Ci t h iu hnh Raspberry pi 2 ............................................................................. 19
3.4.2 Ci t phn mm mosquitto a Raspberry pi tr thnh MQTT Broker ............... 27
3.4.3 Gii thiu v phn mm qun l thit b vo giao din ngi dng openhab .............. 28
3.4.4 Ci t openhab trn Raspberry pi 2 ............................................................................ 28
3.4.5 Cu hnh MQTT Binding ............................................................................................. 29
3.4.6 Cu hnh cc thit b (item) v giao din (site map) cho openhab .............................. 29
CHNG 4 CHNG TRNH HOT NG CA CLIENT TRONG M HNH MART
HOME .......................................................................................................................................... 34
4.1 Mch thit k iu khin thit b ......................................................................................... 34
4.2 Chng trnh iu khin device .......................................................................................... 35
4.3 Xy dng ESP8266 MQTT client cm bin nhit gi gi tr cm bin ln MQTT broker
................................................................................................................................................... 47
4.4 Xy dng cm bin hng ngoi m s ngi trong phng................................................ 52
KT LUN .................................................................................................................................. 51
TI LIU THAM KHO........................................................................................................... 52
Page vi
n tt nghip i hc Chng 1 Gii thiu v smart home
M U
ti ny gip em hiu r nguyn l thu pht pht v ng dng n vo trong qu trnh ngin cu
th em :
1. lm c
Thit k cc module thc thi iu khin thit b in p 1 chiu in p t 5 n 60V
Thit b cm bin: nhit , m, khi gas, cm bin o dng, cm bin hng ngoi hot ng
chnh xc v nhy cm cc mi trng kch thch.
Thc hin truyn nhn tt data trn web openhab v phn mm openhab vit trn androi
M hnh xy dng c vo xy dng trong ngi nh thc t .
2.Vn cha lm c
Trong 3 thng lm n cng l 3 thng em th vic tp on FPT Sofware nn em gp nhiu
kh khn v thi gian gia p lc cng vic mi, v n nghin cu c trc tip vo xy
dng trong ngi nh thc t ca anh qun l em tp on FPT sofware vi nhng i hi kht
khe v ngi nh m khin cho p lc ti tng cao thc hin ti trong thi gian ngn nn sn
phm demo trong an cha c tch hp nhiu nhng tnh nng nh ngi nh xy dng thc
t.
3. Hng pht trin ti tip theo
S xy dng tch hp y nhng tnh nng ca smart home thc t lm, xy dng y
chi tit ti liu cc bn kha sau c th nghin cu phat trin k tha.
1.2 Yu cu tng th
- C kch bn cho tng n v tng ch (ng, c sch, lm vic ..)
- T ng ng ngt n khi c ngi trong phng, phng c >2 ca ra vo.
- Khi c ngi vo
- Kim tra sng v bt n vi sng ph hp, c dimmer.
- Bt tivi, m lng nh.
- Bt qut trn khi nhit > 30o
- Khi ht ngi, gim sng n trn cn 10%, n tng cn 50%, tt qut. Tt ht n sau 5p
- Trn tng c nt iu chnh sng, tt m theo mun. (reset v auto khi ht ngi trong
phng)
Phng ng
- m s ngi trong phng
- Khi c ngi vo, check sng v bt n vi sng ph hp, c dimmer.
- Khi ht ngi, tt ht n
- Trn tng c nt iu chnh sng theo mun.
- Bt qut thng gi khi CO2 trn ngng cho php
- iu chnh m. Tng n nhit v sng.
- Ko dm theo thi gian t trc.
- Trn tng c nt iu chnh sng theo mun.
Phng bp
- Bo ng kh gas, Co2
- Bt qut thng gi khi CO2 t ngng.
- T bp c n, bt n t khi m ca t.
- m s ngi trong phng
- Khi c ngi vo, check sng v bt n vi sng ph hp, c dimmer.
- Khi ht ngi, gim sng n trn cn 10%, n tng cn 50%. Tt ht n sau 5 pht
- Trn tng c nt iu chnh sng, tt m theo mun. (reset v auto khi ht ngi trong
phng)
Phng tm
- m s ngi trong phng
- Khi c ngi vo, check sng v bt n vi sng ph hp, c dimmer.
- Khi ht ngi, gim sng n trn cn 10%, Tt ht n sau 5p
- Trn tng c nt iu chnh sng, tt m theo mun. (reset v auto khi ht ngi trong
phng)
Ca ng
- Bm chung, mn hnh home server t hin camera ca ng
- Camera ghi hnh khi c chuyn ng
- Khi c ngi vo, check sng v bt n vi sng ph hp, c dimmer.
- Khi ht ngi, gim sng n cn 50%, Tt ht n sau 10p
Chip Raspberry pi 2 s dng CPU 4 nhn li ARM cotex A7 chip haBroadcom VideoCore
IV 250MHz, RAM 1 GB b chia s 250MB cho chip ha v 1 khe cm th nh micro SD
phc v lu tr in rng .
Raspberry pi 2 c tch hp nhiu cng kt ni trong c cng HDMI, cng kt ni ethernet
10/100, USB 2.0, microUSB, cng kt ni camera, mn hnh y chn cm GPIO nh mt
vi mch iu khin thng thng. Mch h tr b sc 5V 2A h tr sc
Camera: Connector 15-pin MIPI Camera Serial Interface (CSI-2)
Display: Connector Display Serial Interface (DSI)
Memory Card Slot: Micro SD
Cng ging nh mt s model my tnh Raspberry pi 2 khc, model Raspberry pi 2c th chy
trn nn tng Androi hoc mt s nn tng da trn linux bao gm:
Raspbian: h iu hnh da trn Debian
Ubuntu Mate: Ubuntu Desktop
Snappy Ubuntu Core: ch yu dnh cho cc nh pht trin
Openelec: h thng gii tr a phng tin
OSMC: h thng gii tr a phng tin
Pidora: h iu hnh da trn Fedora
RISC OS: khng phi h iu hnh Linux, .
Hnh 2. 2 ESP8266
TTP223 l mt IC pht hin chm phm cm ng, vic pht hin chm cm bin ca IC c
thit k thay th vic nhn nt bm trc tip thng thng, vi kch thc cm bin a dng.
tiu th in nng thp v in p hot ng rng l tip xc tnh nng chnh cho cc ng dng
DC AC.
- G l cc cng
- S l cc ngun
- D l cc mng
Trong G l cc iu khin c cch ly hon ton vi cu trc bn dn cn li bi lp bn dn
cn li bi lp in mi cc mng nhng c cch in ln. Hai cc cn li l cc gc (S) v
cc mng (D), cc mng l cc n tip cc ht mang in.
Mosfet c in tr gia 2 cc G v S v gia G v D l v cng ln cn in tr gia D v S ph
thuc vo in p cc G v cc S khi in p Ugs tng th tr khng gia cc D v cc S gim
cn khi in p Ugs gim th tr khng gia cc D v cc S tang.
DS18B20 l link kin in t thuc loi bn cm bin nhit k thut s giao tip one wire(
giao tip mt ng truyn ), bn trong ic tch hp sn cm bin nhit , b chuyn i, khi x
l , giao tip one wire, b nh ROM, EEPROM, bo thc nhiu dt ngng
Cc thng s ca linh kin DS18B20:
- Cc thng s ca gii o t -55 n + 125 C
- Ngun cung cp 3 n 5.5 V
- phn gii 9bit, 12 bit
- Cm bin nhit DS18B20 c m nhn din ln n 64-bit, v vy bn c th kim tra nhit
vi nhiu IC DS18B20 m ch dng 1 dy dn duy nht giao tip vi cc IC ny.
- S v chc nng chn ca linh kin in t DS18B20.
Module cm bin hng ngoi PIR lun c c sensor (mt cm bin) vi 2 n v (element). Chn
trc mt sensor l mt lng knh (thng lm bng plastic), ch to theo kiu lng knh fresnel.
Lng knh fresnel ny c tc dng chn li v phn thnh nhiu vng (zone) cho php tia hng
ngoi i vo mt sensor. Chng ta c th hiu n gin rng, nu khng c lng knh fresnel, ton
b bc x ca mi trng s ch coi nh c 1 Zone di ht vo mt sensor, nh vy th n s
khng c tc dng phn bit chuyn ng, v s cc k nhy vi bt k s thay i nhit no
ca mi trng.
2 n v ca mt sensor c tc dng phn thnh 2 in cc. Mt ci l in cc dng (+) v ci
kia l m (-). Khi 2 n v ny c tun t kch hot (ci ny xong ri mi n ci kia) th s
sinh ra mt xung in, xung in ny kch hot sensor (alarm-bo ng). Chnh v nguyn l ny,
khi c ngi i theo hng vung gc vi khu vc kim sot ca sensor (hng mi tn), thn
nhit t ngi ny (bc x hng ngoi) s ln lt kch hot tng n v cm bin v lm sensor
bo ng.
Vy th cng chnh do nguyn l ny, nu ngi chuyn ng theo hng song song, pht ra
cng lc 2 lung bc x qua lng knh fresnel p vo ng thi 2 n v cm bin, xung in
khng to ra ,v lc ny sensor khng h bo ng. y l iu ht sc c bn, nhng nhiu k
thut vin an ninh khi lp t cm bin PIR thng khng h lu n. H ch n gin t
sensor hng mt ra khu vc cn kim sot m khng quan tm n hng t nhp ca k
trm. Nguyn tc l phi t mt sensor hng vung gc vi hng kh d nht m k trm c
th di chuyn. Nh vy mi tng xc sut bo ng chnh xc. t song song vi hng k trm,
hn ta s i thng n cm bin m c th khng h kch hot bo ng.
- Khng lp t cm bin PIR trong nh ra ngoi tri. iu ny thng hay gp. Cm bin PIR
loi trong nh khng c tnh nng chu ma nng, ngoi tri d khng trc tip gp ma nng,
n cng d b hng dn cht liu v, lng knh fresnel, khin chc nng hot ng km dn i.
- Khng hng trc tip mt sensor v ni nhiu nng mt tri. Khuyn co ny rt d hiu. Tia
mt tri c nhiu bc x hng ngoi, khin sensor b nhiu.
- Khng nn t sensor gn dy in ngun. Cm bin PIR l mt thit b in t, hot ng
in p thp, nn hn ch t gn in ngun cao p.
2.9.2 Mc tiu t c
- Nhn c tn hiu t remote RF hay hng ngoi, t thc hin cc lnh c ci t trc
- C kh nng hc c cc lnh t remoteTV, my lnh, qut
- Nhn c yu cu iu khin thit b t b qun l trung tm nh bt tt TV, my lnh v
pht cc lnh tng ng hc t remote ca TV hay my lnh vi tm pht sng rng 360 .
Giao din ngi dng Giao din ngi dng Giao din ngi dng
1 2 2
Publish/subcribe
Openhab - server
Raspberry pi Moderm wifi
MQTT Broker
Publish/subcribe (Raspberrypi)
Hinh 3. 2 M hnh giao tip client v broker trong giao thc mqtt
LWT( last will and testamen): Gi s c 1 cm bin, n gi nhng d liu quan trng v rt
khng thng xuyn. N c ng k trc vi Broker mt bn tin topic /node/gone-offline. V
Client A ng k theo di topic /node/gone-offline, Broker s gi SMS ti mi khi nhn c tin
nhn no knh m Client theo di.
Trong qu trnh hot ng, cm bin lun gi kt ni vi Broker bi vic lun gi cc bn tin cp
nht. Nhng nu v l do g , cm bin ny chuyn sang ngoi tuyn, kt ni ti Broker
timeout.
Lc ny, do cm bin ng k LWT, do vy Broker s ng kt ni ca Cm bin, ng thi
s publish mt bn tin cn thit vo knh /node/gone-offline, d nhin l Client cng s nhn
c tin nhn bo Cm ngoi tuyn.
Tn knh MQTT thng l cc chui di lm chng khng tha ng vi tiu chun 802.15.4
C hai thit st c gii quyt bng giao thc MQTT-SN, trong xc nh mt nh x UDP
ca MQTT v thm kh nng lp ch mc (indexing) tn cc knh cho broker.
Bc 6: Sau khi chp xong bn c th tt phn mm, tho th cn thn khi my tnh khng tho
t ngt nh trnh li th khi ci v sau.
Bc 2: Kt ni Usb ttl vo my tnh, vo trnh qun l chn Manage -> chn Device Manager -
> mc Ports (COM & LPT) ta s thy li cha nhn thit b c du chm thang, click chut
phi vo du chm thang chn Update Driver Software.
Bc 3: Chn Browser my computer for driver software -> chn Let me pick from a list of
drivers on my computer -> chn phin bn 3.3.2.105 [10/27/2008] -> v kt thc bng Next. Lc
ny driver s nhn v khng cn du chm thang bn hy ghi nh tn COM.
Bc 2: M phn mm Putty -> chn kt ni Serial (mc nh l SSH) -> nhp tn COM bn
ghi nh trong mc ci driver lc ny (v d ca mnh l COM6, nu bn qun hy vo li Divice
Manager xem Ports) -> nhp tc truyn 115200 (mc nh l 9600) -> nhn Open m.
Bc 2: Cc bn dng phm xung di chuyn con tr xung cui sau bn nhn phm Insert
(hoc t hp fn + insert) nhp lnh sau:
- auto wlan0
- iface wlan0 inet dhcp
- wpa_conf /etc/wpa_supplicant/wpa_supplicant.conf
Bc 5: Nhp lnh ifconfig kim tra li IP hin ti, sau khi c IP m li Putty v nhp vo
khung IP address ca loi kt ni SSH, Port nhp vo 22 (mc nh) v Open v tin hnh ng
nhp bnh thng .
Kim tra mosquitto: Mosquitto s t ng chy sau khi c ci t. kim tra, m 1 terminal
khc (terminal 2) kt ni vo Pi.
Trong terminal 1 chy lnh lng nghe data trn channel tn l hello/world (-d l yu cu in ra
thng tin debug, -t l tn channel hay cn gi l topic):
mosquitto_sub -d -t hello/world
Cho terminal 2 gi data bt k vo channel cng tn hello/world nh ng k trong terminal 1(-
m l ni dung data cn gi):
3.4.3 Gii thiu v phn mm qun l thit b vo giao din ngi dng
openhab
OpenHAB l phn mm min ph ngun m c chc nng l b iu khin trung tm vi kh
nng ni chuyn v iu khin rt nhiu cc loi thit b khc nhau trong h thng Smart Home,
k c cc thit b thng mi ang bn trong lnh vc ny.
cd /opt/openhab
sudo cp addons_repo/org.openhab.binding.mqtt-1.8.2.jar
sudo cp /opt/openhab/configurations/openhab_default.cfg
/opt/openhab/configurations/openhab.cfg
sudo nano /opt/openhab/configurations/openhab.cfg
Trong ca s editor, scroll xung phn MQTT Transport section (trong mc Transport
Configurations), b qua phn MQTT Persistence. Tm n dng <broker>.url v <broker>.retain,
b du # u mi dng v sa thnh:
mqtt:mymosquitto.url=tcp://localhost:1883
mqtt:mymosquitto.retain=true
Thot v lu li (CTRL + X, Y, Enter).
3.4.6 Cu hnh cc thit b (item) v giao din (site map) cho openhab
Sau khi OpenHAB c ci t, ta cn cu hnh 2 file:
- Items file, cha danh sch cc thit b ta cn OpenHAB theo di v iu khin.
- Sitemap file, cha layout sp xp cc thit b hin th trn giao din website ca OpenHAB.
Upload ton b cc th mc con v file openhab.cfg vo trong th mc
/opt/openhab/configurations/ trn Orange pi. S dng phn mm WinSCP d dng chuyn file
qua li gia PC Windows v Orange pi one .
Sau khi ng nhp: host name (IP ca Orang pi) v user name, password ca Raspberry i
->Login
Trong file demo.item, file demo.sitemap file cu hnh giao din web cho openhab v cu hnh
iu khin hot ng giao tip ca MQTT broker vi MQTT client
- Cho 3 phng trong nh nm trong nhm All:
Group All
Group Living "Living Room" <sofa> (All)
Group Kitchen "Kitchen" <kitchen> (All)
Group Bedroom1 "Main Bedroom" <bedroom> (All)
Group Bedroom2 "Second Bedroom" <bedroom> (All)
/*Living room */
Number Temperature1 "Temperature [%.1f C]" <temperature> (Living)
{mqtt="<[mymosquitto:/Living/Temperature:state:default]"}
Switch Light1 "Light" (Living) {
mqtt="<[mymosquitto:/Living/Light/Status:state:default],>[mymosquitto:/Living/Light/Comman
d:command:ON:1],>[mymosquitto:/Living/Light/Command:command:OFF:0]" }
/*Kitchen */
Number Temperature2 "Temperature [%.1f C]" <temperature> (Kitchen)
{mqtt="<[mymosquitto:/Kitchen/Temperature:state:default]"}
Switch Light2 "Light" (Kitchen) {
mqtt="<[mymosquitto:/Kitchen/Light/Status:state:default],>[mymosquitto:/Kitchen/Light/Comm
and:command:ON:1],>[mymosquitto:/Living/Light/Command:command:OFF:0]" }
/*Main Bedroom */
Number Temperature3 "Temperature [%.1f C]" <temperature> (MainBedroom)
{mqtt="<[mymosquitto:/MainBedroom/Temperature:state:default]"}
/*Second Bedroom */
Number Temperature4 "Temperature [%.1f C]" <temperature> (SecondBedroom)
{mqtt="<[mymosquitto:/SecondBedroom/Temperature:state:default]"}
Switch Light4 "Light" (SecondBedroom) {
mqtt="<[mymosquitto:/SecondBedroom/Light/Status:state:default],>[mymosquitto:/SecondBedr
oom/Light/Command:command:ON:1],>[mymosquitto:/Living/Light/Command:command:OFF:
0]" }
Mi phng u c 1 cng tc n v cm bin nhit . ngha cc tham s ca cm bin nhit
:
Text item=Temperature1
Switch item=Light1
}
Frame label="Kitchen" {
Text item=Temperature2
Switch item=Light2
}
Hnh 4. 1 Mch in iu khin thit b bng wifi trong m hnh smart home, mt top
Hnh 4. 2 Mch in iu khin thit b bng wifi trong m hnh smart home, mt bottom
Mch thit k s dng ngun 5v DC nui cc link kin v IC v ngun 12-60V DC cung cp
iu khin thit b qua cng header 3
Bn cng header 2 iu khin 4 thit b mt chiu
fdg
void touch1_handle()
{
if ((counter_5ms - device.light1.cnt_snap) < DOUBLE_CLICK_TIME) { //400ms
device.btn_state = BUTTON1_DOUBLE_CLICK;
} else if (device.btn_state == BUTTON_IDLE) {
device.btn_state = BUTTON1_ONE_CLICK;
g_cnt_snap = counter_5ms;
}
device.light1.cnt_snap = counter_5ms;
return;
}
void touch2_handle()
{
if ((counter_5ms - device.light2.cnt_snap) < DOUBLE_CLICK_TIME) { //400ms
device.btn_state = BUTTON2_DOUBLE_CLICK;
} else if (device.btn_state == BUTTON_IDLE) {
device.btn_state = BUTTON2_ONE_CLICK;
g_cnt_snap = counter_5ms;
}
if ((counter_5ms - device.light1.cnt_snap) < SLIDER_TIME) { //500ms
device.slider = RIGHT_SLIDE;
}
if ((counter_5ms - device.light3.cnt_snap) < SLIDER_TIME) { //500ms
device.slider = LEFT_SLIDE;
}
device.light2.cnt_snap = counter_5ms;
return;
}
void touch3_handle()
{
if ((counter_5ms - device.light3.cnt_snap) < DOUBLE_CLICK_TIME) { //400ms
device.btn_state = BUTTON3_DOUBLE_CLICK;
} else if (device.btn_state == BUTTON_IDLE) {
device.btn_state = BUTTON3_ONE_CLICK;
g_cnt_snap = counter_5ms;
}
device.light3.cnt_snap = counter_5ms;
return;
}
Hnh 4. 4 Code s dng ngt ngoi ESP8266 pht hin trm phm
- Sau khi pht hin trm phm sau mi 5ms thc hin vo hm kim tra xem phm trm l one
click hay double click da vo thc hin thao tc vi n tng ng:
void buttons_handler(void) {
static unsigned int click_timeout = 0, reset_timeout = 0;
static unsigned int prev_btn_state = BUTTON_IDLE;
char pin_data = 0;
return;
}
/*if ((state & STATE_DEVICEONLINE) && (state & STATE_SERVERONLINE)) {
if ((device.btn_state != BUTTON_IDLE) || (device.slider != BUTTON_IDLE)) {
is_send_click_buttons = 1;
}
return;
}*/
if (device.btn_state != prev_btn_state) {
click_timeout = 0;
}
switch (device.btn_state) {
case BUTTON1_ONE_CLICK:
// Make sure it is first click of double click.
printf("BUTTON1_ONE_CLICK\r\n");
ticker.detach();
if (device.light1.is_on) {
device.light1.is_on = false;
} else {
device.light1.is_on = true;
}
send_click_buttons(device.btn_state, device.slider, device.light1.target_strengh);
device.btn_state = BUTTON_IDLE;
break;
case BUTTON1_DOUBLE_CLICK:
if (device.btn_state != prev_btn_state) {
printf("BUTTON1_DOUBLE_CLICK\r\n");
ticker.attach(0.6, blink_led1);
}
if (device.slider == RIGHT_SLIDE) {
device.light1.target_strengh += SLIDER_STEP;
device.light1.target_strengh = (device.light1.target_strengh > MAX_STRENGH)
? MAX_STRENGH : device.light1.target_strengh;
break;
case BUTTON2_ONE_CLICK:
printf("BUTTON2_ONE_CLICK\r\n");
ticker.detach();
if (device.light2.is_on) {
device.light2.is_on = false;
} else {
device.light2.is_on = true;
}
send_click_buttons(device.btn_state, device.slider, device.light2.target_strengh);
device.btn_state = BUTTON_IDLE;
break;
case BUTTON2_DOUBLE_CLICK:
if (device.btn_state != prev_btn_state) {
printf("BUTTON2_DOUBLE_CLICK\r\n");
ticker.attach(0.6, blink_led2);
}
if (device.slider == RIGHT_SLIDE) {
device.light2.target_strengh += SLIDER_STEP;
device.light2.target_strengh = (device.light2.target_strengh > MAX_STRENGH)
? MAX_STRENGH : device.light2.target_strengh;
send_click_buttons(device.btn_state, device.slider, device.light2.target_strengh);
device.slider = BUTTON_IDLE;
click_timeout = 0;
} else if (device.slider == LEFT_SLIDE) {
device.light2.target_strengh -= SLIDER_STEP;
device.light2.target_strengh = (device.light2.target_strengh > MAX_STRENGH)
? MIN_STRENGH : device.light2.target_strengh;
send_click_buttons(device.btn_state, device.slider, device.light2.target_strengh);
device.slider = BUTTON_IDLE;
click_timeout = 0;
}
click_timeout += 1;
break;
case BUTTON3_ONE_CLICK:
printf("BUTTON3_ONE_CLICK\r\n");
ticker.detach();
if (device.light3.is_on) {
device.light3.is_on = false;
} else {
device.light3.is_on = true;
}
send_click_buttons(device.btn_state, device.slider, device.light3.target_strengh);
device.btn_state = BUTTON_IDLE;
break;
case BUTTON3_DOUBLE_CLICK:
if (device.btn_state != prev_btn_state) {
printf("BUTTON3_DOUBLE_CLICK\r\n");
ticker.attach(0.6, blink_led3);
}
if (device.slider == RIGHT_SLIDE) {
device.light3.target_strengh += SLIDER_STEP;
device.light3.target_strengh = (device.light3.target_strengh > MAX_STRENGH)
? MAX_STRENGH : device.light3.target_strengh;
send_click_buttons(device.btn_state, device.slider, device.light3.target_strengh);
device.slider = BUTTON_IDLE;
click_timeout = 0;
} else if (device.slider == LEFT_SLIDE) {
device.light3.target_strengh -= SLIDER_STEP;
device.light3.target_strengh = (device.light3.target_strengh > MAX_STRENGH)
? MIN_STRENGH : device.light3.target_strengh;
send_click_buttons(device.btn_state, device.slider, device.light3.target_strengh);
device.slider = BUTTON_IDLE;
click_timeout = 0;
}
click_timeout += 1;
break;
default:
break;
}
prev_btn_state = device.btn_state;
if (click_timeout > CLICK_TIMEOUT) {//CLICK_TIMEOUT =1000
ticker.detach();
device.btn_state = BUTTON_IDLE ;
}
Sau khi thc hin hm x l sau khi trm phm, ta thc hin gi trng thi n v sng n v
MQTT broker:
- Nu phm trm c xc nh one click v trng thi n bt ta s tin hnh gi gi tr phn
trm sng l 100% v cho MQTT broker qua knh (topic: ESPx/BTz trong x l ID ca
ESP8266 , cn z l s th t phm trm
- Nu Phm trm c xc nh l double click, kim tra xem n l trt sang tri hy trt sang
phi ( trt sang tri nu thi gian:cnt_5ms - device.light3.cnt_snap < 500 ms, trt sang phi
nu cnt_5ms - device.light3.cnt_snap < 500ms ). Nu trt sang trai tin hnh gim sng ca
n i 1 mc l 128 n v (mc sng ti a ca n l 1023), nu l trt phi th tin hnh tng
mc sng n tng ng ln 128 n v:
Ri tin hnh gi phn trm sng ny qua knh (topic ) tng ng n MQTT broker y
giao tip MQTT client v MQTT broker c thit lp ch QoS :0 nn mi 1 phin giao dch
MQTT client v MQTT broker ch gi duy nht 1 ln
}
else
{
client.publish(topic, "0");
}
printf("topic= %s\n", topic);
printf("\n");
/*printf("-------:%d (s)\n",millis()/1000); */
}
if (button_state & BUTTON1_DOUBLE_CLICK) {
/*sprintf(topic, "/ESP%d/BTD1", device.id);
client.publish(topic, "100");
printf("topic= %s\n", topic);
printf("\n");*/
if (slider & LEFT_SLIDE) {
sprintf(topic, "/ESP%d/BT1", device.id);
client.publish(topic, dimmer);
printf("LIGHT1.Brighness: %d\n", value);
printf("\n");
}
if (slider & RIGHT_SLIDE) {
sprintf(topic, "/ESP%d/BT1", device.id);
client.publish(topic, dimmer);
}
else
{
client.publish(topic, "0");
/*printf("-------:%d (s)\n",millis()/1000); */
printf("topic= %s\n", topic);
}
if (button_state & BUTTON2_DOUBLE_CLICK) {
/* sprintf(topic, "/ESP%d/BTD2", device.id);
client.publish(topic, "100");
printf("topic= %s\n", topic);
printf("\n");
*/
if (slider & LEFT_SLIDE) {
sprintf(topic, "/ESP%d/BT2", device.id);
client.publish(topic, dimmer);
printf("LIGHT2.Brighness: %d\n", value);
printf("\n");
}
if (slider & RIGHT_SLIDE) {
sprintf(topic, "/ESP%d/BT2", device.id);
client.publish(topic, dimmer);
printf("LIGHT2.brighness: %d\n", value);
printf("\n");
}
}
if ((button_state & BUTTON3_ONE_CLICK) && ((counter_5ms - device.light3.cnt_snap) >
DOUBLE_CLICK_TIME)) {
sprintf(topic, "/ESP%d/BT3", device.id);
}
else
{
client.publish(topic, "0");
}
/* printf("-------:%d (s)\n",millis()/1000); */
printf("topic= %s\n", topic);
printf("\n");
}
if (button_state & BUTTON3_DOUBLE_CLICK) {
/* sprintf(topic, "/ESP%d/BTD3", device.id);
client.publish(topic, "100");
printf("topic= %s\n", topic);
printf("\n");
*/
if (slider & LEFT_SLIDE) {
sprintf(topic, "/ESP%d/BT3", device.id);
client.publish(topic, dimmer);
printf("LIGHT3.Brighness: %d\n", value);
printf("\n");
}
if (slider & RIGHT_SLIDE) {
sprintf(topic, "/ESP%d/BT3", device.id);
client.publish(topic, dimmer);
printf("LIGHT3.brighness: %d\n", value);
printf("\n");
}
}
/*if (slider & LEFT_SLIDE) {
sprintf(topic, "/ESP%d/LFTSL", device.id);
client.publish(topic,"100");
printf("topic= %s\n", topic);
printf("\n");
}
if (slider & RIGHT_SLIDE) {
sprintf(topic, "/ESP%d/RHTSL", device.id);
client.publish(topic,"100");
printf("topic= %s\n", topic);
printf("\n");
} */
}
Hnh 4. 6 Chng trnh m t cho qu trnh trn
SP8266 ng thi lun thc hin lin tip ng k cc knh nhn d liu truyn v t MQTT
broker, qua phn tch gii m lnh xem MQTT broker gi lnh thc thi iu khin thit b g :
switch (length) {
case 3:
msg_data = (100 * pl[0]) + (10 * pl[1]) + pl[2]; /* length of payload= 3 digit,ingore to null
character of payload */
break;
case 2:
msg_data = (10 * pl[0]) + pl[1]; /* length of payload= 3 digit,ingore to null character of
payload */
break;
case 1:
msg_data = pl[0];/* length of payload= 3 digit,ingore to null character of payload */
break;
}
teston_off_comandqtt(payload, &msg_data);
device.light1.is_on = (msg_data != 0) ? true : false;
if (device.light1.is_on)
{
device.light1.target_strengh = msg_data;
}
}
if (st_topic.equals("LIGHT2")) {
teston_off_comandqtt(payload, &msg_data);
teston_off_comandqtt(payload, &msg_data);
device.light3.is_on = (msg_data != 0) ? true : false;
if (device.light3.is_on)
{
device.light3.target_strengh = msg_data;
}
}
if (st_topic.equals("LIGHT4")) {
teston_off_comandqtt(payload, &msg_data);
device.light4.is_on = (msg_data != 0) ? true : false;
if (device.light4.is_on)
{
device.light4.target_strengh = msg_data;
}
}
}
Hnh 4. 8 Chng trnh m t cho bc lng nghe v phn tch d liu t MQTT broker
Trong bi ny, chng ta cng nhau xy dng 1 cm bin nhit nh gn dng Mini-Esp hoc
Wemos D1 mini, cm bin nhit Ds18B20 v giao thc MQTT truyn data v server
/*
Sketch which publishes temperature data from a DS1820 sensor to a MQTT topic.
This sketch goes in deep sleep mode once the temperature has been sent to the MQTT
topic and wakes up periodically (configure SLEEP_DELAY_IN_SECONDS accordingly).
Hookup guide:
- connect D0 pin to RST pin in order to enable the ESP8266 to wake up periodically
- DS18B20:
+ connect VCC (3.3V) to the appropriate DS18B20 pin (VDD)
+ connect GND to the appopriate DS18B20 pin (GND)
+ connect D4 to the DS18B20 data pin (DQ)
+ connect a 4.7K resistor between DATA and VCC.
*/
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define SLEEP_DELAY_IN_SECONDS 30
#define ONE_WIRE_BUS 2 // DS18B20 pin
const char* ssid = ".."; /* ID wifi esp8266 kt ni */
const char* password = ".";/* mt khu wifi */
Serial.println(ssid);
WiFi.begin(ssid, password);
float getTemperature() {
Serial.println("Requesting DS18B20 temperature...");
float temp;
do {
DS18B20.requestTemperatures();
temp = DS18B20.getTempCByIndex(0);
delay(100);
} while (temp == 85.0 || temp == (-127.0));
return temp;
void loop() {
if (!client.connected()) {
reconnect();
}
client.loop();
float temperature = getTemperature();
// convert temperature to a string with two digits before the comma and 2 digits for precision
dtostrf(temperature, 2, 2, temperatureString);
// send temperature to the serial console
Serial.print("Sending temperature: "); Serial.println(temperatureString);
// send temperature to the MQTT topic
client.publish(mqtt_topic, temperatureString);
delay(500);
Serial.print("Closing MQTT connection...");
client.disconnect();
Serial.print("Closing WiFi connection...");
WiFi.disconnect();
Serial.print("Entering deep sleep mode for "); Serial.print(SLEEP_DELAY_IN_SECONDS);
Serial.println(" seconds...");
ESP.deepSleep(SLEEP_DELAY_IN_SECONDS * 1000000, WAKE_RF_DEFAULT);
delay(500); // wait for deep sleep to happen
}
Mt thu hng ngoi s pht ra nh sng trong vng c bc sng hng ngoi(bc sng ln hn
bc sng nh sng ) mt thu bnh thng c ni tr rt ln khi mt thu b tia hng ngoi
chiu vo ni tr s gim xung li dng nguyn l ny ch ra cm bin PIR m s ngi trong
phng
-Khai bo chn cm bin v n led.
Khai bo trong hm setup.
INPUT_PULLUP: Mc nh khi khng c kt ni vi mt mch ngoi hoc c kt ni vi
cc dng th pin s nhn gi tr l HIGH, khi pin c thng ti cc m xung t th nhn gi
tr l LOW tng ng vi 0 - 1
int infrared = 4;
int led = 2;
void setup()
{
pinMode(led,OUTPUT);
pinMode(infrared, INPUT_PULLUP);
}
void loop()
{
if(digitalRead(infrared) == 0)
{
digitalWrite(led,HIGH);
}
else
{
digitalWrite(led,LOW);
}
}
KT LUN
Sau gn 3 thng thit k v thi cng mch iu khin thit b bng sng wifi em thc hin
thnh cng ti. Kt qu t c l to ra c mch hon chnh chy n nh, iu khin cc
thit b trong m hnh smart home . Qua c kt thu thp c nhiu kinh nghim v lnh va
iot, v kinh nghip v thit k gia cng mch in t .Cng c thm kinh nghim kin thc
hc
Hng pht trin ca ti: iu khin c nhiu thit b hn m rng tnh nng giao in trn
trnh duyt v trn phn mm androi
Ting Vit:
Ting Anh:
1. http://www.easytech.vn/index.php/2016/03/31/cai-dat-openhab-tren-raspberry-pi/
2. http://bluetech.com.vn/..
3. http://hotrocntt.com/raspberry-ngoi-nha-thong-minh.html
4. http://www.breadboard.me/index.php/2016/04/08/cam-bien-nhiet-do-wifi-dung
5. http://www.easytech.vn/index.php/2016/06/21/o-cam-dien-thong-minh-smart-plug/
6. http://www.easytech.vn/index.php/2016/06/15/thiet-bi-da-cam-bien-phong/
7. http://www.easytech.vn/index.php/2016/06/18/remote-da-dung-cho-smart-home/