You are on page 1of 48

B GIO DC & O TO

TRNG I HC S PHM K THUT TP. H CH MINH


KHOA IN IN T
---------------------------------

N MN HC 1
NGNH K THUT IN-IN T
TI:

O NHIT DNG CM BIN DS18B20 S DNG BOARD


ARDUINO, HIN TH TRN LCD, TRUYN PHT KHNG
DY,GIAO TIP VI MY TNH QUA CNG COM

GVHD

NGUYN THANH BNH

SVTH

NGUYN VN QUC

MSSV

11141170

Tp. H Ch Minh - 5/2014

i Hc S Phm K Thut

Khoa in-in T

MC LC
MC LC .................................................................................................................. 1
DANH MC HNH V ............................................................................................. 2
DANH MC BNG S LIU .................................................................................. 3
LI NI U............................................................................................................ 4
PHN 1: TNG QUAN ............................................................................................ 5
I. Gii thiu chung v Arduino .............................................................................. 5
II. Gii thiu v board Arduino Mega 2560 .......................................................... 6
III. Gii thiu v cm bin nhit DS18B20 ....................................................... 8
IV. Gii thiu v LCD 16x2 ................................................................................. 13
V. Gii thiu v module truyn pht nRF24L01 ............................................... 144
1. Thng s k thut ............................................................................................ 14
2. S chn....................................................................................................... 15
3. Phn tch ......................................................................................................... 15
VI. Gii thiu v ngn ng lp trnh cho Arduino. ............................................. 16
VII.Gii thiu phn mm Visual Studio 2010 ..................................................... 17
1. Tng quan ....................................................................................................... 17
2. Gii thiu Windown Form Application C# ...................................................... 18
PHN 2: LP TRNH V LP T MCH O NHIT V TRUYN
PHT KHNG DY,VIT GIAO DIN NHN NHIT DNG C# .......... 19
I.MCH THU ..................................................................................................... 199
1. S cc khi ................................................................................................. 19
2. Chc nng cc khi ......................................................................................... 19
3. S kt ni phn cng .................................................................................. 20
4.Lp trnh cho Arduino mch pht ..................................................................... 21
5.Np code v chy chng trnh ........................................................................ 32
II. MCH PHT .................................................................................................. 33
1. S khi ....................................................................................................... 33
2. Chc nng cc khi ......................................................................................... 33
3. S kt ni phn cng .................................................................................. 34
4. Lp trnh cho Arduino mch thu ...................................................................... 35
5. Np code v chy chng trnh ....................................................................... 39
6. Kim tra s ng b gia bn pht v bn thu ................................................. 39
N MN HC 1

i Hc S Phm K Thut

Khoa in-in T

III.GIAO DIN NHN V HIN TH NHIT . ........................................... 40


1.Thit k giao din hin th nhit ................................................................... 40
2.Vit chng trnh cho giao din ....................................................................... 40
PHN 3: KT LUN V HNG PHT TRIN ............................................... 45
I. KT LUN ....................................................................................................... 45
II. HNG PHT TRIN .................................................................................. 46
TI LIU THAM KHO ....................................................................................... 47

DANH MC HNH V
Hnh 1.1: Nhng thnh vin khi xng Arduino. ....................................................... 5
Hnh 1.2: Board Arduino Mega 2560. .......................................................................... 6
Hnh 1.3: Cm bin DS18B20...................................................................................... 8
Hnh 1.4: S chn cm bin DS18B20. ................................................................... 8
Hnh 1.5: S khi DS18B20.................................................................................. 13
Hnh 1.6: M 64bit m ROM ...................................................................................... 9
Hnh 1.7: Cu trc vng nh DS18B20 ........................................................................ 9
Hnh 1.8: Lu lnh ROM .................................................................................... 160
Hnh 1.9: Lu lnh chc nng DS18B20. .............................................................. 11
Hnh 1.10: Khe thi gian khi to. ............................................................................. 12
Hnh 1.11: Khe thi gian c,vit. ............................................................................. 12
Hnh 1.12: Hnh nh s chn LCD 16x2. .............................................................. 13
Hnh 1.13: Module nRF24L01. .................................................................................. 14
Hnh 1.14: S chn module nRF24L01.. ............................................................... 15
Hnh 1.15: Giao din phn mm Arduino IDE. .......................................................... 16
Hnh 1.16: Giao din phn mm Visual Studio 2010.................................................. 17
Hnh 1.17: Mt giao din ng nhp do ngi dng thit k.. .................................... 18
Hnh 1.18: S kt ni phn cng bn pht. ............................................................ 20
Hnh 1.19: Hnh nh thc t kt qu nhit bn pht. .............................................. 32
Hnh 2.1: S kt ni phn cng bn thu. ............................................................... 34
Hnh 2.2: Hnh nh thc t kt qu nhit nhn c bn thu. ................................ 39
Hnh 2.3: Hnh nh nhit bn pht v bn thu........................................................ 40
Hnh 2.4: Giao din hin th nhit nhn. ................................................................ 40
N MN HC 1

i Hc S Phm K Thut

Khoa in-in T

Hnh 2.5: Nhit nhn c sau khi giao tip vi Arduino. ..................................... 44

DANH MC BNG S LIU


Bng 1. Bng kt ni chn Arduino vi LCD ............................................................ 20
Bng 2. Bng kt ni chn Arduino vi DS18B20 ..................................................... 20
Bng 3. Bng kt ni chn Arduino vi nRF24L01 .................................................... 20
Bng 4. Bng kt ni chn Arduino vi LCD ............................................................. 33
Bng 5. Bng kt ni chn Arduino vi module NRF24L01 ...................................... 34

N MN HC 1

i Hc S Phm K Thut

Khoa in-in T

