You are on page 1of 60

Đồ án tốt nghiệp đại học Lời cảm ơn

LỜI CẢM ƠN
Để hoàn thành được đồ án này là kết quả của toàn bộ nỗ lực của bản thân em
trong suốt thời gian theo học tại trường, là toàn bộ năng lực của em khi bắt tay vào quá
trình nghiên cứu. Để có được kết quả như ngày hôm nay chúng em không bao giờ
quên được sự giúp đỡ và sự giảng dạy rất nhiệt tình của các Thầy, Cô trong khoa Điện
– Điện Tử - Học Viên Công Nghệ Bưu Chính Viên Thông. Các Thầy, Cô là những đội
ngũ đi trước rất am hiểu về lĩnh vực khoa học kỹ thuật đã tận tình giảng dạy và giúp
chúng em hoàn thành được rất nhiều đề tài.
Em xin chân thành cảm ơn cô Vũ Anh Đào đã tận tình chỉ dạy, hướng dẫn đóng góp
những ý kiến quý báu giúp em có thể hoàn thành đề tài đúng thời gian quy định.
Em cũng xin cảm ơn đến những người bạn thân đã không ngại chia sẻ về kinh nghiệm
làm đề tài cũng như hỗ trợ các công việc để giúp nhóm em hoàn thành tốt được đề tài
này.
Em xin cảm ơn !

SVTH: Ngô Minh Đức-D12XLTH 1


Đồ án tốt nghiệp đại học Mục lục

MỤC LỤC

SVTH: Ngô Minh Đức-D12XLTH 2


Đồ án tốt nghiệp đại học Danh mục hình vẽ

DANH MỤC HÌNH VẼ

SVTH: Ngô Minh Đức-D12XLTH 3


Đồ án tốt nghiệp đại học Danh mục các ký hiệu và chữ viết tắt

DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT

Từ viết tắt Tiếng Anh Tiếng Việt

ADC Analog to Digital Converter Bộ chuyển đổi tương tự


sang số

DAC Digital to Analog Converter Bộ chuyển đổi số sang


tương tự

DSP Digital Signal Processing Xử lý tín hiệu số

ITO Indium Tin Oxide Một hợp chất oxit của thiếc

SPI Serial Peripheral Interface Giao thức truyền thông SPI

PCB Printed Circuit Board Bảng mạch in

UART Universal Asynchronous Truyền thông nối tiếp


Receiver/Transmitter không đồng bộ

USB Universal Serial Bus Chuẩn kết nối USB

WIFI Wireless Fidelity Mạng không dây

DMA Direct Memory Access Kênh truy nhập bộ nhớ

VDK Vi điều khiển

SVTH: Ngô Minh Đức-D12XLTH 4


Đồ án tốt nghiệp đại học Lời mở đầu

LỜI MỞ ĐẦU

Ngày nay với sự phát triển của ngành điện tử và ứng dụng điện tử đã giúp sự
sáng tạo của con người trở thành hiện thực. Các lĩnh vực của cuộc sống đều áp dụng
những thiết bị điện tử và dường như nhìn đâu trong gia đình chúng ta cũng có thiết bị
điện tử. Ngành điện tử và ứng dụng điện tử đã tạo chỗ đứng và khẳng định được tầm
quan trọng của mình đối với nhu cầu của con người.
Với những ứng dụng cho các hệ thống nhúng ngày càng trở nên phổ biến, từ
những ứng dụng đơn giản như điều khiển một chốt đèn giao thông định thời, đếm sản
phẩm trong một dây chuyền sản xuất, điều khiển tốc độ động cơ điện một chiều, một
đồng hồ thời gian thực.Đến các ứng dụng phức tạp như hệ thống điều khiển robot, bộ
kiểm soát trong nhà máy hoặc hệ thống kiểm soát các máy năng lượng hạt nhân. Các
hệ thống tự động trước đây sử dụng nhiều công nghệ khác nhau như các hệ thống tự
động hoạt động bằng nguyên lý khí. Các thiết bị, hệ thống này có chức năng xử lý và
mức độ tự động thấp so với các hệ thống tự động hiện đại được xây dựng trên nền tảng
của các hệ thống nhúng.
Trong nhiều năm trước, các dòng vi điều khiển 8051 được sinh viên dùng nhiều
với tính năng đơn giản, dễ sử dụng; AVR được sử dụng nhiều trong các cuộc thi
Robocon nhờ tốc độ sử lý khá cao, ổn định; PIC với ưu thế tốc độ cao, chi phí thấp
hơn cũng được nghiên cứu, sử dụng nhiều. Nhưng trong một vài năm trở lại đây, có
một dòng vi điều khiển mới, càng ngày càng nắm vị trí quan trọng trong các lĩnh vực
đòi hỏi tốc độ xử lý cao, sản xuất các dòng diện thoại di động smartphone, giám sát, an
ninh… Đó là họ vi điều khiển ARM. Với rất nhiều thế hệ ra đời, với nhiều tính năng,
công dụng khác nhau.
Với nhiều tính năng vượt trội của ARM và xu thế lựa chọn dòng vi điều khiển
mới ở Việt Nam nên trong đồ án tốt nghiệp này, dưới sự giúp đỡ của Cô Vũ Anh Đào,
em thực hiện đồ án “Ứng dụng lập trình điều khiển thiết bị qua wifi sử dụng chip
ARM Cortex M3 STM32F103C8T6”.
Em xin chân thành cảm ơn cô Vũ Anh Đào cùng toàn thể các thầy cô khoa Kỹ thuật
điện tử I đã tạo điều kiện và giúp đỡ em trong quá trình thực hiện đồ án tốt nghiệp này.

SVTH: Ngô Minh Đức-D12XLTH 5


Đồ án tốt nghiệp đại học Chương I: Giới thiệu đề tài

CHƯƠNG I. GIỚI THIỆU ĐỀ TÀI

1.1 Cơ sở lựa chọn đề tài


Ngày nay, công nghệ kết nối đầu tiên cần nhắc đến hiển nhiên là Wifi – công
nghệ kết nối không dây phổ biến nhất hiện nay. Cũng vì tính phổ biến của dạng kết nối
này mà cái tên Wifi thường bị lạm dụng để chỉ kết nối không dây nói chung.
Lí do mà kết nối Wifi được ưa chuộng như vậy đơn giản là vì khả năng hoạt
động hiệu quả trong phạm vi vài chục đến vài trăm mét của các mạng WLAN.
Và trong thời đại công nghiệp hóa hiện đại hóa hiện nay, việc phát minh và chế
tạo ra các thiết bị thông minh có khả năng điều khiển từ xa đang và sẽ rất được quan
tâm và rất hữu ích cho cuộc sống hàng ngày.
Vì mục tiêu công nghệ hiện đại hóa ngày càng phát triển, tôi đã quyết định làm
một đồ án về điều khiển thiết bị qua WIFI. Khi dự án hoàn thành chúng ta có thể điều
khiển các thiết bị điện trong nhà thông qua sóng WIFI, bằng cách tương tác qua các
nút nhấn để hiển thị trạng thái hoạt động của các thiết bị trên giao diện Web. Như vậy,
dù chúng ta ở bất cứ nơi nào có sóng wifi đều có thể sử dụng được các thiết bị đã kết
nối với module điều khiển.
Khi dự án thành công và được áp dụng rộng rãi thì sẽ rất tiện lợi cho cuộc sống
thường nhật, giúp cho đất nước ngày càng phát triển.
1.2 Giới thiệu đề tài
Nội dung của đồ án bao gồm 3 chương là:
Chương I: Giới thiệu đề tài
Chương II: Tìm hiểu các linh kiện, công nghệ, thiết bị
Chương III: Thiết kế sản phẩm thực
1.3. Giới hạn của đề tài.
Vì em sử dụng bộ thu phát cảm biến có khoảng cách không xa nên chỉ có thể sử
dụng trong phạm vi 20 30 mét. Nếu có đều kiện em sẽ cải tiến để có độ bao phủ của
sóng wifi tới mức xa nhất có thể.
1.4. Đối tượng nghiên cứu.
• Họ vi điều khiển ARM COTEX M3.
• Bộ thu wifi ESP8266 V7

SVTH: Ngô Minh Đức-D12XLTH 6


Đồ án tốt nghiệp đại học Chương II: Tìm hiểu các linh kiện, công nghệ , thiết bị

CHƯƠNG II. TÌM HIỂU CÁC LINH KIỆN, CÔNG NGHỆ, THIẾT BỊ

2.1. Công nghệ WIFI


2.1.1. Giới thiệu về WIFI
Wifi mà mạng kết nối Internet không dây, là từ viết tắt của Wireless Fidelity, sử
dụng sóng vô tuyến để truyền tín hiệu. Loại sóng vô tuyến này tương tự như sóng điện
thoại, truyền hình và radio. Và trên hầu hết các thiết bị điện tử ngày nay như máy tính,
laptop, điện thoại, máy tính bảng... đều có thể kết nối Wifi.

Hình 2.1. Wifi sử dụng trên các thiết bị thông minh


Kết nối Wifi dựa trên các loại chuẩn kết nối IEEE 802.11, và chủ yếu hiện nay
Wifi hoạt động trên băng tần 54 Mbps và có tín hiệu mạnh nhất trong khoảng cách 100
feet (gần 31 mét, các bạn cứ thử tưởng tượng mỗi 1 tầng nhà lấy trung bình là 4 mét
thì theo lý thuyết sóng wifi phát ở tầng 1 vẫn sẽ bắt được nếu bạn đang ở tầng 7 - đó là
theo lý thuyết). Còn trong thực tế thì trong mỗi ngôi nhà thường có rất nhiều vật cản
sóng, nên bạn chỉ cần đứng trên tầng 4 hoặc 5 là tín hiệu đã yếu lắm rồi.
Lúc đầu Wifi được phát triển như là một cách để thay thế cáp Ethernet. Cho đến
thời điểm hiện tại, Wifi đã trở thành một công nghệ phổ biến cung cấp kết nối giữa các
thiết bị.

Không giống như máy thu FM trên xe ô tô, Wifi giao tiếp qua lại chủ yếu quá 2
radio sử dụng điện năng thấp hơn và phát sóng trên một khoảng cách ngắn hơn
nhiều.Hai radio cho phép người dùng web tải dữ liệu từ Internet cũng như upload các
thông tin - thậm chí là địa chỉ submit thông qua bộ đếm trình duyệt giao tiếp 2
chiều.Wifi phức tạp hơn so với vô tuyến mặt đất đó là Wifi sử dụng giao thức kết nối

SVTH: Ngô Minh Đức-D12XLTH 7


Đồ án tốt nghiệp đại học Chương II: Tìm hiểu các linh kiện, công nghệ , thiết bị

Internet (Internet Protocol) để giao tiếp. Ngôn ngữ này của Internet tạo ra cấu trúc
Wifi.

