LẬP TRÌNH HỆ THỐNG

Một phần của tài liệu Thiết kế và thi công khung ảnh điện tử (Trang 55)

4.4.1 Lưu đồ giải thuật STM32F4

Để lập trình cho hệ thống hoạt động như yêu cầu trước tiên ta phải xây dựng lưu đồ giải thuật. Nhóm đã xây dựng và đưa ra lưu đồ giải thuật cho hệ thống như sau:

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 40

Bắt đầu

Cấu hình vi điều khiển, GPIO và AFIO Khởi tạo màn hình TFT Chế độ = 0 Sai Đúng Cập nhật đồng hồ RTC Scan cảm ứng Chế độ = 1 Trình chiếu

hình ảnh thời gianHiển thị Đúng Sai Kết thúc Hiển thị thời tiết Hiển thị hình nền chờ Chế độ = 2 Sai Đúng Cảm biến PIR Hình 4.7 Lưu đồ chương trình chính Giải thích lưu đồ:

Khi vi điều khiển bắt đầu hoạt động ta phải cấu hình xung clock cho nó để vi điều khiển hoạt động với tốc độ tối đa chính là cấu hình RCC cho vi điều khiển. Ở đây sử dụng nguồn xung ngoại tốc độ cao (HSE) để nó đạt được tốc độ tối đa 168Mhz và không bị sai các chức năng liên quan đến thời gian, tiếp đến là cấu hình cho bộ RTC để có thể sử dụng được thời gian thực, ngoài ra còn cấu hình GPIO để sử dụng các chân I/O và AFIO để sử dụng các chức năng thay thế gồm UART, FSMC, SDIO và ngắt.

Để giao tiếp và hiển thị được lên màn hình TFT ta phải khởi tạo nó, bao gồm thiết lập chuẩn giao tiếp, cấu hình thanh ghi và cài đặt các thông số ban đầu.

Thời gian là thông số thay đổi liên tục vì vậy ta phải cập nhật nó liên tục trong vòng lặp while, chương trình con “Cảm biến PIR” thực hiện chức năng đọc giá trị của cảm biến chuyển động PIR và từ đó điều khiển màn hình hiển thị, chương trình con “Scan cảm ứng” quét liên tục để xác định có hay không cảm ứng và số điểm chạm là bao nhiêu.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 41 Như yêu cầu đã đề ra hệ thống sẽ có 3 chế độ hoạt động:

• Chế độ 0: Hiển thị màn hình chờ để thông báo hệ thống đã hoạt động khi cắm

điện.

• Chế độ 1: Trình chiếu hình ảnh, hình ảnh được đọc từ thẻ nhớ ngoài

• Chế độ 2: Hiển thị đồng hồ thời gian thực gồm: thứ, ngày, tháng, năm, giờ, phút, giây.

• Chế độ 3: Hiển thị thời tiết trong ngày được lấy từ internet thông qua ESP 8266 bao gồm các thông số: nhiệt độ, độ ẩm, áp xuất, tốc độ gió, icon thời tiết và hiển thị thêm thời gian thực.

Chế độ nào sẽ tùy thuộc vào người sử dụng, thay đổi bằng cách chạm cùng lúc 2 tay vào màn hình để chuyển lần lượt các chế độ.

Bắt đầu Kết thúc Cảm biến mức 1 Cho phép màn hình hiển thị Đúng Sai Đủ 30 giây Không cho phép màn hình hiển thị Đúng Sai

Hình 4.8 Lưu đồ chương trình con cảm biến PIR

Giá trị của cảm biến sẽ được đọc từ vi điều khiển trung tâm, khi có mức 1 tức là có chuyển động hay có người thì màn hình sẽ hiển thị. Nếu là mức 0 thì sau 30s màn hình sẽ tắt.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 42 Bắt đầu Kết thúc Detect = 1 Chạm 2 điểm Chế độ + 1 Chế độ = 4 Chế độ = 1 Đúng Đúng Đúng Sai Sai Sai

