Download as pdf or txt
Download as pdf or txt
You are on page 1of 74

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP.

HCM
KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN KHOA HỌC MÁY TÍNH

GIÁO TRÌNH THỰC HÀNH MÔN


CÔNG NGHỆ MỚI TRONG
PHÁT TRIỂN ỨNG DỤNG

ThS. TÔN LONG PHƯỚC (chủ biên)

TP.HCM, tháng 11/2017


Lời mở đầu
Các bạn sinh viên thân mến, hiện với xu hướng phát triển ngày càng mạnh về các
lĩnh vực hệ thống thông minh trong đời sống. Trong đó, những hệ thống tự động về
trí tuệ nhân tạo kết hợp với các kỹ thuật công nghệ mới đã cho ra đời nhiều sản
phẩm thông minh. Những sản phẩm này thường là sự kết hợp giữa các nền tảng như
IoTs, Cloud Computing, Machine Learning,… Với các nhà cung cấp dịch vụ như
Google, Microsoft, IBM,… Đã hỗ trợ rất nhiều cho các nhà phát triển phần mềm
triển khai nhanh chóng các sản phẩm thiết thực, đáp ứng những công việc trong
cuộc sống hằng ngày. Giáo trình “Thực hành công nghệ mới trong phát triển ứng
dụng” ra đời cũng muốn hỗ trợ cho các em sinh viên, đặc biệt là các em sinh viên
ngành Khoa học máy tính tham gia học tập tại Bộ môn, nghiên cứu và phát triển
các ứng dụng. Trong quá trình biên soạn, tác giả cũng mong muốn các em sinh viên,
đồng nghiệp đóng góp thêm các ý kiến nhằm hoàn thiện hơn cho giáo trình này. Xin
chân thành cám ơn!

2
Mục lục
Phần 1: Làm quen với ngôn ngữ Python ...................................................................................... 4
Bài thực hành số 1. .................................................................................................................. 4
Bài thực hành số 2. .................................................................................................................. 6
Bài thực hành số 3. .................................................................................................................. 8
Bài thực hành số 4. .................................................................................................................. 9
Bài thực hành số 5. ................................................................................................................ 11
Phần 2: Machine learning & Cloud Computing........................................................................... 13
Bài thực hành số 1: Cài đặt môi trường triển khai ứng dụng machine-learning trên windows
azure. .................................................................................................................................... 13
Bài thực hành số 2: Giới thiệu R và xử lý dữ liệu với Python................................................... 15
Bài thực hành số 3: Phân tích dữ liệu trên AzureML............................................................... 18
Bài thực hành số 4: Thực thi công cụ R, nhúng Python trên AzureML..................................... 21
Phần 3: Internet of Things (IoT) ................................................................................................... 1
Bài 1: Lập trình với Keypad & Led ............................................................................................ 1
Bài 2: Lập trình với Led & Button .......................................................................................... 25
Bài 3: Lập trình với Keypad & LCD ......................................................................................... 31
Bài 4: Lập trình với Keypad, Buzz, Led ................................................................................... 36
Bài 5: Lập trình với Led và Wi-Fi ............................................................................................ 42

3
Phần 1: Làm quen với ngôn ngữ Python
Bài thực hành số 1.
Nội dung:

• Cài đặt chương trình soạn thảo đơn giản cho Python
• Thực hành viết chương trình đơn giản trên Python
• Thực hành các toán tử trong ngôn ngữ lập trình Python

Yêu cầu:

Công cụ soạn thảo Python

Chi tiết:

1. Write a program that asks the user about textbook prices and reports how
overpriced the textbooks are. (You may wish to read this number from the
user with the input command. You can round numbers with
the round command.) You should match the following output

- How much do you want to pay for each textbook? 50


- How much did the average textbook actually cost? 80
- How many books did you buy? 5
- Each book is overpriced by $30 ( 60% )
- You got ripped off by $150 total

You may assume that the user enters a positive integer for each input value
above.

2. If you ever find yourself buying a house, you'll want to know what your
monthly payment for the loan is going to be. Write a complete program that
asks for information about a loan and prints the monthly payment.

The formula for computing monthly mortgage payments involves the loan
amount, the total number of months involved (a value we call n) and the
monthly interest rate (a value we call c). The payment formula is given by
the following equation:

4
An example run of your program might produce the following output (user input is
underlined):

- This program computes monthly loan payments.


- Loan amount? 275000
- Number of years? 30
- Interest rate? 6.75
- Your payment is $1783

Note that the numbers being read as input don't match the way they should be used
in the formula. The term of the loan is read as years instead of months. The interest
rate percentage is being read in as a yearly rate instead of a monthly rate and as a
whole number rather than a true percentage, so the value 6.75 should actually
become 0.005625 by dividing it by 12 and by 100. You will have to make these
conversions as part of your program.

3. Write a program that counts a number's factors and determines whether the
number is prime.

- What is your favorite number? 24


- 24 has 8 factors
- 24 is not prime
- What is your favorite number? 31
- 31 has 2 factors
- 31 is prime

Hint: To count the factors of some integer n, use a loop that tests every integer
less than n to see whether n is divisible by it. (How do you know whether one
integer is divisible by another?)

5
Bài thực hành số 2.
Nội dung:

• Thực hành các nhập xuất chuỗi, số trên Python


• Thực hành các câu lệnh rẽ nhánh, lặp…trên Python

Yêu cầu:

Công cụ soạn thảo Python

Chi tiết:

You may not know that credit card numbers contain several pieces of information
for performing validity tests. For example, Visa card numbers always begin with 4,
and a valid Visa card number also passes a digit-sum test known as the Luhn
checksum algorithm. Luhn's algorithm states that if you sum the digits of the number
in a certain way, the total sum must be a multiple of 10 for a valid Visa number.
Systems that accept credit cards perform a Luhn test before contacting the credit
card company for final verification. This lets the company block fake or mistyped
credit card numbers.

The algorithm for summing the digits is the following. Consider each digit of the
credit card to have a zero-based index: the first is at index 0, and the last is at index
15. Start from the rightmost digit and process each digit one at a time. For digits at
even-numbered indexes (the 14th digit, 12th digit, etc.), simply add that digit to the
cumulative sum. For digits at odd-numbered indexes (the 15th, 13th, etc), double
the digit's value, then if that doubled value is less than 10, add it to the sum. If the
doubled number is 10 or greater, add each of its digits separately into the sum.

The following pseudocode describes the Luhn algorithm to sum the digits:

sum = 0.
for each digit of credit card number, starting from right,
if the digit's index is even,
add the digit to sum.
else,
double the digit's value.
if the doubled value is less than 10,
add the doubled value to sum.
else,
split the doubled value into its two digits.
add the first digit to sum.
add the second digit to sum.

6
4111111111111111 and 4408041254369873 are example credit card numbers that
pass the Luhn algorithm. The following figure shows the algorithm summing the
latter number in detail. Notice how digits at even indexes are doubled and
potentially split into two digits if they exceed 10 when doubled. For example, the
number 7 at index 8 which is doubled to 14 which split to make 1+4.

An example checksum using the Luhn algorithm.


CC # 4408 0412 5436 9873

4 4 0 8 0 4 1 2 7 4 3 6 9 8 5 3
Scale *2 *2 *2 *2 *2 *2 *2 *2
--------------------------------------------------------------------
8 4 0 8 0 4 2 2 14 4 6 6 18 8 10 3

Sum = 8 + 4 + 0 + 8 + 0 + 4 + 2 + 2 + 1+4 + 4 + 6 + 6 + 1+8 + 8 + 1+0 + 3


= 70

70 is divisible by 10, therefore this card number is valid.

Write a program where the user can type in a credit card number and receive a
message stating whether the number was valid.

7
Bài thực hành số 3.
Nội dung:

• Thực hành các xử lý file (đọc, thống kê) trên Python


• Thao tác trực tiếp File dữ liệu (ghi, ghi file cấu trúc) trên Python

Yêu cầu:

Công cụ soạn thảo Python

Chi tiết:

Suppose we have this hours.txt data:

- 123 Suzy 9.5 8.1 7.6 3.1 3.2


- 456 Brad 7.0 9.6 6.5 4.9 8.8
- 789 Jenn 8.0 8.0 8.0 8.0 7.5

Compute each worker's total hours and hours/day.

- Assume each worker works exactly five days.