2.1.2. Nguyên tắc hoạt động của Wifi


Để có được sóng Wifi thì chúng ta cần phải có bộ phát Wifi - chính là các thiết
bị như modem, router. Đầu vào, tín hiệu Internet nguồn (được cung cấp bởi các đơn vị
ISP như FPT, Viettel, VNPT, CMC... hiện nay). Thiết bị modem, router sẽ lấy tín hiệu
Internet qua kết nối hữu tuyến rồi chuyển thành tín hiệu vô tuyến, và gửi đến các thiết
bị sử dụng như điện thoại smartphone, máy tính bảng, laptop... Đây là quá trình nhận
tín hiệu không dây (hay còn gọi là adapter) - chính là card wifi trên laptop, điện thoại...
và chuyển hóa thành tín hiệu Internet. Và quá trình này hoàn toàn có thể thực hiện
ngược lại, nghĩa là router, modem nhận tín hiệu vô tuyến từ adapter và giải mã chúng,
gửi qua Internet.

Hình 2.2. Các kết nối WIFI


2.1.3.Ưu nhược điểm của Wifi.
Hiện nay, có rất nhiều loại sóng có thể kết nối internet như sóng 3g, 4g,…
Nhưng sóng wifi có nhiều ưu điểm nổi trội hơn cả.

Mạng wifi không dây không khác gì các hệ thống mạng thông thường. Mạng
cho phép người dùng truy xuất tài nguyên mạng ở bất kỳ địa điểm nào trong khu vực
được triển khai (home hay office). Với lượng gia tăng người sử dụng laptop thì đây là
một điều rất tuyệt vời bởi khi sử dụng mạng không dây đồng nghĩa với việc ta nói
không với những dây cáp cổ điển.

Ưu điểm di động: Cùng với sự phát triển của các mạng không dây công cộng,
người sử dụng có thể truy cập Internet ở mọi nơi. Ví dụ như ở các quán Café, người
dùng có thể truy cập Internet(mạng không dây) miễn phí.

Hiệu quả: Người sử dụng luôn duy trì kết nối mạng khi họ cần phải đi từ nơi
này tới nơi khác.

SVTH: Ngô Minh Đức-D12XLTH 8


Đồ án tốt nghiệp đại học Chương II: Tìm hiểu các linh kiện, công nghệ , thiết bị

Khả năng mở rộng: Mạng wifi không dây đáp ứng tức thì khi gia tăng số lượng
người dùng. Bạn và nhiều người khác có thể sử dụng cùng 1 lúc mà không cần phải
kết nối bằng đường cáp như cách cổ điển trước đây. Với hệ thống cổ điển trước đây
nếu bạn muốn tăng thêm lượng người sử dụng mạng trong hệ thống đồng nghĩa với
việc tăng thêm bộ chia và cáp rất lằng nhằng và mất thời gian cũng như tiền bạc.

Hình 2.3. Hình ảnh các ưu điểm WIFI


Bên cạnh những ưu điểm nổi trội nêu trên mạng không dây còn có những điểm hạn
chế sau:

- Độ bảo mật: Môi trường kết nối không dây là không khí nên khả năng bị tấn
công của người dùng là rất cao. Tuy vậy, hiện nay các thiết bị phát wifi cũng
đã được nhà sản xuất các trang bị các biện pháp bảo mật khá hữu hiệu, đảm
bảo an toàn thông tin cá nhân cho người sử dụng.

- Phạm vi của hệ thống: Với một mạng chuẩn 802.11g, các thiết bị chuẩn chỉ có
thể hoạt động tốt nhất trong phạm vi vài chục mét. Hệ thống này phù hợp
trong một căn hộ, với một tòa nhà lớn thì hệ thống lại không đáp ứng được
nhu cầu. Giải quyết vấn đề này cần phải mua thêm Repeater hay access point,
đẫn đến chi phí gia tăng lên rất nhiều.

- Độ tin cậy: Vì sử dụng sóng vô tuyến để truyền thông nên việc bị nhiễu, tín
hiệu bị giảm do tác động của các thiết bị khác(lò vi sóng,…) là không thể
tránh khỏi. Nó làm giảm đáng kể rất nhiều hiệu quả hoạt động của mạng.

SVTH: Ngô Minh Đức-D12XLTH 9


Đồ án tốt nghiệp đại học Chương II: Tìm hiểu các linh kiện, công nghệ , thiết bị

- Tốc độ: Việc sử dụng hệ thống không dây đồng nghĩa với tốc độ của mạng
không dây(1-125 Mbps) chậm hơn rất nhiều so với mạng cổ điển sử dụng cáp
(100 mbps đến hang Gbps)

2.1.4.Các chuẩn kết nối Wifi

Hình 2.4. Các chuẩn kết nối WIFI


Kết nối 802.11: Wifi thế hệ thứ nhất. Năm 1997, IEEE (Institute of Electrical
and Electronics Engineers) đã giới thiệu một chuẩn đầu tiên cho WLAN. Chuẩn này
được gọi là 802.11 sau khi tên của nhóm được thiết lập nhằm giám sát sự phát triển
của nó.
Tuy nhiên, 802.11chỉ hỗ trợ cho băng tần mạng cực đại lên đến 2Mbps, sử dụng
băng tần 2,4Ghz của sóng radio hoặc hồng ngoại – quá chậm đối với hầu hết các ứng
dụng. Với lý do đó, các sản phẩm không dây thiết kế theo chuẩn 802.11 ban đầu dần
không được sản xuất.
Kết nối 802.11b: Wi-Fi thế hệ thứ hai. IEEE đã mở rộng trên chuẩn 802.11 gốc
vào tháng Bảy năm 1999, đó chính là chuẩn 802.11b. Chuẩn này hỗ trợ băng thông lên
đến 11Mbps, tương quan với Ethernet truyền thống.
802.11b sử dụng tần số vô tuyến (2.4 GHz) giống như chuẩn ban đầu 802.11.
Các hãng thích sử dụng các tần số này để chi phí trong sản xuất của họ được giảm.
Các thiết bị 802.11b có thể bị xuyên nhiễu từ các thiết bị điện thoại không dây (kéo
dài), lò vi sóng hoặc các thiết bị khác sử dụng cùng dải tần 2.4 GHz. Mặc dù vậy, bằng
cách cài đặt các thiết bị 802.11b cách xa các thiết bị như vậy có thể giảm được hiện
tượng xuyên nhiễu này.
 Ưu điểm của 802.11b – giá thành thấp nhất; phạm vi tín hiệu tốt và không dễ bị
cản trở.
 Nhược điểm của 802.11b – tốc độ tối đa thấp nhất; các ứng dụng gia đình có thể
xuyên nhiễu.
Kết nối 802.11a: Cũng là thế hệ thứ hai.Trong khi 802.11b vẫn đang được phát
triển, IEEE đã tạo một mở rộng thứ cấp cho chuẩn 802.11 có tên gọi 802.11a. Vì
802.11b được sử dụng rộng rãi quá nhanh so với 802.11a, nên một số người cho rằng
802.11a được tạo sau 802.11b. Tuy nhiên trong thực tế, 802.11a và 802.11b được tạo

SVTH: Ngô Minh Đức-D12XLTH 10


Đồ án tốt nghiệp đại học Chương II: Tìm hiểu các linh kiện, công nghệ , thiết bị

một cách đồng thời. Do giá thành cao hơn nên 802.11a chỉ được sử dụng trong các
mạng doanh nghiệp còn 802.11b thích hợp hơn với thị trường mạng gia đình.
802.11a hỗ trợ băng thông lên đến 54 Mbps và sử dụng tần số vô tuyến 5GHz.
Tần số của 802.11a cao hơn so với 802.11b chính vì vậy đã làm cho phạm vi của hệ
thống này hẹp hơn so với các mạng 802.11b. Với tần số này, các tín hiệu 802.11a cũng
khó xuyên qua các vách tường và các vật cản khác hơn.
Do 802.11a và 802.11b sử dụng các tần số khác nhau, nên hai công nghệ này
không thể tương thích với nhau. Chính vì vậy một số hãng đã cung cấp các thiết bị
mạng hybrid cho 802.11a/b nhưng các sản phẩm này chỉ đơn thuần là bổ sung thêm
hai chuẩn này.
 Ưu điểm của 802.11a – tốc độ cao; tần số 5Ghz tránh được sự xuyên nhiễu từ
các thiết bị khác.
 Nhược điểm của 802.11a – giá thành đắt; phạm vi hẹp và dễ bị che khuất.
Kết nối 802.11g Wi-Fi thế hệ thứ ba. Vào năm 2003, các sản phẩm WLAN hỗ
trợ một chuẩn mới hơn đó là 802.11g, được đánh giá cao trên thị trường. 802.11g thực
hiện sự kết hợp tốt nhất giữa 802.11a và 802.11b. Nó hỗ trợ băng thông lên đến
54Mbps và sử dụng tần số 2.4 Ghz để có phạm vi rộng. 802.11g có khả năng tương
thích với các chuẩn 802.11b, điều đó có nghĩa là các điểm truy cập 802.11g sẽ làm
việc với các adapter mạng không dây 802.11b và ngược lại.
 Ưu điểm của 802.11g – tốc độ cao; phạm vi tín hiệu tốt và ít bị che khuất.
 Nhược điểm của 802.11g – giá thành đắt hơn 802.11b; các thiết bị có thể bị
xuyên nhiễu từ nhiều thiết bị khác sử dụng cùng băng tần.
Kết nối 802.11n: Wi-Fi thế hệ thứ tư. Năm 2009 một chuẩn mới Wi-Fi được ra mắt
chính là 802.11n. Đây là chuẩn được thiết kế để cải thiện cho 802.11g trong tổng số
băng thông được hỗ trợ bằng cách tận dụng nhiều tín hiệu không dây và các anten
(công nghệ MIMO).
Các kết nối 802.11n sẽ hỗ trợ tốc độ tối đa 600Mb/s (trên thị trường phổ biến có
các thiết bị 150Mb/s, 300Mb/s và 450Mb/s). 802.11n cũng cung cấp phạm vi bao phủ
tốt hơn so với các chuẩn Wi-Fi trước nó nhờ cường độ tín hiệu mạnh của nó. Chuẩn
này có thể hoạt động trên cả hai băng tần 2,4GHz lẫn 5GHz và nếu router hỗ trợ thì hai
băng tần này có thể cùng được phát sóng song song nhau. Thiết bị 802.11n sẽ tương
thích với các thiết bị 802.11g.
 Ưu điểm của 802.11n – tốc độ nhanh và phạm vi tín hiệu tốt nhất; khả năng
chịu đựng tốt hơn từ việc xuyên nhiễu từ các nguồn bên ngoài.
 Nhược điểm của 802.11n – giá thành đắt hơn 802.11g; sử dụng nhiều tín hiệu
