Việc sử dụng hồng ngoại trong các thiết bị điều khiển từ xa TV/VCR và nhiều ứng dụng khác cũng một phần là do diode phát và thu hồng ngoại rẻ và sẵn có trên thi trường.. Nếu bạn sử dụng
Trang 1HƯỚNG DẪN SỬ
DỤNG ARDUINO CƠ
BẢN TẬP 9: ARDUINO VỚI TIA HỒNG NGOẠI
Trang 2Contents
Chương 1 4
GIỚI THIỆU CƠ SỞ LÝ THUYẾT 4
I TÌM HIỂU VỀ HỒNG NGOẠI 4
1.1 Hồng ngoại là gì? 4
1.2 Hồng ngoại trong điện tử 4
1.3 Điều khiển TV Sony 6
1.4 Thiết bị thu và phát 8
II GIỚI THIỆU HỆ ĐIỀU HÀNH, CƠ SỞ DỮ LIỆU, CÁC TRÌNH BIÊN DỊCH ĐƯỢC SỬ DỤNG 10
2.1 GIỚI THIỆU VÀI NÉT VỀ HỆ ĐIỀU HÀNH ANDROID: 10
2.2 Lưu trữ dữ liệu trên internet thông qua Firebase 12
2.3 Phần mềm lập trình cho vi điều khiển: 15
GIỚI THIỆU VỀ CHUẨN GIAO THỨC SPI: 24
2.5 KHÁI NIỆM VỀ MẠNG WIFI 27
Chương 2: Điều khiển bằng hồng ngoại với Arduino 30
1 Hướng dẫn lập trình đơn giản 30
IR RECEIVER 30
IR LED (LED hồng ngoại) 30
REMOTE 30
LẮP MẠCH 30
LẬP TRÌNH 31
GIẢI THÍCH 33
Cách sử dụng Arduino như 1 chiếc remote TV 34
LẮP MẠCH 34
LẬP TRÌNH 34
GIẢI THÍCH 35
Trang 3Chương 3: Giới thiệu một số đồ án không dùng Arduino 37
Đồ án 1: MẠCH BÁO TRỘM DÙNG TIA HỒNG NGOẠI 37
PHẦN I: GIỚI THIỆU VỀ MỘT VÀI LINH KIỆN ĐƯỢC SỬ DỤNG TRONG MẠCH 37
PHẦN II: SƠ ĐỒ KHỐI VÀ NHIỆM VỤ CÁC KHỐI CHÍNH 43
PHẦN III: SƠ ĐỒ NGUYÊN LÝ VÀ NGUYÊN LÝ HOẠT ĐỘNG 44
Đồ án 2: MẠCH KIỂM TRA XE RA VÀO BẰNG TIA HỒNG NGOẠI 49
Phần I: GIỚI THIỆU VÀI LINH KIỆN ĐIỂN HÌNH SỬ DỤNG TRONG MẠCH 50
PHẦN II:NỘI DUNG 60
PHẦN III:.KẾT LUẬN 66
Đồ án 3: ĐIỀU KHIỂN TỪ XA BẰNG TIA HỒNG NGOẠI 67
CHƯƠNG I : LÝ THUYẾT TỔNG QUAN 67
Chương 4: Giới thiệu một số đồ án dùng Arduino 86
Đồ án 1: ĐIỀU KHIỂN THIẾT BỊ TỪ XA BẰNG TIA HỒNG NGOẠI 86
I Sơ đồ nguyên lý của mạch thu và phát tín hiệu hồng ngoại 86
II SƠ ĐỒ MẠCH VÀ NGUYÊN LÝ HOAT ĐỘNG 88
III LƯU ĐỒ GIẢI THUẬT VÀ CHƯƠNG TRÌNH 95
IV Kết quả 97
Đồ án 2: ĐIỀU KHIỂN THIẾT BỊ TỪ XA BẰNG TIA HỒNG NGOẠI 108
Chương 1 CƠ SỞ LÝ THUYẾT 108
Chương 2 TÍNH TOÁN VÀ THIẾT KẾ 108
Chương 3 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 120
Trang 4Ta không thể nhìn thấy hay nghe thấy hồng ngoại nhưng ta có thể cảm thấy nó từ sự cảm ứng nhiệt trên da Khi bạn đưa tay đến ngần ngọn lửa hoặc những vật nóng, bạn xẽ cảm thấy nhiệt dù bạn không nhìn thấy Bạn nhìn thấy ngọn lửa là do nó phát ra nhiều loại bức
xạ mắt ta có thể nhìn thấy, đồng thời nó cũng phát ra hồng ngoại mà ta chỉ có thể cảm nhận qua da
1.2 Hồng ngoại trong điện tử
Hồng ngoại thật thú vị, bởi vì nó tạo ra một cách dễ dàng và không bị ảnh hưởng bởi nhiễu điện từ Do đó nó được sử dụng rộng rãi và tiện lợi trong thông tin và điều khiển Tuy nhiên nó không hoàn hảo, nhiều nguồn sáng khác nhau có thể phát ra hồng ngoại và có thể ngây nhiễu đến thông tin này Mặt trời là một ví dụ, nó phát ra một khoảng phổ rất rộng trong đó có phổ hồng ngoại Việc sử dụng hồng ngoại trong các thiết
bị điều khiển từ xa TV/VCR và nhiều ứng dụng khác cũng một phần là do diode phát và thu hồng ngoại rẻ và sẵn có trên thi trường
Như đã nói ở trên, nhiều thứ có thể phát ra hồng ngoại, bắt kỳ thứ gì bức xạ nhiệt đều có khả năng đó Bao gồm cở thể chúng ta, lò vi sóng, chà sát tay vào nhau, thậm chí
cả nước nóng nữa Vì vậy để cho phép sự truyền thông hiệu quả khi sử dụng hồng ngoại
và tránh những tín hiệu nhiễu không mong muốn phải sử dụng một khóa để báo cho đầu thu biết đâu là tín hiệu có ích, đâu là nhiễu Khi nhìn lên bầu trời đêm bạn nhìn thấy nhiều vì sao, nhưng bạn dễ dàng nhận ra một chiếc máy bay bởi ánh sáng nhấp nhái của
nó Ánh sáng nhấp nháy này cũng có thể coi là một “khóa”, một kiểu mã hóa đối với
Trang 5chúng ta
Tương tự như máy bay trong bầu trời đêm, TV của chúng ta cũng có thể nhận ra hàng trăm loại hồng ngoại khác nhau Một cách để tránh những nguồn hồng ngoại khác là tạo ra một khóa Do đó điều khiểm từ xa dùng để điều biến hồng ngoại của nó tại một tần
số nào đó Đầu thu hồng ngoại ở TV/VCR sẽ đi theo tần số này mà lờ đi các hồng ngoại khác nhận được Khoảng tần số hay sử dụng là 30 → 60 KHz, tốt nhất là khoảng 36 →
38 KHz Hồng ngoại phát ra từ các diode hồng ngoại theo các xung nhịp với tần số 36000 lần một giây phát ra các mức logic “0” và ”1”
Để tạo ra tần số 36 KHz là việc đơn giản cái khó ở đây là việc thu và nhận dạng
nó Đó là lý do tại sao nhiều công ty sản xuất thiết bị thu hồng ngoại bao gồm những bộ lọc, mạch giải mã và sửa dạng đầu ra Một xung vuông chu kỳ xấp xỉ 27s đưa vào cực bazơ của tranzitor có thể điều khiển một led hồng ngoại để truyền đi
Bạn có thể bật hoặc tắt tần số này tại đầu phát, đầu thu xẽ chỉ ra khi nào đầu phát là bật hay tắt
Những bộ giải điều chế có mức logic đảo tại đầu ra khi có một gói hồng ngoại được gửi, đầu ra ở mức tích cực thấp tương đương với mức logic 1
Để tránh việc một điều khiển từ xa philip có thể thay đổi kênh của một TV panasonic…người ta sử dụng các cách mã hóa khác nhau cho cùng một khoảng tần số đó Chúng sử dụng các kiểu tổ hợp bit khác nhau để mã hóa việc truyền dữ liệu và tránh nhiễu
Trang 61.3 Điều khiển TV Sony
Sony sử dụng kiểu mã hóa độ rộng bit, đây là kiểu mã hóa đơn giản cho việc giải
mã
Hãy xem xét khoảng thời gian nhỏ T cỡ 600s mỗi bit truyền đi là sự kết hợp của -T+T cho bit “0” và –T+2T cho bit “1” Vì vậy bit “0” có chiều dài 1200s và bit “1” có chiều dài 1800s
Mức lên (+T) có nghĩa là hồng ngoại được truyền đi, mức xuống (-T) có nghĩa là không có
Để tiết kiệm pin, hầu hết các nhà sản xuất rút gắn còn 5/6 thậm chí 3/4 độ rộng xung như lý thuyết Bằng cách này pin 500 giờ có thể sử dụng được 600 giờ (5/6) hoặc
800 (3/4) Một số nhà sản xuất khác không quan tâm đến vấn đề này, họ tăng cường hiệu quả truyền tin bằng cách mở rộng một chút khoảng thời gian sóng mang 36 KHz tích cực
và rút ngắn khoảng thời gian kia Như vậy tín hiệu Remote TV sony có dạng như sau:
- phần đầu tiên được truyền đi gọi là Header (mào đầu), nó cũng được gọi là bit bắt đầu (start bit), phần mào đầu có độ rộng 3T hay 1800s
- Tiếp theo phần Header là 12 bit liên tiếp được giải điều chế như sau:
500s bit im lặng + 700sbit hồng ngoại = bit 0
Trang 7500s bit im lặng + 1300sbit hồng ngoại = bit 1
Bit đầu tiên sau bit start là bit LSB ta đặt là bit B0, bit cuối cùng là B11:
B0 – B6 : 7 bit mã lệnh
B7 – B11 : 5 bit dịa chỉ
Trong hình vẽ trên địa chỉ là 02H, mã lệnh là 16H, có 32 khả năng địa chỉ và 128 lệnh Toàn bộ thời gian truyền đị của khung có thể thay đổi theo thời gian vì độ rộng của bit 1 > độ rộng bit 0 Nếu bạn giữ nút bấm, khung dữ liệu sẽ nặp lại sau mỗi 25 ms Nếu bạn sử dụng mắt nhìn hồng ngoại có sẵn trên thi truờng, tất cả dạng sóng trên sẽ bị đảo như sau:
Để thu và giải mã được tín hiệu Remote TV sony, thực tế không cần thu toàn bộ
12 bit mã hóa, ta chỉ cần thu 7 bit COMMAND và có thể bỏ qua 5 bit địa chỉ Bởi với cùng điều khiển thì tất cả nút bắm đều phát ra mã địa chỉ như nhau, chỉ khác mã lệnh Mã địa chỉ Sony để phân biệt giữa các MODEL REMOD SONY khác nhau
Để thu 7 bit mã lệnh ta có thuật toán sau:
Trang 81) thiết lập thanh nghi A = 01000000B
2) khởi đầu bằng cách chờ tín hiệu đi xuống – đây xẽ là bít START
3) chờ cho tín hiệu đi lên – đây là khởi đầu của bit
4) chờ cho tín hiệu đi xuống
5) chờ khoảng 750 – 950 s
6) đo mức tín hiệu
7) nếu mức tín hiệu là mức cao, bit nhận được là bit 0
- thiết lập cờ nhớ C = 0
- quay phải có nhớ A, như vậy C sẽ được gửi vào MSB của A, LSB của A gửi vào C
- ban đầu A = 01000000B thì sau khi quay ta có C = 0 và MSB của A là bít đầu tiên của
mã lệnh
- như vậy sau 7 lần quay thì C = 1 và 7 bit bên trái của A sẽ chứa mã lệnh
- kiểm tra cờ nhớ C, nếu C = 1 nhẩy tới bước 9, C = 0 quay lại bước 4
8) nếu mức tín hiệu là thấp bit nhận được là 1
- thiết lập cờ nhớ C = 1 (bit mã lệnh thu được)
- quay phải có nhớ A
- kiểm tra cờ nhớ C, nếu C = 1 nhẩy tới bước 9, nếu C = 3 nhẩy tới bước 3
9) bẩy bit mã lệnh chứa trong 7 bit trái của A: A = D6D5D4D3D2D1D00
- quay phải A ta được 7 bit phải của A chứa ma lệnh A=0D0D1D2D3D4D5D6
1.4 Thiết bị thu và phát
- Thiết bị phát sử dụng điều khiển TV Sony với mỗi một nút bấm hồng ngoại phát
ra với một mã hóa khác nhau
- Thiết bị thu sử dụng mắt nhận hồng ngoại 3 chân, loại mắt nhận được sử dụng trong TV:
- Mắt nhận hồng ngoại nhận tín hiệu hồng ngoại từ điều khiển từ xa phát ra và đưa
Trang 9tín hiệu đảo mức ra chân Out Tín hiệu từ chân Out được đưa tới P3.3 của Vi xử lý để giải mã, điều khiển Port P2
1.4.1 IR LED (LED hồng ngoại)
Trang 10tạo bằng chất bán dẫn có 3 chân:
– Chân đưa tín hiệu ra (OUT)
– Chân nối mass (GND)
– Chân nối nguồn +5V (VDC)
– Điện trở R = 10kΩ và tự hóa C1 có tác dụng lọc nhiễu
– Chân tín hiệu OUT được nối với chân ngắt ngoài của vi điều khiển
• Nguyên lý hoạt động: Khi Remote phát tín hiệu hồng ngoại thì mắt thu sẽ nhận
được, tín hiệu thu được nhờ tụ C1 = 4.7 µF và trở R2 = 10 kΩ lọc nhiễu rồi đưa tín hiệu
về vi điều khiển
II GIỚI THIỆU HỆ ĐIỀU HÀNH, CƠ SỞ DỮ LIỆU, CÁC TRÌNH
BIÊN DỊCH ĐƯỢC SỬ DỤNG
2.1 GIỚI THIỆU VÀI NÉT VỀ HỆ ĐIỀU HÀNH ANDROID:
Android là một hệ điều hành dựa trên nền tảng Linux được thiết kế dành cho các thiết bị di động có màn hình cảm ứng như điện thoại thông minh và máy tính bảng Ban đầu, Android được phát triển bởi Tổng công ty Android, với sự hỗ trợ tài chính từ Google
và sau này được chính Google mua lại vào năm 2005 Android ra mắt vào năm 2007
cùng với tuyên bố thành lập Liên minh thiết bị cầm tay mở, một hiệp hội gồm các công ty
phần cứng, phần mềm, và viễn thông với mục tiêu đẩy mạnh các tiêu chuẩn mở cho các thiết bị di động Chiếc điện thoại đầu tiên chạy Android được bán vào năm 2008
Android còn có một cộng đồng lập trình viên đông đảo chuyên viết các ứng dụng để
mở rộng chức năng của thiết bị, bằng một loại ngôn ngữ lập trình Java có sửa đổi Vào tháng 10 năm 2012, có khoảng 700.000 ứng dụng trên Android, và số lượt tải ứng dụng
từ Google Play, cửa hàng ứng dụng chính của Android, ước tính là khoảng 25 tỷ lượt Những yếu tố này đã giúp Android trở thành nền tảng điện thoại thông minh phổ biến nhất thế giới, chiếm 87,7% thị phần điện thoại thông minh trên toàn thế giới vào thời điểm quý 2 năm 2017 và được các công ty công nghệ lựa chọn khi họ cần một hệ điều hành không nặng nề, có khả năng tinh chỉnh, và giá rẻ chạy trên các thiết bị công nghệ cao thay vì tạo dựng từ đầu Kết quả là mặc dù được thiết kế chạy trên điện thoại và máy tính bảng, Android đã xuất hiện trên TV và các thiết bị điện tử khác
Android chiếm 87,7% thị phần điện thoại thông minh trên toàn thế giới vào thời điểm quý 2 năm 2017
Android là hệ điều hành điện thoại di động mở nguồn mở miễn phí do Google phát triển dựa trên nền tảng của Linux Bất kỳ một hãng sản xuất phần cứng nào cũng đều có thể tự do sử dụng hệ điều hành Android cho thiết bị của mình, miễn là các thiết bị ấy đáp
Trang 11ứng được các tiêu chuẩn cơ bản do Google đặt ra (có cảm ứng chạm, GPS, 3G, )
Những tính năng mà nền tảng Android hỗ trợ:
- Application framework: Cho phép tái sử dụng và thay thế các thành phần sẳn có của Android
- Dalvik virtual machine: Máy ảo java được tối ưu hóa cho thiết bị di động
- Intergrated browser: Trình duyệt web tích hợp được xây dựng dựa trên WebKit engine
- Optimized graphics: Hỗ trợ bộ thư viện 2D và 3D dự vào đặc tả OpenGL ES 1.0
- Hổ trở các định dạng media phổ biến như: MPEG4, H.264, MP3, AAC, ARM, JPG, PNG, GIF
- Hổ trợ thoại trên nền tảng GSM (Phụ thuộc vài phần cứng thiết bị)
- Bluetooth, EDGE, 3G và WiFi (Phụ thuộc vài phần cứng thiết bị)
- Camera, GPS, la bàn và cảm biến (Phụ thuộc vài phần cứng thiết bị)
- Bộ công cụ phát triển ứng dụng mạnh mẽ
Quá trình phát triển của Android
Trang 122.2 Lưu trữ dữ liệu trên internet thông qua Firebase
2.2.1 Hoạt động của FIREBASE
Firebase là gì?
Firebase là một nền tảng phát triển ứng dụng dành cho mobile và web, nó được xây dựng như một nền tảng realtime database, một dạng cơ sở dữ liệu đám mây được đồng bộ trên mọi thiết bị trong thời gian thực Cung cấp các thư viện khách hàng cho phép tích hợp với các ứng dụng Android, iOS, JavaScript, Java, Objective-C, Node.js Tất cả dữ liệu được lưu trên Firebase đều dưới dạng JSON, điều này khác hoàn toàn với các cơ sở dữ liệu quen thuộc như MySQL hay SQL Server, mỗi dữ liệu thêm vào sẽ là 1 nút trên JSON Chính vì sự khác biệt này cho nên trước khi bắt đầu xây dựng ứng dụng, chúng ta cần phải thiết kế cấu trúc JSON của mình sao cho việc thao tác dễ dàng nhất
2.2.2 Tạo một project mới trên Firebase.
Bước 1: Tạo một tài khoản trên Firebase hoặc có thể đăng nhập vào Firebase bằng tài khoản gmail
Tạo tài khoản Firebase
Bước 2: Sau khi đã đăng nhập tài khoản Firebase Tiếp theo, tạo một project mới trên Firebase, ở đây sẽ tạo một project có tên smartfarm Sau đó viết vào dòng Project name
và chọn CREAT PROJECT
Trang 14Địa chỉ để giao tiếp đồng bộ EspNode MCU, app Androidvà Firebase
Firebase yêu cầu phải xác thực để thêm dữ liệu Nếu có bất cứ sự thay đổi nào từ App Android hay ESP8266 muốn lưu lên Firebase không qua xác thực thì sẽ bỏ qua chế độ xác thực, để thay chế độ này bằng cách truy cập vào Database\Rule và đổi đoạn config json mặc định giống như trong hình
Thay đổi ".read": "auth != null" thành ".read": true
".write": "auth != null" thành “.write”: true
Trang 15
Thay đổi chế độ xác thực khi thêm dữ liệu vào Firebase.
Dữ liệu của hệ thống
2.3 Phần mềm lập trình cho vi điều khiển:
2.3.1 Giới thiệu phần mềm lập trình Arduino IDE:
Arduino IDE là môi trường phát triển tích hợp mã nguồn mở, cho phép người dùng
dễ dàng viết code và tải nó lên bo mạch Môi trường phát triển được viết bằng Java dựa trên ngôn ngữ lập trình xử lý và phần mềm mã nguồn mở khác Phần mềm này có thể được sử dụng với bất kỳ bo mạch Arduino nào
Trang 16Arduino IDE là một môi trường phát triển tích hợp đa nền tảng, làm việc cùng với một bộ điều khiển Arduino để viết, biên dịch và tải code lên bo mạch Phần mềm này cung cấp sự hỗ trợ cho một loạt các bo mạch Arduino như Arduino Uno, Nano, Mega, Pro hay Pro Mini, Ngôn ngữ tổng quát cho Arduino C và C++, do đó phần
mềm phù hợp cho những lập trình viên đã quen thuộc với cả 2 ngôn ngữ này Các tính năng như làm nổi bật cú pháp, thụt đầu dòng tự động, làm cho nó trở thành một
sự thay thế hiện đại cho các IDE khác Arduino IDE có thư viện code mẫu quá phong phú, viết chương trình trên Arduino IDE khá dễ dàng cộng thêm OpenSource viết riêng cho Arduino thì ngày càng nhiều
Phần mềm lập trình Arduino IDE
Đầu tiên, truy cập vào https://www.arduino.cc/en/Main/Software để dowload chương trình theo hệ điều hành muốn cài đặt (ở đây là phiên bản cài trên Windows) Tiếp theo, nhấn vào Windows Installer nếu muốn cài đặt phần mềm cho Windowntheo hướng dẫn
2.3.2 Chương trình trên Android Studio
a Giới thiệu:
Song song với Eclipse, Android Studio là công cụ lập trình mới dành cho Android
do Google phát triển, nó hổ trợ tốt hơn việc bố cục ứng dụng cho nhiều thiết bị khác nhau, đảm bảo app viết ra có thể tương thích với màn hình của cả smartphone (điện thoại thông minh) và tablet (máy tính bảng) Google bổ sung thêm khả năng kéo thả các thành phần
đồ họa để quá trình xây dựng ứng dụng trở nên dễ dàng và nhanh chóng hơn Đồ án sử dụng Android Studio để phát triển ứng dụng do đây là phần mềm IDE phổ biến được Google hỗ trợ các gói ứng dụng thuận lợi cho việc lập trình
Để cài đặt phần mềm Android Studio đầu tiên tải Android Studio từ trang chủ của
nó: https://developer.android.com/sdk/index.html
Trang 17Lưu ý máy tính phải cài java trước khi cài Android Studio, để cài java vào trang:
http://www.oracle.com/technetwork/java/javase/downloads/index.html Sau khi tải về tín
hành cài đặt như phần mềm bình thường, riêng đối với Window 7 phải cấu hình cho môi trường java
Tải Java
Sau khi cài xong java xong, tiến hành cài đặt Android Studio, trong quá trình cài đặt
sẽ xuất hiện màng hình như hình dưới
Cài đặt Android Studio
Trước tiên vào phần mềm Android Studio, sẽ thấy màn hình như hình dưới và chọn theo dấu mũi tên màu đỏ
Trang 18ARDUINO IOT VIETNAM
https://www.facebook.com/groups/486295328966960 18
Tạo project mới trong Android Studio
Nhập vào:
- Application Name: tên ứng dụng của muốn lập trình
- Company Domain: có thể đặt theo định dạng sau tên mình.tên công ty.tên ứng dụng mình
đang làm
- Project location: đường dẫn chứa tệp tin chương trình
Tạo project mới trong Android
Trang 19Sau khi đặt tên xong nhấn Next để qua bước tiếp theo, bước này xuất hiện
màn hình chọn phiên bản Android để lập trình, lưu ý khi chọn phiên bản Android
càng thấp thì ứng dụng tạo ra sẽ chạy được trên nhiều thế hệ
Chọn phiên bản Android muốn lập trình
Sau khi đặt tên xong nhấn Next để qua bước tiếp theo, bước này xuất hiện màn
hình chọn phiên bản Android để lập trình, lưu ý khi chọn phiên bản Android càng
thấp thì ứng dụng tạo ra sẽ chạy được trên nhiều thế hệ
Chọn màn hình
Trang 20Đặt tên cho màn hình
Để chạy thử chương trình nhấn nào nút “Run” chổ khung tròn màu đỏ Sau
đó cấm điện thoại máy tính, chọn tên điện thoại muốn đổ chương trình xuống rồi
nhấn nút “Ok”
Chọn thiết bị đổ chương trình
Trang 21Giao diện của project Android mới
b Tích hợp firebase với app Android:
Để tạo một Firebase project mới, các bạn truy cập vào Firebase Console,
đăng nhập với tài khoản Google của mình, và nhấn Create new project và tạo
project
Tạo một Project cho Firebase
Sau khi tạo xong, ta sẽ thấy giao diện sau:
Trang 22Giao diện các hệ điều hành Firebase liên kết
Ở giao diện trên ta chọn Add Firebase to your Android app, sẽ xuất hiện
giao diện sau:
Liên kết Firebase với Package name của app Android
Ở phần Package name, đó chính là tên gói ứng dụng mà bạn đã chọn khi
tạo Android project Phần App nickname, đó là tên mà bạn dùng để quản lí ứng
dụng
Tiếp theo, nút ADD APP chính nơi tiếp theo để bạn nhấn Trình duyệt sẽ
Trang 23tự động download tập tin google-services.json Bạn chuyển góc nhìn từ Android
sang Project trong Studio, và paste tập tin kia vào thư mục app Tức là
google-services.json sẽ ngang hàng với tập tin build.gradle module app có sẵn
Thêm tập tin google-services.json vào app Android
Trong tập tin build.gradle module app và build.gradle project bạn thêm các
dòng để tập tin tương tự như sau:
Thêm thư viện liên kết Firebase với app Android
Cuối cùng, cho sync Gradle lại Như vậy là bạn đã tích hợp và liên kết ứng
dụng của bạn tới Firebase project rồi đó Việc tiếp theo là viết code
Trang 24GIỚI THIỆU VỀ CHUẨN GIAO THỨC SPI:
2.4.1Khái niệm:
SPI viết tắt của Serial Peripheral Interface, SPI bus – Giao diện ngoại vi nói
tiếp, bus SPI Chuẩn SPI được phát triển bởi Motorola Đây là một chuẩn đồng
bộ nối tiếp để truyền dữ liệu ở chế độ song công toàn phần (full- duplex) tức
trong cùng một thời điểm có thể xảy ra đồng thời quá trình truyền và nhận Đôi khi
SPI còn được gọi là chuẩn giao tiếp 4 dây (Four-wire) SPI là giao diện đồng bộ,
bất cứ quá trình truyền nào cũng được đồng bộ hóa với tín hiệu clock chung Tín
hiệu này sinh ra bởi master
Trong giao diện SPI có bốn tín hiệu số:
Kết nối SPI giữa hai thiết bị
- MOSI hay SI – cổng ra của bên Master (Master Out Slave IN) Đây là chân dành
cho việc truyền tín hiệu từ thiết bị chủ động đến thiết bị bị động
- MISO hay SO – cổng ra bên Slave (Master in Slave Out) Đây là chân dành cho
việc truyền dữ liệu từ Slave đến Master
- SCLK hay SCK là tín hiệu clock đồng bộ (Serial Clock) Xung nhịp chỉ được tạo
bởi Master
- CS hay SS là tín hiệu chọn vi mạch (Chip Select hoặc Slave Select) SS sẽ ở mức
cao khi không làm việc Nếu Master kéo SS xuống thấp thì sẽ diễn ra quá trình
giao tiếp Chỉ có một đường SS trên mỗi Slave nhưng có thể có nhiều đường điều
khiển SS trên Master, tùy thuộc vào thiết kế của người dùng
Trang 25Kết nối SPI giữa nhiều thiết bị
2.4.2 GIỚI THIỆU VỀ GIAO THỨC NTP:
NTP (Network Time Protocol - Giao thức đồng bộ thời gian mạng) là một giao thức để đồng bộ đồng hồ của các hệ thống máy tính thông qua mạng dữ liệu
chuyển mạch gói với độ trễ biến đổi Giao thức này được thiết kế để tránh ảnh
hưởng của độ trễ biến đổi bằng cách sử dụng bộ đệm jitter
Đặc trưng:
Trên mạng Internet, NTP đồng bộ đồng hồ của các hệ thống máy tính theo UTC; trong môi trường LAN độc lập, NTP cũng thường được sử dụng để
đồng bộ với UTC, nhưng về nguyên tắc nó có thể được sử dụng để đồng bộ với
một mốc thời gian khác, ví dụ như múi giờ tại chỗ
Kiến trúc cơ bản:
NTP sử dụng kiến trúc phân cấp, phân lớp cho các cấp nguồn đồng bộ, mỗi một cấp trong phân cấp này được gọi là một "statum' và được gán một số của
cấp bắt đầu từ 0 là cấp cao nhất Cấp stratum chỉ ra nó đã qua bao nhiêu trung
gian để đến được cấp tham chiếu và cấp stratum cũng giúp tránh tham chiếu vòng
trong phân cấp Chú ý rằng cấp stratum không có ý nghĩa chỉ chất lượng hay độ
ổn định, dễ dàng tim thấy một nguồn đồng bộ "stratum 3" có chất lượng tốt hơn
một nguồn "stratum 2" khác Định nghĩa về statum này cũng khác với stratum dùng
Trang 26- Stratum 0: Bao gồm những thiết bị như đồng hồ nguyên tử (atomic
clock), đồng hồ GPS hay các đồng hồ vô tuyến khác Thiết bị Stratum-0 thường
không được kết nối trực tiếp vào mạng mà được kết nối với máy tính (ví dụ thông
qua cổng RS-232 sử dụng tín hiệu xung)
- Stratum 1: Đây là các máy tính kết nối với thiết bị Stratum 0 Đây là
nguồn đồng hồ tham chiếu cho các server Stratum 2 Các máy tính này còn được
gọi là time server Các server Stratum 1 (với NTPv3 hay trước đó) có thể không
hoạt động với độ chính xác của cấp Stratum 1
- Stratum 2: Là các máy tính gửi các yêu cầu NTP đến cho server Stratum
1 Thông thường máy tính Stratum 2 sẽ tham chiếu từ nhiều server Stratum 1 và
sử dụng thuật toán NTP để thu thập thông tin chính xác nhất, và bỏ tham chiếu đến
các server Stratum 1 hoạt động không chính xác Các máy tính Stratum 2 sẽ liên
lạc với các máy tính Stratum 2 khác để có được thời gian chính xác và ổn định
hơn trong nhóm Máy tính Stratum 2 theo phân cấp lại là nguồn tham chiếu cho
các yêu cầu từ Stratum 3
- Stratum 3: Các máy tính mày cũng thực hiện các chức năng như Stratum
2, và tương tự cũng là nguồn tham chiếu cho các cấp thấp hơn, có thể có tối đa 16
cấp Tùy vào phiên bản, NTP có thể hỗ trợ đến 256 Stratum
NTP timestamp:
Nhãn thời gian (timestamp) 64 bit của NTP bao gồm 32 bit chỉ giây và 32 bit chỉ
phần chi tiết trong 1 giây, NTP timestamp có thể mô tả được một thời gian trong
khoảng 232 giây (136 năm) và độ chi tiết đến 2−32 (233 pico giây)
NTP timestamp sẽ lặp lại mỗi 232 giây (136 năm) NTP lấy mốc thời gian
vào tháng 1, năm 1900, vì thế nó sẽ lặp lại vào năm 2036, trước sự cố UNIX năm
2038
Vì NTP hoạt động dựa trên chênh lệch giữa các time stamp và không bao
giờ dựa trên giá trị tuyệt đối, việc lặp lại nhãn sẽ không có ảnh hưởng nếu giữa
các nhãn sai lệnh không quá 68 năm Điều này cũng có nghĩa việc lặp lại vào
năm 2036 sẽ không ảnh hưởng đến các hệ thống đang hoạt động vì thông thường
chênh lệch thời
Trang 27gian là rất nhỏ Tuy nhiên, khi hệ thống vừa khởi động, cần xác định ngày chính
xác trong 68 năm
2.5 KHÁI NIỆM VỀ MẠNG WIFI
Wi-Fi viết tắt từ Wireless Fidelity hay mạng 802.11 là hệ thống mạng không dây sử dụng sóng
vô tuyến, giống như điện thoại di động, truyền hình và radio
Hệ thống này đã hoạt động ở một số sân bay, quán café, thư viện hoặc khách sạn Hệ thống cho phép truy cập Internet tại những khu vực có sóng của hệ thống này, hoàn toàn không cần đến cáp nối Ngoài các điểm kết nối công cộng (hotspots), WiFi có thể được thiết lập ngay tại nhà riêng
Biểu tượng sóng WIFI
Hệ thống các thiết bị kết nối với WIFI
Tên gọi 802.11 bắt nguồn từ viện IEEE (Institute of Electrical and Electronics Engineers) Viện này tạo ra nhiều chuẩn cho nhiều giao thức kỹ thuật khác nhau, và
nó sử dụng một hệ thống số nhằm phân loại chúng; 6 chuẩn thông dụng của WiFi hiện nay là 802.11a/b/g/n/ac/ad
Các sóng vô tuyến sử dụng cho WiFi gần giống với các sóng vô tuyến sử dụng cho thiết bị cầm tay, điện thoại di động và các thiết bị khác Nó có thể chuyển và nhận sóng vô tuyến, chuyển đổi các mã nhị phân 1 và 0 sang sóng vô tuyến và ngược lại
Tuy nhiên, sóng WiFi có một số khác biệt so với các sóng vô tuyến khác ở
chỗ:
Trang 28- Chúng truyền và phát tín hiệu ở tần số 2.4 GHz, 5 GHz hoặc 60Ghz Tần số này cao hơn
so với các tần số sử dụng cho điện thoại di động, các thiết bị cầm tay và truyền hình Tần số cao hơn cho phép tín hiệu mang theo nhiều dữ liệu hơn
- Wifi dùng chuẩn 802.11:
• Chuẩn 802.11b là phiên bản đầu tiên trên thị trường Đây là chuẩn chậm nhất và rẻ tiền nhất, và nó trở nên ít phổ biến hơn so với các chuẩn khác 802.11b phát tín hiệu ở tần số 2.4 GHz, nó có thể xử lý đến 11 megabit/giây, và nó sử dụng mã CCK (complimentary code keying)
• Chuẩn 802.11g cũng phát ở tần số 2.4 GHz, nhưng nhanh hơn so với chuẩn 802.11b, tốc độ xử lý đạt 54 megabit/giây Chuẩn 802.11g nhanh hơn vì nó sử dụng mã OFDM (orthogonal frequency-division multiplexing), một công nghệ mã hóa hiệu quả hơn
• Chuẩn 802.11a phát ở tần số 5 GHz và có thể đạt đến 54 megabit/ giây Nó cũng sử dụng mã OFDM Những chuẩn mới hơn sau này như 802.11n còn nhanh hơn chuẩn 802.11a, nhưng 802.11n vẫn chưa phải là chuẩn cuối cùng
• Chuẩn 802.11n cũng phát ở tần số 2.4 GHz, nhưng nhanh hơn so với chuẩn 802.11a, tốc độ xử lý đạt 300 megabit/giây
• Chuẩn 802.11ac phát ở tần số 5 GHz
• Chuẩn 802.11ad phát ở tần số 60 GHz
- Wifi có thể hoạt động trên cả ba tần số và có thể nhảy qua lại giữa các tần số khác nhau một cách nhanh chóng Việc nhảy qua lại giữa các tần số giúp giảm thiểu sự nhiễu sóng và cho phép nhiều thiết bị kết nối không dây cùng một lúc
Thiết bị kết nối vào mạng WIFI được gọi là station (trạm) Việc kết nối vào mạng Wifi được hỗ trợ bởi một access point (AP), một AP có chức năng như một hub nhưng dùng cho nhiều station Một access point thông thường được kết nối vào một mạng dây để phát WIFI (tức là chuyển từ mạng dây sang WIFI) Do đó access point luôn được tích hợp vào router Mỗi access point được nhận biết bằng một SSID (Service Set IDentifier), SSID cũng là tên của mạng hiển thị khi ta kết nối vào WIFI
Một hotspot là một nơi mà các thiết bị có thể kết nối Internet, và thường là bằng Wifi, thông qua mạng WLAN (wireless local area network: mạng nội bộ không dây) nối với router
Các máy tính nằm trong vùng phủ sóng WiFi cần có các bộ thu không dây, adapter, để có thể kết nối vào mạng Các bộ này có thể được tích hợp vào các máy tính xách tay hay để bàn hiện đại Hoặc được thiết kế ở dạng để cắm vào khe PC card hoặc cổng USB, hay khe PCI Khi đã
Trang 29được cài đặt adapter không dây và phần mềm điều khiển (driver), máy tính có thể tự động nhận diện và hiển thị các mạng không dây đang tồn tại trong khu vực
Trang 30Chương 2: Điều khiển bằng hồng ngoại với Arduino
1 Hướng dẫn lập trình đơn giản
Trang 31
LẬP TRÌNH
Vào link sau để tải thư viện hỗ trợ IR remote : https://github.com/shirriff/Arduino-IRremote/ Sau khi tải thư viện về, mở cửa sổ Arduino, chọn Sketch ->Import Library -> Add Library sau đó chọn file zip mà bạn vừa tải về để có thể sử dụng thư viện
#include <IRremote.h> // thư viện hỗ trợ IR remote
const int receiverPin = 8; // chân digital 8 dùng để đọc tín hiệu
IRrecv irrecv(receiverPin); // tạo đối tượng IRrecv mới
decode_results results;// lưu giữ kết quả giải mã tín hiệu
void setup()
{
Serial.begin(9600);// serial baudrate 9600
irrecv.enableIRIn(); // start the IR receiver
Trang 32Đây là các giá trị của tín hiệu được gửi từ remote, thử tất cả các nút của remote n sẽ biết được
IR codes của nó Chẳng hạn như của mình, nút 1 là 0x10, nút 2 là 0x810, nút Power là 0xA90, nút Mute là 0x290,
Tiếp theo, chúng ta sẽ sử dụng remote để bật tắt LED
#include <IRremote.h> // thư viện hỗ trợ IR remote
const int receiverPin = 8; // chân digital 8 dùng để đọc tín hiệu
IRrecv irrecv(receiverPin); // tạo đối tượng IRrecv mới
decode_results results;// lưu giữ kết quả giải mã tín hiệu
const int RED = 7;// LED đỏ
Trang 33const int YELLOW = 6;// LED vàng
const int GREEN = 5;// LED xanh
/* trạng thái của các LEDs*/
boolean stateRED = false;
boolean stateYELLOW = false;
boolean stateGREEN = false;
Trang 34• Các keywords của thư viện như:
o IRrecv irrecv(receiverPin);: tạo đối tượng IRrecv mới có tên là irrecv sử dụng tham số là receiverPin
o decode_results results; : lưu kết quả giải mã được
o irrecv.enableIRIn(); : bắt đầu giải mã tín hiệu IR
o irrecv.decode(&results);: trả về true nếu có tín hiệu đến
o irrecv.resume; : đợi tín hiệu IR tiếp theo
Kết hợp IR remote với điều khiển động cơ DC bằng transistor, các bạn có thể tự chế cho mình 1 cái quạt mini thật cool đó!^^
Cách sử dụng Arduino như 1 chiếc remote TV
Đầu tiên, hãy lấy chiếc remote TV nhà mình và sử dụng đoạn code ở trên để biết được IR codes của nó
Trang 35void loop()
{
if (digitalRead(CH1) == 0)// khi nút RED được nhấn
irsend.sendSony(0x10, 12);// gửi tín hiệu HEX 0x10, 12 bits
else if (digitalRead(CH2) == 0)// khi nút YELLOW được nhấn
irsend.sendSony(0x810, 12);// gửi tín hiệu HEX 0x810, 12 bits
else if (digitalRead(CH3) == 0)// khi nút GREEN được nhấn
irsend.sendSony(0x410, 12);// gửi tín hiệu HEX 0x410, 12 bits
else if (digitalRead(POWER) == 0)// khi nút POWER được nhấn
irsend.sendSony(0xA90, 12);// gửi tín hiệu HEX 0xA90, 12 bits
• Hàm sendSony() sẽ gửi tín hiệu dạng HEX có độ dài 12 bits thông qua IR LED
• Bộ thu IR trong TV của bạn sẽ nhận và giải mã tín hiệu IR được phát từ IR LED
==> mạch của bạn lúc này có chức năng tương đương với cái remote ( nếu bạn làm đầy đủ nút như remote thật)
2 Code 4 led điều khiển băng hồng ngoại
#include <IRremote.h> // thư viện hỗ trợ IR remote
const int receiverPin = 8; // chân digital 8 dùng để đọc tín hiệu
IRrecv irrecv(receiverPin); // tạo đối tượng IRrecv mới
decode_results results;// lưu giữ kết quả giải mã tín hiệu
const int led1 = 2;// LED 1
const int led2 = 3;// LED 2
const int led3 = 4;// LED 3
const int led4 = 5;// LED 4
/* trạng thái của các LEDs*/
boolean stateled1 = false;
boolean stateled2 = false;
boolean stateled3 = false;
boolean stateled4 = false;
Trang 37Chương 3: Giới thiệu một số đồ án không dùng
- Điện trở là một linh kiện có tính cản trở dòng điện và làm một số chức năng
khác tùy vào vị trí điện trở trong mạch điện
- Cấu tạo: điện trở được cấu tạo từ những vật liệu có điện trở suất cao như làm
bằng than, magie kim loại Ni-O2, oxit kim loại, dây quấn Để biểu thị giá trị điện
trở Người ta dung các vòng màu để biểu thị giá trị điện trở
- Ký hiệu:
- Hình dạng thực tế:
- Cách đọc trị số điện trở 4 vòng màu: Giá trị điện trở thường được thể hiện qua
các vạch màu trên thân điện trở, mỗi màu đại diện cho một số Màu đen: số 0,
Trang 38lam số 6, màu tím số 7, màu xám: số 8, màu trắng: số 9
- Nhìn trên thân điện trở, tìm bên có vạch màu nằm sát ngoài cùng nhất, vạch
màu đó và vạch màu thứ hai, kế nó được dùng để xác định trị số của màu
- Vạch thứ ba là vạch để xác định nhân tử lũy
thừa: 10(giá trị của màu) Giá trị của điện trở được
tính bằng cách lấy trị số nhân với nhân tử lũy
thừa
Giá trị điện trở = trị số x nhân tử lũy thừa)
- Phần cuối cùng: (không cần quan tâm
nhiều)làvạch màu nằm tách biệt với ba vạch
màutrước, thường có màu hoàng kim hoặc
màubạc, dùng để xác định sai số của giá trị
điệntrở, hoàng kim là 5%, bạc là 10%
1.2.Tụ điện:
-Tụ điện là linh kiện có khả năng tích điện Tụ điện cách điện với dòng điện một
chiều và cho dòng điện xoay chiều truyền qua
-Tụ điện được chia làm hai loại chính: loại không phân cực và loại có phân cực
-Loạicó phân cực thường có giá trị lớn hơn loại không phân cực, trên hai chân
của loại phân cực có phân biệt chân nối âm, nối dương rõ ràng, khi gắn tụ có
phân cực vào mạch điện, nếu gắn ngược chiều âm dương, tụ phân cực có thể bị
hư và hoạt động sai Ngoài ra người ta còn gọi tên tụ điện theo vật liệu làm tụ, ví
dụ: tụ gốm, tụ giấy, tụ hóa
-Hình dạng: tụ điện có khá nhiều hình dạng khác nhau
Kí hiệu: được kí hiệu là C
Biểu tượng trên mạch điện:
- Đơn vị của tụ điện là Fara, 1 Fara có trị số rất lớn và trong thực tế người ta
+ P(Pico Fara) 1 Pico = 1/1000.000.000.000 Fara (viết gọn là 1pF)
+ N(Nano Fara) 1 Nano = 1/1000.000.000 Fara (viết gọn là 1nF)
+ MicroFarra 1 Micro = 1/1000.000 Fara (viết gọn là 1µF)
Trang 39=> 1µF = 1000nF = 1.000.000 Pf
Cách đọc giá trị của tụ điện:
- Đọc trực tiếp trên thân điện trở, ví dụ 100µF (100 micro Fara)
Nếu là số dạng 103J, 223K, 471J vv thì đơn vị là pico, hai số đầu giữ nguyên , số
thứ 3 tương ứng số lượng số 0 thêm vào sau( chữ J hoặc K ở cuối kà ký hiệu cho
sai số)
-Ví dụ 1:103J sẽ là 10000 pF (thêm vào 3 số 0 sau số 10) = 10 nF
- Ví dụ 2: 471K sẽ là 470 pF (thêm 1 số 0 vào sau 47)
Sau trị số điện dung bao giờ cũng có giá trị điện áp, điện áp ghi trên tụ chính là
điện áp cực đại mà tụ có thể chịu được, vượt qua giá trị này thì tụ điện có thể bị
hư hỏng hoặc bị cháy nổ
3 Tranzitor:
Kí hiệu : transistor NPN
Transistor PNP
Cấu tạo: bởi 2 tiếp xúc P-N ghép liên tiếp gồm các vùng bán dẫn loại P và N xếp
xen kẽ nhau, vùng giữa có tính chất dẫn điện khác với 2 vùng lân cận và có bề
rộng rất mỏng khoảng 10A0 m đủ nhỏ để tạo lên tiếp xúc P-N gần nhau Nếu
vùng giữa là N ta có transistor PNP, ngược lại nếu vùng giữa là vùng P ta có
Ánh sáng hồng ngoại (tia hồng ngoại)
được phát ra từ Led là ánh sáng không
thể nhìn thấy được bằng mắt thường,
có bước sóng khoảng từ 0.86µm đến
0.98µm Tia hồng ngoại có vận tốc
truyền bằng vận tốc ánh sáng và được
thu lại và sử lý sang tín hiệu số bằng:
TSOP1138, TSOP1738, TSOP1736-
38Khz
Q2
Q1
Trang 401.5 IC NE555
IC NE555 gồm có 8 chân
- Chân số 1(GND): cho nối mase để lấy dòng cấp cho IC
- Chân số 2(TRIGGER): ngõ vào của 1 tần so áp.mạch so áp dùng
các transistor PNP Mức áp chuẩn là 2*Vcc/3
- Chân số 3(OUTPUT): Ngõ ra trạng thái ngõ ra chỉ xác định theo
mức volt cao(gần bằng mức áp chân 8) và thấp (gần bằng mức áp chân 1)
-Chân số 4(RESET): dùng lập định mức trạng thái ra Khi chân số 4 nối masse thì ngõ
ra ở mức thấp Còn khi chân 4 nối vào mức áp cao thì trạng thái ngõ ra tùy theo mức
áp trên chân 2 và 6
- Chân số 5(CONTROL VOLTAGE): dùng làm thay đổi mức áp chuẩn trong IC
555 theo các mức biến áp ngoài hay dùng các điện trở ngoài cho nối mase Tuy nhiên
trong hầu hết các mạch ứng dụng chân số 5 nối masse qua 1 tụ từ 0.01uF đến 0.1uF,
các tụ có tác dụng lọc bỏ nhiễu giữ cho mức áp chuẩn ổn định
- Chân số 6(THRESHOLD) : là ngõ vào của 1 tầng so áp khác mạch so sánh dùng
các transistor NPN mức chuẩn là Vcc/3
- Chân số 7(DISCHAGER) : có thể xem như 1 khóa điện và chịu điều khiển bei tầng
logic khi chân 3 ở mức áp thấp thì khóa này đóng lại.ngược lại thì nó mở ra Chân 7
tự nạp xả điện cho 1 mạch R-C lfc IC 555 dùng như 1 tầng dao động
- Chân số 8 (Vcc): cấp nguồn nuôi Vcc để cấp điện cho IC.Nguồn nuôi cấp cho IC
555 trong khoảng từ 5v - 15v và mức tối đa là 18v
Cấu tạo của NE555 gồm OP-amp so sánh điện áp, mạch lật và transistor
để xả điện Cấu tạo của IC đơn giản nhưng hoạt động tốt Bên trong gồm 3 điện
trở mắc nối tiếp chia điện áp VCC thành 3 phần Cấu tạo này tạo nên điện áp
chuẩn Điện áp 1/3 VCC nối vào chân dương của Op-amp 1 và điện áp 2/3 VCC
nối vào chân âm của Op-amp 2 Khi điện áp ở chân 2 nhỏ hơn 1/3 VCC, chân S =
[1] và FF được kích Khi điện áp ở chân 6 lớn hơn 2/3 VCC, chân R của FF = [1]