LI NI U
Ngy nay khoa hc cng ngh ngy cng pht trin, vi iu khin AVR v
vi iu khin PIC ngy cng thng dng v hon thin hn, nhng c th ni s
xut hin ca Arduino vo nm 2005 ti Italia m ra mt hng i mi cho vi
iu khin. S xut hin ca Arduino h tr cho con ngi rt nhiu trong lp
trnh v thit k, nht l i vi nhng ngi bt u tm ti v vi iu khin m
khng c qu nhiu kin thc, hiu bit su sc v vt l v in t. Phn cng
ca thit b c tch hp nhiu chc nng c bn v l m ngun m. Ngn
ng lp trnh trn nn Java li v cng d s dng tng thch vi ngn ng C v
h th vin rt phong ph v c chia s min ph. Chnh v nhng l do nh
vy nn Arduino hin ang dn ph bin v c pht trin ngy cng mnh m
trn ton th gii.
Trn c s kin thc hc trong mn hc : Tin hc i cng, vi x l 1
& 2, in t c bn, k thut s cng vi nhng hiu bit v cc thit b in
t, em quyt nh thc hin ti: O NHIT DNG CM BIN DS18B20
S DNG BOARD ARDUINO, HIN TH TRN LCD, TRUYN PHT KHNG
DY,GIAO TIP VI MY TNH QUA CNG COM vi mc ch tm hiu thm

v Arduino, lm quen vi cc thit b in t,cch lp trnh giao tip vi my tnh


v nng cao hiu bit cho bn thn. Do kin thc cn hn hp, thm vo y
l ln u em thc hin n nn chc chn khng trnh khi nhng thiu st,
hn ch v th em rt mong c c s gp v nhc nh t thy gio c th
hon thin ti ca mnh.
Em xin chn thnh cm n thy gio Nguyn Thanh Bnh gip em
rt nhiu trong qu trnh tm hiu, thit k v hon thnh ti n 1 ny.
TP HCM, ngy 25 thng 05 nm 2014
Sinh vin thc hin
Nguyn Vn Quc

N MN HC 1

i Hc S Phm K Thut

Khoa in-in T

PHN 1
TNG QUAN
I.

Gii thiu chung v Arduino


Arduino thc s gy sng gi trn th trng ngi dng DIY (l nhng

ngi t ch ra sn phm ca mnh) trn ton th gii trong vi nm gn y, gn


ging vi nhng g Apple lm c trn th trng thit b di ng, s lng
ngi dng cc ln v a dng vi trnh tri rng t bc ph thng ln n i
hc lm cho ngay c nhng ngi to ra chng phi ngc nhin v mc ph
bin.

Hnh 1.1: Nhng thnh vin khi xng Arduino.


Arduino l g m c th khin ngay c nhng sinh vin v nh nghin cu
ti cc trng i hc danh ting nh MIT, Stanford, Camegie Mellon phi s
dng; hoc ngay c Google cng mun h tr khi cho ra i b kit Arduino Mega
ADK dng pht trin cc ng dng Android tng tc vi cm bin v cc
thit b khc.
Arduino tht ra l mt bo mch vi x l c dng lp trnh tng tc
vi cc thit b phn cng nh cm bin, ng c, n hoc cc thit b khc. c
im ni bt ca Arduino l mi trng pht trin ng dng cc k d s dng,
vi mt ngn ng lp trnh c th hc mt cch nhanh chng ngay c vi ngi
t am hiu v in t v lp trnh. V iu lm nn hin tng Arduino chnh l
mc gi rt thp v tnh cht ngun m t phn cng ti phn mm. Ch vi
N MN HC 1

i Hc S Phm K Thut

Khoa in-in T

khong $30, ngi dng c th s hu mt board Arduino c 20 ng I/O c


th tng tc v iu khin chng y thit b.
Arduino ra i ti th trn Ivrea thuc nc v c t theo tn mt v
vua vo th k th 9 l King Arduin. Arduino chnh thc c a ra gii thiu
vo nm 2005 nh l mt cng c khim tn dnh cho cc sinh vin ca gio s
Massimo Banzi, l mt trong nhng ngi pht trin Arduino, ti trng
Interaction Design Instistute Ivrea (IDII). Mc d hu nh khng c tip th g
c, tin tc v Arduino vn lan truyn vi tc chng mt nh nhng li truyn
ming tt p ca nhng ngi dng u tin. Hin nay Arduino ni ting ti ni
c ngi tm n th trn Ivrea ch tham quan ni sn sinh ra Arduino.
II.

Gii thiu v board Arduino Mega 2560

Hnh 1.2: Board Arduino Mega 2560.

Arduino Mega 2560 l 1 bo mch thit k vi b x l trung tm l vi


iu khin AVR Atmega2560. Cu to chnh ca Arduino Mega 2560 bao gm
cc phn sau:
-

Cng USB: y l loi cng giao tip ta upload code t PC ln vi iu

khin. ng thi n cng l giao tip serial truyn d liu gia vi iu khin
v my tnh.
-

Jack ngun: chy Arduino th c th ly ngun t cng USB trn,

nhng khng phi lc no cng c th cm vi my tnh c. Lc ta cn mt


ngun t 9V n 12V.
-

C 54 chn vo/ra s nh s th t t 0 n 13, ngoi ra c mt chn

N MN HC 1

i Hc S Phm K Thut

Khoa in-in T

ni t (GND) v mt chn in p tham chiu (AREF).


-

Vi iu khin AVR: y l b x l trung tm ca ton bo mch. Vi mi

mu Arduino khc nhau th con chip l khc nhau. con Arduino Mega2560 ny
th s dng ATMega2560.
-

Cc thng s chi tit ca Ardiuno Mega 2560:

Vi x l:

5V

in p hot ng:

7-12V

in p u vo:

6-20V

Chn vo/ra (I/O) s:

5 4 ( 1 5 chn l u ra PWM)

Chn vo tng t:

16

Dng in trong mi chn I/O:

40mA

Dng in Chn ngun 3.3V:

50mA

B nh trong:

256 KB

SRAM:

8 KB

EEPROM:

4 KB

Xung nhp:

16MHz

Atmega2560

Cc Mega 2560 c 16 u vo tng t, mi ng vo tng t u c


phn gii 10 bit (tc l 1024 gi tr khc nhau).Theo mc nh o t 0 n 5
volts, mc d l n c th thay i phn trn ca phm vi bng cch s dng chn
Aref v analogReference) chc nng.
Cc Atmega 2560 c 256 KB b nh flash lu tr m (trong c 8 KB
c s dng cho b np khi ng), 8 KB SRAM v 4 KB ca EEPROM.

N MN HC 1

i Hc S Phm K Thut
III.

Khoa in-in T

Gii thiu v cm bin nhit DS18B20

1.Tng quan:
DS18B20 l IC cm bin nhit , ch bao gm 3 chn,hnh nh thc t nh
hnh di.