có thể gây nhiễu với các mạng 802.11b/g ở gần.
Kết nối 802.11ac: Wi-Fi thế hệ thứ năm. Chuẩn Wifi thế hệ thứ 5, 802.11ac ra đời
trong năm 2013. So với các chuẩn trước đó, 802.11ac hỗ trợ tốc độ tối đa hiện là

SVTH: Ngô Minh Đức-D12XLTH 11


Đồ án tốt nghiệp đại học Chương II: Tìm hiểu các linh kiện, công nghệ , thiết bị

1730Mb/s (sẽ còn tăng tiếp) và chỉ chạy ở băng tần 5GHz. Một số mức tốc độ thấp
hơn (ứng với số luồng truyền dữ liệu thấp hơn) bao gồm 450Mb/s và 900Mb/s.
Về mặt lý thuyết, Wi-Fi 802.11ac sẽ cho tốc độ cao gấp ba lần so với Wi-Fi
802.11n ở cùng số luồng (stream) truyền, ví dụ khi dùng ăng-ten 1x1 thì Wi-Fi ac cho
tốc độ 450Mb/s, trong khi Wi-Fi n chỉ là 150Mb/s. Còn nếu tăng lên ăng-ten 3x3 với
ba luồng, Wi-Fi ac có thể cung cấp 1300Mb/s, trong khi Wi-Fi n chỉ là 450Mb/s. Tuy
nhiên, những con số nói trên chỉ là tốc độ tối đa trên lý thuyết, còn trong đời thực thì
tốc độ này sẽ giảm xuống tùy theo thiết bị thu phát, môi trường, vật cản, nhiễu tín
hiệu...
Hiện nay, hầu hết các router Wi-Fi trên thị trường có hỗ trợ chuẩn 802.11ac sẽ
hỗ trợ thêm các chuẩn cũ, bao gồm b/g/n. Chúng cũng sẽ có hai băng tần 2,4GHz lẫn
5GHz. Đối với những router có khả năng chạy hai băng tần cùng lúc (simultaneous),
băng tần 2,4GHz sẽ được sử dụng để phát Wi-Fi n, còn 5GHz sẽ dùng để phát Wi-Fi
ac.
2.2 Một số loại điều khiển thiết bị thông minh
2.2.1 Điều khiển thiết bị qua webserver

Hình 2.5. Sơ đồ tổng quang hệ thống.


Dù đang ở cách xa ngôi nhà, người sử dụng có thể dùng máy tính được kết nối
với mạng internet hoặc các thiết bị như điện thoại, máy tính bảng có hỗ trợ Internet để
gửi tín hiệu tới bộ điều khiển tác động lên các thiết bị điện trong gia đình. Điều này rất
thuận tiện khi bạn thường xuyên phải ra khỏi nhà và muốn cập nhập trạng thái và điều
khiển hoạt động của các thiết bị điện trong ngôi nhà.
Cách thức này có thể nói là tối ưu nhất trong việc hoàn thiện những ngôi nhà
smart nhưng chi phí thực hiện lại tốn kém.

SVTH: Ngô Minh Đức-D12XLTH 12


Đồ án tốt nghiệp đại học Chương II: Tìm hiểu các linh kiện, công nghệ , thiết bị

2.2.2 Điều khiển thiết bị qua tin nhắn điện thoại


Thiết lập một hệ thống điều khiển thiết bị trong nhà từ xa thông qua tin nhắn
SMS gồm có các thiết bị đơn giản như bóng đèn, quạt máy, lò sưởi đến các thiết bị
tinh vi, phức tạp như tivi, máy giặt, điều hòa, hệ thống báo động … Nó hoạt động như
một ngôi nhà thông minh. Nghĩa là tất cả các thiết bị này có thể giao tiếp với nhau về
mặt dữ liệu thông qua một đầu não trung tâm
Chẳng hạn như việc tắt quạt, đèn điện … khi gia chủ quên chưa tắt trước khi ra
khỏi nhà. Hay chỉ với một tin nhắn SMS, gia chủ có thể bật máy điều hòa để làm mát
phòng trước khi về nhà trong một khoảng thời gian nhất định.
Nhưng kết nối này sẽ không có 1 giao diện để điều khiển các thiết bị mà nó chỉ
có thể hiển thị qua các kí hiệu trong sms.
2.2.3 Điều khiển thiết bị qua wifi
Kết hợp cả 2 loại trên thì điều khiển thiết bị qua wifi em thấy là được nhất.Loại
này thông qua 1 module thu phát wifi để kết nối với wifi tổng tạo thành kết nối. Thông
qua giao diện web người dùng có thể thấy được trạng thái hoạt động của các thiết bị
cũng như tùy chỉnh được các chế độ on off…..Hay hơn đó là mình không cần kết nối
qua internet mà chỉ cần thông qua sóng wifi là có thể sử dụng được.
2.3 Các phiên bản Module thu phát wifi ESP8266
ESP8266 là một dòng chip tích hợp Wi-Fi 2.4Ghz có thể lập trình được, không
biết có bạn nào thắc mắc là modem wifi ở nhà nó hoạt động thế nào, cách thức ra làm
sao không nhỉ ? Nếu bạn cũng đang tìm hiểu cũng như muốn điều khiển một cái gì đó
từ xa thì đây là một modul thích hợp cho bạn làm điều đó.
ESP8266 cần ít nhất thêm 7 linh kiện nữa mới có thể hoạt động, trong đó phần
khó nhất là Antena. Đòi hỏi phải được sản xuất, kiểm tra với các thiết bị hiện đại. Do
đó, trên thị trường xuất hiện nhiều Module và Board mạch phát triển đảm đương hết
để người dùng đơn giản nhất trong việc phát triển ứng dụng. Một số Module và Board
phát triển phổ biến:

SVTH: Ngô Minh Đức-D12XLTH 13


Đồ án tốt nghiệp đại học Chương II: Tìm hiểu các linh kiện, công nghệ , thiết bị

Bảng 1.1. Bảng so sánh các thông số.

Phiên bản Số chân

ESP-01 8

ESP-02 8

ESP-03 14

ESP-04 14

ESP-05 5

ESP-06 12+GND

ESP-07 16

ESP-08 14

ESP-08 New 16

ESP-09 12+GND

ESP-10 5

ESP-11 8

ESP-12 16

ESP-12-E 22

ESP-13 18

ESP-14 22

WROOM-02 18

WT8266-S1 18

Hiện tại thì đã có tới 14 phiên bản của ESP8266, quá nhiều sự lựa chọn cho
chúng ta. Nhưng vì ở Việt Nam không phải lúc nào cũng có đủ tất cả nên mình sẽ giới
thiệu 2 phiên bản ESP8266 phổ biến hiện nay. Sau đây là 1 số loại phiên bản thông
dụng:

ESP-01

SVTH: Ngô Minh Đức-D12XLTH 14


Đồ án tốt nghiệp đại học Chương II: Tìm hiểu các linh kiện, công nghệ , thiết bị

Hình 2.6. ESP-01


Tính năng
• Mạch nhỏ, gọn (24.75mm x 14.5mm)
• Điện áp làm việc 3.3v
• Tích hợp sẳn anten PCB trace trên module
• Có hai led báo hiệu: led nguồn, led TXD
• Có các chế độ: AP, STA, AT + STA
• Lệnh AT rất đơn giản, dễ dàng sử dụng
• Khoảng cách giữa các chân 2.54mm
• Sơ đồ chân

SVTH: Ngô Minh Đức-D12XLTH 15


Đồ án tốt nghiệp đại học Chương II: Tìm hiểu các linh kiện, công nghệ , thiết bị

Hình 2.7. Sơ đồ chân ESP - 01


ESP-12

Hình 2.8. ESP-12


Tính năng
• Sử dụng nguồn 3.3v
• Tích hợp anten PCB trace trên module
• Tiêu chuẩn wifi: 802.11b/g/n, với tần số 2.4GHz và hổ trợ bảo mật WPA/WPA2

SVTH: Ngô Minh Đức-D12XLTH 16


Đồ án tốt nghiệp đại học Chương II: Tìm hiểu các linh kiện, công nghệ , thiết bị

• Khoảng cách giữa các chân 2mm


Sơ đồ chân

Hình 2.9. Sơ đồ chân ESP -12


ESP-07

H
ình 2.10. ESP - 07

Tính năng:

• Sử dụng nguồn 3.3v.

• Tích hợp sẵn anten ceramic và anten ngoài U.FL.

• Tiêu chuẩn wifi: 802.11b/g/n, với tần số 2.4GHz và hổ trợ bảo mật

SVTH: Ngô Minh Đức-D12XLTH 17


Đồ án tốt nghiệp đại học Chương II: Tìm hiểu các linh kiện, công nghệ , thiết bị

WPA/WPA2.
• Hổ trợ TCP/UDP.
• Dễ dáng sử dụng với lệnh AT.
• Có 3 chế độ hoạt động: Client, Access Point, Both Client and Access Point.
• Làm việc như các máy chủ có thể kết nối với 5 máy con.
• Khoảng cách giữa các chân 2mm.
Sơ đồ chân

Hình 2.11. Sơ đồ chân ESP - 07

• RESET: chân reset kéo xuống mass để reset

• ADC: chân đọc dữ liệu Analog

• CH_PD: Kích hoạt chip, sử dụng cho Flash Boot và updating tại module.

• VCC: Nguồn cấp 3.3V

• TXD: chân Tx của giao thức UART

• RXD: chân Rx của giao thức UART

• GND: chân mass.

• Còn lại là các chân GPIO

2.4 Tìm hiểu về ARM COTEX M3.

SVTH: Ngô Minh Đức-D12XLTH 18


Đồ án tốt nghiệp đại học Chương II: Tìm hiểu các linh kiện, công nghệ , thiết bị

2.4.1. Tổng quan về ARM COTEX.


Bộ xử lý Cortex là thế hệ lõi nhúng kế tiếp từ ARM. Cortex thừa kế các ưu
điểm từ các bộ xử lí ARM trước đó, nó là một lõi xử lý hoàn chỉnh, bao gồm bộ xử lí
trung tâm Cortex và một hệ thống các thiết bị ngoại vi xung quanh, Cortex cung cấp
phần xử lí trung tâm của một hệ thống nhúng. Để đáp ứng yêu cầu khắt khe và đa dạng
của các hệ thống nhúng, bộ xử lý Cortex gồm có 3 nhánh, được biểu hiện bằng các ký
tự sau tên Cortex như sau:
• Cortex-A: Bộ vi xử lý dành cho hệ điều hành và các ứng dụng của người dùng
phức tạp. Hỗ trợ các tập lệnh ARM, Thumb và Thumb-2.
• Cortex-R: Bộ xử lí dành cho các hệ thống đòi hỏi khắc khe về tính thời gian
thực. Hỗ trợ các tập lệnh ARM, Thumb, và Thumb-2.
• Cortex-M: Bộ xử lí dành cho dòng vi điều khiển, được tối ưu hóa cho các ứng
dụng nhạy cảm về chi phí. Chỉ hỗ trợ tập lệnh Thumb-2. Con số nằm cuối tên
Cortex cho biết mức độ hiệu suất tương đối, với 1 là thấp nhất và 8 là cao nhất.
Hiện nay dòng Cortex-M có mức hiệu suất cao nhất là mức 4. STM32 dựa trên
bộ xử lý Cortex-M4.
2.4.2. Các phiên bản kiến trúc ARM.