Hình 4.9 Lưu đồ chương trình con Scan cảm ứng

Giải thích lưu đồ:

Chân T_INT của màn hình cảm ứng điện dung chính là chân ngắt (touch interrupt) mỗi khi phát hiện được chạm, khi đó tương ứng với detect = 1 và khi không có thì detect = 0 và không cần thực hiện gì cả.

Màn hình cảm ứng này hỗ trợ cảm ứng đa điểm và tối đa 5 điểm, trong đề tài này ta chỉ sử dụng 1 điểm và 2 điểm. Hai điểm dùng để thay đổi chế độ hiển thị và một điểm để cài đặt khu vực thời tiết trong chế độ hiển thị thời tiết (chế độ = 3), có 3 chế độ hiển thị nên “Chế độ” sẽ được giới hạn từ 1 đến 3.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 43 Bắt đầu Kết thúc TIME < 10S Hiển thị hình 1 TIME < 20S TIME < 30S TIME < 40S TIME < 50S Hiển thị hình 2 Hiển thị hình 3 Hiển thị hình 4 Hiển thị hình 5 1 1 TIME < 60S Hiển thị hình 6 TIME < 70S TIME < 80S TIME < 90S Hiển thị hình 7 Hiển thị hình 8 Hiển thị hình 9 Hiển thị hình 10 Sai Sai Sai Sai Sai Sai Sai Sai Sai Đúng Đúng Đúng Đúng Đúng Đúng Đúng Đúng Đúng TIME = 0 2 2

Hình 4.10 Lưu đồ chương trình con trình chiếu hình ảnh

Mỗi bức ảnh sẽ được hiển thị với thời gian 10s và tự động chuyển đến ảnh tiếp theo sau đó biến TIME được cập nhật lại giá trị ban đầu.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 44 Bắt đầu Kết thúc Hiển thị phông nền thời gian Cập nhật thứ, ngày, tháng, năm, giờ, phút, giây

Đủ 1s

Hiển thị thứ, ngày, tháng, năm, giờ, phút, giây

Vẽ đồng hồ kim (adsbygoogle = window.adsbygoogle || []).push({});

Sai

Đúng

Hình 4.11 Chương trình con hiển thị thời gian

Ở chế độ hiển thị thời gian (chế độ = 2) bao gồm đồng kim và đồng hồ số, mặt của đồng hồ sẽ được thiết kế trước và ta chỉ cần hiển thị phông nền. Các thông số về thời gian như thứ, ngày, tháng, năm, giờ, phút, giây sẽ được cập nhật liên tục sau đó sẽ hiển thị lên màn hình và vẽ kim đồng hồ nếu đủ 1s tức là 1s chỉ hiển thị một lần. Điều này làm tối ưu công việc mà vi điều khiển thực hiện giúp hệ thống chạy mượt mà hơn.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 45 Bắt đầu Kết thúc Hiển thị phông nền thời tiết Đủ 1s Hiển thị thứ, ngày, tháng, năm, giờ, phút, giây

Hiển thị nhiệt độ, độ ẩm, áp xuất , tốc độ gió, icon thời

tiết

Sai

Đúng

Nhận dữ liệu từ ESP 8266

Hình 4.12 Chương trình con hiển thị thời tiết

Cuối cùng là chế độ hiển thị thời tiết (chế độ = 3), phông nền thời tiết cũng được thiết kế trước và hiển thị. Ở chế độ này tất cả dữ liệu sẽ được nhận từ module ESP

8266 Node MCU truyền đến thông qua giao tiếp truyền thông UART bao gồm:

• Thời gian: Thứ, ngày, tháng, năm, giờ, phút, giây.

• Thời tiết: Nhiệt độ, độ ẩm, áp xuất, tốc độ gió và mã số của hình ảnh tương ứng với thời tiết hiện tại.