Hnh 1.3: Cm bin DS18B20

Hnh 1.4: S chn cm bin DS18B20.

2.c im DS18B20:
IC o nhit ,giao tip vi VDK qua giao thc 1 dy.
Mi thit b c 1 m code 64 bit ring bit.
Ngun cung cp 3V-5.5V,c th cp ngun thng qua chn d liu.
C th o c khong nhit t -55oC n +125oC.

N MN HC 1

i Hc S Phm K Thut

Khoa in-in T

chnh xc 0.5oC trong khong nhit o t -10oC n 85oC.


phn gii cm bin 9-12 bit.
Thi gian chuyn i ln nht 750ms tng ng vi phn gii 12bit.
S khi bn trong ca cm bin:

Hnh 1.5: S khi DS18B20.


3.Giao tip vi DS18B20:
VDK giao tip vi DS18B20 theo tng chu k.
Mi ln truy xut d liu t DS18B20 phi tri qua 3 bc:
Bc 1:Khi to
Bc 2:Gi m lnh ROM
Bc 3:Gi lnh chc nng cho DS18B20 thc hin
Cu trc vng nh m ROM 64 bit ca DS18B20:

Hnh 1.6: M 64bit m ROM


S vng nh DS18B20:

N MN HC 1

i Hc S Phm K Thut

Khoa in-in T

Hnh 1.7: Cu trc vng nh DS18B20


Lu lnh ROM DS18B20 c trnh by bn di:

Hnh 1.8: Lu lnh ROM


- Lu lnh chc nng DS18B20 c trnh by bn di:

N MN HC 1

10

i Hc S Phm K Thut

Khoa in-in T

Hnh 1.9: Lu lnh chc nng DS18B20


Thi gian khi to:

N MN HC 1

11

i Hc S Phm K Thut

Khoa in-in T

Hnh 1.10: Khe thi gian khi to


Gin khe thi gian c vit:

Hnh 1.11: Khe thi gian c,vit

IV.

Gii thiu v LCD 16x2:


Thng s k thut:

N MN HC 1

12

i Hc S Phm K Thut

Khoa in-in T

Hnh 1.12: Hnh nh s chn LCD 16x2.


Lcd c tt c 16 chn:
- Chn cp ngun: vss (ni ngun 5V), VDD (ni 0V), V0 (iu chnh
tng phn)
- RS: Chn chn thanh ghi (Register select). Ni chn RS vi logic 0
(GND) hoc logic 1 (VCC) chn thanh ghi.
+ Logic 0: Bus DB0-DB7 s ni vi thanh ghi lnh IR ca LCD ( ch
ghi - write) hoc ni vi b m a ch ca LCD ( ch c - read).
+ Logic 1: Bus DB0-DB7 s ni vi thanh ghi d liu DR bn trong LCD.
- RW: Chn chn ch c/ghi (Read/Write). Ni chn R/W vi logic 0
LCD hot ng ch ghi, hoc ni vi logic 1 LCD ch c.
- E: Chn cho php cht xung k t (Enable). Sau khi cc tn hiu c t
ln bus DB0-DB7, cc lnh ch c chp nhn khi c 1 xung cho php ca chn
E.
+ ch ghi: D liu bus s c LCD chuyn vo (chp nhn) thanh
ghi bn trong n khi pht hin mt xung (high-to-low transition) ca tn hiu chn
E.
+ ch c: D liu s c LCD xut ra DB0-DB7 khi pht hin cnh
ln (low-to-high transition) chn E v c LCD gi bus n khi no chn E
xung mc thp.
-D0-D7: Chn d liu
-A, K: Chn iu khin n nn

N MN HC 1

13

i Hc S Phm K Thut

Khoa in-in T

Lcd c th hot ng theo 2 ch : 4 bit v 8 bit. Ch 4 bit i hi phi


kt ni vi 7 chn I/O ca ardiuno. Ch 8 bit i hi phi kt ni vi 11 chn
I/O ca Ardiuo. Trong ti ny em chn LCD hot ng ch 4 bit
V.

Gii thiu v module truyn pht nRF24L01


1. Thng s k thut

Hnh 1.13: Module nRF24L01.


-Radio:
+Hot ng gii tn 2.4Ghz
+ C 126 knh
+Truyn v nhn d liu
+ Truyn tc cao lMbps hoc 2Mbps.
- Cng

sut pht:

+ C th ci t c 4 cng sut ngun pht: 0,-6,-12,-18dBm


- Thu:

+ C b lc nhiu ti u thu
+ Khuch i b nh hng bi nhiu thp (LNA)
-Ngun cp:
+ Hot ng t 1.9-3.6V
+ Cc chn IO chy c c 3.3 ln 5V
- Giao

tip:

+ 4 chn giao tip theo giao thc SPI

N MN HC 1

14

i Hc S Phm K Thut

Khoa in-in T

+ Tc ti a 8Mbps
+ 3-32 bytes trn 1 khung truyn nhn.
2.

S chn:

Hnh 1.14: S chn module nRF24L01.


3. Phn tch
+Module nRF24L01 hot ng tn s sng ngn 2.4G nn Module ny
kh nng truyn d liu tc cao v truyn nhn d liu trong iu kin mi
trng c vt cn.
+Module nRF24L01 c 126 knh truyn. iu ny gip ta c th truyn
nhn d liu trn nhiu knh khc nhau.
+Module kh nng thay i cng sut pht bng chng trnh, iu ny
gip n c th hot ng trong ch tit kim nng lng.
+ Ch : in p cung cp cho l 1.9V n 3.6V. in p thng cung cp
l 3.3V. Nhng cc chn 10 tng thch vi chun 5V. iu ny gip n giao tip
rng di vi cc dng vi iu khin.
VI.

Gii thiu v ngn ng lp trnh cho Arduino.

N MN HC 1

15

i Hc S Phm K Thut

Khoa in-in T

Hnh 1.15: Giao din phn mm Arduino IDE.