Hinh 2.12. Các phiên bản kiến trúc của lõi ARM
Tính đến thời điểm hiện tại thì phiên bản kiến trúc mới nhất của lõi ARM là
ARMv9 (Trước đó có ARMv4, ARMv5, ARMv6,…). Bộ xử lý Cortex-M3 dựa trên
kiến trúc ARMv9 M và có khả năng thực hiện tập lệnh Thumb-2.

SVTH: Ngô Minh Đức-D12XLTH 19


Đồ án tốt nghiệp đại học Chương II: Tìm hiểu các linh kiện, công nghệ , thiết bị

Hình 2.13. Bộ xử lí Cortex và đơn vị xử lí trung tâm Cortex


Thuật ngữ bộ xử lí Cortex (Cortex processor) và đơn vị xử lí trung tâm Cortex
(Cortex CPU) sẽ được sử dụng để phân biệt giữa nhúng lõi Cortex hoàn chỉnh và bộ
xử lí trung tâm RISC nội (internal RISC CPU).
Trung tâm của bộ xử lý Cortex là một CPU RISC 32-bit. CPU này có một phiên
bản được đơn giản hóa từ mô hình lập trình (programmer’s model) của ARM7/9,
nhưng có một tập lệnh phong phú hơn với sự hỗ trợ tốt cho các phép toán số nguyên,
khả năng thao tác với bit tốt hơn và khả năng đáp ứng thời gian thực tốt hơn.

SVTH: Ngô Minh Đức-D12XLTH 20


Đồ án tốt nghiệp đại học Chương II: Tìm hiểu các linh kiện, công nghệ , thiết bị

2.4.3. Đơn vị xử lí trung tâm Cortex (Cortex CPU)


Trung tâm của bộ xử lý Cortex là một CPU RISC 32-bit. CPU này có một phiên
bản được đơn giản hóa từ mô hình lập trình (programmer’s model) của ARM7/9,
nhưng có một tập lệnh phong phú hơn với sự hỗ trợ tốt cho các phép toán số nguyên,
khả năng thao tác với bit tốt hơn và khả năng đáp ứng thời gian thực tốt hơn.
2.4.3.1. Kiến trúc đường ống (Pipline)
CPU Cortex có thể thực thi hầu hết các lệnh trong một chu kì đơn. Giống như
CPU của ARM7 và ARM9, việc thực thi này đạt được với một đường ống ba tầng.
Tuy nhiên Cortex-M3 khả năng dự đoán việc rẽ nhánh để giảm thiểu số lần làm rỗng
(flush) đường ống.

Hình 2.14. Kiến trúc đường ống của ARM Cortex


2.4.3.2. Mô hình lập trình (Programmer’s model)
CPU Cortex là bộ xử lý dựa trên kiến trúc RISC, do đó hỗ trợ kiến trúc nạp và
lưu trữ (load and store architecture). Để thực hiện lệnh xử lý dữ liệu, các toán hạng
phải được nạp vào một tập thanh ghi trung tâm, các phép tính dữ liệu phải được thực
hiện trên các thanh ghi này và kết quả sau đó được lưu lại trong bộ nhớ.

Hình 2.15. Kiến trúc load và store của ARM Cortex-M3


Tập thanh ghi này bao gồm mười sáu thanh ghi 32-bit.
• Các thanh ghi R0-R12 là các thanh ghi đơn giản, có thể được dùng để
chứa các biến của chương trình.
• Thanh ghi R13 được dùng như là con trỏ ngăn xếp (stack pointer).

SVTH: Ngô Minh Đức-D12XLTH 21


Đồ án tốt nghiệp đại học Chương II: Tìm hiểu các linh kiện, công nghệ , thiết bị

Trong CPU Cortex có hai ngăn xếp được gọi là main stack và process
stack.
• Thanh ghi R14 tiếp theo được gọi là thanh ghi liên kết (link register).
Thanh ghi này được sử dụng để lưu trữ các địa chỉ trở về khi một cuộc
gọi thủ tục (call a procedure) được thực hiện. Điều này cho phép CPU
Cortex thực hiện rất nhanh việc nhập và thoát khỏi một thủ tục (fast
entry and exit to a procedure).
• Thanh ghi R15là bộđếm chương trình (Program Counter)

Hình 2.16. Mô hình lập trình của ARM Cortex-M


2.4.3.3. Thanh ghi XPSR
Ngoài tập thanh ghi trung tâm còn có một thanh ghi riêng biệt được gọi là thanh
ghi trạng thái chương trình (Program Status Register). XPSR chứa một số các vùng
chức năng quan trọng ảnh hưởng đến việc thực thi của CPU Cortex.

Hình 2.17. Thanh ghi trạng thái chương trình của CPU Cortex
• Năm bit đầu là những cờ mã điều kiện và được gán biệt hiệu (aliased) như
thanh ghi trạng thái chương trình ứng dụng. Bốn cờ N, Z, C, V (Negative,
Zero, Carry và Overflow) sẽ được thiết lập và xóa tùy thuộc vào kết quả của
một lệnh xử lýdữ liệu. Bit Q là được sử dụng bởi các lệnh toán học DPS để chỉ
ra rằng một biến đã đạt giá trị tối đa hoặc giá trị tối thiểu của nó.
• Giống như tập lệnh ARM32-bit, các lệnh Thumb-2 chỉ được thực hiện nếu mã
điều kiện của lệnh phù hợp với trạng thái của các cờ trong thanh ghi trạng thái
chương trình ứngdụng (Application Program Status Register). Nếu mã điều
kiện của lệnh không phù hợp, thì lệnh đi ngang qua đường ống như là một lệnh

SVTH: Ngô Minh Đức-D12XLTH 22


Đồ án tốt nghiệp đại học Chương II: Tìm hiểu các linh kiện, công nghệ , thiết bị

NOP (lệnh này không làm gì cả). Điều này đảm bảo rằng các lệnh đi qua đường
ống một cách trơn tru và giảm thiểu làm rỗng đường ống.
2.4.3.4 Các chế độ hoạt động của CPU.
Bộ xử lý Cortex có hai chế độ hoạt động: chế độ Thread và chế độ Handler.
CPU sẽ chạy ở chế độ Thread trong khi nó đang thực thi ở chế độ nền không có ngắt
xảy ra và sẽ chuyển sang chế độ Handler khi nó đang thực thi các ngắt đặc biệt
(exceptions).
Ngoài ra, CPU Cortex có thể thực thi mã trong chế độ đặc quyền hoặc không
đặc quyền (privileged or non-privileged mode). Trong chế độ đặc quyền, CPU có
quyền truy cập tất cả các lệnh. Trong chế độ không co đặc quyền, một số lệnh bị cấm
truy cập (như lệnh MRS và MSR cho phép truy cập vào xPSR và các trường của nó).
Ngoài ra, việc cập các thanh ghi điều khiển hệ thống trong bộ vi xử lý Cortex
cũng bị cấm. Cách sử dụng ngăn xếp (stack) cũng có thể được cấu hình. Ngăn xếp
chính (main stack-R13) có thể được sử dụng bởi cả hai chế độ Thread và Handler.
Chế độ Handler có thể được cấu hình để sử dụng ngăn xếp quá trình (process stack-
R13 banked register).

Hình 2.18. Mô hình hoạt động của chế độ Thread và Handler


Sau khi reset, bộ xử lý Cortex sẽ chạy trong cấu hình phẳng (flat
configuration). Cả hai chế độ Thread và Handler được thực thi trong chế độ đặc quyền
(privileged mode), do đó, không có sự giới hạn nào về quyền truy cập vào bất kỳ tài
nguyên của bộ xử lý. Cả hai chế độ Thread và Handler đều sử dụng ngăn xếp chính.
2.4.3.5. Tập lệnh Thumb-2
Các CPU ARM7 và ARM9 có thể thực thi hai tập lệnh: ARM 32-bit và Thumb
16-bit. Điều này cho phép người phát triển để tối ưu hoá chương trình của mình bằng
cách lựa chọn tập lệnh nào được sử dụng cho thủ tục khác nhau: lệnh 32-bit để tăng
tốc độ xử lí và lệnh 16-bit để nén mã chương trình. CPU Cortex được thiết kế để thực

SVTH: Ngô Minh Đức-D12XLTH 23


Đồ án tốt nghiệp đại học Chương II: Tìm hiểu các linh kiện, công nghệ , thiết bị

thi tập lệnh Thumb-2, là một sự pha trộn của lệnh 16-bit và 32-bit. Tập lệnh thumb-2
cải tiến 26% mật độ mã so với tập lệnh ARM 32-bit và 25% hiệu suất so với tập lệnh
Thumb 16-bit. Tập lệnh Thumb2 có một số lệnh nhân được cải tiến, có thể thực hiện
trong một chu kì đơn và khả năng thực hiện phép chia bằng phần cứng và chỉ mất từ 2-
7 chu kỳ.

Hình 2.19. Đồ thị biểu diễn hiệu năng của bộ xử lý Cortex


Điểm chuẩn bộ xử lý Cortex (Cortex processor benchmark) cho một mức độ
thực hiện là 1,25 DMIPS/MHz, cao hơn so với ARM7 (0.95 DMIPS/MHz với tập lệnh
ARM và 0.74 DMIPS/MHz với tập lệnh Thumb) và ARM9.
2.4.3.6.Bản đồ bộ nhớ (Memory Map)
Bộ xử lý Cortex-M3 là một lõi vi điều khiển được tiêu chuẩn hóa, như vậy nó
có một bản đồ bộ nhớ cũng được xác định. Mặc dù có nhiều bus nội, bản đồ bộ nhớ
này là một không gian địa chỉ 4 Gbyte tuyến tính. Bản đồ bộ nhớ này là chung cho tất
cả các thiết bị dựa trên lõi Cortex.

SVTH: Ngô Minh Đức-D12XLTH 24


Đồ án tốt nghiệp đại học Chương II: Tìm hiểu các linh kiện, công nghệ , thiết bị

Hình 2.20. Bản đồ bộ nhớ tuyến tính 4Gbyte của bộ xử lý Cortex-M


