RS R/W Chức năng
0 0 Ghi vào thanh ghi IR để ra lệnh cho LCD
0 1 Đọc cờ bận ở DB7 và giá trị của bộ đếm địa chỉ ở DB0-DB6
1 0 Ghi vào thanh ghi DR
1 1 Đọc dữ liệu từ DR
3.3.4 Khởi tạo LCD
Khởi tạo là việc thiết lập các thông số làm việc ban đầu. Đối với LCD, khởi tạo giúp ta thiết lập các giao thức làm việc giữa LCD và MPU. Việc khởi tạo chỉ được thực hiện 1 lần duy nhất ở đầu chương trình điều khiển LCD và bao gồm các thiết lập sau:
Display clear: Xóa/khơng xóa tồn bộ nội dung hiển thị trước đó.
Function set: Kiểu giao tiếp 8bit/4bit, số hàng hiển thị 1hàng/2hàng, kiểu kí tự 5x8/5x10.
Display on/off control: Hiển thị/tắt màn hình, hiển thị/tắt con trỏ, nhấp nháy/khơng nhấp nháy.
Entry mode set: các thiết lập kiểu nhập kí tự như: Dịch/khơng dịch, tự tăng/giảm (Increment).
GIỚI THIỆU PHẦN MỀM APP INVENTOR 2 4.1 Sơ lược về nền tảng kéo thả - MIT App Inventor
MIT App Inventor dành cho Android là một ứng dụng web nguồn mở ban đầu được cung cấp bởi Google và hiện tại được duy trì bởi Viện Cơng nghệ Massachusetts (MIT).
Nền tảng cho phép nhà lập trình tạo ra các ứng dụng phần mềm cho hệ điều hành Android (OS). Bằng cách sử dụng giao diện đồ họa, nền tảng cho phép người dùng kéo và thả các khối mã (blocks) để tạo ra các ứng dụng có thể chạy trên thiết bị Android. Đến thời điểm hiện tại 07/2017, phiên bản iOS của nền tảng này đã bắt đầu được đưa vào thử nghiệm bởi Thunkable, là một trong các nhà cung cấp ứng dụng web cho ngôn ngữ này.
Nền tảng App Inventor được đưa ra thông qua yêu cầu vào ngày 12 tháng 7 năm 2010 và được phát hành công khai vào ngày 15 tháng 12 năm 2010. Nhóm App Inventor được dẫn dắt bởi Hal Abelson và Mark Friedman. Trong nửa sau của năm 2011, Google công bố mã nguồn, chấm dứt máy chủ và cung cấp tài trợ cho việc thành lập Trung tâm Nghiên cứu Điện thoại Di động MIT, do Hal Abelson và các giáo sư Eric Klopfer và Mitchel Resnick sáng lập để duy trì hoạt động của App Inventor. Phiên bản MIT được ra mắt vào tháng 3 năm 2012.
Vào ngày 6 tháng 12 năm 2013, MIT đã phát hành App Inventor 2, đổi tên từ tên gốc "App Inventor Classic".
Tính đến tháng 5 năm 2014, nền tảng đã có 87 nghìn người dùng hoạt động hàng tuần và 1,9 triệu đăng ký từ 195 quốc gia với tổng số 4,7 triệu ứng dụng được xây dựng.
Vào tháng 12 năm 2015, có 140 nghìn người sử dụng hoạt động hàng tuần và 4 triệu đăng ký tại 195 quốc gia với tổng số 12 triệu ứng dụng được xây dựng.
Hiện nay, mỗi tháng MIT App Inventor có hơn 400.000 người dùng đến từ 195 quốc gia và đã tạo ra gần 22 triệu ứng dụng, MIT App Inventor đang thay đổi cách thế giới tạo ra các ứng dụng và cách mà học sinh nhỏ tuổi bắt đầu học về máy tính.
Hình 4. 1: Logo phần mềm App Inventor 2
4.2 Những tính năng có trên MIT App Inventor
Cho phép xây dựng nhanh chóng những thành phần cơ bản (components) của một ứng dụng Android: Nút bấm, nút lựa chọn, chọn ngày giờ, ảnh, văn bản, thông báo, kéo trượt, trình duyệt web.
Sử dụng nhiều tính năng trên điện thoại: Chụp ảnh, quay phim, chọn ảnh, bật video hoặc audio, thu âm, nhận diện giọng nói, chuyển lời thoại thành văn bản, dịch.
Hỗ trợ xây dựng game bằng các components: Ball, Canvas, ImageSprite. Cảm biến: đo gia tốc (Accelerometer Sensor), đọc mã vạch, tính giờ, con quay hồi chuyển (gyroscope Sensor), xác định địa điểm (location Sensor), NFC, đo tốc độ (pedometer), đo khoảng cách xa gần với vật thể (proximity Sensor).
Kết nối: Danh bạ, email, gọi điện, chia sẻ thông qua các ứng dụng mạng xã hội khác trên thiết bị, nhắn tin, sử dụng twitter qua API, bật ứng dụng khác, bluetooth, bật trình duyệt.
Lưu trữ: đọc hoặc lưu tệp txt, csv, sử dụng FusiontablesControl, tạo cơ sở dữ liệu đơn giản trên điện thoại hoặc trên đám mây thông qua server tự tạo hoặc Firebase.
4.3 Giao diện trong App Inventor 2
Hình 4. 2: Giao diện trong AI2
Cửa sổ thiết kế gồm 4 khung chức năng chính:
4.3.1 Pallete:
Chứa các thành phần có thể đặt lên Screen nhìn thấy được trong mục User Interface: Button, Label, Image, TextBox, … Còn các thành phần chức năng khơng nhìn thấy được: Bluetooth, Clock, …
4.3.2 Viewer:
Hiển thị giao diện Screen như trên điện thoại. Kéo thả các thành phần từ khung Pallete sang để thiết kế giao diện cho phần mềm.
Hình 4. 4: Vùng làm việc Viewer
4.3.3 Components:
Hình 4. 5: Vùng làm việc Components
4.3.4 Properties:
Là vùng thuộc tính của các đối tượng trong Components, trong đó sẽ có các tùy chọn cho các đối tượng đó như tên, kích thước, hướng căn chỉnh, màu nền… một đối tượng trong Components sẽ có những thuộc tính khác nhau.
4.4 Cách sử dung App Inventor 2 4.4.1 Khởi tạo App Inventor:
4.4.1.1 Sử dung Offline
Truy cập website: nguoithanhmien.blogspot.com download phần mềm App Inventor2 về máy (lưu ý có 2 phiên bản dành cho Windows 64 bit và Windows 32 bit). Sau khi cài đặt xong chương trình, truy cập địa chỉ localhost:8888 để sử dụng. Giao diện tương tự như Online, khơng khác gì phiên bản Online.
4.4.1.2 Sử dụng Online
Truy cập vào trang web: http://ai2.appinventor.mit.edu Lần đầu tiên đăng nhập vào thì trang này sẽ yêu cầu một tài khoản Google để đăng nhập. Sau khi đăng nhập thành công, chấp nhận các điều khoản từ trang web, cập nhật phiên bản mới thì giao diện của App hiện lên.
Hình 4. 7: Giao diện App Inventor 2
4.4.2 Tạo project mới
Sau khi giao diện App Inventor hiện lên, click chọn vào Start new project để tạo được một project mới hoặc click vào Projects sau đó chọn Start new
Hình 4. 8: Cách tạo project mới
Tại đây sẽ đặt tên cho project mình muốn tạo (lưu ý tên được đặt khơng có dấu).
Hình 4. 9: Đặt tên cho project
Hình 4. 10: Giao diện làm việc của App
4.4.3 Sử dụng các đối tượng.
Để đưa đối tượng vào dự án, chỉ cần kéo đối tượng cần lấy ở vùng Palete sang vùng Viewer rồi thả chúng vào đó.
Ví dụ: Sử dụng đối tượng là Button, sau khi kéo thả vào vùng làm việc
Viewer, ngay lập tức trên vùng Components sẽ hiển thị đối tượng Button. Có thể
đổi tên đối tượng vừa chọn bằng cách Click vào Rename phía bên dưới. Ngay lập tức kế bên đó các thuộc tính của đối tượng Button sẽ hiển thị lên vùng Properties.
Hình 4. 11: Sử dụng đối tượng
Theo đó chỉ cần thiết kế dự án theo ý tưởng mà mình mong muốn.
Trong AI2 code chính là các Blocks, chỉ cần kéo thả các Blocks sang khung Viewer và kết nối chúng theo chức năng mong muốn mà khơng cần gõ từng dịng code. Đây là điểm đặc biệt trong AI2.
Blocks gồm 2 nhóm chính:
Các Blocks chức năng cơ bản trong 1 chương trình như: điều khiển, if… then, while…do, ký tự, khởi tạo biến, list, …
Hình 4. 12: Blocks chức năng trong AI2
Các Blocks chức năng theo từng Components trong ứng dụng: mỗi Component có các Block chức năng tương ứng.
Hình 4. 13: Blocks trong Components
Nhóm này gồm 3 kiểu :
Kiểu thuộc tính (Properties):
Kiểu phương thức (Method):
Hình 4. 15: Blocks Method
Kiểu sự kiện (Events):
4.4.5 Build chương trình và chạy thử
Để chạy chương trình viết trên AI2 có 2 cách:
Sử dụng phần mềm MIT Companion. Với cách này, cần cài đặt phần mềm MIT Companion trên điện thoại. Sau đó, kết nối với project của để tự động download về và chạy bên trong phần mềm MIT Companion.
Xuất ra file.apk và cài đặt online thông mã QR code. Để thực hiện, ta chọn Build => App (provide QR code for .apk). Sau đó sẽ xuất hiện mã QR code quét để tải file apk về và cài đặt.
Hình 4. 17: Xuất file .apk
Một cách khác đơn giản để sử dụng ứng dụng mà mình tạo ra khơng cần phải xuất file APK đó là truy cập vào CH Play, cài đặt ứng dụng MIT AI2 Companion. Mỗi khi muốn sử dụng ứng dụng chỉ cần Click Connect=>AI Companion.
Ngay lập tức, 1 mã code QR được hiện lên tương ứng với ứng dụng mà mình đang xây dựng.
Hình 4. 19: Mã QR
Đồng thời mở App vừa cài đặt trên điện thoại Click vào scan QR code. Lúc
đó, điện thoại sẽ tự đọc được mã code. Ứng dụng đang xây dựng tự động được cập nhật trên màn hình điện thoại.
Hình 4. 20: Quét mã QR
CHƯƠNG 5
5.1 Sơ lược về phần mềm lập trình Arduino IDE
Thiết kế bo mạch nhỏ gọn, trang bị nhiều tính năng thơng dụng mang lại nhiều lợi thế cho Arduino, tuy nhiên sức mạnh thực sự của Arduino nằm ở phần mềm. Mơi trường lập trình đơn giản dễ sử dụng, ngơn ngữ lập trình Wiring dễ hiểu và dựa trên nền tảng C/C++ rất quen thuộc với người làm kỹ thuật. Và quan trọng hơn là số lượng thư viện code được viết sẵn và chia sẻ bởi cộng đồng nguồn mở là cực kỳ lớn. Hình ảnh 5.1 khi mở giao diện Arduino IDE lên sử dụng.
Hình 5. 1: Giao diện phần mềm Arduino IDE.
Arduino là phần mềm dùng để lập trình cho arduino. Mơi trường lập trình cho arduino là IDE có thể chạy trên ba nền tảng phổ biến nhất hiện nay là Windows, Macintosh OSX và Lunix. Do có tính chất nguồn mở nên mơi trường lập trình này hồn tồn miễn phí và có thể mở rộng hơn bởi người dùng có kinh nghiệm.
Ngơn ngữ lập trình có thể được mở rộng thơng qua các thư viện C++.Và ngơn ngữ lập trình này dựa trên nền tảng của ngôn ngữ C của AVR nên người dùng hồn tồn có thể nhúng thêm code viết bằng AVR vào chương trình nếu muốn. Hiện tại, Arduino IDE có thể download từ trang chủ http://arduino.cc/
5.2 Giao diện phần mêm lập trình Arduino IDE
thấy giao diện dạng giống như hình 5.2.
Hình 5. 2: Các vùng trên Arduino
Giao diện trên Arduino được chia làm 3 vùng chính: vùng các thanh cơng cụ, vùng viết chương trình và vùng thơng báo.
5.2.1 Vùng thanh công cụ:
Vùng này bao gồm thanh menu gồm các mục: File / Edit / Sketch / Tools / Help Mục File:
- Sketchbook - chứa các bản thảo mà do chính chúng ta biên soạn và lưu lại - Examples - chứa các đoạn lập trình mẫu (sample code), chúng ta có thể kham khảo để học tập hoặc có thể kết nối Arduino với phần cứng tương ứng code mẫu để test.
- Preferences - là phần để chúng ta thực hiện các điều chỉnh về ngơn ngữ, kích thước chữ, nơi chứa sketch, cập nhật và nhiều tùy chỉnh khác.
- Các thao tác trên vùng viết lệnh lập trình như chỉnh sửa, sao chép, tìm dịng code v.v...
Mục Sketch:
- Các thao tác lên chương trình lập trình: biên tập, nạp code xuống board, tìm folder cho sketch, thêm thư viện và các sketch bổ trợ...
Mục Tools:
- Các điều chỉnh để đảm bảo Sketch trong Arduino IDE tương thích với board Arduino đang cắm vào: cổng COM, chọn loại board Arduino, nạp bootloader hoặc chọn cách nạp bằng mạch nạp ngồi (khơng cần nạp Bootloader)
Mục Help:
- Chỗ này chắc khơng ai thèm ngó tới nhưng mà mình nghĩ nó cũng giúp ích bạn tìm hiểu những gì bạn đang sử dụng, báo cáo lỗi chương trình, kêu gọi hỗ trợ v.v...
Ngồi ra, cịn các nút lệnh:
Verify: Kiểm tra đoạn code của bạn đã đúng quy cách ngôn ngữ C
chưa, đã đủ thư viện chưa v.v... Nếu thiếu hoặc sai sót thì sau khi click vào sẽ báo lỗi (đổi màu cam).
Upload: Nạp chương trình xuống board Arduino của bạn, nếu bị sự cố
nạp khơng xuống được board thì sẽ có thơng báo lỗ. New: Tạo sketch mới.
Open: Mở sketch đã có sẵn hoặc sketch down về (có đi.ino). Save: Lưu lại sketch đang soạn.
5.2.2 Vùng viết chương trình:
Ở vùng này chương trình được chia làm 2 phần chính là void setup() và void
loop(). Với phần void setup() dùng để khởi tạo các giá trị, gán biến hoặc gọi thư
viện cần thiết. phần chương trình này Arduino chỉ chạy 1 lần khi được cấp nguồn hoặc reset. Khác với setup() chương trình loop() khởi tạo chương trình chạy vịng lặp, ở phần này ta có thể thêm các lệnh cần thiết cho chương trình.
Hình 5. 3: Vùng viết chương trình
5.2.3 Vùng thông báo và báo lỗi
Khi viết code khơng lỗi, nạp thành cơng thì khi nhấn Verify - Upload thì vùng này sẽ hiện Done Verify / Done Uploading.
Nếu xuất hiện bất kì lỗi nào trong quá trình biên tập - nạp xuống board thì vùng này sẽ đổi màu cam, đồng thời chú thích những lỗi viết code, lỗi thư viện, lỗi nạp code v.v....
Hình 5. 4: Màn hình thơng báo lỗi
5.2.4 Những lưu ý khi nạp code
Phần mềm đã nhận được tín hiệu của board Arduino (Arduino COM port detect)
Khi cắm board Arduino vào máy tính cổng COM sẽ được nhận và bạn vào phần Tools > Port để chọn cổng COM kết nối Arduino IDE với board.
Hình 5. 5: Arduino nhận cổng COM3
Bản sketch đang soạn nạp đúng với board Arduino tương ứng (board manager)
Sau khi máy nhận cổng COM cần điều chỉnh phần mềm lập trình Arduino xác nhận đúng loại board đang muốn nạp.
Ở đây board là Arduino MEGA 2560 chip ATMEGA2560
CHƯƠNG 6
THIẾT KẾ, LẬP TRÌNH, LẮP ĐẶT MẠCH THỰC TẾ 6.1 Sơ đồ khối hệ thống
Hình 6. 1: Sơ đồ khối hệ thống
Hệ thống gồm 8 khối chính: khối nguồn, vi điều khiển, công tắc tháo linh kiện, điểm đo, nút nhấn và cịi, màn hình LCD, Bluetooth và điện thoại thơng minh.
Khối nguồn: Chính là Adapter, chuyễn đổi điện 220V thành điện 9V cung
cấp nguồn cho các thiết bị hoạt động (Arduino MEGA, Bluetooth HC05…)
Khối vi điều khiển: Dùng board Arduino để nhận tín hiệu từ điện thoại
thơng minh thơng qua bluetooth, sau đó xử lý các tín hiệu nhận được. Tín hiệu thu sau khi được xử lý thì sẽ khởi tạo giá trị của hệ thống mơ phỏng. Ngồi ra, khối vi điều khiển còn gửi các giá trị chân đo và điện áp tới điện thoại thông minh để mô phỏng hoạt động.
Khối công tắc linh kiện: dùng để giả lập tháo thiết bị. Khi đó, hệ thống sẽ
khởi tạo giá trị mới giúp sinh viên có cái nhìn trực quan về lỗi trên hệ thống. Ví dụ: Khi tháo cầu chì giống như tạo lỗi cầu chì bị đứt.
Khối điểm đo: dùng để thể hiện vị trí cần đo khi sinh viên dùng que đo kiểm
tra điện áp. Các vị trí này được đặt tương thích với mơ hình. Khối nút nhấn và cịi:
Nút nhấn START: dùng để sinh viên bắt đầu làm bài. Nút Nhấn RESET: dùng để sinh viên khởi tạo lại bài làm.
Nút nhấn cịi: Khi chế độ bình thường thì cịi kêu. Ngược lại, khi tạo lỗi thì cịi khơng kêu.
Khối màn hình LCD: Thông báo thời gian và điện áp cho sinh viên khi
đang trong q trình làm bài.
Khối Bluetooth: Chính là module Bluetooth HC05. Bluetooth sẽ nhận tín
hiệu từ điện thoại sau đó đưa tới vi điều khiển. Tín hiệu thu sau khi được xử lý thì sẽ khởi tạo giá trị của hệ thống mô phỏng. Ngồi ra, Bluetooth cịn gửi tín hiệu từ vi điều khiển tới điện thoại.
Điện thoại thơng minh (hệ điều hành Android): dùng nhận tín hiệu từ vi
điều khiển thơng qua module Bluetooth. Ngồi ra, cịn có thể gửi tín hiệu tạo lỗi tới vi điều khiển. Với phần mềm dành riêng cho việc hiển thị và gửi tín hiệu.
6.2 Mơ hình hệ thống
Thiết kế khung thông qua phần mềm CorelDraw X7. Bao gồm vẽ mạch điện của hệ thống còi, chữ cần thiết trên mạch và khắc đục lỗ để gắn các nút và LCD lên