- Suzy ID 123 worked 31.4 hours: 6.3 / day
- Brad ID 456 worked 36.8 hours: 7.36 / day
- Jenn ID 789 worked 39.5 hours: 7.9 / day
input = open("hours.txt")

for line in input:

id, name, mon, tue, wed, thu, fri = line.split()

# cumulative sum of this employee's hours

hours = float(mon) + float(tue) + float(wed) + \

float(thu) + float(fri)

print(name, "ID", id, "worked", \

hours, "hours: ", hours/5, "/ day"

8
Bài thực hành số 4.
Nội dung:

• Thực hành các hàm đồ họa cơ bản trên Python


• Cách trình diễn các đối tượng đồ họa cơ bản

Yêu cầu:

Công cụ soạn thảo Python

Chi tiết:

Writing code below:

from drawingpanel import *

panel = DrawingPanel(400, 300)

panel.set_background("yellow")

panel.canvas.create_rectangle(100, 50, 200, 300)

from drawingpanel import *

panel = DrawingPanel(400, 300)

panel.canvas.create_rectangle(100, 50, 200, 200, outline="red", fill="yellow")

panel.canvas.create_oval(20, 10, 180, 70, fill="blue")

from drawingpanel import *

9
panel = DrawingPanel(200, 200)

panel.canvas.create_polygon(100, 50, 150, 0,

150, 100, fill="green")

panel.canvas.create_line(10, 120, 20, 160,

30, 120, 40, 175)

DrawingPanel panel = new DrawingPanel(200, 200);

panel.setBackground(Color.LIGHT_GRAY);

Graphics g = panel.getGraphics();

g.setColor(Color.BLACK); // body

g.fillRect(10, 30, 100, 50);

g.setColor(Color.RED); // wheels

g.fillOval(20, 70, 20, 20);

g.fillOval(80, 70, 20, 20);

g.setColor(Color.CYAN); // windshield

g.fillRect(80, 40, 30, 20);

10
Bài thực hành số 5.
Nội dung:

• Thực hành các hàm đồ họa trên Python


• Sử dụng các cấu trúc đồ họa phức tạp

Yêu cầu:

Công cụ soạn thảo Python

Chi tiết:

1. Write a program that draws the following figure:

2. Write a program that draws the following figure:

Part of the challenge is using loops to reduce the redundancy of the figure.

11
3. Write a program that draws the following figure:

Part of the challenge is using loops to reduce the redundancy of the figure.

12
Phần 2: Machine learning & Cloud Computing
Bài thực hành số 1: Cài đặt môi trường triển khai ứng dụng
machine-learning trên windows azure.
Nội dung:

• Cài đặt được bộ free Microsoft Azure ML workspace


• Cấu hình được Setup Azure ML workspace với existing Azure
subscription
• Cài đặt Python cho môi trường phát triển
• Cài đăth công cụ R phần thống kê

Yêu cầu:

Chuẩn bị tài nguyên (phần mềm, internet, máy tính)

Chi tiết:

Đăng ký tài khoản free tại.

• Microsoft Account (signup at https://signup.live.com)

Cài đặt phần mềm R_Studio

https://cran.rstudio.com hoặc
https://www.rstudio.com/products/rstudio/download/

13
Cài đặt Python từ https://www.continuum.io/downloads

14
Bài thực hành số 2: Giới thiệu R và xử lý dữ liệu với Python
Nội dung:

• Sử dụng được công cụ R vào ứng dụng thống kê trên dữ liệu


• Dùng được các hàm thống kê trong Python

Yêu cầu:
Đã cài đặt các công cụ ở buổi 6
Chi tiết:
Chạy Rstudio.

Gõ Script
# Generate a numeric series from 1 to 30 and assign it to variable x
x <- seq(1, 30)

# Create copy of x as variable y


y <- x

# Generate 30 uniform distributed random number each ranges between -1 to 1


noise <- runif(30, -1, 1)

# Create variable ywnoise as in Excel


ywnoise <- y + noise * 2
15
# Plot values of x and ywnoise without labels
plot(x, ywnoise, xlab = NA, ylab = NA)

# Combine columns x and ywnoise to create two column grid named linoise
linoise <- cbind(x, ywnoise)

# Save the variable linoise as a CSV file on the local disk


write.csv(linoise, file = "linoise.csv", row.names = FALSE)

Kiểm tra output

Chạy IDE Python

16
Gõ Script
# Import required libraries to be used. i.e. csv for csv file output, pyplot
for plotting etc.
import numpy as np
import matplotlib.pyplot as plt
import csv
from itertools import izip

# Generate identical x and y variables with numeric series from 1 to 30


x = range(1, 31)
y = x

# Generate 30 uniform distributed random number each range between -1 to 1


noise = np.random.uniform(-1, 1, 30)

# Create noisy y values with magnitude of 2


ywnoise = y + noise * 2

# Plot the resulting x and ywnoise data


plt.plot(x, ywnoise)
plt.show()

# Write out the resulting data as a CSV file. Be carefull about the tab
indentation which is important for Python.Write out the resulting data as a
CSV file. Be carefull about the tab indentation which is important for Python.
with open('linoise.csv', 'wb') as f:
writer = csv.writer(f)
writer.writerow(['x', 'ywnoise'])
writer.writerows(izip(x, ywnoise))

17
Kiểm tra kết quả

Bài thực hành số 3: Phân tích dữ liệu trên AzureML


Nội dung:

• Phân tích dữ liệu và trực quan hóa dữ liệu trên AzureML


• Rút trích dữ liệu

Yêu cầu:
Đã cài đặt các công cụ ở buổi 6
Chi tiết:
Chạy AzureML Experiment.
https://studio.azureml.net

18
Biểu diễn dữ liệu bằng đồ họa

19
Truy vấn dữ liệu
Thực hiện câu lệnh
SELECT * FROM [dbo].[synth_data]

20
Bài thực hành số 4: Thực thi công cụ R, nhúng Python trên
AzureML
Nội dung:

• Nhúng R vào AzureML


• Nhúng Python vào AzureML

Yêu cầu:
Đã cài đặt các công cụ ở buổi 6
Chi tiết:
Chạy Rstudio, tạo 1 blank Azure ML experiment

Gõ script

Bổ sung:
21
# Generate synthetic data
x <- seq(1, 30)
y <- x
noise <- runif(30, -1, 1)
ywnoise <- y + noise * 2
# plot point cloud on a chart
plot(x, ywnoise, xlab = NA, ylab = NA)
# combine two columns to create data grid
linoise <- cbind(x, ywnoise)
linoise <- as.data.frame(linoise)
# Select data.frame to be sent to the output Dataset port
maml.mapOutputPort("linoise");

Kiểm tra kết quả

Nhúng Python

Gõ scripts

22
import matplotlib
matplotlib.use('agg')
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
def azureml_main(dataframe1=None, dataframe2=None):
x = range(1, 31)
y = x
noise = np.random.uniform(-1, 1, 30)
ywnoise = y + noise * 2

d = {'x' : np.asarray(x), 'ywnoise' : ywnoise}


linoise = pd.DataFrame(d)

fig = plt.figure()
ax = fig.gca()
linoise.plot(kind='line', ax=ax, x='x', y='ywnoise')
fig.savefig('linoise.png')

return linoise

Kiểm chứng kết quả

23
Phần 3: Internet of Things (IoT)
Bài 1: Lập trình với Keypad & Led
Bài toán: Chương trình điều khiển 3 đèn LED bật tắt bằng Keypad. Ở trạng thái ban đầu 3 đèn
LED đều tắt. Khi nhấn button 0 trên keypad đèn led1 sẽ sáng. Sau đó nhấn button 1 đèn led2 sẽ
sáng, led1 sẽ tắt. Sau đó nhấn button 0 cả 3 đèn sẽ sáng. Sau đó nhấn button 2 tất cả đèn sẽ tắt.

Từ khóa Mô tả lệnh Thiết bị


“light1” button pressed Nhận sự kiện nhấn của button tên light1 Keypad
Hidden led1 Tắt đèn led1 Led
Display led1 Bật đèn led1 Led
Delay 1000 Tương ứng hàm delay(1000) Mạch Arduino
Blink led1 Nhấp nháy led1 1 lần thời gian nhấp nháy 1 Led
giây
Blink led1 5 times Nhấp nháy led1 5 lần, thời gian mỗi lần nhấp Led
nháy 1 giây
Bảng 1: Mô tả lệnh cho thiết bị Led, keypad4x4

1
Bước 1: Tạo dự án

Bước 1.1: Chon menu File à New à project… Cửa sổ tiếp theo hiện ra, nhấn vào thư mục có
tên General à Project à Next

Hình 1: Tạo dự án cho ứng dụng.


Bước 1.2: Màn hình kế tiếp nhập tên ứng dụng (Tên sẽ được dùng làm tên cho file phát sinh ra
mã nguồn). Nhập tên project vào mục Project Name à Finish.

Hình 2: Đặt tên cho dự án.


Bước 2: Tạo file mô tả thiết bị

2
Bước 2.1 Click phải chuột vào project vừa tạo à New à Other… Giao diện Select a wizard sẽ
hiện ra, chọn Example EMF Model Creation Wizards, chọn Iotw model à Next.

Hình 3: Tạo file mô tả thiết bị.

3
Bước 2.2: Đặt tên cho file mô tả thiết bị. Nhập tên file vào mục File name à Next. Một dự án có
thể có nhiều file mô tả thiết bị.

Lưu ý: Ở phiên bản đầu tiên này file mô tả thiết bị chính cho ứng dụng (file sẽ được xử lý khi
phát sinh mã) phải được đặt tên là “mainboard”. Ở các phiên bản sau sẽ cho phép người dùng
tùy chọn file khi phát sinh mã.

Hình 4: Đặt tên cho file mô tả thiết bị.

4
Bước 2.3: Trong giao diện này, chọn loại bo mạch cho ứng dụng. Chọn thiết bị Arduino UNO R3
trong mục Model Object à Finish.

Lưu ý: Trong phiên bản này chỉ hỗ trợ cho Arduino UNO R3. Các thiết bị khác sẽ được thêm
trong các phần sau.

Hình 5: Chọn loại thiết bị.

5
Bước 3: Tạo file mô tả ứng dụng.

Bước 3.1 Làm tương tự các bước 2.1 và 2.2. Trong bước 2.2 đặt tên file là stateSchema à Next.

Hình 6: Đặt tên file mô tả ứng dụng.

6
Bước 3.2 Trong giao diện này, chọn loại file là State Schema (file để mô tả ứng dụng) trong mục
Model Object à Finish.

Hình 7: Chọn loại file State Schema.


Kết quả.

Sau khi tạo 2 file trên. Ta có dự án như sau.

Hình 8: Dự án được tạo.

7
Bước 4: Mô tả thiết bị.

Bước 4.1: Click phải chuột vào file mô tả thiết bị à Open with à IoTWMainboard Editor.

Hình 9: Mở file mô tả thiết bị bằng giao diện đồ họa.

8
Giao diện mô tả thiết bị.

Hình 10: Giao diện mô tả thiết bị.


Tùy chỉnh các thuộc tính thiết bị trong giao diện properties. Để mở giao diện properties, chọn
Window à Show view à Properties.

Hình 11: Giao diện properties.

9
Bước 4.2: Kéo thả keypad4x4 và 3 đèn LED vào khung soạn thảo và thiết đặt các thông số cho
mỗi thiết bị.

Thiết đặt thông số cho keypad4x4:

Hình 12: Cài đặt thông số cho Keypad 4x4


Lưu ý: phải đặt tên button của keypad nếu muốn gọi để sử dụng.

Thiết đặt thông số cho các đèn LED

Hình 13: Cài đặt thông số cho đèn LED 1

10
Hình 14: Cài đặt thông số cho đèn LED2

Hình 15: Cài đặt thông số cho đèn LED 3

11
Bước 5: Đặc tả lược đồ trạng thái cho ứng dụng.

Bước 5.1: Mở file đặc tả bằng giao diện đồ họa. Click phải chuột vào file đặc tả ứng dụng à
Open With à IoTWStateSchema Editor.

Hình 16: Mở file đặc tả bằng giao diện đồ họa.

12
Giao diện đồ họa mô tả trạng thái ứng dụng.

Hình 17: Giao diện đồ họa đặc tả ứng dụng.


Bước 5.2: Đặc tả cho bài toán trên.

Hình 18: Đặc tả cho bài toán trên.

13
Bước 6: Phát sinh mã cho bài toán trên.

Bước 6.1: Chọn chức năng phát sinh mã

Chọn chức năng


phát sinh mã

Hình 19: Chọn chức năng phát sinh mã


Bước 6.2: Chọn dự án muốn phát sinh mã à OK.

Hình 20: Chọn dự án muốn phát sinh mã.

14
Kết quả sau khi phát sinh mã.

Hình 21: Kết quả sau khi tạo mã

File Chức năng


Log.txt Ghi lại thông tin trong quá trình phát sinh mã. Bao gồm các lỗi
nếu có.
Manual_Test1.html Tài liệu hướng dẫn của dự án vừa tạo.
Source_code_Test1.ino File mã được phát sinh từ mô tả thiết bị và lược đồ trạng thái
Bảng 1: Thông tin các file được tạo ra khi phát sinh mã
Mã nguồn được phát sinh

Hình 22: Mã nguồn được phát sinh phần 1

15
Hình 23: Mã nguồn được phát sinh phần 2

16
Hình 24: Mã nguồn sau khi phát sinh phần 3

17
Hình 25: Mã nguồn sau khi phát sinh phần 4

18
Tài liệu hướng dẫn cho ứng dụng

Hình 26: Tài liệu cho ứng dụng

19
Bước 7: Build file mã nguồn vào Arduino UNO R3

Bước 7.1: Mở chương trình Arduino IDE à File à Open à Chọn đường dẫn lưu file mã vừa
phát sinh à Open.

Hình 27: Mở File mã vừa phát sinh


Bước 7.2: Kết nối các thiết bị với bo mạch theo tài liệu hướng dẫn được phát sinh

Bước 7.3: Kết nối Arduino với Máy tính. Tải thư viện Keyad nếu Arduino IDE thiếu. Chọn Sketch
à Include library à Manage Libraries….

20
Nhập tên thư viện muốn tảià chọn thư viện tải về à Close.

Trạng thái ban đầu 3 đèn LED đều tắt

21
Hình 28: Kết nối thiết bị thực tế
Trạng thái khi nhấn nút số 0

Hình 29: Trạng thái khi nhấn nút số 0

22
Trạng thái đèn LED khi nhấn nút số 1

Hình 30: Trạng thái khi nhấn nút số 1


Trạng thái đèn LED khi nhấn phím 2

23
Hình 31: Trạng thái ban đầu của 3 đèn LED
Bài tập

1. Đọc hiểu code phát sinh. Hiểu cách chương trình xử lý trạng thái ứng dụng.

2. Tạo chương trình đèn led nhấp nháy liên tục (thời gian nhấp nhày tùy chỉnh).

3. Tạo chương trình: điều khiển 2 đèn led.

• Ở trạng thái ban đầu đèn 1 sáng nhấp nháy (thời gian nhấp nháy 1 giây) 5 lần.
• Sau đó nhấn nút 1 của keypad4x4 đèn led 2 nhấp nháy 3 lần.
• Nhấn nút 2 2 đèn led đều nhấp nháy (số lần tùy chỉnh). Hai đèn nhấp nháy cùng lúc.
• Nhấn nút 3 trở lại trạng thái ban đầu.

24
Bài 2: Lập trình với Led & Button
Bài toán: Điều khiển đèn 2 led bật tắt bằng 1 button. Ở trạng thái ban đầu 2 đèn led tắt. Nhấn
button lần 1 2 đèn led bật, nhấn button lần 2 đèn led1 bật nhấp nháy, nhấn button lần 3 trở về
trạng thái ban đầu 2 đèn led đều tắt.

Tạo project gồm các file như tutorial_1.

Từ khóa Mô tả lệnh Thiết bị


“button1” push Nhận sự kiện của push Push button
button: button1
Bảng 2: Mô tả lệnh cho push button

Bước 1: Mô tả thiết bị.

Kéo thả button và 2 đèn LED vào khung soạn thảo. Sau đó thiết đặt các thông số cho mỗi thiết
bị.

Thiết đặt thông số cho button:

Hình 32: Thiết đặt thông số cho button


Thiết đặt thông số cho các đèn LED

Hình 33: Thiết đặt thông số cho đèn LED 1

25
Hình 34: Thiết đặt thông số đèn LED 2
Bước 2: Đặc tả lược đồ trạng thái cho ứng dụng.

Hình 35: Đặc tả cho bài toán

26
Kết quả sau khi phát sinh mã

Mã nguồn được phát sinh.

Hình 36: Mã nguồn được phát sinh 1.

27
Hình 37: Mã nguồn được phát sinh phần 2.

28
Hình 38: Mã nguồn được phát sinh phần 3.

File hướng dẫn cấu hình thiết bị.

29
Hình 39: File hướng dẫn cấu hình thiết bị.
Sơ đồ lắp đặt

Hình 40: Sơ đồ lắp đặt

Bài tập thêm:

1. Viết chương trình điều khiển đèn 3 led. Ở trạng thái ban đầu đèn led xanh nhấp nháy 5
lần (mỗi lần 0.1 giây). Sau đó đèn vàng sáng. Sau đó bấm button đèn đỏ sáng, đèn vàng
và đèn xanh nhấp nháy. (Có thể tùy chỉnh code để hiểu rõ hơn về lập trình trên
Arduino).
2. Viết chương trình trạng thái ban đầu đèn led1 nhấp nhày khi bấm button thì led2 nhấp
nháy (không giới hạn số lần nhấp nháy).
Gợi ý: Có thể tùy chỉnh code phát sinh sao cho phù hợp với đề bài
30
Bài 3: Lập trình với Keypad & LCD
Bài toán: Điều khiển đèn LCD I2C hiển thị bằng keypad4x4. Ở trạng thái ban đầu LCD hiển thị
“Hello World”. Nhấn button1 LCD hiển thị “Welcome to DSL4Wearable”, nhấn button2 trở về
trạng thái ban đầu.

Tạo project gồm các file như tutorial_1.

Từ khóa Mô tả lệnh Thiết bị

Show “hello world” LCD hiển thị từ “hello world” LCD

Bảng 3: Mô tả lệnh cho thiết bị LCD

Bước 1: Mô tả thiết bị.

Kéo thả keypad4x4 và LCD I2C vào khung soạn thảo. Sau đó cài đặt các thông số cho mỗi thiết bị.

Thiết đặt thông số cho keypad4x4:

Hình 41: Cài đặt thông số cho Keypad 4x4

Thiết đặt thông số cho các LCD I2C

31
Hình 42: Cài đặt thông số cho LCD I2C

Bước 2: Đặc tả lược đồ trạng thái cho ứng dụng.

Hình 43: Đặc tả cho bài toán trên.

32
Kết quả sau khi phát sinh mã.

Mã nguồn được phát sinh.

Hình 44: Mã nguồn được phát sinh phần 1.

Hình 45: Mã nguồn được phát sinh phần 3.


33
Hình 46: Mã nguồn được phát sinh phần 4.
Tài liệu hướng dẫn lắp đặt.

Hình 47: Tài liệu hướng dẫn lắp đặt.

34
Lắp đặt thiết bị.

Hình 48: Trạng thái ban đầu LCD

35
Hình 49: Trạng thái nhấn nút 1
2. Bài tập:
Tạo 1 menu đơn giản gồm 6 dòng. Trạng thái ban đầu hiển thị lên giao diện 4 dòng đầu. Nếu
nhấn nút 1 giao diện cuộn xuống 1 dòng (hiển thị menu từ 2 à 5). Nếu nhấn nút 2 để cuộn lên 1
dòng. (Có thể sửa mã phát sinh để việc cuộn menu chuyên nghiệp hơn).

Bài 4: Lập trình với Keypad, Buzz, Led


Bài toán: Chương trình điều khiển đèn LED và Buzz bằng Keypad. Ở trạng thái ban đầu đèn LED,
Buzz tắt. Khi nhấn button 1 trên keypad đèn led sẽ sáng và Buzz sẽ phát ra âm thanh. Khi nhấn
button 1 lần nữa sẽ trở về trạng thái ban đầu.

Tạo project gồm các file như tutorial_1.

Từ khóa Mô tả lệnh Thiết bị


Beep buzz Phát âm thanh của buzz Buzz
36
Bảng 4: Mô tả lệnh của thiết bị Buzz
Bước 1: Mô tả thiết bị.

Kéo thả keypad4x4, đèn LED và Buzz vào khung soạn thảo. Sau đó cài đặt các thông số cho mỗi
thiết bị.

Thiết đặt thông số cho keypad4x4:

Hình 50: Cài đặt thông số cho Keypad 4x4

Thiết đặt thông số cho đèn LED

Hình 51: Cài đặt thông số cho đèn LED


37
Thiết đặt thông số cho Buzz

Hình 52: Cài đặt thông số cho Buzz


Bước 2: Đặc tả lược đồ trạng thái cho ứng dụng.

Đặc tả cho bài toán trên.

Hình 53: Đặc tả cho bài toán trên.

38
Kết quả sau khi phát sinh mã

Mã nguồn được phát sinh.

Hình 54: Mã nguồn được phát sinh phần 1

Hình 55: Mã nguồn được phát sinh phần 2.

39
Hình 56: Mã nguồn được phát sinh phần 3.
Tài liệu hướng dẫn lắp đặt.

40
Hình 57: Tài liệu hướng dẫn lắp đặt.
Lắp đặt thiết bị

Hình 58: Trạng thái ban đầu.

41
Hình 59: Trạng thái nhấn button 1
3. Bài tập:
1. Tạo chương trình phát nhạc với buzz.

Gợi ý: chỉnh tần số (Tone) của buzz để phát ra âm thanh với tần số khác nhau.

2. Tạo chương trình đèn led nhấp nháy và buzz phát ra âm thanh theo nhịp độ.

Bài 5: Lập trình với Led và Wi-Fi


Bài toán: Chương trình điều khiển đèn LED qua Wi-Fi. Ở trạng thái ban đầu đèn LED tắt. Khi nhấn
chọn nút Turn On đèn led sẽ sáng. Khi chon nút Turn Off đèn led sẽ tắt.

Tạo project gồm các file như tutorial_1.

Bước 1: Mô tả thiết bị.

Kéo thả keypad4x4, đèn LED vào khung soạn thảo. Sau đó cài đặt các thông số cho mỗi thiết bị.

Thiết đặt thông số cho Wi-Fi:

42
Hình 60: Cài đặt thông số cho Wi-Fi
Tên thuộc tính Ý nghĩa
Mode Chế đô truy cập Wi-Fi
Password AP Mật khẩu mạng Wi-Fi muốn kết nối
Password ST Mật khẩu của Wi-Fi
SSID AP SSID của Wi-Fi muốn kết nối
SSID ST SSID của Wi-Fi
Host Địa chỉ của Wi-Fi esp8266
Bảng 5: các thuộc tính của Wi-Fi ESP 8266

43
Thiết đặt thông số cho led

Hình 61: Cài đặt thông số đèn led.

Bước 2: mô tả trạng thái chương trình.

Hình 62: Lược đồ trạng thái cho chương trình.

44
Kết quả

Mã nguồn sau khi phát sinh.

Hình 63: Mã nguồn sau khi phát sinh

45
Hình 64: Mã nguồn sau khi phát sinh

Hình 65: Mã nguồn sau khi phát sinh

46
Hình 66: Mã nguồn sau khi phát sinh.

Hình 67: Mã nguồn phát sinh

47
Tài liệu hướng dẫn lắp đặt.

Hình 68: Tài liệu lắp đặt.


4. Hoàn thiện chương trình
Hãy tùy chỉnh code phát sinh để thực hiện bài toán trên. Việc điều khiển đèn led bằng web.
Người dùng mở trình duyệt web truy cập vào địa chỉ 192.168.4.1 (địa chỉ mặc định của
Wi-Fi). Chương trình sẽ gửi đoạn giao diện bằng html để người dùng có thể thao tác.

Thêm đoạn code html để hiển thị giao diện cho người dùng một cách trực quan.

Hình 69: Code html giao diện wed khi kết nối với Wi-Fi

48
Hình 70: Giao diện khi kết nối.
5. Lắp đặt thiết bị.

Hình 71: kết nối thiết bi.

49
Bật đèn led

Hình 72: Bật đèn led.

Hình 73: Trạng thái đèn led bật.

50
Tắt đèn led.

Hình 74: Tắt đèn led.

Hình 75: Trạng thái đèn led tắt

51

You might also like