Professional Documents
Culture Documents
N MN HC 1
NGNH K THUT IN-IN T
TI:
GVHD
SVTH
NGUYN VN QUC
MSSV
11141170
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
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
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
N MN HC 1
i Hc S Phm K Thut
Khoa in-in T
PHN 1
TNG QUAN
I.
i Hc S Phm K Thut
Khoa in-in T
khin. ng thi n cng l giao tip serial truyn d liu gia vi iu khin
v my tnh.
-
N MN HC 1
i Hc S Phm K Thut
Khoa in-in T
mu Arduino khc nhau th con chip l khc nhau. con Arduino Mega2560 ny
th s dng ATMega2560.
-
Vi x l:
5V
in p hot ng:
7-12V
in p u vo:
6-20V
5 4 ( 1 5 chn l u ra PWM)
Chn vo tng t:
16
40mA
50mA
B nh trong:
256 KB
SRAM:
8 KB
EEPROM:
4 KB
Xung nhp:
16MHz
Atmega2560
N MN HC 1
i Hc S Phm K Thut
III.
Khoa in-in T
1.Tng quan:
DS18B20 l IC cm bin nhit , ch bao gm 3 chn,hnh nh thc t nh
hnh di.
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
N MN HC 1
i Hc S Phm K Thut
Khoa in-in T
N MN HC 1
10
i Hc S Phm K Thut
Khoa in-in T
N MN HC 1
11
i Hc S Phm K Thut
Khoa in-in T
IV.
N MN HC 1
12
i Hc S Phm K Thut
Khoa in-in T
N MN HC 1
13
i Hc S Phm K Thut
Khoa in-in T
sut pht:
+ 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:
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:
N MN HC 1
15
i Hc S Phm K Thut
Khoa in-in T
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
17
i Hc S Phm K Thut
Khoa in-in T
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
Arduino pin
(ng vo s)
DS18B20
Vout
5V
GND
Vs
GND
GND
3.3V
52
51
50
53
GND
VCC
CE
CSN
SCK
MOSI
MISO
IRQ
N MN HC 1
20
i Hc S Phm K Thut
Khoa in-in T
CODE lp trnh:
#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
#define READSCRATCH
#define WRITESCRATCH
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
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);
// 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
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
30
i Hc S Phm K Thut
Khoa in-in T
31
i Hc S Phm K Thut
Khoa in-in T
N MN HC 1
32
i Hc S Phm K Thut
Khoa in-in T
KHI THU
ARDIUNO
MEGA 2560
(MODULE
NRF24L01)
(KHI X L
TRUNG TM)
KHI HIN
TH
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
GND
3.3V
52
51
50
53
GND
VCC
CE
CSN
SCK
MOSI
MISO
IRQ
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,
};
35
i Hc S Phm K Thut
Khoa in-in T
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:");
36
i Hc S Phm K Thut
Khoa in-in T
//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.
N MN HC 1
39
i Hc S Phm K Thut
Khoa in-in T
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
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
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
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
N MN HC 1
46
i Hc S Phm K Thut
Khoa in-in T
Massimo Banzi, Getting Started with Arduino, OReilly Media, Inc, 2009.
[2] Michael
Inc, 2011.
[3]
[4]
[5]
[6]
[7] http://www.airspavce.com/mikem/arduino/RF22/,
27/11/2013
[8]
26/11/2013
[9]
[10] http://blogembarcado.blogspot.de/,
[11] http://arduino-info.wikispaces.com/Nrf24L01-2.4GHz-HowTo/,
truy nhp
N MN HC 1
47