Một Gbyte bộ nhớ đầu tiên được chia đều cho một vùng mã (code region) và
một vùng SRAM (SRAM region). Không gian mã được tối ưu hóa để thực thi từ bus
I-Code. Tương tự, SRAM được nối đến bus D-Code. Mặc dù mã có thể được nạp và
thực thi từ SRAM, các lệnh sẽ được lấy bằng cách sử dụng bus hệ thống, vì vậy phải
chịu thêm một trạng thái chờ (an extra wait state). Tức là mã chạy trên SRAM sẽ chậm
hơn so với từ bộ nhớ Flash trên chip (on-chip) nằm trong vùng mã. Vùng 0,5 Gbyte
tiếp theo của bộ nhớ là vùng ngoại vi trên chip, tất cả thiết bị ngoại vi được cung cấp
bởi nhà sản xuất vi điều khiển sẽ được đặt tại vùng này.
Vùng 1 Mbyte đầu tiên gồm cả SRAM (màu vàng nhạt) và vùng ngoại vi (màu
hồng nhạt) được định địa chỉ theo bit, sử dụng một kỹ thuật được gọi là dải bit (bit
banding). Từ đó tất cả SRAM và các thiết bị ngoại vi người dùng (user peripherals)
trên STM32 được đặt tại vùng này, và tất cả các vị trí bộ nhớ của những vùng này trên
STM32 đều có thể được thao tác theo word-wide hoặc bitwise.
Không gian địa chỉ 2 Gbyte tiếp theo được phân cho bộ nhớ ngoài- ánh xạ
SRAM và thiết bị ngoại vi (external RAM và external Device). Vùng 0,5 Gbyte cuối
cùng được phân cho các thiết bị ngoại vi bên trong của bộ xử lí Cortex và một khu vực
dành cho các cải tiến trong tương lai của nhà sản xuất chip cho bộ xử lý Cortex. Tất cả
các thanh ghi của bộ xử lý Cortex được đặt ở vị trí cố định cho tất cả vi điều khiển dựa
trên lõi Cortex. Điều này cho phép mã chương trình dễ dàng được chuyển giữa các

SVTH: Ngô Minh Đức-D12XLTH 25


Đồ án tốt nghiệp đại học Chương II: Tìm hiểu các linh kiện, công nghệ , thiết bị

biến thể STM32 khác nhau và các vi điều khiển dựa trên lõi Cortex của các nhà sản
xuất chip khác.
2.4.4 Kiến trúc hệ thống của ARM CORTEX
ARM Cortex STM32 gồm nhân Cortex kết nối với bộ nhớ FLASH thông qua
đường bus lệnh chuyên biệt. Các bus dữ liệu(Cortex Data busses) và hệ thống (Cortex
System busses) được kết nối tới ma trận busses tốc độ cao( ARM Advanced High
Speed Busses- AHB). SRAM nội kết nối với AHB và đóng vai trò là bộ DMA. Các
thiết bị ngoại vi được kết nối bằng 2 hệ thống bus ngoại vi tốc độ cao ( APB-ARM
Advanced Peripheral Busses).
Các bus APBs thông qua các bus cầu nối AHB-APBs kết nối vào hệ thống
AHB. Ma trận bus AHB sử dụng xung nhịp đồng hồ bằng với xung nhịp của nhân
Cortex. Tuy nhiên thông qua bộ chia tần số AHB có thể hoạt động ở tần số thấp hơn
nhằm tiết kiệm năng lượng.

Hình 2.21 Hệ thống Bus nội của ARM


Cấu trúc bus nội cung cấp đường truyền chuyên biệt dành cho tập lệnh thực thi
và ma trận bus đường dữ liệu cho nhân Cortex và bộ điều khiển DMA truy cập tài
nguyên trên vi xử lý.
2.4.5. Cấu trúc bộ nhớ
Bên cạnh hệ thống bus nội đa dạng STM32 còn cung cấp 4Gbytes không gian
bộ nhớ liên tục dành cho lập trình. Bộ nhớ được bắt đầu từ địa chỉ 0x00000000.On-
chip SRAM bắt đầu từ địa chỉ 0x20000000 và tất cả SRAM nội đều được bố trí ở điểm
bắt đầu vùng bit band. Vùng nhớ thiết bị ngoại vi được ánh xạ từ địa chỉ 0x40000000
và ở vùng bit band. Các thanh ghi điều khiển của nhân Cortex được ánh xạ từ
địa chỉ 0xE0000000.

SVTH: Ngô Minh Đức-D12XLTH 26


Đồ án tốt nghiệp đại học Chương II: Tìm hiểu các linh kiện, công nghệ , thiết bị

Hình 2.22. Cấu trúc bộ nhớ của ARM


Vùng nhớ dành cho flash được chia nhỏ thành 3 vùng. Vùng thứ nhất gọi là
User Flash bắt đầu từ địa chỉ 0x00000000. Kế tiếp là System Memory hay còn gọi là
vùng nhớ lớn. Vùng này có độ lớn 4Kbytes thông thường sẽ được nhà sản xuất cài đặt
bootloader. Cuối cùng là vùng nhớ nhỏ bắt đầu từ địa chỉ 0x1FFFFF80 chứa thông tin
cấu hình dành cho STM32. Bootloader thường được dùng để tải chương trình thông
qua USART1 và chứa ở vùng User Flash.
2.5. Vi điều khiển STM32F103C8T6
Vi điều khiển STM32F103C8T6 là họ vi điều khiển 32 bit của hãng
TexasInstrument với
• 64-128 Kb bộ nhớ Flash
• USB 2.0 full-speed
• 7 bộ Timer
• bộ ADC và 9 giao diện kết nối.
• Lõi: ARM 32 bit Cortex-M3
• Tần số hoạt động lên tới 72 Mhz
• Bộ nhớ: 64-128 Kb Flash, 20 Kb SRAM
• ADC: 2×12 bit, tần số lấy mẫu 1Mhz
• DAC: không
• DMA: Điều khiển 7 kênh DMA
• Timer: 7 bộ, 16 bit
• Giao diện kết nối: 2xI2C, 3xUSART, 2xSPI, CAN, USB 2.0 full-speed.

SVTH: Ngô Minh Đức-D12XLTH 27


Đồ án tốt nghiệp đại học Chương II: Tìm hiểu các linh kiện, công nghệ , thiết bị

• Kiểu chân: VFQFPN36, UFQFPN48, BGA100, LQFP48, LQFP64, LQFP100


• Ứng dụng:
 Điều khiển động cơ
 Thiết bị cầm tay và thiết bị y tế
 Ứng dụng công nghiệp
 PLC
 Inverters
 Hệ thống cảnh báo
 HVAC

Hình 2.23. Sơ đồ các chân của ARM M3


2.6. LM2576
LM2576 là một IC nguồn tích hợp của mạch nguồn xung theo nguyên lý nguồn
Buck. Với dòng điện định mức đầu ra tải là 3A và có các đầu điện áp đầu ra cố định
3.3V, 5V, 12V, 15V và điện áp biến đổi tùy từng loại Serial của LM2576.
Đây là loại IC nguồn cung cấp điện áp đầu ra ổn định, hoạt động ổn định với
đầu tản nhiệt tốt giúp IC hoạt động tốt trong nhiệt độ cho phép.
Một số tính năng chính của LM2576:
 Điện áp đầu ra của các Serial là 3.3V, 5V, 12V, 15V và điện áp điều
chỉnh.
 Điện áp điều chỉnh được từ 1.25V đến 37V. Với điện áp đầu vào là lớn
nhất
 Dòng đầu ra định mức là 3A

SVTH: Ngô Minh Đức-D12XLTH 28


Đồ án tốt nghiệp đại học Chương II: Tìm hiểu các linh kiện, công nghệ , thiết bị

 Điện áp đầu vào định mức là 40V có thể lớn 60V tùy từng dòng Serial
 Chỉ giao tiếp với 5 chân đầu vào ra
 Tần số đóng cắt chuẩn 52Khz[separator]
 Hiệu suất cao
 Bảo vệ quá dòng và quá nhiệt.

Hình 2.24. IC LM2576

Hình 2.25. Sơ đồ cấu tạo của LM2576


Ở trên là sơ đồ cấu tạo bên trong của LM2576. Nguyên tắc dựa theo nguồn
xung (Nguồn Buck). Điện áp đầu ra được điều chỉnh liên tục để đảm bảo cho điện áp
đầu ra luôn giữa ở một giá trị cố định. Trong sơ đồ cấu tạo thì LM2576 gồm khối: So
sánh, tạo dao động, công suất, quá dòng...

SVTH: Ngô Minh Đức-D12XLTH 29


Đồ án tốt nghiệp đại học Chương II: Tìm hiểu các linh kiện, công nghệ , thiết bị

 Chân 1 (Vin): Chân nguồn đầu vào


 Chân 2 (Vout): Chân điện áp đầu ra. Tùy thuộc dòng LM2576 mà chân
này có điện áp ra ổn định khác nhau.
 Chân 3 (GND): Chân nguồn chung
 Chân 4 (Feedback): Chân đưa tín hiệu phản hồi từ đầu ra về đầu vào.
Đưa vào bộ so sánh để điều chỉnh ổn định điện áp
• Chân 5 (On/Off): Chân đóng mở. Thường để GND
* Thông số chính của LM2576
+ Điện áp đầu vào:
+ LM2576: 45V
+ LM2576HV: 60V
+ Dòng điện đầu ra: 3A
+ Giải nhiệt độ hoạt động là: −65˚C to +150˚C
+ Điện áp ổn định đầu ra:
+ LM2576HVS-3.3: 3.3V
+ LM2576HVS-5.0: 5V
+ LM2576HVS-12: 12V
+ LM2576HVS-15: 15V
+ LM2576HVS-ADJ: ADJ (1.25V ~ 37V)
2.7. IC L298
IC L298 là một IC tích hợp nguyên khối gồm 2 mạch cầu H bên trong. Với điện
áp làm tăng công suất đầu ra từ 5V – 47V, dòng lên đến 4A, L298 rất thích hợp trong
những ứng dụng công suất nhỏ như động cơ DC loại vừa …

Hình 2.26. Hình ảnh L298


L298 gồm:
 4 chân INPUT: IN1, IN2, IN3, IN4 được nối lần lượt với các chân 5, 7, 10, 12
của L298.Đây là các chân nhận tín hiệu điều khiển.

SVTH: Ngô Minh Đức-D12XLTH 30


Đồ án tốt nghiệp đại học Chương II: Tìm hiểu các linh kiện, công nghệ , thiết bị

4 chân OUTPUT: OUT1, OUT2, OUT3, OUT4 (tương ứng với các chân
INPUT) được nối với các chân 2, 3, 13, 14 của L298. Các chân này sẽ được nối
với động cơ.
 Hai chân ENA và ENB dung để điều khiển các mạch cầu H trong L298. Nếu ở