Thit k bo mch nh gn, trang b nhiu tnh nng thng dng mang li
nhiu li th cho Arduino, tuy nhin sc mnh thc s ca Arduino nm phn
mm. Mi trng lp trnh n gin d s dng, ngn ng lp trnh Wiring d
hiu v da trn nn tng C/C++ rt quen thuc vi ngi lm k thut. V quan
trng l s lng th vin code c vit sn v chia s bi cng ng ngun m
l cc k ln
Arduino IDE l phn mm dng lp trnh cho Arduino. Mi trng lp
trnh Arduino IDE c th chy trn ba nn tng ph bin nht hin nay l
Windows, Macintosh osx v Linux. Do c tnh cht ngun m nn mi trng lp
trnh ny hon ton min ph v c th m rng thm bi ngi dng c kinh
nghim.
Ngn ng lp trnh c th c m rng thng qua cc th vin C++. V
do ngn ng lp trnh ny da trn nn tng ngn ng c ca AVR nn ngi dng
hon ton c th nhng thm code vit bng AVR vo chng trnh nu
mun.Hin ti, Arduino IDE c th download t trang ch http://arduino.cc/ bao
gm cc phin bn sau:
- Arduino 1.0.5

N MN HC 1

16

i Hc S Phm K Thut

Khoa in-in T

-Arduinol.5.5 BETA (H tr cho 2 board Arduino mi nht l: Arduino


Yun v Arduino Due).
-Arduino IDE cho Intel Galileo.

VII.Gii thiu phn mm Visual Studio 2010:


1.Tng quan:
Visual Studio 2010 Ultimate l cng c xy dng , lp trnh m ngun
qun tr thng tin h thng pht trin phn mm ca doanh nghip, xy
dng cc ng dng cho my bn v cc ng dng web.
Visual Studio 2010 Ultimate c xem l mt trong nhn cng c thit k
tt nht hin nay vi vic pht trin phn mm, trin khai cc gii php
doanh nghip.

Hnh 1.16: Giao din phn mm Visual Studio 2010.


Visual Studio 2010 Ultimate c tng cng thm nhng gii
php gim thiu nguy c trong qu trnh pht trin thit k.
Visual Studio 2010 Ultimate to ra cc gii php v phn mm,
pht trin mt s cng c tuyt vi ca ng dng lp trnh.
N MN HC 1

17

i Hc S Phm K Thut

Khoa in-in T

C th ni Visual Studio 2010 Ultimate l phn mm khng th


thiu dnh cho nhng K thut vin phn mm v mt s cng ty
pht trin phn mm.
Nhng tnh nng chnh ca Visual Studio 2010 Ultimate:
Pht trin m ngun, phn mm.
Thc hin gii php phn mm.
ng dng lp trnh.
2.Gii thiu Windown Form C#:
2.1 Gii thiu:
To ra cc ng dng chy trn my tnh c ci t .NET Framework 2.0.
S dng khng gian System.Windows.Forms.
Thit k giao din trc quan.
V d ta thit k giao din nh hnh di:

Hnh 1.17: Mt giao din ng nhp do ngi dng thit k.


2.2. ng dng ca Windowns Forms:
Cc chng trnh qun l ti chnh dn s,sn xut,qun l doanh
nghip,..

N MN HC 1

18

i Hc S Phm K Thut

Khoa in-in T

PHN 2
LP TRNH V LP T MCH O NHIT V
TRUYN PHT KHNG DY,VIT GIAO DIN NHN
NHIT DNG C#
I.

Mch pht:

1. S cc khi:

CM BIN
DS18B20

ARDUINO MEGA
2560
(X L TRUNG
TM)

Nrf24l01
(PHT)

LCD
(HIN TH)
2. Chc nng cc khi:
Cm bin: c chc nng o nhit t mi trng v gi gi tr o
c cho Ardiuno khi c tn hiu yu cu.
Khi x l trung tm: c chc nng iu khin cm bin DS18B20 o
nhit , ng thi hin th d liu trn LCD v iu khin pht d liu
thng qua module NRF24L01.
Khi hin th: c chc nng hin th gi tri nhit o c.
Khi pht: c chc nng pht d liu( nhit o c) t Ardiuno ny
sang b thu ca Arduino khc.

N MN HC 1

19

i Hc S Phm K Thut

Khoa in-in T

3. S kt ni phn cng:
a. Bng 1. Bng kt ni chn Arduino vi LCD:
Arduino pin

22

23

24

25

26

27

LCD pin

RS

D4

D5

D6

D7

b. Bng 2. Bng kt ni chn Arduino vi DS18B20:


2

Arduino pin

(ng vo s)

DS18B20

Vout

5V

GND

Vs

GND

c. Bng 3. Bng kt ni chn Arduino vi nRF24L01:


Arduino pin
NRF24L01
PIN

GND

3.3V

52

51

50

53

GND

VCC

CE

CSN

SCK

MOSI

MISO

IRQ

d. S kt ni chung cho cc khi:

Hnh 1.18: S kt ni phn cng bn pht.

N MN HC 1

20

i Hc S Phm K Thut

Khoa in-in T

4. Lp trnh cho Arduino mch pht:


4.1. Gii thiu th vin s dng trong chng trnh o v pht nhit
:
+ Th vin: module nRF24L01
#include <nRF24L01p.h>
+Th vin: truyn d liu
#include <SPI.h>
+ Th vin: LCD
#include <LiquidCrystal.h>
+Th vin :giao tip vi cm bin one wire
#include <OneWire.h>
4.2.

CODE lp trnh:

//khai bao thu vien LCD


#include <LiquidCrystal.h>
LiquidCrystal lcd(22, 23, 24, 25, 26, 27);
#include <SPI.h>
#include <nRF24L01p.h>
nRF24L01p transmitter(48,49);
#include <OneWire.h>
OneWire ds(2);
// Scratchpad locations
#define TEMP_LSB

#define TEMP_MSB

#define HIGH_ALARM_TEMP 2
#define LOW_ALARM_TEMP 3
#define CONFIGURATION 4
#define INTERNAL_BYTE 5
#define COUNT_REMAIN
#define COUNT_PER_C

6
7

#define SCRATCHPAD_CRC 8
N MN HC 1

21

i Hc S Phm K Thut

Khoa in-in T

// Device resolution
#define TEMP_9_BIT 0x1F // 9 bit
#define TEMP_10_BIT 0x3F // 10 bit
#define TEMP_11_BIT 0x5F // 11 bit
#define TEMP_12_BIT 0x7F // 12 bit
// OneWire commands
#define STARTCONVO

0x44 // Tells device to take a temperature