Dữ liệu sẽ được nhận liên tục và khi đủ thời gian là 1s thì tất cả các thông số đó sẽ được hiển thị lên màn hình.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 46 Bắt đầu Kết thúc Hiển thị phông nền thời tiết Đủ 1 giây Hiển thị thứ, ngày, tháng, năm, giờ, phút, giây Hiển thị nhiệt độ, độ ẩm, áp

xuất, tốc độ gió, icon thời tiết

Sai

Đúng

Nhận dữ liệu từ ESP

Chọn khu vực thời tiết

Hình 4.13 Lưu đồ chương trình con hiển thị thời tiết

Cuối cùng là chế độ hiển thị thời tiết (chế độ 3), phông nền thời tiết cũng được thiết kế trước và hiển thị. Ở chế độ này tất cả dữ liệu sẽ được nhận từ module ESP 8266 Node MCU truyền đến thông qua giao tiếp truyền thông UART bao gồm: • Thời gian: Thứ, ngày, tháng, năm, giờ, phút, giây.

• Thời tiết: Nhiệt độ, độ ẩm, áp xuất, tốc độ gió và mã số của hình ảnh tương ứng với thời tiết hiện tại.

Dữ liệu sẽ được nhận liên tục và khi đủ thời gian là 1s thì tất cả các thông số đó sẽ được hiển thị lên màn hình.

Chương trình con “Chọn khu vực thời tiết” là chương trình xử lý khi người dùng thay đổi khu vực thời tiết bằng cách nhấn vào cài đặt trên màn hình.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 47

4.4.2 Lưu đồ giải thuật Node MCU

Bắt đầu Cấu hình UART Thiết lập Wifi Kết nối Wifi Kết nối Wifi thành công Kết thúc Sai Đúng Đúng (adsbygoogle = window.adsbygoogle || []).push({});

Cài đặt lại Wifi cho ESP

Đủ 60 giây

Đọc dữ liệu thời tiết từ Web

Sai

UART ESP

Hình 4.13 Lưu đồ chương trình chính cho Node MCU

Để giao tiếp truyền và nhận dữ liệu với vi điều khiển trung tâm ta sử dụng chuẩn giao tiếp UART. Nên ta phải cấu hình UART cho Node MCU, sau đó thiết lập Wifi để Node MCU có thể truy cập được internet.

Nếu kết nối Wifi không thành công ta phải kết nối lại cho Node MCU, sau khi kết nối thành công nó sẽ tiến hành đọc dữ liệu từ Website sau 60 giây (tức là 60 giây lấy dữ liệu một lần, do giới hạn truy cập của trang Website) và thực hiện chương trình con UART ESP sau đó lặp lại.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 48

Có dữ liệu từ vi điều khiển

Gửi dữ liệu thời tiết về vi điều khiển

Đúng

Sai

Dữ liệu yêu cầu gửi thời tiết

Đúng Bắt đầu Dữ liệu vị trí thời tiết Sai Kết thúc Nhận dữ liệu vị trí thời tiết và cập nhật vị trí Sai Đúng

Hình 4.15 Lưu đồ chương trình con UART ESP

Nếu có dữ liệu từ vi điều khiển lập tức nó sẽ kiểm tra dữ liệu đó:

• Dữ liệu yêu cầu gửi thời tiết: Là yêu cầu vi điều khiển trung tâm để Node MCU gửi các thông số thời tiết từ Website về.

• Dữ liệu vị trí thời tiết: Khi người dùng thay đổi vị trí thời tiết trong phần cài đặt thì sau khi chạm vào màn hình tại khu vực cần thay đổi, vi điều khiển sẽ lập tức gửi vị trí đó đến Node MCU để nó cập nhật lại vị trí.

4.4.3 Phần mềm lập trình cho vi điều khiển

Phần mềm STM32CubeMx và Keil C 5.0

