5. IoT Architecture
Three major components for
designing any IoT system
Application devices: Hardware architecture,
smart sensors, cloud computing, energy
efficient devices
Networks: Communication technology,
advanced internet protocol, wireless technology, RFID technology
Security and privacy: Authentication procedure, secure device
discovery, secure inter-device communication
Ref: NTNU IoT lab, Application development in IoT systems, http://www.item.ntnu.no/research/ninot/start
T.T.T.THUY-MMT-CNTT 8
14. What is the Arduino
T.T.T.THUY-MMT-CNTT 17
todbot.com/blog/bionicarduino
15. 働u i畛m Arduino
Thi畉t k畉 IDE t畛t, c坦 th畛 d畛 dng t鱈ch h畛p nhi畛u lo畉i
compiler, nhi畛u lo畉i hardware m kh担ng h畛 gi畉m hi畛u
nng.
C叩c th動 vi畛n 動畛c vi畉t d畛a tr棚n l畛p API tr棚n c湛ng, n棚n
a s畛 c叩c th動 vi畛n cho Arduino c坦 th畛 d湛ng 動畛c cho
t畉t c畉 c叩c chip. i畛n h狸nh l Arduino cho ESP8266 c坦
th畛 t畉n d畛ng tr棚n 90% c叩c th動 vi畛n cho Arduino kh叩c
Tr狸nh bi棚n d畛ch cho Arudino l C/C++
C叩c project cho Arduino 畛u opensource
Arduino ch炭 tr畛ng t鱈nh a n畛n t畉ng, module h坦a cao,
ph湛 h畛p v畛i c叩c 畛ng d畛ng t畛 ph畛c t畉p t畛i c畛c k畛 ph畛c
t畉p.
T.T.T.THUY-MMT-CNTT 18
16. C叩c lo畉i boad arduino
Arduino uno
Arduino nano
Arduino Mega
.
T.T.T.THUY-MMT-CNTT 19
17. CU TA味O BOARD ARDUINO UNO
2.2. Arduino
T.T.T.THUY-MMT-CNTT 20
18. What is a Microcontroller
T.T.T.THUY-MMT-CNTT 21
A small computer on a single chip
containing a processor, memory, and input/output
Typically "embedded" inside some device that they control
A microcontroller is often small and low cost
Examples
www.mikroe.com/chapters/view/1
19. What is a Development Board
A printed circuit board
designed to facilitate
work with a particular
microcontroller.
T.T.T.THUY-MMT-CNTT 22
Typical components include:
power circuit
programming interface
basic input; usually buttons and LEDs
I/O pins
21. C叩c thnh ph畉n tr棚n Arduino board
1. USB
giao ti畉p v畛i m叩y tinh
Upload ch動董ng tr狸nh
cho Arduino ho畉t
畛ng
C坦 th棚 c畉p ngu畛n
qua c担ng USB.
T.T.T.THUY-MMT-CNTT 24
22. C叩c thnh ph畉n tr棚n Arduino boad
C叩c ch但n (2. 3)
C畉p ngu畛n qua (2)
C畉p ngu畛n qua Vin;
GND (3)
Ch但n 5V v ch但n 3.3V
Output voltage
Kh担ng c畉p ngu畛n qua
ch但n ny
GND:
0 v
mass
T.T.T.THUY-MMT-CNTT 25
30. Arduino IDE
M畛c 1:
Menu bar
g畛m c叩c t湛y ch畛n thi畉t l畉p cho
ph畉n m畛m Arduino v cho sketch
ang th畛c hi畛n
M畛c 2:
symbol bar
c叩c n炭t nh畉n Verify 畛 bi棚n d畛ch
sketch,
upload 畛 n畉p sketch vo board,
New 畛 t畉o sketch m畛i,
Open 畛 m畛 sketch,
Save l動u sketch
Serial Monitor 畛 m畛 serial port.
M畛c 3:
V湛ng 畛 so畉n th畉o code cho
sketch.
M畛c 4:
V湛ng hi畛n th畛 th担ng tin khi bi棚n d畛ch, hi畛n
th畛 qu叩 tr狸nh n畉p sketch v c叩c th担ng b叩o
l畛i khi bi棚n d畛ch sketch (n畉u c坦).
T.T.T.THUY-MMT-CNTT 33
31. Arduino IDE Menu
T.T.T.THUY-MMT-CNTT 34
- File menu:
Examples 但y l n董i ch畛a code m畉u v鱈
d畛 nh動: c叩ch s畛 d畛ng c叩c ch但n digital, analog,
sensor
- Edit menu
- Sketch menu
- Verify/ Compile : ch畛c nng ki畛m tra l畛i
code.
- Show Sketch Folder : hi畛n th畛 n董i code
動畛c l動u.
- Add File : th棚m vo m畛t Tap code m畛i.
- Import Library : th棚m th動 vi畛n cho IDE
33. Tool menu
T.T.T.THUY-MMT-CNTT 36
L動u 箪:
- M畛c Board :
- c畉n ph畉i l畛a ch畛n bo m畉ch cho ph湛 h畛p v畛i
lo畉i bo m b畉n s畛 d畛ng n畉u l Arduino Uno
th狸 ph畉i ch畛n nh動 h狸nh b棚n
- Serial Port:
- l畛a ch畛n c担ng Com c畛a Arduino.
- Khi ch炭ng ta ci 畉t driver th狸 m叩y t鱈nh s畉
hi畛n th担ng b叩o t棚n c担ng Com c畛a Arduino l
bao nhi棚u, ta ch畛 vi畛c vo Serial Port ch畛n
炭ng c担ng Com 畛 n畉p code,
- n畉u ch畛n sai th狸 kh担ng th畛 n畉p code cho
Arduino 動畛c.
34. Ci 畉t th動 vi畛n Arduino
Kh畛i 畛ng arduino IDE v ch畛n m畛c Sketch include
library Manage libraries:
T.T.T.THUY-MMT-CNTT 37
35. Xu畉t firmware binary trong Arduino IDE
Sketch > Export compiled Binary
file .bin s畉 n畉m trong th動 m畛c c畛a Sketch.
T.T.T.THUY-MMT-CNTT 38
36. Ci 畉t board ESP8266
M畛 Boards Manager 畛 m畛c Tools tr棚n thanh menu-bar
t狸m board c畉n s畛 d畛ng v畛i keyword Generic 8266 ch畛n
board c畉n ci 畉t nh動 h狸nh v nh畉n vo install.
T.T.T.THUY-MMT-CNTT 39
38. Y棚u c畉u
X但y d畛ng 畛ng d畛ng cho ph辿p b畉t t畉t led theo chu k畛
T.T.T.THUY-MMT-CNTT 41
39. LED?
Light Emitting Diodes
B坦ng b叩n d畉n c坦 th畛 ph叩t s叩ng
v畛i mu s畉c kh叩c nhau t湛y thu畛c
vo ch畉t li畛u b叩n d畉n
C畉n cung c畉p m畛c i畛n 叩p ch棚nh
l畛ch gi畛a c畛c 但m v c畛c d動董ng
c畛a b坦ng LED cao h董n m畛c i畛n
叩p Vf (datasheet), th動畛ng l 3.2v,
v d嘆ng i畛n nh畛 h董n m畛c ch畛u
畛ng c畛a n坦, th動畛ng l 15mA.
T.T.T.THUY-MMT-CNTT 42
40. 畉u n畛i Led t畛i ch但n 13
File > Examples > Digital > Blink
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
T.T.T.THUY-MMT-CNTT 43
41. M畛 r畛ng
B畉t t畉t Led theo chu k畛 30 ph炭t
B畉t t畉t Led s畛 d畛ng n炭t nh畉n (c担ng t畉c)
T.T.T.THUY-MMT-CNTT 44
45. setup() v loop()
Nh畛ng l畛nh trong setup()
s畉 動畛c ch畉y khi ch動董ng tr狸nh kh畛i 畛ng.
khai b叩o gi叩 tr畛 c畛a bi畉n, khai b叩o th動 vi畛n, thi畉t l畉p c叩c
th担ng s畛,
Sau khi setup() ch畉y xong
nh畛ng l畛nh trong loop() 動畛c ch畉y.
l畉p i l畉p l畉i li棚n t畛c cho t畛i khi no ng畉t ngu畛n
c畛a board Arduino.
Nh畉n n炭t Reset
ch動董ng tr狸nh s畉 tr畛 v畛 l畉i tr畉ng th叩i nh動 khi
Arduino m畛i 動畛c c畉p ngu畛n.
T.T.T.THUY-MMT-CNTT 48
46. setup() v loop()
T.T.T.THUY-MMT-CNTT 49
V鱈 d畛
int led = 13;
void setup() {
pinMode(led, OUTPUT);
}
void loop() {
digitalWrite(led, HIGH);
delay(1000);
digitalWrite(led, LOW);
delay(1000);
}
Gi畉i th鱈ch??
47. C畉u tr炭c re nh叩nh
C炭 ph叩p:
if ([bi畛u th畛c 1] [to叩n t畛 so s叩nh] [bi畛u th畛c 2]) { //bi畛u th畛c i畛u ki畛n
[c但u l畛nh 1]
} else {
[c但u l畛nh 2]
}
N畉u bi畛u th畛c i畛u ki畛n tr畉 v畛 gi叩 tr畛 TRUE, [c但u l畛nh 1] s畉 動畛c th畛c hi畛n, ng動畛c
l畉i, [c但u l畛nh 2] s畉 動畛c th畛c hi畛n.
V鱈 d畛:
int a = 0;
if (a == 0) {
a = 10;
} else {
a = 1;
}
T.T.T.THUY-MMT-CNTT 50
48. C畉u tr炭c re nh叩nh if
C叩c to叩n t動 so s叩nh
x == y (x is equal to y)
x != y (x is not equal to y)
x < y (x is less than y)
x > y (x is greater than y)
x <= y (x is less than or equal to y)
x >= y (x is greater than or equal to y)
T.T.T.THUY-MMT-CNTT 51
49. C畉u tr炭c re nh叩nh
Vi畉t o畉n code
X: s畛 nguy棚n
N畉u x >2 v x nh畛 h董n 5 th狸 g叩n x=100
N畉u x<=2 ho畉c x>=5 th狸 g叩n x=-1
T.T.T.THUY-MMT-CNTT 52
51. Switch ..case
Vd1: Cho bi畉n c ki畛u char , x ki畛u int
N畉u c=a g叩n x =-1
N畉u c=b g叩n x=5
Vd2:
Cho bi畉n c ki畛u char, ch但n 1 output
pinMode(1,OUTPUT)
N畉u c=a ghi i畛n 叩p ra l m畛c High cho ch但n 1
N畉u c=b ghi i畛n 叩p ra l m畛c LOW cho ch但n 1
T.T.T.THUY-MMT-CNTT 54
52. For
C炭 ph叩p
for (initialization; condition; increment) { // statement(s); }
Vd:
G叩n gi叩 tr畛 cho bi畉n a l畉n l動畛t t畛 1-200. S畛 d畛ng c畉u tr炭c for
Int a,i;
For(i=1,i<=200,i++)
{a=i;}
T.T.T.THUY-MMT-CNTT 55
54. While
V鱈 d畛:
a bi畉n int, a bi畉n int
G叩n gi叩 tr畛 cho bi畉n a l畉n l動畛t t畛 1-200. S畛 d畛ng c畉u
tr炭c while
T.T.T.THUY-MMT-CNTT 57
55. Continue
b畛 qua m畛t chu k狸 l畉p trong m畛t v嘆ng l畉p (for, do, while) ch畛a n坦 trong 坦.
Khi g畛i l畛nh continue, nh畛ng l畛nh sau n坦 v 畛 trong c湛ng v嘆ng l畉p v畛i n坦
s畉 b畛 b畛 qua 畛 th畛c hi畛n nh畛ng chu k狸 l畉p k畉 ti畉p.
V鱈 d畛
int a = 0;
int i = 0;
while (i < 10) {
i = i + 1;
continue;
a = 1;
}
//a v畉n b畉ng 0
T.T.T.THUY-MMT-CNTT 58
56. continue
V鱈 d畛:
Th畛c hi畛n ghi gi叩 tr畛 t畛 1 t畛i 200 cho bi畉n a. (b畛 qua gi叩
tr畛 t畛 (40 t畛i 120))
For (i=1, i<=200; i++)
{
If ( i>=40 && i<=120)
{ continue; }
a=i;
}
T.T.T.THUY-MMT-CNTT 59