mức ogic “1” (nối với nguồn 5V) thì cho phép mạch cầu H hoạt động, nếu ở
mức logic “0” thì mạch cầu H không hoạt động.

Hình 2.27. Hình ảnh cấu tạo của L298


2.8.LM1117
IC AMS1117-3.3 được điều chỉnh và điều chỉnh điện áp cố định được thiết kế
để cung cấp lên đến đầu ra 1A hiện tại và hoạt động xuống vi sai đầu vào, đầu ra của
1V. Điện áp dropout của thiết bị được đảm bảo tối đa 1.3V, giảm tại hạ tải dòng điện.
Chip điều chỉnh điện áp tham chiếu đến 1,5%. Giới hạn hiện tại được thiết lập để giảm
thiểu sự căng thẳng trong điều kiện quá tải trên bộ điều chỉnh và điện nguồn mạch.
Các thiết bị AMS1117 là pin tương thích với các nhà quản lý SCSI ba thiết bị
đầu cuối và được cung cấp trong gói mount SOT-223 bề mặt cấu hình thấp, 8LSOIC

SVTH: Ngô Minh Đức-D12XLTH 31


Đồ án tốt nghiệp đại học Chương II: Tìm hiểu các linh kiện, công nghệ , thiết bị

gói và các gói nhựa TO-252 (DPAK).


Tính năng:
 Ba thiết bị đầu cuối cố định hoặc điều chỉnh điện áp 3.3V
 Đầu ra hiện tại 1A
 Hoạt động xuống 1V Dropout
 Quy chế dòng: 0,2% Max
 Quy định tải trọng: 0,3% Max.
 SOT-223 gói
Ứng dụng:
 Điều chỉnh tuyến tính hiệu quả cao
 Gửi điều chỉnh để chuyển đổi các nguồn cung cấp
 5V cho 3.3V Linear Regulator
 Bộ sạc pin
 Actives SCSI Terminators
 Quản lý nguồn điện cho máy tính xách tay
 Pin cung cấp thiết bị

Hình 2.28. hình ảnh AMS1117


2.9. Khái quát về Rơ le.
Khái quát: Công dụng của rờ-le là "dùng một năng lượng nhỏ để đóng cắt nguồn
năng lượng lớn hơn".
Rơ-le được dùng khá thông dụng trong các ứng dụng điều khiển động cơ và
chiếu sáng. Khi cần đóng cắt nguồn năng lượng lớn, rơ-le thường được ghép nối tiếp.
Nghĩa là một rơ-le nhỏ điều khiển một rờ-le lớn hơn, và rơ-le lớn sẽ điều khiển nguồn
công suất.
 Phân loại theo nguyên lý làm việc:

SVTH: Ngô Minh Đức-D12XLTH 32


Đồ án tốt nghiệp đại học Chương II: Tìm hiểu các linh kiện, công nghệ , thiết bị

 Rơ le điện từ.
 Rơ le điện động.
 Rơ le từ điện.
 Rơ le cảm ứng.
 Rơ le nhiệt.
 Rơ le bán dẫn và vi mạch.
 Phân loại theo vai trò và đại lượng tác động:
 Rơ le trung gian.
 Rơ le thời gian.
 Rơ le nhiệt.
 Rơ le tốc độ.
 Rơ le dòng điện.
 Rơ le công suất…
 Phân loại theo dòng điện:
 Rơ le dòng điện một chiều.
 Rơ le dòng điện xoay chiều.
 Phân loại theo giá trị và chiều của đại lượng đi vào rơ le:
 Rơ le cực đại.
 Rơ le cực tiều.
 Rơ le sai lệch.
 Rơ le hướng.
Rơ le 10A

Hình 2.29. Hình ảnh Rơ le 10 A


Thông số kỹ thuật:
 Điện áp điều khiển: 12V
 Dòng điện cực đại: 10A
 Thời gian tác động: 10ms
 Thời gian nhả hãm: 5ms
 Nhiệt độ hoạt động: -45oC ~ 75oC
Rơ le 5 chân SRD-12VDC là loại linh kiện đóng ngắt điện cơ đơn giản:
3 chân dùng để kích:

SVTH: Ngô Minh Đức-D12XLTH 33


Đồ án tốt nghiệp đại học Chương II: Tìm hiểu các linh kiện, công nghệ , thiết bị

 +: cấp hiệu điện thế kích tối ưu vào chân này.


 -: nối với cực âm
 S: chân tín hiệu, tùy vào loại module rơ-le mà nó sẽ làm nhiệm vụ kích rơ-le
Nếu bạn đang dùng module rơ-le kích ở mức cao và chân S bạn cấp điện thế
dương vào thì module rơ-le của bạn sẽ được kích, ngược lại thì không.
Tương tự với module rơ-le kích ở mức thấp.

Hình 2.30. Sơ đồ cấu tạo Rơ le


Hình 1.31 là sơ đồ nối chân của Rơ le 12V 5 chân:
• Chân 1 và chân 2 được nối vào cuộn hút, khi có điện vào cuộn hút sẽ hút tiếp
điểm chuyển từ vị trí 4 xuống tiếp điểm
• Chân 3: đặt điện áp(nếu là loại Rơ le 12V thì đặt 12V DC vào đây)
• Chân 4, chân 5: tiếp điểm.

SVTH: Ngô Minh Đức-D12XLTH 34


Đồ án tốt nghiệp đại học Chương II: Tìm hiểu các linh kiện, công nghệ , thiết bị

Hình 2.31. Sơ đồ kích thước Rơ le 12V 5 chân

SVTH: Ngô Minh Đức-D12XLTH 35


Đồ án tốt nghiệp đại học Chương III: Thiết kế sản phẩm

CHƯƠNG III. THIẾT KẾ SẢN PHẨM


3.1. Sơ đồ khối, lưu đồ thuật toán

Giao Diện Web Vi điều khiển Rơ le, động cơ

Nguồn

Hình 3.1. Sơ đồ khối của mạch

Hình 3.2. Lưu đồ thuật toán

SVTH: Ngô Minh Đức-D12XLTH 36


Đồ án tốt nghiệp đại học Chương III: Thiết kế sản phẩm

3.2. Nguyên lý làm việc.


• Vi điều khiển đọc giá trị trả về của thiết bị.
• Cho hiển thị các thông số và tình trạng thiết bị lên giao diện web.
• Khi muốn thay đổi tình trạng và thông số của thiết bị, vi điều khiển sẽ thực hiện
đóng mở rơ le để bật, tắt thiết bị.
• Khi thực hiện xong các yêu cầu bật tắt thiết bị, vi điều khiển cũng sẽ thực hiện
gửi tín hiệu lên giao diện web để thay đổi trạng thái trên web.
3.3 Phân tích thiết kế mạch
3.3.1 Mạch cho vi điều khiển
ARM Cotex M3 có thể chạy với thạch anh ngoài 8 MHz.

Hình 3.3. Mạch ghép nối thạch anh cho vi điều khiển

Hình 3.4. Mạch reset cho vi điều khiển


3.3.2 Khối nguồn

Hình 3.5. Mạch nguồn

SVTH: Ngô Minh Đức-D12XLTH 37


Đồ án tốt nghiệp đại học Chương III: Thiết kế sản phẩm

o Mạch nguồn tích hợp cùng nguồn động cơ.


o Sử dụng LM2576 để cấp nguồn 5V cho toàn bộ mạch.
o Nguồn vào ban đầu sẽ lấy từ adapter 12V/ 2A.
3.3.3. Mạch điều khiển

Hình 3.6. Mạch điều khiển Rơ le


Sử dụng OPTO PC817 để ngăn cách giữa Rơ le và vi điều khiển. Bảo vệ mạch
và vi điều khiển khi có sự cố về điện xảy ra.

Hình 3.7. Mạch điều khiển động cơ


Mạch sử dụng IC L298 là một IC tích hợp nguyên khối gồm 2 mạch cầu
H bên trong để dễ dang điều khiển động cơ.

SVTH: Ngô Minh Đức-D12XLTH 38


Đồ án tốt nghiệp đại học Chương III: Thiết kế sản phẩm

Hình 3.8. Mạch kết nối cho ESP8266_07


3.4. Thiết kế mạch.

Hình 3.9. Mạch nguyên lý

SVTH: Ngô Minh Đức-D12XLTH 39


Đồ án tốt nghiệp đại học Chương III: Thiết kế sản phẩm

Hình 3.10. Mạch in ở chế độ 2D

SVTH: Ngô Minh Đức-D12XLTH 40


Đồ án tốt nghiệp đại học Chương III: Thiết kế sản phẩm

Hình 3.11. Mạch in 3D mặt sau

Hình 3.12. Mạch in 3D mặt trước

SVTH: Ngô Minh Đức-D12XLTH 41


Đồ án tốt nghiệp đại học Kết luận và hướng phát triển

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN

* Một số kết quả đạt được


• Nghiên cứu mô hình hoạt động của đề tài.
• Nghiên cứu kit ARM M3 và trình biên dịch Keil C
• Lý thuyết mạng WIFI và cách thức truyền nhận dữ liệu
• Nghiên cứu module ESP8266
* Hướng phát triển đề tài
Sử dụng thêm nhiều loại cảm biến khác, chẳng hạn như cảm biến độ ẩm không
khí để đo độ ẩm không khí, hệ thống báo cháy tự động,… để ứng dụng vào đề tài. Như
thế người dùng có thể hình dung ra được toàn bộ không gian trong ngồi nhà.
Thêm khối bàn phím, thời gian thực để người dùng có thể trực tiếp chỉnh định
lại các thông số của hệ thống sao cho phù hợp và có thể hẹn giờ để tắt/bật thiết bị theo
ý muốn.
Phần cứng cho mỗi module cần được tách rời nhằm dễ dàng cho việc chỉnh sửa,
thay đổi.

SVTH: Ngô Minh Đức-D12XLTH 42


Đồ án tốt nghiệp đại học Phụ lục

PHỤ LỤC

Code sử dụng trong mạch:


#include "main.h"
#include "stm32_usart.h"
#include "esp8266.h"

static __IO uint32_t TimingDelay;


uint8_t target = 0;

char new_sms = 0, index_sms = 0;


