Mục đích nghiên cứu của đề tài Hệ thống điều khiển không dây trong ngôi nhà là một phần không thể thiếu trong các vấn đề về hệ thống ngày nay, với đề tài này sẽ giúp con người: + Điều kh
Trang 1MỤC LỤC i
PHẦN A: MỞ ĐẦU 1
1 Tính cấp thiết của đề tài 1
2 Mục đích nghiên cứu của đề tài 1
3 Đối tượng và phạm vị nghiên cứu: 2
4 Kết cấu của đề tài: đề tài này gồm 4 chương 2
PHẦN B: NỘI DUNG 3
CHƯƠNG 1: GIỚI THIỆU 3
Hinh 1.1.a: Mô hình nhà điều khiển không dây 3
1.2Nguyên lý hoạt động 3
Hình 1.1.b: Sơ đồ hệ thống mô hình 4
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 5
2.1 Hệ thống xử lý trung tâm 5
2.1.1 Giới thiệu 5
Hình 2.2: Sơ đồ khối xử lý trung tâm 5
2.1.2 Khối xử lý trung tâm 5
Hình 2.3: vi điều khiển Atmega328P 6
Hình 2.4: Sơ đồ chức năng của chân trên Atmega328P 7
Serial 8
USB8 SPI 8 TWI (I2C) 9
Bảng 2.2: Độ dài dữ liệu truyền 12
Bảng 2.3: tính tốc độ baud 13
Bảng 2.4.a, 2.4.b, 2.4.c, 2.4.d: Một số tốc độ baud mẫu 14
Trang 2Bảng 2.6: Bảng tóm tắt các chế độ hoạt động của ADC 16
Bảng 2.7: cách chọn hệ số chia 17
2.1.3 Khối giao tiếp Smartphone 18
2.1.3.a Giới thiệu 18
2.1.3.b Khảo sát Module HC-05 18
Hình 2.5: Module HC-05 19
Hình 2.6: Sơ đồ nguyên lý Module HC-05 20
Truyền thông nối tiếp UART 20
Hình 2.7: truyền nhận dữ liệu theo phương pháp song song và nối tiếp 20
Hình 2.8: Tín hiệu trong truyền thông nối tiếp 21
2.1.3.c Phần mềm trên Smartphone 21
Hình 2.9: Giao diện Website MIT App Inventor 22
Hình 2.10: Giao diện thiết kế MIT App Inventor 23
Hình 2.11: Giao diện Blocks 24
2.1.3.d Khối thời gian thực 25
Hình 2.12: IC DS1307 25
Hình 2.13:Sơ đồ nguyên lý cho mạch thời gian thực 27
2.1.3.e Bộ thu-phát không dây 27
Hình 2.14: Sơ đồ nguyên lý NRF24L01 28
Bảng 2.9: Sơ đồ kết nối với vi điều khiển 29
2.1.3.f Cảm biến nhiệt độ 30
Hình 2.16: Sơ đồ kết nối DS18B20 với chuẩn One-wire 32
Bảng 2.10: Bảng mô tả chức năng chuẩn nối tiếp One-wire 33
2.1.3.g Cảm biến ánh sáng và cảm biến chuyển động 33
Trang 32.2 Hệ thống xử lý khu vực 36
Hình 2.20: Sơ đồ khối hệ thống xử lý khu vực, 36
2.3 Bộ phận an ninh 37
Hình 2.21: LCD 16x2 37
Hình 2.22: cảm biến cửa 38
Bảng 2.11: Nối cảm biến cửa với vi điều khiển 38
Hình 2.23:Sơ đồ kết nối cảm biến MQ2 39
CHƯƠNG 3: THIẾT KẾ VÀ THI CÔNG HỆ THỐNG 41
3.1 Hệ thống điều khiển chính 41
3.1.1 Lưu đồ thuật toán hệ thống điều khiển chính 41
Lưu đồ 3.1: Lưu đồ thuật toán hệ thống điều khiển chính 41
3.1.2 Giải thích lưu đồ 41
Luu đồ 3.2: Lưu đồ thuật toán hệ thống điều khiển chính 42
3.1.3 Sơ đồ nguyên lý 43
3.1.4 Thi công mạch 44
3.2.1 Lưu đồ thuật toán hệ thống điều khiển khu vực 44
Lưu đồ 3.3: Lưu đồ hệ thống điều khiển khu vực 45
3.2.2 Giải thích lưu đồ 45
3.2.3 Sơ đồ nguyên lý 45
3.2.4 Thi công mạch 46
3.3 Thiết kế phần mềm trên smartphone 47
3.3.1 Tạo giao diện 47
Hình 3.5: Tạo giao diện trên MIT App Inventor 47
3.4 Sản phẩm và mô hình 50
3.4.1 Bộ phận điều khiển trung tâm 50
Trang 43.4.3 Mô hình nhà thông minh 51
CHƯƠNG 4: VIẾT CHƯƠNG TRÌNH 52
4.1 Giới thiệu phần mềm Arduino IDE 52
Hình 4.1: Giao diện Arduino IDE 52
Hình 4.3: Kết nối với LCD 55
Hình 4.4: Kết nối cảm biến nhiệt độ LM35 56
Hình 4.5: Kết nối giữa Ethernet Shield W5100 với Arduino Uno 57
Hình 4.6: Kết nối với Bluetooth bằng cách khởi tạo giao tiếp bằng phần mềm 59
4.3.6 Giao tiếp NRF24L01 60
Hình 4.7 Kết nối NRF24L01 60
Trang 5LỜI CẢM ƠN
Trong suốt thời gian học tập vừa qua, được sự chỉ dẫn của quý thầy cô trường Đại Học Văn Hiến, khoa Kỹ Thuật Công Nghệ đã giúp em hoàn thành khóa học của mình Nay thông qua đồ án tốt nghiệp này, em xin gởi lời cảm ơn chân thành đến:
Quý thầy cô trong khoa Kỹ thuật – Công nghệ, đặc biệt là Bộ môn Điện tử - Viễn thông đã tận tình chỉ bảo em trong suốt quá trình học tập
Quý thầy cô ở các khoa có liên quan đã cung cấp cho em những kiến thức cần thiết của một sinh viên
Trường Đại Học Văn Hiến đã tạo điều kiện cho em học tập trong suốt thời gian qua
Đặc biệt, em xin gởi lời cảm ơn chân thành và sâu sắc đến thầy NGUYỄN VĂN KHẢI đã tận tình hướng dẫn và giúp đỡ em trong suốt thời gian thực hiện đồ án tốt
Trang 6LỜI CAM ĐOAN
- -Tôi cam đoan đây là công trình nghiên cứu của riêng tôi, do tôi tự thực hiện, không sao chép, vay mượn từ các công trình nghiên cứu khoa học khác Đảm bảo mọi tài liệu tham khảo đều được trích dẫn, ghi chú đầy đủ
Tp.Hồ Chí Minh, ngày tháng năm
Sinh viên thực hiện
Trang 7NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
- -
…., ngày… tháng… năm 2014
Giáo viên phản biện
Trang 8NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
- -
ngày…….tháng……năm 2014
Giáo viên hướng dẫn
Trang 9DANH MỤC CÁC BẢNG BIỂU, LƯU ĐỒ, HÌNH
MỤC LỤC i
PHẦN A: MỞ ĐẦU 1
PHẦN B: NỘI DUNG 3
Hinh 1.1.a: Mô hình nhà điều khiển không dây 3
Hình 1.1.b: Sơ đồ hệ thống mô hình 4
Hình 2.2: Sơ đồ khối xử lý trung tâm 5
Hình 2.3: vi điều khiển Atmega328P 6
Hình 2.4: Sơ đồ chức năng của chân trên Atmega328P 7
Bảng 2.2: Độ dài dữ liệu truyền 12
Bảng 2.3: tính tốc độ baud 13
Bảng 2.5: tóm tắt giá trị các bit và điện áp tham chiếu tương ứng 15
Bảng 2.6: Bảng tóm tắt các chế độ hoạt động của ADC 16
Bảng 2.7: cách chọn hệ số chia 17
Hình 2.5: Module HC-05 19
Hình 2.6: Sơ đồ nguyên lý Module HC-05 20
Hình 2.7: truyền nhận dữ liệu theo phương pháp song song và nối tiếp 20
Hình 2.8: Tín hiệu trong truyền thông nối tiếp 21
Hình 2.9: Giao diện Website MIT App Inventor 22
Hình 2.10: Giao diện thiết kế MIT App Inventor 23
Hình 2.11: Giao diện Blocks 24
Hình 2.12: IC DS1307 25
Hình 2.13:Sơ đồ nguyên lý cho mạch thời gian thực 27
Hình 2.14: Sơ đồ nguyên lý NRF24L01 28
Bảng 2.9: Sơ đồ kết nối với vi điều khiển 29
Hình 2.16: Sơ đồ kết nối DS18B20 với chuẩn One-wire 32
Trang 10Bảng 2.10: Bảng mô tả chức năng chuẩn nối tiếp One-wire 33
Hình 2.18: Sơ đồ nguyên lý của cảm biến ánh sáng cơ bản 34
Hình 2.19: Cấu tạo cảm biến chuyển động 35
Hình 2.20: Sơ đồ khối hệ thống xử lý khu vực, 36
Hình 2.21: LCD 16x2 37
Hình 2.22: cảm biến cửa 38
Bảng 2.11: Nối cảm biến cửa với vi điều khiển 38
Hình 2.23:Sơ đồ kết nối cảm biến MQ2 39
Lưu đồ 3.1: Lưu đồ thuật toán hệ thống điều khiển chính 41
Luu đồ 3.2: Lưu đồ thuật toán hệ thống điều khiển chính 42
Lưu đồ 3.3: Lưu đồ hệ thống điều khiển khu vực 45
Hình 3.5: Tạo giao diện trên MIT App Inventor 47
Hình 4.1: Giao diện Arduino IDE 52
Hình 4.3: Kết nối với LCD 55
Hình 4.4: Kết nối cảm biến nhiệt độ LM35 56
Hình 4.5: Kết nối giữa Ethernet Shield W5100 với Arduino Uno 57
Hình 4.6: Kết nối với Bluetooth bằng cách khởi tạo giao tiếp bằng phần mềm 59
Hình 4.7 Kết nối NRF24L01 60
Trang 11KÍ HIỆU CÁC TỪ VIẾT TẮT – THUẬT NGỮ ANH – VIỆT
UART Universal Asynchronous serial Reveiver
and Transmitter
Truyền nhận dữ liệu bất đồng bộ
Trang 12CGROM Character Generator ROM Bọ tạo font ký tự
Trang 13PHẦN A: MỞ ĐẦU
1 Tính cấp thiết của đề tài
Khi cuộc sống con người được nâng cao, những nhu cầu cuộc sống hằng ngày càng cao đòi hỏi phải được hỗ trợ tốt hơn Và từ những nhu cầu thực tế đó ý tưởng về ngôi nhà thông minh hình thành Một ngôi nhà mà chứa đựng sự ấm áp yêu thương, tình yêu và hạnh phúc, mọi hoạt động của con người điều được hỗ trợ và giúp đỡ một cách linh hoạt, không những giúp đỡ mà ngôi nhà còn quản lý một cách thông minh
Ngày nay, vớ sự phát triển một cách nhanh chóng của ngành điện tử cũng như nhiều ngành khác thì ý tưởng về ngôi nhà thông minh không còn vướng bởi rào cản công nghệViệc điều khiển nhà thông minh thông qua Smartphone tạo nên bước ngoặc lớn trong việc điều khiển tự động, không dây một cách linh hoạt, có thể nói sự phát triển không ngừng của những chiếc Smartphone đã làm cho công nghệ thêm bước tiến, việc điều khiển dễ dàng hơn
Từ ý tưởng đó, nhu cầu về cuộc sống thoải mái nên việc xây dựng “HỆ THỐNG ĐIỆ
TỬ TỰ ĐÔNG CHO NGÔI NHÀ THÔNG MINH” để đáp ứng phần nào trong cuộc sống
mọi người
Do thời gian nghiên cứu và thực hiện đề tài chỉ giới hạn trong một khoảng thời gian nhất định , vốn kiến thức và việc tìm hiểu sâu về một hệ thống còn hạn chế nên đề tài này cũng có nhiều thiếu sót đáng kết, mọng quý thầy cô và người đọc đóng góp ý kiến để đề tài được hoàn thiện hơn
2 Mục đích nghiên cứu của đề tài
Hệ thống điều khiển không dây trong ngôi nhà là một phần không thể thiếu trong các vấn đề về hệ thống ngày nay, với đề tài này sẽ giúp con người:
+ Điều khiển một cách độc lập
+ Điều khiển không dây từ hệ thông chính qua các hệ thống phụ
+ Góp phần đảm bảo an toàn cho ngôi nhà khi không có người bên trong
+ Giao diện thiết kế điều khiển dễ dàng trên điện thoại Smartphone
Với đề tài này giúp sinh viên có nhiều kiến thức về các thiết bị, tập thói quen nghiên cứu phục vụ công việc, có thể ứng dụng trong thực tế
Trang 143 Đối tượng và phạm vị nghiên cứu:
Hiện nay có nhiều phương pháp thiết kế hệ thống nhà thông minh khác nhau, trên nhiều nền khác nhau: như vi xử lý, vi điều khiển, smartphone, hay máy tính… Điều khiển kết nối vô tuyến hay hữu tuyến,
Cụ thể hơn đề tài này sử dụng vi điều khiển của hãng Almel Atmega328p, module kết nối không dây như NRF24L01+, các cảm biến, và Module Bluetooth HC-05 để giao tiếp với Smartphone
Phạm vi nghiên cứu: mô hình nhà thông minh cơ bản ở Việt Nam
4 Kết cấu của đề tài: đề tài này gồm 4 chương
Chương 1: Giới thiệu
Chương 2: Cớ sở lý thuyết
Chương 3: Thiết kế và thi công
Trang 15PHẦN B: NỘI DUNG CHƯƠNG 1: GIỚI THIỆU
1.1 Giới thiệu
Hệ thống điện tử tự động cho nhà thông minh là hệ thống được điều khiển bởi một bộ
xử lý trung tâm với các bộ xử lý khác hay các ngoại vi được kết nối với nhau, thông qua các đường truyền vô tuyến hay hữu tuyến
Hinh 1.1.a: Mô hình nhà điều khiển không dây
Với hệ thống này sử dụng các bộ giao tiếp không dây RF, và điều khiển độc lập thông qua bộ xử lý trung tâm chính Với 2 chết độ điều khiển là tự động và tùy chỉnh cho người sử dụng chọn chế độ phù hợp dưới đây là sơ đồ về một hệ thống nhà thông minh không dây cơ bản nhưng đầy đủ các yếu tốt hình thành nhà thông minh
1.2 Nguyên lý hoạt động
Trang 16Hình 1.1.b: Sơ đồ hệ thống mô hình
Ngôi nhà thông minh hoạt động dựa trên 2 chế dộ tùy chọn và tự động
Ở chế độ tùy chọn: người dùng sử dụng bộ điều khiển trên Smartphone với giao diện thiết kế phù hợp đễ sử dụng, được việt hóa phần nào đó trong giao diên, và trên Smartphone
kế nối với hệ thống thông qua Bluetooth ,
- Người dùng có thể biết được nhiệt độ trong phòng là bao nhiêu, hệ thống nào đang hoạt động, tình trạng thiết bị như thế nào, được hiển thị trên Smartphone
- Với chế độ này có thế điều khiển với thao tác cham tay trên Smartphone để điều khiển thiết bị
Ở chế độ tự động; người dùng chỉ cần bấm vào nút tự động thì hệ thống chính nhận được sẽ truyền tải thông tin về cho các bộ phận phù hợp khác trong hệ thống để điều khiển thiết bị,
Với chế độ này các thiết bị hoạt động thông minh xử lý linh hoạt hệ thống đèn, quạt, các loại cảm biến có trong phòng, tiết kiêm được năng lượng và hiệu năng hoạt động caoCòn 1 tùy chon trên giao diên Smartphone là hệ thống an ninh, với việc nhập password
để mở cửa và hệ thống cảm biến chuyển động vào ban đêm để cảnh báo có người đột nhập,
Trang 17CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2.1 Hệ thống xử lý trung tâm
2.1.1 Giới thiệu
Khối xử lý trung tâm có nhiệm vụ tổng hợp các dử liệu được gửi từ các khổi xử lý khác trong nhà và điều khiển thiết bị trong nhà qua sóng vô tuyền RF, và nhận dữ liệu điều khiển của người dùng qua Smartphone thông qua giao diện được thiết kế dàng riêng cho hệ thống, khối này được đặt ở phòng khách
Sơ đồ khối xử lý trung tâm
Hình 2.2: Sơ đồ khối xử lý trung tâm 2.1.2 Khối xử lý trung tâm
Để đáp ứng cho yêu cầu điều khiển trung tâm của mạch, ta cần sử dụng một vi điều khiển có đủ khả năng về cách thức lập trình, dung lượng bộ nhớ cũng như sự tương thích trong giao tiếp với PC, các Module ngoại vi và khả năng tích hợp cho hệ thống Họ vi điều khiển được sử dụng trong hệ thống là vi điều khiển AVR với dòng vi điều khiển Atmega328p là một MCU 8bit được lập trình bằng ngôn ngữ C hay được lập trình trên nền
Trang 18Arduino, sử dụng phần mềm Arduino IDE để biên dịch các dòng mã dựa trên nền tảng của ngôn ngữ C, được phát triển bởi một nhóm các nhà nghiên cứu ở thị trấn Ivrea thuộc nước
Ý, Với ngôn ngữ lập trình trên Arduino IDE này có thể lập trình trên nhiều dòng chip thuộc AVR hay Pic và MSP430 đặc biệt hơn có thể là ngôn ngữ lập trình trên các dòng máy tính mini như Intel Galileo hay Raspberry Pi Đối với AVR,Pic hay MSP430 thì có thể dùng 1 số thư viện chung cho một số loại Module thông dụng do số chân trên các lạo chip này khác nhau, và cũng có thể sử dụng một số loại vi điều khiển thuộc dòng AVR nhưng không thuộc các loại vi điều khiển có sẵn trên board Arduino một ví dụ: đối với board Arduino Uno R3 thì sử dụng Atmega328P nhưng ta có thể gắn Atmega8 vào Arduino Uno nếu nạp sẵn Bootloader cho Atmega8, tương tự ta có thể nạp các dòng khác như Atmega32, Atmega168,
ta có thể sử dụng Arduino làm mạch nạp cho các lạo AVR khác, nói cách khác có thể hiểu Arduino có thể xem là mạch nạp, và được biên dịch trên Arduino IDE với dạng ngôn ngữ riêng trên nền tảng C dễ lập trình,các dòng Pic hay MSP430 thì cũng tương tự
Vi xử lý Atmega328p là loại MCU 8bit, có thể sử dụng trong các ứng dụng tương đối phức tạp, có các bộ nhớ Flash, ROM, RAM, các ngỏ ra vào digital hay analog, có khả năng xuất tín hieeun PWM (điều chỉnh độ rộng xung), hỗ trợ các chuẩn giao tiếp UART, I2C, one Wire,SPI, hình bên dưới là sơ đồ chân và các chức năng của chân trong Atmega328p
Hình 2.3: vi điều khiển Atmega328P
Trang 19Hình 2.4: Sơ đồ chức năng của chân trên Atmega328P
Nguồn cấp chính cho Atmega328P là 5V
Các chân Analog, gồm các ngõ nhập analog 23, 24 28 Mỗi ngõ nhập analog có độ phân giải 10 bits (tương ứng 1024 giá trị), điện áp nhập từ 0–5v Nếu muốn thay đổi tầm nhập điện áp cần phải dùng pin AREF và hàm analog Reference Ngoài ra, các pin 27/28 cũng được nối trực tiếp với SDA/SCL hỗ trợ cơ chế truyền tin I2C Do đó, nếu SDA/SCL được sử dụng thì 27/28 sẽ không được dùng
Các chân Digital – PWM(#), gồm 14 pin vào/ra dạng tín hiệu số (digitalinput/output)
được ký hiệu từ số 2 – 6 và 9-19 Mỗi pin này đều có thể dùng để nhập hoặc xuất tín hiệu dạng số với mức điện áp là 0 hoặc 5 volts, dòng max qua mỗi pin là 40 mA Ngoài ra, một
số pin có thêm các chức năng đặc biệt sau :
• Serial– pin 2(RX) và pin 3(TX), đây là 2 pin dùng để truyền nối tiếp (serial)
• External Interrupts– pin 4, 5 thực hiện chức năng ngắt (interrupt) vi điều khiển khi
có tín hiệu từ bên ngoài kích vào một trong hai pin này
• PWM– pin 5, 11, 12, 15, 16, 17, đây là các pin với ký hiệu khác có thêm tính năng xuất ra tín hiệu PWM (điều chế độ rộng xung)
SPI– pin 16(SS), 17(MOSI), 18(MISO), 19(SCK), các pin này hỗ trợ truyền tin SPI
Trang 20Thông số kỹ thuật:
- Thông tin về Arduino UNO:
Điện áp vào (khuyến cáo) 7-12V
Giới hạn điện áp vào 6-20V
Số chân Digital I/O 14 ( 6 chân PWM)
Đây là chuẩn giao tiếp nối tiếp được dùng rất phổ biến trên các bo mạch Arduino Mỗi
bo có trang bị một số cổng Serial cứng (việc giao tiếp do phần cứng trong chip thực hiện) Bên cạnh đó, tất cả các cổng digital còn lại đều có thể thực hiện giao tiếp nối tiếp bằng phần mềm (có thư viện chuẩn, người dùng không cần phải viết code) Mức tín hiệu của các cổng này là TTL 5V Lưu ý cổng nối tiếp RS-232 trên các thiết bị hoặc PC có mức tín hiệu là UART 12V Để giao tiếp được giữa hai mức tín hiệu, cần phải có bộ chuyển mức, ví dụ như chip MAX232.Số lượng cổng Serial cứng của Atmega328 là 1 và của Atmega2560 là 4 Với tính năng giao tiếp nối tiếp, các bo Arduino có thể giao tiếp được với rất nhiều thiết bị như PC, touchscreen, các game console…
Trang 21Thanh ghi ICR1:
* ICR1 (InputCapture Register 1) : khái niệm mới thứ 2 của T/C1 là Input Capture Khi có 1 sự kiện trên chân ICP1 (chân 14 trên Atmega8), thanh ghi ICR1sẽ “capture” giá trị của thanh ghi đếm TCNT1 Một ngắt có thể xảy ra trong trường hợp này, vì thế Input Capture có thể được dùng để cập nhật giá trị “TOP” của T/C1
Thanh ghi UDR:
* UDR: hay thanh ghi dữ liệu, là 1 thanh ghi 8 bit chứa giá trị nhận được và phát đi
của USART Thực chất thanh ghi này có thể coi như 2 thanh ghi TXB (Transmit data Buffer)
và RXB (Reveive data Buffer) có chung địa chỉ Đọc UDR thu được giá trị thanh ghi đệm dữ liệu nhận, viết giá trị vào UDR tương đương đặt giá trị vào thanh ghi đệm phát, chuẩn bị để gởi đi Chú ý trong các khung truyền sử dụng 5, 6 hoặc 7 bit dữ liệu, các bit cao của thanh ghi UDR sẽ không được sử dụng
Thanh ghi UCSRA:
* UCSRA (USART Control and Status Register A) : là 1 trong 3 thanh ghi điều khiển hoạt động của module USART
Thanh ghi UCSRA chủ yếu chứa các bit trạng thái như bit báo quá trình nhận kết thúc (RXC), truyền kết thúc (TXC), báo thanh ghi dữ liệu trống (UDRE), khung truyền có lỗi (FE), dữ liệu tràn (DOR), kiểm tra parity có lỗi (PE)…Bạn chú ý một số bit quan trọng của thanh ghi này:
* UDRE (USART Data Register Empty) khi bit bày bằng 1 nghĩa là thanh ghi dữ liệu UDR đang trống và sẵn sàng cho một nhiệm vụ truyền hay nhận tiếp theo Vì thế nếu bạn
Trang 22muốn truyền dữ liệu đầu tiên bạn phải kiểm tra xem bit UDRE có bằng 1 hay không, sau khi chắc chắn rằng UDRE=1 hãy viết dữ liệu vào thanh ghi UDR để truyền đi.
* U2X là bit chỉ định gấp đôi tốc độ truyền, khi bit này được set lên 1, tốc độ truyền so cao gấp 2 lần so với khi bit này mang giá trị 0
* MPCM là bit chọn chế độ hoạt động đa xử lí (multi-processor)
Thanh ghi UCSRB:
* UCSRB (USART Control and Status Register B): đây là thanh ghi quan trọng điều khiển USART Vì thế chúng ta sẽ khảo sát chi tiết từng bit của thanh ghi này
* RXCIE (Receive Complete Interrupt Enable) là bit cho phép ngắt khi quá trình nhận kết thúc Việc nhận dữ liệu truyền bằng phương pháp nối tiếp không đồng bộ thường được thực hiện thông qua ngắt, vì thế bit này thường được set bằng 1 khi USART được dung nhận
* RXB8 (Receive Data Bit 8) gọi là bit dữ liệu 8 Bạn nhớ lại rằng USART trong AVR
có hỗ trợ truyền dữ liệu có độ dài tối đa 9 bit, trong khi thanh ghi dữ liệu là thanh ghi 8 bit
Do đó, khi có gói dữ liệu 9 bit được nhận, 8 bit đầu sẽ chứa trong thanh ghi UDR, cần có 1 bit khác đóng vai trò bit thứ chín, RXD8 là bit thứ chín này Bạn chú ý là các bit được đánh
số từ 0, vì thế bit thứ chín sẽ có chỉ số là 8, vì lẽ đó mà bit này có tên là RXD8 (không phải RXD9)
Trang 23* TXB8 (Transmit Data Bit 8), tương tự như bit RXD8, bit TXB8 cũng đóng vai trò bit thứ 9 truyền thông, nhưng bit này được dung trong lúc truyền dữ liệu
Thanh ghi UCSRC:
* UCSRC (USART Control and Status Register C): thanh ghi này chủ yếu quy định khung truyền và chế độ truyền Tuy nhiên, có một rắc rối nho nhỏ là thanh ghi này lại có cùng địa chỉ với thanh ghi UBRRH (thanh ghi chứa byte cao dùng để xác lập tốc độ baud), nói một cách khác 2 thanh ghi này là 1 Vì thế bit 7 trong thanh ghi này, tức bit URSEL là bit chọn thanh ghi Khi URSEL=1, thanh ghi này được chip AVR hiểu là thanh ghi điều khiển UCSRC, nhưng nếu bit URSEL=0 thì thanh ghi UBRRH sẽ được sử dụng
Các bit còn lại trong thanh ghi UCSRC được mô tả như sau:
* UMSEL (USART Mode Select) là bit lựa chọn giữa 2 chế độ truyền thông đồng bộ
và không đồng bộ Nếu UMSEL=0, chế độ không đồng bộ được chọn, ngược lại nếu UMSEL=1, chế độ đồng bộ được kích hoạt
* Hai bit UPM1 và UPM0( Parity Mode) được dùng để quy định kiểm tra pariry Nếu UPM1:0=00, parity không được sử dụng (mode này khá thông dụng), UPM1:0=01 không được sử dụng, UPM1:0=10 thì parity chẵn được dùng, UPM1:0=11 parity lẻ được sử dụng (xem thêm bảng 1)
Bảng 2.1: Chọn kiểm tra parity.
* USBS (Stop bit Select), bit Stop trong khung truyền bằng AVR USART có thể là 1 hoặc 2 bit, nếu USBS=0 thì Stop bit chỉ là 1 bit trong khi USBS=1 sẽ có 2 Stop bit được dùng
* Hai bit UCSZ1 và UCSZ2 (Character Size) kết hợp với bit UCSZ2 trong thanh ghi UCSRB tạo thành 3 bit quy định độ dài dữ liệu truyền Bảng 2 tóm tắt các giá trị có thể có của tổ hợp 3 bit này và độ dài dữ liệu truyền tương ứng
Trang 24Bảng 2.2: Độ dài dữ liệu truyền.
* UCPOL (Clock Pority) là bit chỉ cực của xung kích trong chế độ truyền thông đồng
bộ nếu UCPOL=0, dữ liệu sẽ thay đổi thay đổi ở cạnh lên của xung nhịp, nếu UCPOL=1,
dữ liệu thay đổi ở cạnh xuống xung nhịp Nếu bạn sử dụng chế độ truyền thông không đồng
bộ, hãy set bit này bằng 0
Thanh ghi UBRR:
* UBRRL và UBRRH (USART Baud Rate Register): 2 thanh ghi thấp và cao quy định tốc độ baud
Nhắc lại là thanh ghi UBRRH dùng chung địa chỉ thanh ghi UCSRC, bạn phải set bit này bằng 0 nếu muốn sử dụng thanh ghi UBRRH Như bạn quan sát trong hình trên, chỉ có 4 bit thấp của UBRRH được dùng, 4 bit này kết hợp với 8 bit trong thanh ghi UBRRL tạo thành thanh ghi 12 bit quy định tốc độ baud Chú ý là nếu bạn viết giá trị vào thanh ghi UBRRL, tốc độ baud sẽ tức thì được cập nhật, vì thế bạn phải viết giá trị vào thanh ghi UBRRH trước khi viết vào thanh ghi UBRRL
Giá trị gán cho thanh ghi UBRR không phải là tốc độ baud, nó chỉ được USART dùng
để tính tốc độ baud Bảng 3 hướng dẫn cách tính tốc độ baud dựa vào giá trị của thanh ghi UBRR và ngược lại, cách tính giá trị cần thiết gán cho thanh ghi UBRR khi đã biết tốc độ baud
Trang 25Bảng 2.3: tính tốc độ baud.
Trong các công thức trong bảng 3, fOSC là tốc tần số xung nhịp của hệ thống (thạch anh hay nguồn xung nội…) Để tiện cho bạn theo dõi, tôi đính kèm bảng ví dụ cách đặt giá trị cho UBRR theo tốc độ baud mẫu
Bảng 2.4.a
Bảng 2.4.b
Trang 26Bảng 2.4.c
Bảng 2.4.d Bảng 2.4.a, 2.4.b, 2.4.c, 2.4.d: Một số tốc độ baud mẫu.
Thanh ghi ADMUX:
ADMUX (ADC Multiplexer Selection Register): là 1 thanh ghi 8 bit điều khiển việc chọn điện áp tham chiếu, kênh và chế độ hoạt động của ADC Chức năng của từng bit trên thanh ghi này sẽ được trình bày cụ thể như sau:
• Bit 7:6- REFS1:0 (Reference Selection Bits): là các bit chọn điện áp tham chiếu
Trang 27VREF, điện áp tham chiếu nội 2.56V hoặc điện áp AVCC Bảng 2 tóm tắt giá trị các bit và điện áp tham chiếu tương ứng.
Bảng 2.5: tóm tắt giá trị các bit và điện áp tham chiếu tương ứng
• Bit 5-ADLAR (ADC Left Adjust Result): là bit cho phép hiệu chỉnh trái kết quả chuyển đổi Sở dĩ có bit này là vì ADC trên AVR có độ phân giải 10 bit, nghĩa là kết quả thu được sau chuyển đổi là 1 số có độ dài 10 bit (tối đa 1023), AVR bố trí 2 thanh ghi data 8 bit
để chứa giá trị sau chuyển đổi Như thế giá trị chuyển đổi sẽ không lắp đầy 2 thanh ghi data, trong một số trường hợp người dùng muốn 10 bit kết quả nằm lệch về phía trái trong khi cũng có trường hợp người dùng muốn kết quả nằm về phía phải Bit ADLAR sẽ quyết định
vị trí của 10 bit kết quả trong 16 bit của 2 thanh ghi data Nếu ADLAR=0 kết quả sẽ được hiệu chỉnh về phía phải (thanh ghi ADCL chứa trọn 8 bit thấp và thanh ghi ADCH chứa 2 bit cao trong 10 bit kết quả), và nếu ADLAR=1 thì kết quả được hiệu chỉnh trái (thanh ghi ADCH chứa trọn 8 bit cao nhất, các bit từ 9 đến 2, và thanh ADCL chứa 2 bit thấp nhất trong 10 bit kết quả (bạn xem hình cách bố trí 2 thanh ghi ADCL và ADCH bên dưới để hiểu
Trang 28Bảng 2.6: Bảng tóm tắt các chế độ hoạt động của ADC Thanh ghi ADCSRA:
ADCSRA (ADC Control and Status RegisterA): là thanh ghi chính điều khiển hoạt động
và chứa trạng thái của module ADC
Từng bit của thanh ghi ADCSRA được mô tả như bên dưới:
• Bit 7 - ADEN(ADC Enable): viết giá trị 1 vào bit này tức bạn đã cho phép module ADC được sử dụng Tuy nhiên khi ADEN=1 không có nghĩa là ADC đã hoạt động ngay, bạn cần set một bit khác lên 1 để bắt đầu quá trình chuyển đổi, đó là bit ADSC
• Bit 6 - ADSC(ADC Start Conversion): set bit này lên 1 là bắt đầu khởi động quá trình chuyển đổi Trong suốt quá trình chuyển đổi, bit ADSC sẽ được giữ nguyên giá trị 1, khi quá trình chuyển đổi kết thúc (tự động), bit này sẽ được trả về 0 Vì vậy bạn không cần
và cũng không nên viết giá trị 0 vào bit này ở bất kỳ tình huống nào Để thực hiện một chuyển đổi, thông thường chúng ta sẽ set bit ADEN=1 trước và sau đó set ADSC=1
Trang 29• Bit 4 – ADIF(ADC Interrupt Flag): cờ báo ngắt Khi một chuyển đổi kết thúc, bit này tự động được set lên 1, vì thế người dùng cần kiểm tra giá trị bit này trước khi thực hiện đọc giá trị chuyển đổi để đảm bảo quá trình chuyển đổi đã thực sự hoàn tất.
• Bit 3 – ADIE(ADC Interrupt Enable): bit cho phép ngắt, nếu bit này được set bằng
1 và bit cho phép ngắt toàn cục (bit I trong thanh ghi trạng thái của chip) được set, một ngắt
sẽ xảy ra khi một quá trình chuyển đổi ADC kết thúc và các giá trị chuyển đổi đã được cập nhật (các giá trị chuyển đổi chứa trong 2 thanh ghi ADCL và ADCH)
• Bit 2:0 – ADPS2:0(ADC Prescaler Select Bits): các bit chọn hệ số chia xung nhịp cho ADC ADC, cũng như tất cả các module khác trên AVR, cần được giữ nhịp bằng một nguồn xung clock Xung nhịp này được lấy từ nguồn xung chính của chip thông qua một hệ
số chia Các bit ADPS cho phép người dùng chọn hệ số chia từ nguồn clock chính đến ADC Tham khảo bảng 2.6 để biết cách chọn hệ số chia
Bảng 2.7: cách chọn hệ số chia Thanh ghi ADC:
ADCL và ADCH (ADC Data Register): 2 thanh ghi chứa giá trị của quá trình chuyển đổi Do module ADC trên AVR có độ phân giải tối đa 10 bits nên cần 2 thanh ghi để chứa giá trị chuyển đổi Tuy nhiên tổng số bít của 2 thanh ghi 8 bit là 16, con số này nhiều hơn 10 bit của kết quả chuyển đổi, vì thế chúng ta được phép chọn cách ghi 10 bit kết quả vào 2 thanh ghi này Bit ADLAR trong thanh ghi ADMUX quy định cách mà kết quả được ghi vào
Trang 30Thông thường, 2 thanh ghi data được sắp xếp theo định dạng ADLAR=0, ADCL chứa 8 bit thấp và 2 bit thấp của ADCH chứa 2 bit cao nhất của giá trị thu được Chú ý thứ tự đọc giá trị từ 2 thanh ghi này, để tránh đọc sai kết quả, bạn cần đọc thanh ghi ADCL trước và ADCH sau, vì sau khi ADCH được đọc, các thanh ghi data có thể được cập nhật giá trị tiếp theo.
2.1.3 Khối giao tiếp Smartphone
2.1.3.a Giới thiệu
Khối gửi và nhận dữ liệu, tín hiệu từ Smartphone thông qua giao tiếp nối tiếp UART với Bluetooth HC-05, đây là Module Khi thao tác trên phần mềm được cài đặt trên Smartphone (cụ thể là trên hệ điều hành Android vì là hệ điều hành mã nguồn mở nên việc giao tiếp dễ dàng cho các ứng dụng giao tiếp từ xa)
2.1.3.b Khảo sát Module HC-05
HC-05 là một Module hỗ trợ việc kết nối không dây qua Bluetooth, có hai chế độ làm việc là tự động kết nối và tùy chỉnh kết nối thông qua chuẩn nối tiếp UART với tập lênh AT nhằm thiết lập kết nối cho HC-05, Module HC-05 hoạt động với ba vai trò Master, Slave, Lookpack tự thiết lập như chế độ làm việc tự động HC-05 khi làm việc ở chế độ tự động nó
sẽ theo thiết lập cuối cùng trên Module truyền dữ liệu tự động không phải thiết lập trở lại, Khi sử dụng chế độ tùy chỉnh thì Module sẽ được thiết lập dựa trên các tập lênh AT để cài đăt cấu hình thiết lập thông số cho thiết bị thông qua máy tính hoặc trên vi điều khiển bằng giao thức UART, chết độ làm việc có thể thay đổi bởi việc thiết lập cho chân PIO11 trên Module HC-05
Trang 31Hình 2.5: Module HC-05
HC-05
Có thể kết nối VCC
khiển
trong chuẩn UART
Nối với chân RXD
trong chuẩn UART
Nối với chân TXD
Bảng 2.8: Bảng mô tả chân ra và kết nối vi điều khiển
Thông số kỹ thuật Module HC-05:
- Độ nhạy có thể đạt đến -80dBm
- Phạm vi thay đổi công suất truyền +4dBm
- Tần số truyền 2.4Ghz và được tích hợp anten 2.4Ghz bên trong Module HC-05 không cần sử dụng anten
- Làm việc ở mức điện áp thấp 3.1V – 4.2V
- 8Mbit Flash ngoài
- HC-05 là Bluetooth ở lớp thứ 2 cho phép thiết bị hoạt động ở phạm vi bình thường
Trang 32- Hiệu suất cao trong truyền dữ liệu không dây
- Tốc độ Baud: 9600,19200,38400,57600,115200,230400,460800
Module HC-05 xử dụng IC bluetooth CSR BC417143 là dòng chip BlueCore Extenal dòng chip hỗ trợ 2 chuẩn kết nối là UART và SPI
4-Hình 2.6: Sơ đồ nguyên lý Module HC-05
• Truyền thông nối tiếp UART
UART là thuật ngữ viết tắt từ Universal Asynchronous serial Reveiver and Transmitter nghĩa là bộ truyền nhận nối tiếp không đồng bộ, có thể sử dụng trong việc giao tiếp giữa các
vi điều khiển, vi điều khiển với thiết bị ngoại vi, vi điều khiển với máy tính…
Truyền nhận này có ưu điểm tiết kiệm được số lượng đường truyền so với kiểu giao tiếp song song, nhưng tốc độ truyền k nhanh như giao tiếp song song
Hình 2.7: truyền nhận dữ liệu theo phương pháp song song và nối tiếp
Trang 33Hình 2.8: Tín hiệu trong truyền thông nối tiếp
Việc truyền dữ liệu này cần phải thống nhất theo thời gian để truyền 1 bit dữ liệu giữa hai thiết bị kết nối với nhau được gọi là tốc độ Baud, đây là tốc độ mà số bit dữ liệu được truyền trong 1 giây
Trong truyền thông nối tiếp rất hay xảy ra tình trạng sai lệch dữ liệu để tránh tình trạng này thì ngoài tốc độ Baud thì cần phải có khung truyền tức là mỗi lần truyền thì được quy định số bit trong mỗi lần truyền đó nói cách khách như là nơi chứa dữ liệu truyền là được định bởi Start bit và Stop bit bên trong là gói dữ liệu
Đối với Start bit là bit đầu tiên trong khung truyền và báo cho thiết bị biết là có một gói
dữ liệu sắp được truyền lên vi điều khiển
Trong khung truyền chứa dữ liệu được nhận biết bởi Start bit và Stop bit, bit có ảnh hưởng nhỏ nhất của data sẽ được truyền trước và bit có ảnh hưởng lớn nhất của data sẽ được truyền sau
Stop bit là bit dữ liệu báo rằng đã gửi xong một gói dữ liệu
Việc giao tiếp giữa thiết bị cụ thể là Module Bluetooth HC-05 với vi điều khiển theo kiểu kết nối này, khi dữ liệu nhận được từ Smartphone dữ liệu nhận được nhờ bộ thu phát sóng trong Module Bluetooth HC-05 truyền tới vi diêu khiển, cứ mỗi gói tin sẽ là một khung
dữ liệu và được phân chia để vi điều khiển xử lý
2.1.3.c Phần mềm trên Smartphone
Phần mềm sử dụng trên Smartphone giao tiếp với vi điều khiển quan Bluetooth được lập trình dựa trên phần mêm MIT App Inventor, đây là phần mềm với giao diện, thiết kế, kết nối đơn giản, giúp việc lập trình một phần mềm trên hệ điều hành Android một cách dễ dàng, tuy có nhiều hạn chế nhưng nó cũng đủ làm mọi việc với vi điều khiển, cũng như một
số phần mềm có tính ứng dụng cao hay phức tạp
Trang 34Phần mềm này là lập trình dựa trên cấu trúc các khối được kết nối với nhau thay vì viết một dạng ngôn ngữ lập trình để tạo ra phần mềm đó,
Chương trình này chúng ta thao tác cơ bản trên Website: http://appinventor.mit.edu/,
Hình 2.9: Giao diện Website MIT App Inventor
Ở phần mềm này cho chúng ta tương tác giao diện mà chúng ta thiết kế trên điện thoại thông qua kết nối Wifi,
Trang 35Hình 2.10: Giao diện thiết kế MIT App Inventor
Các chức năng chính của giao diện
Giao diện của phần Designer:
- User Interface: hiện các chức năng thiết kế giao diện cho phân mềm bao gồm các button, check box, text, label…
- Layout: làm các lớp để đặt các thành phần thiết kế lên chương trình
- Media: Hỗ trợ các định dạng tập tin nghe nhạc, xem phim được gắn trong phần mềm
- Drawing and Animation: tạo các ảnh động các hiệu ứng từ hình ảnh
- Sensors: các thành phần được nhúng vào phần mềm,
- Social: thiết lập các ứng dụng mạng xã hội, gọ điệ thoại, danh bạ…
- Storage: tạo nơi lưu trữ cho chương trình
- Connectivity: Thiết lập các kết nối qua Bluetooth hay WebServer
Trang 36Giao diện Blocks:
Các khối blocks, tạo các khối liên kết với nhau nhằm thực hiện các chức năng mà người thiết ké mong muốn,ví dụ: muốn nhấn một nút trên phần mềm để thực hiện được chức năng thì ta sẽ tạo một button và đặt tên cho nó, vào phần Blocks nhấn vào tên button đã tạo
và xây dựng chức năng cửa button đó
Hình 2.11: Giao diện Blocks
Các mục chức năng:Control, Logic, Math, Text, Lists, Colors, Variables, Procedures, là các thành phần tạo các chức năng cho phần thiết kế Ví dụ muốn có hàm If như các công cụ lập trình khác thì ta lấy các block if trong Control cho phù hợp, nhưng phải gắn cho khớp các block lại với nhau
Trang 372.1.3.d Khối thời gian thực
Khảo sát IC thời gian thực DS1307
Hình 2.12: IC DS1307
IC DS1307 là IC thời gian thực (RTC: Real-time clock) là một sản phẩm của Dallas Semiconductor (một công ty thuộc Maxim Integrated Products) Chip này có 7 thanh ghi 8-bit chứa thời gian là: giây, phút, giờ, thứ (trong tuần), ngày, tháng, năm Ngoài ra DS1307 còn có 1 thanh ghi điều khiển ngõ ra phụ và 56 thanh ghi trống có thể dùng như RAM DS1307 được đọc và ghi thông qua giao diện nối tiếp I2C (TWI của AVR)
Các chân của DS1307 được mô tả như sau:
- X1 và X2: là 2 ngõ kết nối với 1 thạch anh 32.768KHz làm nguồn tạo dao động cho
chip
- VBAT: cực dương của một nguồn pin 3V nuôi chip
- GND: chân mass chung cho cả pin 3V và Vcc
- Vcc: nguồn cho giao diện I2C, thường là 5V và dùng chung với vi điều khiển Chú ý
là nếu Vcc không được cấp nguồn nhưng VBAT được cấp thì DS1307 vẫn đang hoạt động (nhưng không ghi và đọc được)
- SQW/OUT: một ngõ phụ tạo xung vuông (Square Wave / Output Driver), tần số của xung được tạo có thể được lập trình Như vậy chân này hầu như không liên quan đến chức năng của DS1307 là đồng hồ thời gian thực, chúng ta sẽ bỏ trống chân này khi nối mạch
- SCL và SDA là 2 đường giao xung nhịp và dữ liệu của giao diện I2C
Bộ nhớ DS1307 có tất cả 64 thanh ghi 8-bit được đánh địa chỉ từ 0 đến 63 (từ 0x00 đến 0x3F theo hệ hexadecimal) Tuy nhiên, thực chất chỉ có 8 thanh ghi đầu là dùng cho chức năng “đồng hồ” (tôi sẽ gọi là RTC) còn lại 56 thanh ghi bỏ trông có thể được dùng chứa biến
Trang 38tạm như RAM nếu muốn Bảy thanh ghi đầu tiên chứa thông tin về thời gian của đồng hồ bao gồm: giây (SECONDS), phút (MINUETS), giờ (HOURS), thứ (DAY), ngày (DATE), tháng (MONTH) và năm (YEAR) Việc ghi giá trị vào 7 thanh ghi này tương đương với việc
“cài đặt” thời gian khởi động cho RTC Việc đọc giá từ 7 thanh ghi là đọc thời gian thực mà chip tạo ra
Thanh ghi giây (SECONDS): thanh ghi này là thanh ghi đầu tiên trong bộ nhớ của
DS1307, địa chỉ của nó là 0x00 Bốn bit thấp của thanh ghi này chứa mã BCD 4-bit của chữ
số hàng đơn vị của giá trị giây Do giá trị cao nhất của chữ số hàng chục là 5 (không có giây
60 !) nên chỉ cần 3 bit (các bit SECONDS6:4) là có thể mã hóa được (số 5 =101, 3 bit) Bit cao nhất, bit 7, trong thanh ghi này là 1 điều khiển có tên CH (Clock halt – treo đồng hồ), nếu bit này được set bằng 1 bộ dao động trong chip bị vô hiệu hóa, đồng hồ không hoạt động Vì vậy, nhất thiết phải reset bit này xuống 0 ngay từ đầu
Thanh ghi phút (MINUTES): có địa chỉ 0x01, chứa giá trị phút của đồng hồ Tương tự
thanh ghi SECONDS, chỉ có 7 bit của thanh ghi này được dùng lưu mã BCD của phút, bit 7 luôn luôn bằng 0
Thanh ghi giờ (HOURS): có thể nói đây là thanh ghi phức tạp nhất trong DS1307
Thanh ghi này có địa chỉ 0x02 Trước hết 4-bits thấp của thanh ghi này được dùng cho chữ
số hàng đơn vị của giờ Do DS1307 hỗ trợ 2 loại hệ thống hiển thị giờ (gọi là mode) là 12h (1h đến 12h) và 24h (1h đến 24h) giờ, bit6 (màu green trong hình 4) xác lập hệ thống giờ Nếu bit6=0 thì hệ thống 24h được chọn, khi đó 2 bit cao 5 và 4 dùng mã hóa chữ số hàng chục của giá trị giờ Do giá trị lớn nhất của chữ số hàng chục trong trường hợp này là 2 (=10, nhị phân) nên 2 bit 5 và 4 là đủ để mã hóa Nếu bit6=1 thì hệ thống 12h được chọn, với trường hợp này chỉ có bit 4 dùng mã hóa chữ số hàng chục của giờ, bit 5 (màu orangetrong hình 4) chỉ buổi trong ngày, AM hoặc PM Bit5 =0 là AM và bit5=1 là
PM Bit 7 luôn bằng 0 (thiết kế này hơi dở, nếu dời hẳn 2 bit mode và A-P sang 2 bit 7 và 6 thì sẽ đơn giản hơn)
Thanh ghi thứ (DAY – ngày trong tuần): nằm ở địa chĩ 0x03 Thanh ghi DAY chỉ mang giá trị từ 1 đến 7 tương ứng từ Chủ nhật đến thứ 7 trong 1 tuần Vì thế, chỉ có 3 bit thấp trong thanh ghi này có nghĩa
Các thanh ghi còn lại có cấu trúc tương tự, DATE chứa ngày trong tháng (1 đến 31), MONTH chứa tháng (1 đến 12) và YEAR chứa năm (00 đến 99) Chú ý, DS1307 chỉ dùng cho 100 năm, nên giá trị năm chỉ có 2 chữ số, phần đầu của năm do người dùng tự thêm vào (ví dụ 20xx)
Ngoài các thanh ghi trong bộ nhớ, DS1307 còn có một thanh ghi khác nằm riêng gọi