Có nhiều phần mềm lập trình cho vi điều điều khiển STM như: Keil C, IAR, Cocos Code IDE…Trong đồ án môn học này, nhóm chúng em sử dụng phần mềm Keil C 5 để lập trình cho vi điều khiển.

STM32CubeMX là một phần mềm được cung cấp miễn phí giúp ích cho việc cấu hình ngoại vi, clock, tính toán dòng tiêu thụ, tạo project với nhiều dòng chip ARM STM32… Việc tạo project trở nên đơn giản bằng việc lựa chọn các ngoại vi cần thiết, cấp lock tùy chỉnh mà không cần liên quan đến code.

Việc tạo project với thư viện chuẩn là khá khó khăn vì cần nhiều bước để tạo ra project mới. STM32CubeMX ra đời như một lựa chọn để thay thế điều đó, với giao diện trực quan chúng ta sẽ dể dàng lập trình và có cái nhìn tổng quan hơn.

Thư viện đi kèm với phần mềm này là STM32Cube HAL, gọi tắt là thư viện HAL, bộ thư viện này được chuẩn hóa, giúp đồng nhất giữa các dòng F0,F1,F2,F3,F4…

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 49

Hình 4.13 Biểu tượng phần mềm STM32CubeMX

Hình 4.14 Biểu tượng phần mềm Keil

Cấu hình cho vi điều khiển STM sử dụng phần mên STM32CubeMX

Bước 1: Tạo Project (adsbygoogle = window.adsbygoogle || []).push({});

Mở phần mềm STM32CubeMX lên, nhấn vào New Project để bắt đầu tạo project mới.

• Cửa sổ hiện ra với các thiết lập:

• Series: Chọn họ MCU bạn sử dụng, Lines: Chọn dòng MCU bạn sử dụng,

Package: Chọn kiểu đóng gói của MCU.

• Hoặc nhập mã MCU vào ô tìm kiếm

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 50

Hình 4.15 Tạo project mới trên STM32CubeMx

Bước 2: Chọn ngoại vi

Sau khi đã lựa chọn xong MCU, tiến hành chọn ngoại vi cần dùng tại thẻ PinOut: Trong danh sách Peripheral được liệt kê bên trái có các ngoại vi mà MCU hỗ trợ, sử dụng ngoại vi nào thì Enable ngoại vi đó lên.

Tại hình MCU trong khung bên phải, bạn có thể trực tiếp cấu hình trực quan từng chân của MCU theo các tính năng GPIO mà MCU hỗ trợ bằng cách click vào chân MCU và chọn chức năng cần thiết.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 51

Bước 3: Cấu hình xung nhịp

Sau khi đã lựa chọn ngoại vi cần thiết, tiến hành cấu hình xung đồng hồ cho ngoại vi tại thẻ Clock Configuration.

Hình 4.17 Cấu hình xung nhịp trên STM32CubeMX

Bước 4: Cấu hình ngoại vi

Tiến hành cấu hình đặc tính của ngoại vi đã chọn tại thẻ Configuration.

Tại đây phần mềm có biểu diễn theo cấu trúc firmware, tùy vào loại ngoại vi bạn dùng mà phần mềm xếp vào nhóm chức năng riêng.

Hình 4.18 Cấu hình ngoại vi trên STM32CubeMX

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 52 Sau khi đã điều chỉnh, cấu hình những ngoại vi cần thiết, chúng ta tiến hành xuất mã nguồn để import vào các trình biên dịch KeilC bằng cách nhấn vào “GENERATE CODE”.

Hình 4.19 Tạo code trên STM32CubeMX

Lập trình sử dụng Keil C sau khi đã xuất mã nguồn

Bước 1: Mở phần mềm lập trình Keil C sau khi đã tạo mã nguồn Mở file main tại Application/User

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 53

Bước 2: Thiết lập các cấu hình cần thiết

Hình 4.20 Thiết lập cấu hình cho Keil C

Hình 4.21 Thiết lập cấu hình cho Keil C

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 54