uint32_t DATA_ESP[1000], data_sms[1000];
uint32_t index_usart = 0;
uint32_t ESP_index_rx = 0,number_word=0;
uint8_t
start_byte_sms,status_ok=0,status_rst=0,startur_CIPSEND=0,startur_CL
OSED=0,startur_CONNECT=0,startur_HTTP=0,startur_PIN1=0,startur_PIN2=
0,startur_GetIP=0;
uint8_t startur_PIN_Left_Righ=0,startur_PIN_Stop=1;
uint8_t
contro=0,tb_connect,startur_PIN_Up,startur_PIN_Dow,duty=0,pwm_new=0;
const char buf1[]={"<head><title>Dieu khien qua Web
Server</title></head><h1 align=\"center\"></h1><h1
align=\"center\"><font face=\"Times new roman\" size=\"6\" >DIEU
KHIEN THIET BI QUA WEB SERVER</font></h1>"};
const char buf2[]={"<h1 align=\"center\"><font face=\"Times new
roman\" size=\"6\" >MCU: STM32F103C8T6"};
const char buf3[]={"</font></h1><h1 align=\"center\"><font
face=\"Times new roman\" size=\"6\" >Module Wifi ESP8266"};
const char buf_TB1[]={"<p align=\"center\"><font size=\"6\"
color=\"00AA00\">Thiet Bi 1 </font><a href=\"?
pin=ON1 \"><button><font size=\"6\" color=\"green\"
>ON</font></button></a>&nbsp;<a href=\"?pin=OFF1\"><button><font
size=\"6\">OFF</font></button></a><font size=\"6\">" };
const char buf_TB2[]={"<p align=\"center\"><font size=\"6\"
color=\"FF0000\">Thiet Bi 2 </font><a href=\"?
pin=ON2 \"><button><font size=\"6\" color=\"green\"
>ON</font></button></a>&nbsp;<a href=\"?pin=OFF2\"><button><font
size=\"6\">OFF</font></button></a><font size=\"6\">" };
const char buf_DC[]={"<p align=\"center\"><font size=\"6\"
color=\"FFCC33\">DK Dong CO </font><a href=\"?
pin=Righ\"><button><font size=\"6\" color=\"Red\"
>Righ</font></button></a>&nbsp;<a href=\"?pin=Stop\"><button><font

SVTH: Ngô Minh Đức-D12XLTH 43


Đồ án tốt nghiệp đại học Phụ lục

size=\"6\" color=\"black\">Starts/Stop</font></button></a>&nbsp;<a
href=\"?pin=Left\"><button><font size=\"6\"
color=\"yellow\">left</font></button></a><font size=\"6\">"};

const char buf_up_dow[]={"<p align=\"center\"><font size=\"6\"


color=\"black\">duty</font><a href=\"?pin=up\"><button><font
size=\"6\" color=\"Red\" >Up</font></button></a>&nbsp;<a href=\"?
pin=dow\"><button><font size=\"6\"
color=\"black\">Dow</font></button></a><font
size=\"6\"color=\"Red\"> "};

const char Startur_on[]= {"<svg height=\"50\" width=\"50\"><circle


cx=\"20\" cy=\"35\" r=\"10\" stroke=\"black\" stroke-width=\"3\"
fill=\"lime \" /></svg></font></p>"};
const char Startur_off[]= {"<svg height=\"50\" width=\"50\"><circle
cx=\"20\" cy=\"35\" r=\"10\" stroke=\"black\" stroke-width=\"3\"
fill=\"silver\" /></svg></font></p>"};
const char Startur_Left[]={"<svg height=\"50\" width=\"50\"><circle
cx=\"20\" cy=\"35\" r=\"10\" stroke=\"black\" stroke-width=\"3\"
fill=\"yellow\" /></svg></font></p>"};
const char Startur_Righ[]={"<svg height=\"50\" width=\"50\"><circle
cx=\"20\" cy=\"35\" r=\"10\" stroke=\"black\" stroke-width=\"3\"
fill=\"Red \" /></svg></font></p>"};
const char Startur_Stop[]={"<svg height=\"50\" width=\"50\"><circle
cx=\"20\" cy=\"35\" r=\"10\" stroke=\"black\" stroke-width=\"3\"
fill=\"black \" /></svg></font></p>"};

int main()
{
uint32_t i,k=0,pwm,duty_new;
IO_config();
GPIO_SetBits(GPIOA,GPIO_Pin_12);
GPIO_SetBits(GPIOA,GPIO_Pin_13);
usart1_init(GPIOA, GPIO_Pin_9, GPIO_Pin_10, 115200);
usart2_init(GPIOA, GPIO_Pin_2, GPIO_Pin_3, 115200);
UART1_2_IRQn();
if (SysTick_Config(SystemCoreClock / 1000000))
{
/* Capture error */
while (1){}
}
Delay_ms(1000);
GPIO_ResetBits(GPIOA,GPIO_Pin_7);

SVTH: Ngô Minh Đức-D12XLTH 44


Đồ án tốt nghiệp đại học Phụ lục

GPIO_ResetBits(GPIOB,GPIO_Pin_0);
CH_Timer_GPIO_Configuration(GPIOA, GPIO_Pin_6);
PWM_timer_init(TIM3, 3999, 36);
PWM_CH1(TIM3,4000);
ESP_AT(uart2);
Delay_ms(1000);
Send_Data(1);
ESP_RST(uart2);
Delay_ms(1000);
Send_Data(1);
ESP_CWMODE(uart2,3);
Delay_ms(1000);
Send_Data(1);
ESP_CWJAP(uart2,"FPT Telecom","12345678");
Delay_ms(1000);
Send_Data(1);
ESP_CIPSTA(uart2);
Send_Data(1);
Delay_ms(1000);

ESP_CIPMUX(uart2,1);
Send_Data(1);
Delay_ms(1000);

ESP_CIPSERVER(uart2);
Send_Data(1);
Delay_ms(1000);

ESP_CIPSTO(uart2,10);
Send_Data(1);
Delay_ms(1000);

ESP_CIFSR(uart2);
Send_Data(1);
Delay_ms(1000);
target = 0;
i=0;
k=0;
while(buf1[i]!='\0')

SVTH: Ngô Minh Đức-D12XLTH 45


Đồ án tốt nghiệp đại học Phụ lục

{
if(buf1[i]!='\\')
{
k++;
i++;
}
}
printf("buf1=
%d\r\n",i);/////////////////////////////////////////
i=0;
while(buf2[i]!='\0')
{
if(buf2[i]!='\\')
{
k++;
i++;
}
}
printf("buf2=
%d\r\n",i);/////////////////////////////////////
i=0;
while(buf3[i]!='\0')
{
if(buf3[i]!='\\')
{
k++;
i++;
}
}
printf("buf3=
%d\r\n",i);///////////////////////////////////
i=0;
while(buf_TB1[i]!='\0')
{
if(buf_TB1[i]!='\\')
{
k++;
i++;
}
}
printf("buf_TB1=%d\r\n",i);////////////////////////////

SVTH: Ngô Minh Đức-D12XLTH 46


Đồ án tốt nghiệp đại học Phụ lục

i=0;
while(buf_TB2[i]!='\0')
{
if(buf_TB2[i]!='\\')
{
k++;
i++;
}
}
printf("buf_TB2=
%d\r\n",i);////////////////////////////////
i=0;
while(Startur_on[i]!='\0')
{
if(Startur_on[i]!='\\')
{
k++;
i++;
}
}
printf("Startur_on=
%d\r\n",i);/////////////////////////////
i=0;
while(Startur_off[i]!='\0')
{
if(Startur_off[i]!='\\')
{
k++;
i++;
}
}
printf("Startur_off=
%d\r\n",i);///////////////////////////
i=0;
while(buf_DC[i]!='\0')
{
if(buf_DC[i]!='\\')
{
k++;
i++;
}

SVTH: Ngô Minh Đức-D12XLTH 47


Đồ án tốt nghiệp đại học Phụ lục

}
printf("buf_DC=%d\r\n",i);////////////////////
i=0;
while(Startur_off[i]!='\0')
{
if(Startur_off[i]!='\\')
{
k++;
i++;
}
}
printf("Startur_off=%d\r\n",i);///////////
i=0;
while(buf_up_dow[i]!='\0')
{
if(buf_up_dow[i]!='\\')
{
k++;
i++;
}
}
printf("buf_up_dow=%d\r\n",i);
printf("kkkkkkkkkkkkkkkkkkkkk=%d\r\n",k);
number_word=k;
while(1)
{
//kiem tra truy cap web
if(pwm_new==1)
{
pwm_new=0;
duty_new=100-duty;
pwm = (4000*duty_new)/100;
target=0;
printf("pwm=%d\r\n",pwm);
PWM_CH1(TIM3,pwm);
}
if(contro==1)
{
printf("tb_connect = %c\r\n",tb_connect);
contro=0;

SVTH: Ngô Minh Đức-D12XLTH 48


Đồ án tốt nghiệp đại học Phụ lục

CheckState();
}
}
}
void IO_config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |
RCC_APB2Periph_GPIOB |RCC_APB2Periph_GPIOC| RCC_APB2Periph_AFIO,
ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);

GPIO_InitStructure.GPIO_Pin = (GPIO_Pin_12|GPIO_Pin_13|
GPIO_Pin_7);
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin = (GPIO_Pin_0);
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOB, &GPIO_InitStructure);
}
void CheckState(void)
{
//GPIO_ResetBits(GPIOA,GPIO_Pin_13);
if((startur_PIN1==1)&&(startur_PIN2==1))
{
if(startur_PIN_Stop==0)
{
if(startur_PIN_Left_Righ==1)
{

Show_Web(number_word,buf1,buf2,buf3,buf_TB1,Startur_on,buf_TB2,Start
ur_on,buf_DC,Startur_Righ,buf_up_dow,duty);
}
else
Show_Web(number_word,buf1,buf2,buf3,buf_TB1,Startur_on,buf_TB2,Start
ur_on,buf_DC,Startur_Left,buf_up_dow,duty);
}

SVTH: Ngô Minh Đức-D12XLTH 49


Đồ án tốt nghiệp đại học Phụ lục

else
Show_Web(number_word,buf1,buf2,buf3,buf_TB1,Startur_on,buf_TB2,Start
ur_on,buf_DC,Startur_Stop,buf_up_dow,duty);
}
else if((startur_PIN1==1)&&(startur_PIN2==0))
{
if(startur_PIN_Stop==0)
{
if(startur_PIN_Left_Righ==1)
{

Show_Web(number_word,buf1,buf2,buf3,buf_TB1,Startur_on,buf_TB2,Start
ur_off,buf_DC,Startur_Righ,buf_up_dow,duty);
}
else
Show_Web(number_word,buf1,buf2,buf3,buf_TB1,Startur_on,buf_TB2,Start
ur_off,buf_DC,Startur_Left,buf_up_dow,duty);
}
else
Show_Web(number_word,buf1,buf2,buf3,buf_TB1,Startur_on,buf_TB2,Start
ur_off,buf_DC,Startur_Stop,buf_up_dow,duty);
}
else if((startur_PIN1==0)&&(startur_PIN2==0))
{
if(startur_PIN_Stop==0)
{
if(startur_PIN_Left_Righ==1)
{

Show_Web(number_word,buf1,buf2,buf3,buf_TB1,Startur_off,buf_TB2,Star
tur_off,buf_DC,Startur_Righ,buf_up_dow,duty);
}
else
Show_Web(number_word,buf1,buf2,buf3,buf_TB1,Startur_off,buf_TB2,Star
tur_off,buf_DC,Startur_Left,buf_up_dow,duty);
}
else
Show_Web(number_word,buf1,buf2,buf3,buf_TB1,Startur_off,buf_TB2,Star
tur_off,buf_DC,Startur_Stop,buf_up_dow,duty);
}
else if((startur_PIN1==0)&&(startur_PIN2==1))

SVTH: Ngô Minh Đức-D12XLTH 50


Đồ án tốt nghiệp đại học Phụ lục

{
if(startur_PIN_Stop==0)
{
if(startur_PIN_Left_Righ==1)
{

Show_Web(number_word,buf1,buf2,buf3,buf_TB1,Startur_off,buf_TB2,Star
tur_on,buf_DC,Startur_Righ,buf_up_dow,duty);
}
else
Show_Web(number_word,buf1,buf2,buf3,buf_TB1,Startur_off,buf_TB2,Star
tur_on,buf_DC,Startur_Left,buf_up_dow,duty);
}
else
Show_Web(number_word,buf1,buf2,buf3,buf_TB1,Startur_off,buf_TB2,Star
tur_on,buf_DC,Startur_Stop,buf_up_dow,duty);
}
}
void GPIO_Configuration_Output(GPIO_TypeDef* GPIOx, int GPIO_Pin)
{
GPIO_InitTypeDef GPIO_InitStructure;

if(GPIOx == GPIOA)
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
if(GPIOx == GPIOE)
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);
if(GPIOx == GPIOC)
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
if(GPIOx == GPIOD)
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);
if(GPIOx == GPIOG)
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOG, ENABLE);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOx, &GPIO_InitStructure);
}
void GPIO_Configuration_Input(GPIO_TypeDef* GPIOx, int GPIO_Pin)

