Tập Lệnh
Hương dẫn Chức năng Trả về Khởi động lại
XX XX là PAN ID cần đặt cho module
Nếu đặt PAN ID cho module là
FF FF thì Nếu module là Coordinator, nó sẽ tự động đặt lại 1 PAN ID mơi cho chính nó.
Nếu là Router, sau khi khởi động lại thì nó sẽ tự động tham gia vào bất kì mạng nào.
Lưu ý là không thể đặt PAN ID là
FF FE Khi đặt lại PAN ID (kể cả khi đặt lại chính PAN ID cũ) thì
Nếu là Coordinator thì sau khi khởi động lại nó sẽ xóa mạng trước đó mà tạo ra mạng mới (kiểu như sau khi cài lại PAN ID thì nó mất hết ký ức về mạng trước, nó chỉ quan tâm tới mạng có PAN ID hiện tại mà nó vừa tạo)
Nếu là Router, nó sẽ nó sự tham gia của nó ở mạng trước và tiến hành tham gia vào mạng có PAN ID mà nó được cài đặt.
Ví dụ: Đặt Pan ID là FC 02 91 01 12
B3 XY Đọc PAN ID hiện có trong module
Giá trị PAN ID Nếu module hiện là Router và không tham gia vào mạng nào cả thì trả về là FF FE
Nếu là Coordinator thì trả về là giá trị PAN
D4 XY Đọc địa chỉ cố định
Short Address Nếu là Router và không tham gia mạng, trả về là FF FE Nêu là
Coordinator thì Short Address luôn là 00 00
F6 XY Đặt baud rate cho module
Kiểm tra baud rate của module Nếu baud rate đúng thì trả về là
03 04 05 Nếu có lỗi baud rate thì không trả về
B8 XY Đọc địa chỉ MAC Địa chỉ Mac (8 Byte)
C9 XY Đặt module ở chế độ Coordinator (PAN ID thay đổi thành: 19 B9)
Nếu cài đặt thành công thì trả về 43 6F
XY Đặt module ở chế độ Router (PAN ID thay đổi thành 19 9B) Nếu cài đặt thành công thì trả về 52 6F
Xem chế độ của modelu là gì (Coordiantor hay Router)
Nếu là Router thì trả về 43 6F 6F 72 64
XX = 0B: Channel 11, 2405 MHz XX = 0C: Channel 12,
Channel 14, 2420 MHz XX 0F: Channel 15, 2425 MHz XX
XX = 19: Channel 25, 2475 MHz XX = 1A: Channel 26,
Kiểm tra kênh radiio Trả về:
Chọn chê độ chuyển phát gói dữ liệu
XX = 01, Chuyển phát minh bạch.
XX = 02, Chuyển phát minh bạch và thêm vào đuôi gói tin Short Address.
XX = 03, Chuyển phát minh bạch và thêm vào đuôi gói tin địa chỉ MAC
Không có lỗi thì trả về: 06 07 08 09 0A XX
Có lỗi thì trả về: 16
Bảng 3.4 Tập lệnh module Zigbee
Module Arduino
Board Arduino Uno R3
Arduino Uno R3 SMD dựa trên bộ vi xử lý ATmega328 Nó có 14 chân đầu vào / ra kỹ thuật số trong đó 6 có thể được sử dụng làm đầu ra PWM và có 6 đầu vào analog (A / D) riêng biệt cũng có thể được sử dụng cho đầu vào /ra kỹ thuật số nếu muốn với tổng số lên đến 20 chân I/O kỹ thuật số Đồng hồ chạy ở 16MHz Board có đầu nối USB, giắc cắm nguồn DC, nút ICSP và nút reset.
Vi điều khiển ATmega328 họ 8 bit
Bộ chuyển đổi nối tiếp sang USB CH340 Điện áp hoạt động 5V Điện áp đầu vào 7-12V Điện áp giới hạn 6-20V
(Được chia sẻ với I / O kỹ thuật số) 6
Pins đầu vào tương tự 6
DC hiện tại cho mỗi I / O Pin 20mA
Dòng ra tối đa từ Pin 3.3V 50mA
Dòng ra tối đa từ Pin 5V 500mA
Tần số hoạt động 16MHz Đèn LED tích hợp Attached to digital I/O Pin 13
Kiểu kết nối USB B-Type Female
Kích thước bảng (PCB 68,8 x 53,4 mm (2,7 x 2,1 ″)
Kích thước bảng (có phần nhô ra đầu nối) 77 x 53,4mm (3 x 2,1 ″)
Bảng 3.5 Thông số kỹ thuật board arduino Uno R3
Board hoạt động ở 5V có thể được cung cấp thông qua nguồn điện bên ngoài hoặc thông qua kết nối cổng USB Nguồn điện được chọn tự động nếu cả hai đều có sẵn Nếu sử dụng nguồn cung cấp bên ngoài, bạn nên sử dụng nguồn cung cấp từ 7- 12V Điện áp đầu vào cao hơn sẽ làm cho bộ điều chỉnh on-board hoạt động mạnh hơn và có thể làm quá nóng Bộ chuyển đổi AC 7.5V hoạt động tốt để cấp nguồn cho các bo mạch này.
Trên phiên bản này của board, bên cạnh tiêu chuẩn female headers để đưa ra I /
O, mỗi pin cũng có một điểm hàn để có thể được hàn theo male headers, một hàng thứ hai của female headers hoặc thậm chí dây Đây có thể được hàn vào một trong hai bên trên hoặc dưới cùng của board và có thể được thuận tiện trong một số trường hợp sử dụng.
Board cũng có một loạt các điểm hàn cung cấp cho một nơi khác để truy cập I2C (SCL / SDA), Serial (TX / RC), 3.3V, 5V và GND.
Giống như tất cả các bảng Arduino, nó có thể được lập trình bằng cách sử dụngArduino IDE thông qua cổng USB.
Board Arduino Mega 2560
Board arduino mega 2560 sử dụng chip ATmega2560 của ATmel, bộ nhớ chương trình lên đến 256KB trong đó có 8KB được sử dụng bởi bootloader Với bộ nhớ chương trình lớn, bạn có thể viết nhiều chương trình phức tạp, điều khiển được nhiều thiết bị hơn Dung lượng RAM là 8KB 4KB EEPROM
Vi điều khiển ATmega2560 Điện áp hoạt động 5V Điện áp đầu vào (được đề nghị) 7-12V Điện áp đầu vào (giới hạn) 6-20V
Số lượng chân I / O 54 (trong đó có 15 cung cấp sản lượng PWM)
Số lượng chân Input Analog 16
Dòng điện DC mỗi I / O 20 mA
Dòng điện DC với chân 3.3V 50 mA
Bộ nhớ flash 256 KB trong đó có 8 KB sử dụng bởi bộ nạp khởi động
Thành phần Arduino Mega bao gồm
54 chân digital (15 có thể được sử dụng như các chân PWM)
4 UARTs (cổng nối tiếp phần cứng),
Tốc độ đồng hồ 16 MHz
Bảng 3.6 Thông số kỹ thuật board Mega 2560
Tập Lệnh
Nhận được số byte (ký tự) có sẵn để viết trong bộ đệm nối tiếp mà không cần chặn các hoạt động ghi. println() In dữ liệu tới cổng nối tiếp như là văn bản ASCII available() Trả về số byte (ký tự) tối đa mà ta có thể đọc qua Serial Các dữ liệu đến được lưu vào một bộ nhớ đệm có dung lượng 64KB. read() Dùng để đọc từng ký tự trong bộ nhớ đệm của Serial.
Peek() xem trước gói tin là gì, sau đó chúng ta sẽ đọc hoặc bỏ qua. readString() Đọc các ký tự từ bộ đệm nối tiếp thành một chuỗi.
Nhận một chuỗi con của một Chuỗi Chỉ số khởi động đã được bao gồm (ký tự tương ứng được bao gồm trong chuỗi con), nhưng chỉ số kết thúc tùy chọn là độc quyền (ký tự tương ứng không được bao gồm trong chuỗi con) Nếu chỉ số kết thúc bị bỏ qua, chuỗi con tiếp tục đến cuối của Chuỗi. length() Trả về số ký tự của chuỗi (đã bỏ qua ký tự null cầm cân). indexOf Định vị một ký tự hoặc Chuỗi trong chuỗi khác Theo mặc định, các tìm kiếm từ đầu của Chuỗi, nhưng cũng có thể bắt đầu từ một chỉ mục nhất định, cho phép định vị tất cả các trường hợp của nhân vật hoặc Chuỗi.
Bảng 3.7 Tập lệnh Board Arduino
Module Điều Khiển AC TAC 500
Hình 3.9 Module điều khiển AC TAC 500
- Điều khiển điện áp AC:
- Điều khiển ON, OFF AC
- Điều khiển điện áp AC bằng Duty ( Độ Rộng Xung)
- Sử dụng hiệu quả ở 50% công suất.
- Điện áp sử dụng: AC220V
- Đóng cắt thay thế Relay tăng độ bền, không xảy ra tình trạng dính tiếp điểm.
Module Mega Ethernet
Arduino Ethernet Shield sử dụng chip W5100 cho tốc độ và khả năng kết nối ổn định nhất, bộ thư viện đi kèm và phần cứng với cách kết nối dễ dàng khiến cho việc kết vối Arduino với Ethernet đơn giản hơn bao giờ hết, thích hợp để làm các ứng dụng điều khiển thiết bị qua Ethernet, Ethernet Controller
Phiên bản shield này có tích hợp khe cắm thẻ micro SD, có thể được sử dụng để lưu trữ các tập tin phục vụ qua mạng Arduino Ethernet Shield tương thích với Arduino Uno và Mega (sử dụng Ethernet Thư viện) Bạn có thể truy cập vào khe cắm thẻ trên board và sử dụng thư viện SD được bao gồm tích hợp trong bộ thư viện có sẵn trong trình biên dịch arduino.
IC điều khiển W5100 trên Arduino Ethernet Shield có thể thực hiện truyền dữ liệu thông qua 2 giao thức là TCP và UDP Số đường truyền dữ liệu song song tối đa là 4 Đây chính là điểm mạnh của W5100 so với Microchip ENC28J60 Khả năng truyền song song cùng lúc 4 luồng dữ liệu giúp board có khả năng nhận dữ liệu từ internet với tỉ lệ lỗi thấp hơn (nguyên nhân thường là do mất dữ liệu trên đường truyền hoặc do thời gian truyền vượt quá giới hạn – time out).
– Để sử dụng phải có board mạch Arduino đi kèm
– Hoạt động tại điện áp 5V (được cấp từ mạch Arduino)
– Chip Ethernet: W5100 với buffer nội 16KB
– Tốc độ kết nối: 10/100Mb
– Kết nối với mạch Arduino qua cổng SPI
– Thư viện và code mẫu có sẵn trong chương trình Arduino
THI CÔNG
Sơ Đồ Kết Nối Phần Cứng
1 Gửi Dữ Liệu Điều Khiển (Master)
Hình 4.1 Sơ đồ kết nối Coordinator
2 Nhận Dữ Liệu- Thực Thi Đóng Ngắt Thiết Bị (Slaver)
Hình 4.2 Sơ đồ kết nối Router
Lưu Đồ Giải Thuật
Hình 4.3 Lưu đồ giải thuật Coordinator
Begi n initialize output variable value
E drf.get_receivedDRF data () == "pwmX"
E drf.get_receivedDRF data () == " dZon"
E drf.get_receivedDRF data () == " dZof"
Hình 4.4 Lưu đồ giải thuật Router
3 Nguyên Lý Hoạt Động Của Hệ Thống
Hình 4.5 Nguyên lý hoạt động
Ứng Dụng Điều Khiển Trên Điện Thoại
1 Giới Thiệu Về Phần Mền Lập Trình App-App Inventor
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.
Mục tiêu cốt lõi của MIT App Inventor là giúp đỡ những người chưa có kiến thức về ngôn ngữ lập trình từ trước có thể tạo ra những ứng dụng có ích trên hệ điều hành Android Phiên bản mới nhất là MIT App Inventor 2.
Ngày nay, MIT đã hoàn thiện App Inventor và nó được chia sẻ ngay trên tài khoản Google Các lập trình viên mới bắt đầu hoặc bất kỳ ai muốn tạo ra ứng dụng Android chỉ cần vào địa chỉ web của MIT, nhập thông tin tài khoản Google, và từ những mảnh ghép nhỏ, xây dựng những ý tưởng của mình.
Những tính năng có trên MIT App Inventor là:
+ 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 (AccelerometerSensor), đọc mã vạch, tính giờ, con quay hồi chuyển (gyroscopeSensor), xác định địa điểm (locationSensor), NFC, đo tốc độ (pedometer), đo khoảng cách xa gần với vật thể (proximitySensor)
+ 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
+ Điều khiển robot thông qua LegoMindstorms
+ Và rất nhiều mở rộng do các nhà lập trình hoạt động riêng liên tục thêm vào như là: mua bán trong ứng dụng, Floating button, Báo thức, cảm biến ánh sáng, kết nối dữ liệu SQLite…
Những nhược điểm chính của App Inventor là:
+ Lập trình viên chưa thể sử dụng mọi tính năng của Android và việc này phụ thuộc vào khi nào mở rộng mới có tính năng bạn cần có được tạo ra Khuyết điểm này chỉ có thể khắc phục bằng cách tự xây dựng mở rộng cho App Inventor
+ Vì là website với mục đích giáo dục, MIT App Inventor không hỗ trợ quảng cáo Chính vì nhược điểm này Thunkable và AppyBuilder được sinh ra.
+ Giao diện chưa chuyên nghiệp
+ Chuyển mã từ ngôn ngữ Drag and Drop sang Java chưa thực sự dễ dàng. Trong các bài viết sau mình sẽ hướng dẫn thêm
+ Do ứng dụng được phát triển trên server của MIT, giới hạn dung lượng của mỗi project chỉ là 5mb.
Mặc dù có những nhược điểm như vậy, MIT App Inventor vẫn là một nền tảng mạnh mẽ giúp những ai mới bắt đầu lập trình trên Android có thể tạo ra được những ứng dụng hoàn thiện hoặc giúp nhà phát triển chuyên nghiệp nhanh chóng phác thảo lên ý tưởng của mình. Để sử dụng được App Inventor, các bạn truy cập vào địa chỉ http://ai2.appinventor.mit.edu Sau đó tiến hành đăng nhập bằng tài khoản
Google của bạn để mở trang quản lí các project.
Giao diện quản lý project
Hình 4.6 Giao diện quản lý project
Giao diện thiết kế (Design)
Giao diện lập trình (Blocks)
Hinh 4.7 Giao diện thiết kế
Hình 4.8 Giao diện lập trình
2 Các Bước Thiết Kế Ứng Dụng.
Sau khi đăng nhập, tại cửa sổ chính (My Project), bạn chọn Start New Project , sau đó đặt tên cho project bạn muốn tạo.
Bước 2: Thiết kế giao diện
Hình 4.9 Giao diện tạo Project
Hình 4.10 Thiết kế giao diện Đầu tiên, một ứng dụng có thể có nhiều cửa sổ giao diện, trong MIT AI2 gọi là các Screen.
Cửa sổ thiết kế gồm 4 khung chức năng chính như hình dưới đây
Palette: Chứa các thành phần có thể đặt lên trên Screen như: Button, Label, Image, Listview, Video player, … Đến các thanh phần chức năng không nhìn thấy trên Screen như: BLE extension, Notifier, các sensors, ….
Viewer: Hiển thị giao diện screen Kéo thả các thành phần từ khung Palette sang đây để thiết kế giao diện cho phần mềm của bạn.
Components: Sơ đồ cây thể hiện cấu trúc các thành phần đã được bố trí trên Screen.
Properties: Hiển thị thuộc tính của component tương ứng được chọn.
Bước 3: Lập trình chức năng
Trong MIT AI2, code chính là các Blocks, việc của chúng ta là kéo thả các blocks này sang khung Viewer và kết nối chúng theo chức năng mong muốn.
Hình 4.11 Giao diện lập trình chức năng
Blocks gồm 2 nhóm chính: o Các block chức năng cơ bản của một chương trình như: điều khiển luồng,logic, toán học, ký tự, biến,
Hình 4.12 Các hàm toán học và logic
Hình 4.13 Các hàm xử lý Text và xử lý List o Các block chức năng theo từng component trong ứng dụng: Mỗi component của ứng dụng đều có các block chức năng tương ứng.
Nhóm này gồm 3 kiểu chính:
Hình 4.14 Các hàm phương thức
Hình 4.15 Các hàm phương thức
Hình 4.16 Các hàm sự kiện
Bước 4: Biên dịch và thử nghiệm Để biên dịch và thực thi chương trình viết trên MIT App Inventor 2 có hai cách: o Cách 1: Sử dụng phần mềm MIT Companion Với cách này, bạn cần cài đặt phần mềm MIT Companion trên điện thoại của bạn Sau đó, kết nối với project của bạn để tự động download về và chạy bên trong phần mềm MIT Companion Điều này gây ra nhiều sự bất tiện và phụ thuộc. o Cách 2: Biên dịch ra file apk và cài đặt, bao gồm tùy chọn download file apk về máy tính sau đó sao chép sang điện thoại để cách đặt hoặc biên dịch và tải online thông qua mã QR code.
KẾT QUẢ THỰC NGHIỆM
Hình Ảnh Mô Hình
Giao diện App điều khiển
Hình 4.17 Giao diện App điều khiển
Kết Quả Điều Khiển Trên Mô Hình
Mô tả Kết quả Điều khiển ON-OFF các thiết bị trong nhà mô hình Tốt Điều khiển Dimmer Tốt
Tình trạng nhiễu Đã được khắc phục
Tính trạng làm việc của hệ thống Ổn định
Bảng 5.1 Bảng đánh giá kết quả thực nghiệm