Hình 4.22 Buid và nạp code lên chip

Nếu lập trình đúng nên khi biên dịch thông báo “0 error …” và cho biết phần trăm bộ nhớ đã sử dụng. Nếu sai cú pháp thì biên dịch không thành công thì phải hiệu chỉnh cho đến khi hết lỗi. Trong thông báo còn cho biết 2 thông tin dung lượng bộ nhớ ROM và RAM đã sử dụng. Sau khi biên dịch xong thì sẽ tạo ra file chứa các số hex dùng để nạp vào vi điều khiển.

Phần mềm IDE Arduino (adsbygoogle = window.adsbygoogle || []).push({});

Môi trường phát triển tích hợp Arduino IDE là một ứng dụng đa nền tảng được viết bằng Java, và được dẫn xuất từ IDE cho ngôn ngữ lập trình xử lý và các dự án lắp ráp. Do có tính chất mã nguồn mở nên môi trường lập trình này hoàn toàn miễn phí và có thể mở rộng thêm bởi người dùng có kinh nghiệm.

Hình 4.23 Biểu tượng phần mềm lập trình IDE Arduino

Hướng dẫn sử dụng phần mềm lập trình IDE Arduino:

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 55

Hình 4.24 Giao diện phần mềm lập trình IDE Arduino sau khi khởi động

Bước 2: Chọn kit sử dụng ESP 8266 NNOE MCU theo đúng phiên bản của kit và chọn Port.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 56 Vào Tools chọn Board và chọn kit phù hợp với phiên bản.

Hình 4.26 Chọn Port trên IDE Arduino

Sau đó vào Port chọn cổng COM để nạp code vào kit.

Bước 3: Sau khi viết code xong, chọn biên dịch và nạp code vào kit.

Hình 4.27 Biên dịch và nạp code

Sau khi viết code xong tiến hành biên dịch để kiểm tra lỗi, nếu không có lỗi ta nạp code vào kit để chạy.

4.4.3 Phần mềm lập trình ứng dụng trên máy tính

Microsoft Visual Studio là một môi trường phát triển tích hợp (IDE) từ Microsoft. Nó được sử dụng để phát triển chương trình máy tính cho Microsoft Windows, cũng

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 57 như các trang website, các ứng dụng website và các dịch vụ website. Visual Studio sử dụng nền tảng phát triển phần mềm của Microsoft như Windows API, Windows Forms, Windows Presentation Foundation, Windows Store và Microsoft Silverlight.

Hình 4.28 Biểu tượng phần mềm Visual Studio

Visual Studio hỗ trợ nhiều ngôn ngữ lập trình khác nhau và cho phép trình biên tập mã và gỡ lỗi để hỗ trợ (mức độ khác nhau) hầu như mọi ngôn ngữ lập trình. Các ngôn ngữ tích hợp gồm có C, C++ và C++/CLI (thông qua Visual C++), VB.NET (thông qua Visual Basic.NET), C# (thông qua Visual C#) và F# (như của Visual Studio 2010[5]). Hỗ trợ cho các ngôn ngữ khác như J++/J#, Python và Ruby thông qua dịch vụ cài đặt riêng rẽ. Nó cũng hỗ trợ XML/XSLT, HTML/XHTML, JavaScript và CSS.

Các bước sử dụng phần mềm lập trình Visual Studio 2019 để viết ứng dụng đưa ảnh vào thẻ nhớ:

Bước 1: Mở ứng dụng Visual Studio 2019

Khởi động ứng dụng Visual Studio trên máy tính để bắt đầu xây dựng ứng dụng trên máy tính bằng C#. Sau khi khởi động giao diện sẽ hiện lên như bên dưới.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 58

Hình 4.29 Ứng dụng sau Visual Studio khi khởi động

Bước 2: Chọn New Project để tạo một dự án mới và cấu hình cho dự án

Một phần của tài liệu Thiết kế và thi công khung ảnh điện tử (Trang 55)