reading and put it on the scratchpad


#define COPYSCRATCH

0x48 // Copy EEPROM

#define READSCRATCH

0xBE // Read EEPROM

#define WRITESCRATCH

0x4E // Write to EEPROM

#define RECALLSCRATCH 0xB8 // Reload from last known


#define READPOWERSUPPLY 0xB4 // Determine if device needs
parasite power
#define ALARMSEARCH

0xEC // Query bus for devices with an

alarm condition
int HighByte, LowByte, TReading, SignBit, Tc_100, Whole, Fract;
int i;
float T;//nhiet do o gia tri do C
byte data[12];//mang de luu du lieu vung nho
byte addr[8],data_scratch[9];//mang de luu gia tri cua vung nho ROM
byte numberDevice,bit_resolution;
//ham xuat ra ki tu do C
byte ki_tu_do[8] = {
B00111,
B00101,
B00111,
B00000,
B00000,
B00000,
N MN HC 1

22

i Hc S Phm K Thut

Khoa in-in T

B00000,
B00000,
};
void countDevice()//function count number device 1-Wire on bus
{
numberDevice=0;
while(ds.search(addr))
{
numberDevice++;
}
Serial.print("Found : ");
Serial.print(numberDevice);
Serial.println(" device.");
}
bool get_Address(unsigned char* deviceAddress, byte index)
/*
ham tim du lieu vung nho ROM cua thiet bi thu index va
luu du lieu vao mang deviceAddress
*/
{
byte index_temp=0;
while(index_temp <= index && ds.search(deviceAddress))
{
if((index_temp == index) && (ds.crc8(deviceAddress, 7) ==
deviceAddress[7]))
return true;
index_temp++;
}
return false;
}
N MN HC 1

23

i Hc S Phm K Thut

Khoa in-in T

void display_ROM(byte n)//functon display memory ROM of all device


{
int i,j;
for(i=0;i<n;i++)
{
get_Address(addr, i);
Serial.print("Found device ");
Serial.print(i, DEC);
Serial.println(" with : ");
Serial.print("ROM memory : ");
for( j = 7; j >=0; j--)
{
Serial.print(addr[j], HEX);
Serial.print(" ");
}
Serial.println();
//xac dinh ho thiet bi
if ( addr[0] == 0x10)
{
Serial.println("Family device is : DS18S20");
}
else if ( addr[0] == 0x28)
{
Serial.println("Family device is : DS18B20");
}
else
{
Serial.print("Device family is not recognized: 0x");
Serial.println(addr[0],HEX);
return;
N MN HC 1

24

i Hc S Phm K Thut

Khoa in-in T

}
//cai dat do phan giai
set_Resolution(addr, 12);
//doc do phan giai
get_Resolution(addr);
Serial.print("Number bit Resoluton : ");
Serial.println(bit_resolution);
}
}
void read_Scratch(unsigned char* deviceAddress, unsigned char*
scratchPad)
{
ds.reset();
ds.select(deviceAddress);
ds.write(READSCRATCH);
// byte 0: temperature LSB
scratchPad[TEMP_LSB] = ds.read();
// byte 1: temperature MSB
scratchPad[TEMP_MSB] = ds.read();
// byte 2: high alarm temp
scratchPad[HIGH_ALARM_TEMP] = ds.read();
// byte 3: low alarm temp
scratchPad[LOW_ALARM_TEMP] = ds.read();
// byte 4:
// DS18S20: store for crc
// DS18B20 & DS1822: configuration register
scratchPad[CONFIGURATION] = ds.read();
N MN HC 1

25

i Hc S Phm K Thut

Khoa in-in T

// byte 5:
// internal use & crc
scratchPad[INTERNAL_BYTE] = ds.read();
// byte 6:
// DS18S20: COUNT_REMAIN
// DS18B20 & DS1822: store for crc
scratchPad[COUNT_REMAIN] = ds.read();
// byte 7:
// DS18S20: COUNT_PER_C
// DS18B20 & DS1822: store for crc
scratchPad[COUNT_PER_C] = ds.read();
// byte 8:
// SCTRACHPAD_CRC
scratchPad[SCRATCHPAD_CRC] = ds.read();
ds.reset();
}
void get_Resolution(unsigned char* deviceAddress)
{
bit_resolution =0;
read_Scratch(deviceAddress, data_scratch);
if(data_scratch[CONFIGURATION]== 0x1F)
{
bit_resolution = 9;
}
else if(data_scratch[CONFIGURATION]== 0x3F)
{
N MN HC 1

26

i Hc S Phm K Thut

Khoa in-in T

bit_resolution = 10;
}
else if(data_scratch[CONFIGURATION]== 0x5F)
{
bit_resolution = 11;
}
else if(data_scratch[CONFIGURATION]== 0x7F)
{
bit_resolution = 12;
}
}
void write_ScratchPad(unsigned char* deviceAddress, unsigned char*
scratchPad)
{
ds.reset();
ds.select(deviceAddress);
ds.write(WRITESCRATCH);
ds.write(scratchPad[HIGH_ALARM_TEMP]); // high alarm temp
ds.write(scratchPad[LOW_ALARM_TEMP]); // low alarm temp
ds.write(scratchPad[CONFIGURATION]); // configuration
ds.reset();
ds.write(COPYSCRATCH);
delay(10); // 10ms delay
ds.reset();
}
void set_Resolution(unsigned char* deviceAddress, byte newResolution)
{
read_Scratch(deviceAddress, data_scratch);
switch (newResolution)
{
case 12:
N MN HC 1

27

i Hc S Phm K Thut

Khoa in-in T

data_scratch[CONFIGURATION] = TEMP_12_BIT;
break;
case 11:
data_scratch[CONFIGURATION] = TEMP_11_BIT;
break;
case 10:
data_scratch[CONFIGURATION] = TEMP_10_BIT;
break;
case 9:
default:
data_scratch[CONFIGURATION] = TEMP_9_BIT;
break;
}
write_ScratchPad(deviceAddress, data_scratch);
}
void measure_T(byte n)//ham do nhiet do tat ca cac kenh
{
int a,b;
for(a=0;a<n;a++)
{
get_Address(addr, a);
ds.reset();//khoi tao cho vong giao tiep ke tiep
ds.select(addr);
ds.write(0x44,1);

// DS18B20 Function Command:start conversion

Temp, with parasite power on at the end


delay(1000);

// maybe 750ms is enough, maybe not

// we might do a ds.depower() here, but the reset will take care of it.
ds.reset();
ds.select(addr);//MATCH ROM COMMAND
ds.write(0xBE);
N MN HC 1

//DS18B20 Function Command: Read Scratchpad


28

i Hc S Phm K Thut

Khoa in-in T

LowByte = ds.read();
HighByte = ds.read();
TReading = (HighByte << 8) + LowByte;
/*ghep byte cao va byte thap cua thanh ghi nhiet do
de duoc du lieu nhiet do 12 bit
*/
SignBit = TReading & 0x8000; // test most sig bit
//ket qua tra ve la 1 neu bit thu 12 cua TReading la 1,nghia la nhiet do
am
if (SignBit) // negative
{
TReading = (TReading ^ 0xffff) + 1; // 2's comp
}
Tc_100 = (6 * TReading) + TReading / 4;

// multiply by (100 *

0.0625) or 6.25
Whole = Tc_100/ 100; // separate off the whole and fractional portions
Fract = Tc_100 % 100;
T=Tc_100;
T=T/100;
//truyen du lieu nhiet do ra cong COM
Serial.print("Temperature device ");
Serial.print(a, DEC);
Serial.println(" is : ");
if (SignBit) // If its negative
{
Serial.print("-");
}
Serial.println(T);

N MN HC 1

29

i Hc S Phm K Thut

Khoa in-in T

//hien thi nhiet do len LCD


lcd.setCursor ( 9, a );
lcd.print(T);
//truyen nhiet do
transmitter.txPL(a);
transmitter.send(SLOW);
transmitter.txPL(Tc_100);
transmitter.send(SLOW);
}
}
void setup(void) {
lcd.createChar(0, ki_tu_do);//tao ki tu do "0" ki tu do co ten "char(0)"
//khoi tao LCD
lcd.begin(16,2);//hien thi LCD 16 cot 2 hang
//hien thi hang 1
lcd.setCursor(0, 0);//lcd.setCursor(col, row) di chuyen con tro tai cot 0
hang 0
lcd.print("Chanel 1:");
//xuat ki tu char(0) ra LCD
lcd.setCursor ( 14, 0 );
lcd.print(char(0));
//xuat ki tu "C" ra LCD
lcd.setCursor(15,0);
lcd.print("C");
//hien thi hang 2
lcd.setCursor(0, 1);//lcd.setCursor(col, row) di chuyen con tro tai cot 0
hang 0
lcd.print("Chanel 2:");
N MN HC 1

30

i Hc S Phm K Thut

Khoa in-in T

//xuat ki tu char(0) ra LCD


lcd.setCursor ( 14, 1 );
lcd.print(char(0));
//xuat ki tu "C" ra LCD
lcd.setCursor(15,1);
lcd.print("C");

// start serial port


Serial.begin(9600);
//khoi nrf24l01
SPI.begin();//khoi tao truyen du lieu kieu SPI
transmitter.channel(10);//chon kenh truyen cho module nRF24L01
transmitter.TXaddress("Artur");
transmitter.init();
//dem so thiet bi tren bus data
countDevice();
//
display_ROM(numberDevice);
get_Address(addr, 0);
ds.reset();//khoi tao cho vong giao tiep ke tiep
read_Scratch(addr, data_scratch);
}
void loop(void)
{
measure_T(numberDevice);
}
N MN HC 1

