4. Kết cấu của đề tài: đề tài này gồm 4 chương
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
Hình 2.5: Module HC-05
Chân Chức năng Kết nối với vi điều khiển
KEY Dùng thiết lập vai trò của
HC-05
Có thể kết nối VCC
VCC Cấp nguồn 3.3v-5v Chung nguồn với vi điều
khiển
GND Nối Mass Nối Mass
TXD Chân tín hiệu truyền dữ liệu
trong chuẩn UART
Nối với chân RXD
RXD Chuân tín hiệu nhận dữ liệu
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
- 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 4- Extenal dòng chip hỗ trợ 2 chuẩn kết nối là UART và SPI
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.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
Phầ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,
Hì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
Giao 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
2.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
tạ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).
Hình 2.13:Sơ đồ nguyên lý cho mạch thời gian thực 2.1.3.e Bộ thu-phát không dây
Hệ thống sử dụng bộ thu-phát không dây để vi điều khiển trung tâm gửi và nhận dữ liệu từ các hệ thống hiện hữu trong nhà, góp phầm giảm tải độ phức tạp khi đi dây khắp nhà, mỗi hệ thống điều nằm riêng biệt ở mỗi vị trí trong nhà, vi điều khiển trung tâm tập trung việc điều khiển và nhận dữ liệu từ các cảm biến, các hệ thống đèn quạt trong nhà, các thiết bị điện
Trong hệ thống điều khiển này sử dụng bộ thu-phát NRF24L01+ đây là chip của hãng Nordic ,
Thông số kỹ thuật:
Radio: Hoạt động ở giải tần 2.4G - Có 126 kênh
- Truyền và nhận dữ liệu
- Truyền tốc độ cao 1Mbps hoặc 2Mbps. Công suất phát:
- Có thể cài đặt được 4 công suất nguồn phát: 0,-6,-12,-18dBm. Thu:
- Có bộ lọc nhiễu tại đầu thu
- Kếch đại bị ảnh hưởng bởi nhiễu thấp (LNA) Nguồn cấp:
- Hoạt động từ 1.9-3.6V
Giao tiếp: - 4 pin SPI
- Tốc độ tối đa 8Mbps
- 3-32 bytes trên 1 khung truyền nhận
Hình 2.14: Sơ đồ nguyên lý NRF24L01
Module nRF24L01 hoạt động ở tần số sóng ngắn 2.4G nên Modul này khả năng truyền dữ liệu tốc độ cao và truyền nhận dữ liệu trong điều kiện môi trường có vật cản Modul nRF24L01 có 126 kênh truyền. Điều này giúp ta có thể truyền nhận dữ liệu trên nhiều kênh khác nhau.
Modul khả năng thay đổi công suất phát bằng chương trình, điều này giúp nó có thể hoạt động trong chế độ tiết kiệm năng lượng.
Chú ý: Điện áp cung cấp cho là 1.9à3.6V. Điện áp thường cung cấp là 3.3V. Nhưng các chân IO tương thích với chuẩn 5V. Điều này giúp nó giao tiếp rộng dãi với các dòng vi điều khiển. Nếu câp nguồn cao hơn 3.6V hệ thống hoạt động k ổn định, có thể bị treo, k gửi dữ liệu được
Chân NRF Chân vi điều khiển
CE Chân số 9
CSN Chân số 10
SCK Chân SCK của VDK (Chân số 13 đối với
Atmega328P)
MOSI Chân MOSI của VDK(chân số 11 đối với
Atmega328P
MISO Chân MISO của VDK (chân số 12 đối với
Atmega328P) IRQ
Bảng 2.9: Sơ đồ kết nối với vi điều khiển
Với việc sử dụng Module NRF24L01 ta xây dựng một hệ thống mạng trong nhà với nhiều điểm kết nối và vi điều khiển trung tâm là bộ phân chính để điều khiển xung quanh. Trong một kênh truyền ta có thể sử dụng nhiều điểm mỗi điểm tương ứng với một bộ phần điều khiển, và phân chia cấp rỏ ràng trên cùng một hệ thống. Như vậy chúng ta có:
- Ở điểm mang địa chỉ 00 là thuộc bộ điều khiển trung tâm
- Điểm mang địa chỉ 01-05 là điểm con của bộ điều khiern trung tâm
- Điểm 021 là con của 01, tương tự để định nghĩa vị trí con thì xác đị dựa trên hệ số bát phân, ta có 0321 là địa chỉ thứ 3 cửa 021, chính vì thế ta có thể xác định được số địa chỉ lớn nhất là 05555 suy ra chúng ta có khoảng 3125 địa chỉ trên 1 kênh truyền
Bộ thu phát NRF24L01 có thể hoạt hộng ở 4 chế độ: công suất thấp, chế độ chờ, chế độ truyền và nhận, tuy theo thiết lặp trên bộ điều khiển
Tần số phát của sóng RF trên NRF24L01 là 2.4Ghz nhưng để xác định tần số cho mỗi kênh thì dựa theo công thức
F=2400+RF_CH ( với RF_CH là số kênh mà NRF24L01 có thể truyền)
Ví dụ 2 thiết bị truyền với nhau qua kênh 100 (số kênh cửa NRF là 127 kênh) thì tần số để 2 thiết bị này giao tiếp là 2500MHz
Thiết bị giao tiếp theo chuẩn truyền thông SPI
SPI (Serial Peripheral Bus) là một chuẩn truyền thông nối tiếp tốc độ cao do hang Motorola đề xuất. Đây là kiểu truyền thông Master-Slave, trong đó có 1 chip Master điều phối quá trình tuyền thông và các chip Slaves được điều khiển bởi Master vì thế truyền thông chỉ xảy ra giữa Master và Slave. SPI là một cách truyền song công (full duplex) nghĩa
là tại cùng một thời điểm quá trình truyền và nhận có thể xảy ra đồng thời. SPI đôi khi được gọi là chuẩn truyền thông “4 dây” vì có 4 đường giao tiếp trong chuẩn này đó là SCK (Serial Clock), MISO (Master Input Slave Output), MOSI (Master Ouput Slave Input) và SS (Slave Select). Hình 1 thể hiện một kết SPI giữa một chip Master và 3 chip Slave thông qua 4 đường.
SCK: Xung giữ nhịp cho giao tiếp SPI, vì SPI là chuẩn truyền đồng bộ nên cần 1 đường giữ nhịp, mỗi nhịp trên chân SCK báo 1 bit dữ liệu đến hoặc đi. Đây là điểm khác biệt với truyền thông không đồng bộ mà chúng ta đã biết trong chuẩn UART. Sự tồn tại của chân SCK giúp quá trình tuyền ít bị lỗi và vì thế tốc độ truyền của SPI có thể đạt rất cao.