Professional Documents
Culture Documents
Giáo Trình Thực Hành Môn Công Nghệ Mới Trong Phát Triển Ứng Dụng
Giáo Trình Thực Hành Môn Công Nghệ Mới Trong Phát Triển Ứng Dụng
HCM
KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN KHOA HỌC MÁY TÍNH
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:
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
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):
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.
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:
Yêu cầu:
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.
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
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:
Yêu cầu:
Chi tiết:
float(thu) + float(fri)
8
Bài thực hành số 4.
Nội dung:
Yêu cầu:
Chi tiết:
panel.set_background("yellow")
9
panel = DrawingPanel(200, 200)
panel.setBackground(Color.LIGHT_GRAY);
Graphics g = panel.getGraphics();
g.setColor(Color.BLACK); // body
g.setColor(Color.RED); // wheels
g.setColor(Color.CYAN); // windshield
10
Bài thực hành số 5.
Nội dung:
Yêu cầu:
Chi tiết:
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:
Yêu cầu:
Chi tiết:
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:
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)
# Combine columns x and ywnoise to create two column grid named linoise
linoise <- cbind(x, ywnoise)
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
# 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ả
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:
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");
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
fig = plt.figure()
ax = fig.gca()
linoise.plot(kind='line', ax=ax, x='x', y='ywnoise')
fig.savefig('linoise.png')
return linoise
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.
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
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.
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ã.
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.
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.
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.
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.
8
Giao diện mô tả thiết bị.
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ị.
10
Hình 14: Cài đặt thông số cho đèn LED2
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.
12
Giao diện đồ họa mô tả trạng thái ứng dụng.
13
Bước 6: Phát sinh mã cho bài toán trên.
14
Kết quả sau khi phát sinh mã.
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
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.
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.
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
22
Trạng thái đèn LED khi nhấn nút số 1
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).
• Ở 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.
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ị.
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.
26
Kết quả sau khi phát sinh mã
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.
29
Hình 39: File hướng dẫn cấu hình thiết bị.
Sơ đồ lắp đặt
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.
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ị.
31
Hình 42: Cài đặt thông số cho LCD I2C
32
Kết quả sau khi phát sinh mã.
34
Lắp đặt thiết bị.
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).
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ị.
38
Kết quả sau khi phát sinh mã
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ị
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 độ.
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ị.
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
44
Kết quả
45
Hình 64: Mã nguồn sau khi phát sinh
46
Hình 66: Mã nguồn sau khi phát sinh.
47
Tài liệu hướng dẫn lắp đặt.
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ị.
49
Bật đèn led
50
Tắt đèn led.
51