31

i Hc S Phm K Thut

Khoa in-in T

4.3. Np code v chy chng trnh:


Sau khi np chng trnh cho Arduino th h thng bt u lm vic.
H thng hot ng theo trnh t nh sau:
Arduino iu khin DS18B20 o nhit v gi li nhit v
arduino,vic giao tip xy ra ti chn digital 2.
Arduino gi nhit o c cho LCD 16x2 hin th.
Arduino truyn nhit nhn c n khi thu thng qua module
nRF24L01.

Hnh 1.19: Hnh nh thc t kt qu nhit bn pht.

N MN HC 1

32

i Hc S Phm K Thut

Khoa in-in T

II. MCH THU


1. S khi:
KHI HIN TH
GIAO DIN
WINDOWN

KHI THU

ARDIUNO
MEGA 2560

(MODULE
NRF24L01)

(KHI X L
TRUNG TM)

KHI HIN
TH
LCD

2. Chc nng cc khi:


Khi thu: c chc nng nhn d liu nhit t module NRF24L01 ca
my pht.
Khi x l trung tm: c chc nng iu khin nhn d liu thng qua
module NRF24L01, ng thi hin th d liu trn LCD.
Khi hin th LCD: c chc nng hin th gi tri nhit thu c.
Khi hin th trn giao din Windowns:hin th nhit nhn c t
Arduino.
3. S kt ni phn cng:
a. Bng 4. Bng kt ni chn Arduino vi LCD:

Arduino pin

22

23

24

25

26

27

LCD pin

RS

D4

D5

D6

D7

N MN HC 1

33

i Hc S Phm K Thut

Khoa in-in T

b. Bng 5. Bng kt ni chn Arduino vi module NRF24L01:


Arduino pin
NRF24L01
PIN

GND

3.3V

52

51

50

53

GND

VCC

CE

CSN

SCK

MOSI

MISO

IRQ

a. S kt ni chung cho cc khi:

Hnh 2.1: S kt ni phn cng bn thu.


4. Lp trnh cho arduino mch thu:
4.1.

Gii thiu th vin s dng trong Arduino bn thu:

+ Th vin: module nRF24L01


#include <nRF24L01p.h>
+Th vin: truyn d liu
#include <SPI.h>
+ Th vin: LCD
#include <LiquidCrystal.h>
4.2 CODE chng trnh Arduino:
//khai bao thu vien LCD
N MN HC 1

34

i Hc S Phm K Thut

Khoa in-in T

#include <LiquidCrystal.h>
#include <SPI.h>
#include <nRF24L01p.h>
LiquidCrystal lcd(22, 23, 24, 25, 26, 27);//LiquidCrystal(rs, enable, d4,
d5, d6, d7)//dieu khien LCD qua 6 chan cua LCD
nRF24L01p receiver(48,49);//CSN,CE
int index,index_0;
int Temp,ND_Temp;
float T;