SVTH: Ngô Minh Đức-D12XLTH 51


Đồ án tốt nghiệp đại học Phụ lục

{
GPIO_InitTypeDef GPIO_InitStructure;

if(GPIOx == GPIOA)
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
if(GPIOx == GPIOE)
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);
if(GPIOx == GPIOC)
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
if(GPIOx == GPIOD)
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);
if(GPIOx == GPIOG)
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOG, ENABLE);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOx, &GPIO_InitStructure);
}
void UART1_2_IRQn(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
/* Enable the USART1 Interrupt */
NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);

/* Enable the USART2 Interrupt */


NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
void _delay_ms(uint16_t ms)
{
long index;

SVTH: Ngô Minh Đức-D12XLTH 52


Đồ án tốt nghiệp đại học Phụ lục

index = ms*1010;
while(index)
{
index--;
}
}
void Delay_us(__IO uint32_t nTime)
{
TimingDelay = nTime;
while(TimingDelay != 0){}
}
void Delay_ms(__IO uint32_t nTime)
{
TimingDelay = nTime*1000;
while(TimingDelay != 0){}
}
void TimingDelay_Decrement(void)
{
if (TimingDelay != 0x00)
{
TimingDelay--;
}
}
void SysTick_Handler(void)
{
TimingDelay_Decrement();
}
void Send_Data(unsigned char Port_Usart)
{
uint32_t jn;
//target = Port_Usart - 1;
if(Port_Usart==1)
{
for(jn=0; jn<1000; jn++)
{
usart_send_data(USART1, DATA_ESP[jn]);
}
}
else if(Port_Usart==2)
{

SVTH: Ngô Minh Đức-D12XLTH 53


Đồ án tốt nghiệp đại học Phụ lục

for(jn=0; jn<1000; jn++)


{
usart_send_data(USART2, DATA_ESP[jn]);
}
}
Fn_Clear_Data_Buffer_ESP();
}
void Filters_Data(const char* Flag_Data,uint8_t *filer_Data)
{
uint8_t ii,jj,check_Data=0,Length_Data=0,ij=0;
uint32_t i,i_temp;
while(filer_Data[ij] !='\0')
{
filer_Data[ij]='\0';
ij++;
}
while(Flag_Data[Length_Data] != '\0')
{
Length_Data++;
}
for(i=0;i<1000;i++)
{
if(DATA_ESP[i] == Flag_Data[check_Data])
{
check_Data++;
if(check_Data == (Length_Data-1))
{
i_temp = i+1;
for(ii=0;ii<10;ii++)
{
filer_Data[ii] = DATA_ESP[i_temp+ii];
if((DATA_ESP[i_temp+ii+1]) ==
Flag_Data[(Length_Data-1)])
{
ii=10;
target=0;
}
}
}
}

SVTH: Ngô Minh Đức-D12XLTH 54


Đồ án tốt nghiệp đại học Phụ lục

else check_Data = 0;
}
target=0;
printf("\n");
for(jj=0;jj<(Length_Data-1);jj++)
{
usart_send_data(USART1, Flag_Data[jj]);
}
jj=0;
while(filer_Data[jj] !='\0')
{
usart_send_data(USART1, filer_Data[jj]);
jj++;
}
}
void USART1_IRQHandler(void)
{
volatile unsigned int IIR;
uint8_t c1;
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) // Neu co ky
tu moi trong bo dem nhan
{
IIR = USART1->SR;
c1=usart1_get_data();
if(index_usart < 1000)
{
data_sms[index_usart++] = c1;
}
else
{
index_usart = 0;
}
}
}

void USART2_IRQHandler(void)
{
volatile unsigned int IIR;
uint8_t c2;
if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET) // Neu co ky

SVTH: Ngô Minh Đức-D12XLTH 55


Đồ án tốt nghiệp đại học Phụ lục

tu moi trong bo dem nhan


{
IIR = USART2->SR;
c2 = usart2_get_data();
Fn_GetData_ESP_USART(DATA_ESP, c2);
/********************************************************
******************************/
}
}
/
********************************************************************
********

Ham cau hinh cac kenh cua bo Timer:


Timer1: Timer2: Timer3:
Timer4:
CH1: PA8 CH1: PA0 CH1: PA6
CH1: PB6
CH2: PA9 CH2: PA1 CH2: PA7
CH2: PB7
CH3: PA10 CH3: PA2 CH3: PB0
CH3: PB8
CH4: PA11 CH4: PA3 CH4: PB1
CH4: PB9

voi GPIO_Pin = GPIO_Pin_x|GPIO_Pin_y|GPIO_Pin_z|GPIO_Pin_t;

********************************************************************
********/

void CH_Timer_GPIO_Configuration(GPIO_TypeDef* GPIOx, int GPIO_Pin)


{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |
RCC_APB2Periph_GPIOB |RCC_APB2Periph_GPIOC | RCC_APB2Periph_AFIO,
ENABLE);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOx, &GPIO_InitStructure);

SVTH: Ngô Minh Đức-D12XLTH 56


Đồ án tốt nghiệp đại học Phụ lục

}
/*
--------------------------------------------------------------------
---------------------------------
*
* TIMx Configuration: generate 1 PWM signals:
* APB1 prescaler = 72 # 1 => TIMxCLK = PCLK1x2 = 2 MHz,
Prescaler = 0x0 => TIMx counter clock = 2 MHz
* TIMx ARR Register = 4096 => TIMx Frequency = TIMx counter
clock/(ARR + 1)
* TIMx Frequency = 488.1620698Hz.
* TIMx Channel2 duty cycle = (TIMx_CCR2/ TIMx_ARR)* 100 = 50%
* TIMx Frequency = TIMx counter clock/(TIM_Period + 1)
* Prescaler la gia tri de chia tu tan so he thong thanh gia
tri can lay dua vao co timer
* Period la gia tri cua 100% xung PWM tao ra duoc va ti le
phan tram xung (%) = (gia tri tu thanh ghi CCR)/Period
--------------------------------------------------------------------
---------------------------------- */

void PWM_timer_init(TIM_TypeDef* TIMx, int Period, int Prescaler)


{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2|RCC_APB1Periph_TIM3|
RCC_APB1Periph_TIM4, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);

TIM_TimeBaseStructure.TIM_Period = Period;
TIM_TimeBaseStructure.TIM_Prescaler = Prescaler-1;
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;

TIM_TimeBaseInit(TIMx, &TIM_TimeBaseStructure);

/* PWM1 Mode configuration: Channel2 */


TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse = 0; // Gia tri nap vao thanh
ghi CCR
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;

SVTH: Ngô Minh Đức-D12XLTH 57


Đồ án tốt nghiệp đại học Phụ lục

TIM_OC1Init(TIMx, &TIM_OCInitStructure);
TIM_OC2Init(TIMx, &TIM_OCInitStructure);
TIM_OC3Init(TIMx, &TIM_OCInitStructure);
TIM_OC4Init(TIMx, &TIM_OCInitStructure);

TIM_OC1PreloadConfig(TIMx, TIM_OCPreload_Enable);
TIM_OC2PreloadConfig(TIMx, TIM_OCPreload_Enable);
TIM_OC3PreloadConfig(TIMx, TIM_OCPreload_Enable);
TIM_OC4PreloadConfig(TIMx, TIM_OCPreload_Enable);

TIM_ARRPreloadConfig(TIMx, ENABLE);

/* TIMx enable counter */


TIM_Cmd(TIMx, ENABLE);
}
void PWM_CH1(TIM_TypeDef* TIMx, uint16_t duty_cycle)
{
TIMx->CCR1 = duty_cycle;
}

void PWM_CH2(TIM_TypeDef* TIMx, uint16_t duty_cycle)


{
TIMx->CCR2 = duty_cycle;
}

void PWM_CH3(TIM_TypeDef* TIMx, uint16_t duty_cycle)


{
TIMx->CCR3 = duty_cycle;
}

void PWM_CH4(TIM_TypeDef* TIMx, uint16_t duty_cycle)


{
TIMx->CCR4 = duty_cycle;
}
void _Delay_ms_mem(__IO uint32_t ms)
{
long i;
i = ms*10100;
while(i)

SVTH: Ngô Minh Đức-D12XLTH 58


Đồ án tốt nghiệp đại học Phụ lục

{
i--;
}
}
void _Delay_us_mem(__IO uint32_t us)
{

SVTH: Ngô Minh Đức-D12XLTH 59


Đồ án tốt nghiệp đại học Tài liệu tham khảo

TÀI LIỆU THAM KHẢO

1/ ARM7TDMI (Rev 3)Technical Reference Manual. Copyright © 1994-2001. All


rights reserved. ARM DDI 0029G
2/ The Defi nitive Guide to the ARM Cortex-M3. http://www.arm.com/
3/ Thiết kế điện tử tiên tiến – Nguyễn Trung Hiếu
4/ www.esp8266.vn/introduction/esp-module
5/ https://vi.wikipedia.org/wiki/Wi-Fi
6/ http://hocarm.org

SVTH: Ngô Minh Đức-D12XLTH 60

You might also like