Chỉ cần ghi được dữ liệu thành công vào DS1307, khi có pin cấp nguồn, thiết bị này vẫn liệu tục hoạt động theo đúng nguyên lý của đồng hồ. Chúng ta chỉ đơn giản là
đọc dữ liệu từ nó ra mà thôi. Với sự hỗ trợ của thư viện RTC1307, việc đọc dữ liệu vô cùng đơn giản. Với câu lệnh tùy chọnsecond, bạn đọc sẽ có đủ thông tin về giờ
phút giây và cả ngày tháng năm cho các ứng dụng của mình. Ở đây, chúng tôi chỉ ví dụ đơn giản cho việc hiển thị giờ và phút trên màn hình LCD kí tự 16x2.
Với mục đích như trên, rõ ràng, chúng ta sẽ can thiệp vào hàmTEMP_HUMI_LCD
đã hiện thực ở các bài trước. Để việc hiển thị cho đẹp, chúng tôi sẽ cho thông tin giờ và phút nằm ở sát bên phải, hàng đầu tiên của LCD, theo định dạnghh:mm.
Dòng lệnh sau đây sẽ được thêm vào hàm này, như sau:
Hình 11.7:Hiển thị giờ và phút lên LCD
Câu lệnhHiện chữthứ 3 trong hàm ở trên dùng để hiển thị thêm thông tin về giờ và phút. Với định dạng mà chúng ta mong muốn, sẽ có 5 kí tự được hiện ra màn hình. Với một hàng có 16 kí tự, vị trí cuối cùng sẽ là 15 (kí tự đầu tiên được tính là 0). Từ đó chỉ cần tính ngược lên, chúng ta sẽ có vị trí bắt đầu hiển thị là 11 cho trục x. Ở đây, chúng ta sẽ cho hiển thị ở dòng đầu tiên, nên y = 0. Chương trình của hệ thống sau khi đã tích hợp thêm DS1307 được chia sẻ như sau:
6 Câu hỏi ôn tập
1. Đồng hồ thời gian thực sử dụng giao tiếp gì? A. digital
B. analog C. uart D. i2c
2. Thư viện lập trình sử dụng trong bài có tên là gì? A. DS1307
B. RTC1307 C. 1307
D. Tất cả đều đúng
3. Thiết bị DS1307 sử dụng điện áp bao nhiêu volt? A. 3V
B. 3.3V C. 5V
D. Tất cả đều đúng
4. Tác vụ ghi dữ liệu vào DS1307 thường được sử dụng khi nào? A. Khi cài đặt hệ thống
B. Khi vận hành hệ thống C. Khi bảo trì hệ thống D. Tất cả đều đúng
5. Tác vụ đọc dữ liệu từ DS1307 thường được sử dụng khi nào? A. Khi cài đặt hệ thống
B. Khi vận hành hệ thống Khi bảo trì hệ thống C. Tất cả đều đúng
6. Để in dữ liệu thời gian theo định dạng hh:mm, ở góc bên phải của dòng thứ nhất, tọa độ nào sau đây là chính xác?
A. x = 11, y = 0 B. x = 0, y = 0 C. x = 0, y = 11 D. Tất cả đều sai
7. Vị trí I2C nào trên mạch mở rộng kết nối được với DS1307? A. Khe cắm thứ nhất
B. Khe cắm thứ hai
C. Bất kì khe cắm nào cũng được D. Tất cả đều đúng
Đáp án 1. D 2. B 3. C 4. A 5. B 6. A 7. D
CHƯƠNG 12
1 Giới thiệu
Thẻ RFID là một công nghệ nhận dạng bằng sóng vô tuyển (viết tắt của từ Radio Frequency Identification), được ứng dụng rất nhiều trong đời sống của chúng ta hiện nay. Về bản chất, thẻ RFID là một cảm biến, nhưng ở dạng thụ động. Tức là bình thường, nó không hề có nguồn điện. Chỉ khi thẻ RFID được đặt gần một thiết bị đọc thẻ, nó mới nhận được một nguồn năng lượng vừa đủ để gửi định danh bằng sóng vô tuyền tới bộ đọc thẻ để xác nhận dữ liệu. Với đặc tính này, thẻ RFID gần như trở thành chìa khóa mở cửa trong các ứng dụng thông minh như văn phòng, tòa nhà cao tầng cũng như nhiều ứng dụng khác.
Để tích hợp bộ thiết bị đọc thẻ RFID, trên thị trường có rất nhiều sản phẩm. Tuy nhiên, các sản phẩm này điều dựa chính trên thiết bị tích hợp PN522, và phiên bản nâng cấp sau này là PN532. Trong tài liệu này, chúng tôi sẽ sử dụng phiên bản nâng cấp PN532, với sự hỗ trợ của giao tiếp nối tiếp UART, vốn dễ sử dụng và kết nối hơi so với SPI của phiên bản PN522. Thiết bị RFID trong bài này được trình bày như hình bên dưới:
Hình 12.1:Đầu đọc thẻ RFID PN532
Mặc dù PN532 vẫn có hỗ trợ SPI, trong bài hướng dẫn này chúng tôi sử dụng kết nối UART với 4 chân VCC-GND-TxD-RxD, để kết nối vào cổng UART vẫn đang còn trống trên mạch mở rộng ChiPi Base Shield.
Trong bài hướng dẫn này, một ứng dụng mô phỏng việc mở cửa tự động sẽ được trình bày, với một động cơ RC Servo dùng để mô phỏng cho việc đóng cửa và mở cửa. Với thêm 2 thiết bị được sử dụng trong bài này, gần như toàn bộ các khe cắm trên mạch mở rộng đã sử dụng hết. Các mục tiêu chính trong bài hướng dẫn này như sau:
• Kết nối được với thiết bị đọc thẻ RFID
• Kết nối được với động cơ RC Servo
• Lập trình lấy dữ liệu từ thẻ RFID
2 Kết nối hệ thống
Khi kết nối với một thiết bị mới, điều quan trọng nhất là bạn phải quan tâm đến nguồn điện cung cấp cho nó. Với kết nối UART, đầu đọc thẻ có thể chấp nhận điện áp thấp 3.3V. Tuy nhiên, nếu như xài kết nối SPI thì phải cung cấp nguồn điện 5V. Trên mạch mở rộng ChiPi, có 1 cổng kết nối UART sử dụng chân P8 và P12 của mạch Microbit. Khi kết nối đầu đọc thẻ vào, bạn hãy lưu ý thứ tự chân kết nối của nó. Như hình minh họa bên dưới thì Rx đang kết nối với P12 và Tx đang kết nối với P8. Thông tin này sẽ được sử dụng khi lập trình nhận dữ liệu từ đầu đọc thẻ.
Hình 12.2:Đầu đọc thẻ RFID PN532
Tiếp theo, động cơ RC Servo sử dụng trong bài này sẽ được kết nối với cổng SERVO2 trên mạch mở rộng. Đây là động cơ được điều khiển theo góc xoay. Với phần điều khiển đã được tích hợp sẵn bên trong động cơ (gọi là driver động cơ), đây là động cơ dễ tiếp cận với người bắt đầu, do bạn dễ dàng quản lý được hành trình của nó thông qua góc xoay.
Cũng giống như thiết bị đọc thẻ, bạn đọc cần phải xem xét cẩn thận thứ tự chân kết nối của động cơ khi kết nối vào mạch mở rộng, đảm bảo 2 chân nguồn (5V) và đất (0V) cho nó. Lúc đó, chân còn lại sẽ là P16, là chân điều khiển để lập trình cho động cơ.