//ham xuat ra ki tu do C
byte ki_tu_do[8] = {
B00111,
B00101,
B00111,
B00000,
B00000,
B00000,
B00000,
B00000,
};

//ham tryen du lieu den may tinh


void serial_monitor()
{
Serial.print("Nhiet do nhan duoc la: ");//truyen du lieu khong co ki tu
xuong dong
Serial.print(T);//ghi chuoi
Serial.println(" do C");//truyen du lieu co ki tu xuong dong
N MN HC 1

35

i Hc S Phm K Thut

Khoa in-in T

//ham nhan du lieu


void nhan()
{
receiver.read();
receiver.rxPL(Temp);
}

void setup(){
lcd.createChar(0, ki_tu_do);//tao ki tu do "0" ki tu do co ten "char(0)"
//khoi tao LCD
lcd.begin(16,2);//hien thi LCD 16 cot 2 hang
//hien thi hang 1
lcd.setCursor(0, 0);//lcd.setCursor(col, row) di chuyen con tro tai cot 0
hang 0
lcd.print("Chanel 1:");

//xuat ki tu char(0) ra LCD


lcd.setCursor ( 14, 0 );
lcd.print(char(0));

//xuat ki tu "C" ra LCD


lcd.setCursor(15,0);
lcd.print("C");
//hien thi hang 2
lcd.setCursor(0, 1);//lcd.setCursor(col, row) di chuyen con tro tai cot 0
hang 0
lcd.print("Chanel 2:");
N MN HC 1

36

i Hc S Phm K Thut

Khoa in-in T

//xuat ki tu char(0) ra LCD


lcd.setCursor ( 14, 1 );
lcd.print(char(0));

//xuat ki tu "C" ra LCD


lcd.setCursor(15,1);
lcd.print("C");

//khoi tao toc do truyen du lieu noi tiep den may tinh
Serial.begin(9600);
Serial.println("Nhan nhiet do.....");
//khoi tao truyen du lieu SPI
SPI.begin();
//khoi tao nRF24L01
receiver.channel(10);
receiver.RXaddress("Artur");
receiver.init();
index_0=0;
//dong bo du lieu nhan va phat
while(!receiver.available());
do
{
if(receiver.available())
{
receiver.read();
receiver.rxPL(Temp);
//Serial.println(Temp);
if(Temp==0 || Temp==1)
N MN HC 1

37

i Hc S Phm K Thut

Khoa in-in T

{
index = Temp;
Serial.println(index);
}
}
}
while(index==index_0);

}
void loop(){
//xuat du lieu nhiet do ra LCD
while(!receiver.available());
if(receiver.available())
{
receiver.read();
receiver.rxPL(ND_Temp);
T=ND_Temp;
T=T/100;
lcd.setCursor(9,index);
//Serial.println(ND_Temp);
Serial.println(T);
lcd.print(T);

while(!receiver.available());
if(receiver.available())
{
receiver.read();
receiver.rxPL(Temp);
if(Temp== 0 || Temp==1)
N MN HC 1

38

i Hc S Phm K Thut

Khoa in-in T

{
index = Temp;
Serial.println(index);

}
}
}
5. Np code v chy chng trnh:
Sau khi np chng trinh cho Ardiuno, th d liu nhit s thu
thng qua module NRF24L01 v hin th ln LCD, ta cng c th
hin th gi tr nhit ny ln mn hnh my tnh thng qua ch
Serial Monitor ca phn mm Arduino IDE.

Hnh 2.2: Hnh nh thc t kt qu nhit nhn c bn thu.


6. Kim tra s ng b gia bn pht v bn thu:

N MN HC 1

39

i Hc S Phm K Thut

Khoa in-in T

Hnh 2.3: Hnh nh nhit bn pht v bn thu.

III. GIAO DIN NHN V HIN TH NHIT


1. Thit k giao din hin th nhit :

Hnh 2.4: Giao din hin th nhit nhn.


2. Vit chng trnh cho giao din:
using System;
using System.Collections.Generic;

N MN HC 1

40

i Hc S Phm K Thut
using
using
using
using
using
using

Khoa in-in T

System.ComponentModel;
System.Data;
System.Drawing;
System.Linq;
System.Text;
System.Windows.Forms;

using System.IO;
using System.IO.Ports;
using System.Xml;
namespace RECIEVER_DATA
{
public partial class Form1 : Form
{
SerialPort P = new SerialPort();
string InputData = String.Empty;
int TT = 0;
delegate void SetTextCallback(string text);
public Form1()
{
InitializeComponent();
string[] ports = SerialPort.GetPortNames();
cbCom.Items.AddRange(ports);
P.ReadTimeout = 1000;
P.DataReceived += new SerialDataReceivedEventHandler(DataReceive);
}
private void DataReceive(object obj, SerialDataReceivedEventArgs e)
{
InputData = P.ReadLine();
if (InputData != String.Empty)
{
if (Convert.ToDecimal(InputData) == 0)
{
TT = 0;
}
else if (Convert.ToDecimal(InputData) == 1)
{
TT = 1;
}
else
{
if (TT == 0)
{
SetText1(InputData);
}
else if (TT == 1)
{
SetText2(InputData);
}
}
}
}

N MN HC 1

41

i Hc S Phm K Thut

Khoa in-in T

// Hm hien thi nhiet do kenh 1


private void SetText1(string text1)
{
if (this.textBox1.InvokeRequired)
{
SetTextCallback d = new SetTextCallback(SetText1);
this.Invoke(d, new object[] { text1 });
}
else this.textBox1.Text = text1;
}
// Hm hien thi nhiet do kenh 2
private void SetText2(string text2)
{
if (this.textBox2.InvokeRequired)
{
SetTextCallback d = new SetTextCallback(SetText2);
this.Invoke(d, new object[] { text2 });
}
else this.textBox2.Text = text2;
}
private void Form1_Load(object sender, EventArgs e)
{
cbCom.SelectedIndex = 0;
P.BaudRate = 9600;
P.DataBits = 8;
P.Parity = Parity.None;
P.StopBits = StopBits.One;
}
private void btKetNoi_Click_1(object sender, EventArgs e)
{
try
{
P.Open();
btNgat.Enabled = true;
btKetNoi.Enabled = false;
// Hin th Status
StripStatus.Text = "Conecting to port " +
cbCom.SelectedItem.ToString();
}
catch (Exception ex)
{
MessageBox.Show("Can't conect.", "Try again", MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
private void btNgat_Click_1(object sender, EventArgs e)
{
P.Close();
btKetNoi.Enabled = true;
btNgat.Enabled = false;
// Hin th Status
StripStatus.Text = "Disconected !";
}
private void btThoat_Click_1(object sender, EventArgs e)
{
DialogResult kq = MessageBox.Show("Do you want exit ?", "Thong bao",
MessageBoxButtons.YesNo, MessageBoxIcon.Question);

N MN HC 1

42

i Hc S Phm K Thut

Khoa in-in T

if (kq == DialogResult.Yes)
{
this.Close();
}
}
private void cbCom_SelectedIndexChanged_1(object sender, EventArgs e)
{
if (P.IsOpen)
{
P.Close();
}
P.PortName = cbCom.SelectedItem.ToString();
}
private void label4_Click(object sender, EventArgs e)
{
}
private void toolStripMenuItem1_Click(object sender, EventArgs e)
{
Form2 frmForm2 = new Form2();
frmForm2.Show();
}
private void aboutToolStripMenuItem_Click(object sender, EventArgs e)
{
Form3 frmForm3 = new Form3();
frmForm3.Show();
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}

}
}

N MN HC 1

43

i Hc S Phm K Thut

Khoa in-in T

6.3 Bin dch ci t file setup ca giao din,giao tip vi Arduino

Hnh 2.5: Nhit nhn c sau khi giao tip vi Arduino.

N MN HC 1

44

i Hc S Phm K Thut

Khoa in-in T

PHN 3
KT LUN V HNG PHT TRIN
I.

KT LUN:
1. Nhng iu ti lm c:
Nh vy, vi ti n 1:O NHIT DNG CM BIN DS18B20

S DNG BOARD ARDUINO,HIN TH TRN LCD,TRUYN PHT


KHNG DY,GIAO TIP VI MY TNH QUA CNG COM.
ti t c nhng vn sau:
gii thiu s lc v cc phn cng mt cch chi tit d hiu
gii thiu phn mn cn thit thun tin cho vic lp trnh, ng thi
ch ra nhng cu lnh v hm quan trong lin quan.
C th o v hin th nhit tng i chnh xc,tit kim c s
chn VDK do s dng cm bin one wire.
C th truyn pht gia thit b thu v nhn.
o nhit thang Celsius (C).
To c giao din nhn nhit chy trn Windown.
Hin th c nhit nhn c trn giao din Windown xy dng.
2. Nhng iu kh khn gp phi khi lm ti:
ti n 1:O NHIT DNG CM BIN DS18B20 S DNG
BOARD

ARDUINO,HIN

TH TRN

LCD,TRUYN

PHT KHNG

DY,GIAO TIP VI MY TNH QUA CNG COM. Trong qu trnh thc hin,

lp trnh cho mch o nhit , gp phi nhiu kh khn khc nhau nh: do
phi nghin cu nhiu ti liu nc ngoi, datasheets,... dn n nhiu ch dch
sai, dch nhm dn n p dng cc hm, cu lnh b sai ngha, cu trc..., trong
qu trnh vit code gp phi nhiu li pht sinh m khng tm ngay ra nguyn
nhn cn u t thi gian gii quyt, nhiu linh kin rt kh tm c th
vin chun lp trnh... Qu trnh lp mch cng gp phi nhng kh khn nht

N MN HC 1

45

i Hc S Phm K Thut

Khoa in-in T

nh tuy nhin em c gng gii quyt c vn pht sinh hon thnh


c ti. Em hon thnh thit k, lp trnh v lp t mch o nhit s
dng Arduino khng truyn pht trong vng 2 tun k t khi nhn ti v sau
nghin cu trong 3 tun tip theo thc hin c chc nng truyn pht tn
hiu nhit gia 2 board Arduino,trong 3 tun tip theo em xy dng c
giao din nhn nhit ,2 tun k tip em hon thnh giao din nhn nhit
v hin th c nhit nhn ln giao din.
Do y mi l ln u tin lm mt ti n, cng vi kin thc cn
nhiu hn ch, em t thy ti ca mnh thc hin c vn cn rt nhiu sai
st, khim khuyt. Em rt mong c s ng h v gip ca thy gio
ti ca em thc hin c hon thin hn v c thm nhiu ci tin ng k v
ng dng tt hn vo thc tin.
3. HNG PHT TRIN:
Xy dng h thng gim v iu khin thit b khng dy thng qua
module NRF24L01 kt hp vi giao din xy dng trn Windown.

N MN HC 1

46

i Hc S Phm K Thut

Khoa in-in T

TI LIU THAM KHO


[1]

Massimo Banzi, Getting Started with Arduino, OReilly Media, Inc, 2009.

[2] Michael

Margollis and Nicholas Weldin, Arduino Cookbook, OReilly Media,

Inc, 2011.
[3]

http://arduino.cc/, truy nhp cui cng ngy 27/11/2013.

[4]

http://arduino4proects.com/, truy nhp cui cng ngy 6/10/2013.

[5]

http://randomnerdtutorials.com/., truy nhp cui cng ngy 6/10/2013.

[6]

http://techshowvn.com/, truy nhp cui cng ngy 6/10/2013.

[7] http://www.airspavce.com/mikem/arduino/RF22/,

truy nhp cui cng ngy

27/11/2013
[8]

http://groups.google.com/group/rf22-arduino/, truy nhp cui cng ngy

26/11/2013
[9]

http://electrodragon.com/. truy nhp cui cng ngy 19/11//2013.

[10] http://blogembarcado.blogspot.de/,

truy nhp cui cng ngy 29/11/2013.

[11] http://arduino-info.wikispaces.com/Nrf24L01-2.4GHz-HowTo/,

truy nhp

cui cng ngy 20/12/2013.


[12] http://www.voutube.com/channel/UCGSloFkUnaUknE-

Z21 gmmvw?feature=watchA truy nhp cui cng ngy 20/12/2013.


[13] http://www.mediafire.com/download/v6bnQa7g3ep3y7o/nRP24L01p.rar/.,

truy nhp cui cng ngy 20/12/2013.

N MN HC 1

47

You might also like