- Phát tín hiệu cháy nhanh chóng theo chức năng đã được đề ra;- Chuyển tín hiệu phát hiện cháy thành tín hiệu báo động rõ ràng để những người xungquanh có thể thực hiện ngay các biện phá
Trang 1TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT NAM ĐỊNH
KHOA ĐIỆN – ĐIỆN TỬ
ĐỒ ÁN CHUYÊN NGÀNH KTĐK & TĐH
NGHIÊN CỨU, THIẾT KẾ, CHẾ TẠO MÔ HÌNH HỆ THỐNG
BÁO CHÁY VÀ DẬP LỬA TỰ ĐỘNG
Người hướng dẫn: Bùi Thị Thu Hường
Sinh viên thực hiện: Nguyễn Văn Thủy
Nguyễn Quang Thuận
Nam Định, Năm 2019
Trang 2Mục lục
Contents
Mục lục 2
DANH MỤC BẢNG VÀ HÌNH 4
LỜI MỞ ĐẦU 1
CHƯƠNG 1: TỔNG QUAN VỀ HỆ THỐNG BÁO CHÁY 2
1.1 Lịch sử của hệ thống báo cháy 2
1.2 Quy định chung về hệ thống báo cháy 2
1.3 Các thành phần của hệ thống báo cháy 3
1.3.1 Các thành phần 3
1.3.2 Giải thích chi tiết các thiết bị 4
1.4 Nguyên lý hoạt động của hệ thống báo cháy 8
1.5 Phân loại hệ thống báo cháy 8
1.5.1 Hệ báo cháy thông thường 8
1.5.2 Hệ báo cháy địa chỉ 8
1.6 Giới thiệu đề tài 9
1.6.1 Tóm tắt đề tài 9
1.6.2 Tầm quan trọng của đề tài 9
CHƯƠNG 2: GIỚI THIỆU VỀ LẬP TRÌNH VI MẠCH ARDUINO 10
2.1 Giới thiệu về arduino 10
2.2 Ngôn ngữ lập trình Arduino 14
2.2.1 Cấu trúc lệnh 15
2.2.2 Giá trị 17
2.2.3 Hàm và thủ tục 22
CHƯƠNG 3: THIẾT KẾ MẠCH 28
3.1 Sơ đồ khối hệ thống 28
3.2 Thiết kế các khối chức năng 28
1 Cảm biến phát hiện khí gas 28
2 Cảm biến nhiệt độ 30
3.2.2 Thiết bị đầu ra 32
Trang 31 Còi báo 32
2 Bơm nước 33
3.2.3 Khối điều khiển trung tâm 34
3.2.4 Khối cấp nguồn 35
3.3 Thiết kế mạch nguyên lý 35
3.3.1 Sơ đồ mạch nguyên lý 35
3.3.2 Cảm biến MQ2 40
3.4 Thiết kế phần mềm 41
3.4.1 Giới thiệu phần mềm 41
3.4.2 Lưu đồ giải thuật 45
3.4.3 Chương trình chính 45
CHƯƠNG 4 KẾT LUẬN VỀ ĐỀ TÀI 48
4.1 Đánh giá tổng quan về đề tài 48
4.2 Hướng phát triển của đề tài 48
TÀI LIỆU THAM KHẢO 50
Trang 4DANH MỤC BẢNG VÀ HÌ
Hình 2 1: Bo mạch Arduino UNO R3 10
Hình 2 2:Giao diện phần mềm 13
Hình 2 3: Cách thức hoạt động của hàm Setup() và hàm loop() 14
Hình 2 4: Đoạn mã nguồn Led Blink 15
Hình 2 5: Tốc độ giao tiếp thiết lập 27
Y Hình 3 1:Sơ đồ hệ thống báo cháy và chữa cháy tự động 28
Hình 3 2:Cảm biến khí Gas 29
Hình 3 3:Cảm biến nhiệt độ DS18B20 30
Hình 3 4:Sơ đồ nối dây cho DS18B20 và Arduino Uno R3 31
Hình 3 5 : Còi báo 32
Hình 3 6 : Bơm nước 33
Hình 3 7 : Arduino Uno ( ATMEGA 328) 34
Hình 3 8:Mạch nguyên lý Arduino Uno R3 35
Hình 3 9:Vi điều khiển Arduino 36
Hình 3 10: Sơ đồ chân Arduino Uno R3 39
Hình 3 11:Sơ đồ chân MQ2 40
Hình 3 12:Sơ đồ mạch nguyên lý cảm biến MQ2 41
Hình 3 13:Phần cơ bản của phần mềm 42
Hình 3 14:Menu file 43
Hình 3 15:Menu Tools 44
Hình 3 16:Minh họa cho việc chọn cổng COM 44
Hình 3 17:Lưu đồ thuật toán 45
Trang 5Xuất phát từ nhu cầu trên, nhóm chúng em đã chọn đề tài “Hệ thống cảnh báo
và chữa cháy tự động” Hệ thống sẽ giúp phát hiện các nguy cơ gây cháy từ sự rò rỉgas, các khí dễ cháy hoặc từ sự thay đổi nhiệt độ thông qua các cảm biến, từ đó sẽ cócác hướng xử lý như phát chuông cảnh báo hoặc ngắt điện, kích hoạt hệ thống chữacháy Do thời gian, kiến thức và sự hiểu biết còn hạn chế nên chắc chắn trong quátrình làm chúng em còn nhiều thiếu sót, nên mong quý thầy cô và các bạn chân thànhgóp ý
Xin chân thành cảm ơn cô Bùi Thị Thu Hường cùng tập thể các thầy cô trongkhoa Điện – Điện tử, Trường Đại học Sư phạm Kỹ thuật Nam Định đã giúp đỡ nhómnghiên cứu rất nhiều trong quá trình tìm hiểu, thiết kế và hoàn thành đề tài
Trang 6CHƯƠNG 1: TỔNG QUAN VỀ HỆ THỐNG BÁO CHÁY
1.1 Lịch sử của hệ thống báo cháy
Theo thực tế hiện nay, vấn đề “cháy” và “hỏa hoạn” đang là vấn đề nóng hổitrong những năm trở lại đây với liên tiếp những vụ cháy lớn thiệt hại đáng kể về người
và của Cụ thể, theo một vài thống kê, vào năm 2013, trên cả nước xảy ra gần 2600 vụcháy nổ, làm chết 124 người và bị thương 249 người Số liệu cho thấy, số vụ cháy nổtăng 10% so với năm 2012 Trong bốn tháng đầu năm 2014, tổng cục Thống kê chobiết, trong tháng 4 - 2014, trên địa bàn cả nước đã xảy ra 232 vụ cháy, nổ, làm 7 ngườichết và 3 người bị thương, thiệt hại ước tính lên tới 77,6 tỷ đồng Tính chung bốntháng đầu năm 2014, trên địa bàn cả nước đã xảy ra hơn 1000 vụ cháy, nổ nghiêmtrọng, làm 44 người chết và 80 người bị thương Thiệt hại do cháy, nổ gây ra ước tínhkhoảng 274,8 tỷ đồng Thiệt hại do cháy, nổ, hỏa hoạn gây ra là rất lớn mà con ngườikhông thể lường trước được Ngoài nguyên nhân cháy nổ thì nguyên nhân chủ quan đểdẫn đến những thiệt hại lớn về người và của là sự thiếu kỹ năng chữa cháy rồi sự chậmtrễ trong việc liên hệ với phòng cảnh sát phòng cháy chữa cháy Mặt khác, lúc xảy racháy, phần lớn người dân mất bình tĩnh, hoảng loạn, lúng túng và khó tránh khỏinhững sai lầm Việc báo động nhanh, kịp thời một cách tự động hóa đến các cơ quanchức năng là vô cùng cấp thiết Câu hỏi đặt ra cho mọi học sinh quan tâm đến các giảipháp và đam mê nghiên cứu khoa học kỹ thuật: “Liệu có cách nào để giải quyết hiệuquả vấn đề trên?” Để trả lời câu hỏi, việc đưa ra giải pháp mới sẽ giúp đỡ và “cộngtác” với con người trong việc phòng tránh, giảm thiểu tối đa hậu quả do hỏa hoạn
Hệ thống báo cháy tự động là hệ thống gồm tập hợp các thiết bị có nhiệm vụphát hiện và báo động khi có cháy xảy ra Hệ thống này đặc biệt cần thiết trong tòa nhàcao tầng, công xưởng hay ở trong nhà ở gia đình Việc phát hiện ra các tín hiệu cháy
có thể được thực hiện tự động bởi các thiết bị hoặc bởi con người, và nhất thiết phảihoạt động liên tục trong 24/24 giờ Nhờ đó mà chúng ta có thể tránh được những mốinguy hiểm do hỏa hoạn gây ra, báo trước được những hiểm họa sắp xẩy ra (nhờ hệthống các đầu dò, đầu báo khói, báo nhiệt, báo gas… ) ,có thể dễ dàng xử lí khi xảy ra
sự cố (nhờ những thiết bị chữa cháy được thiết kế phù hợp, hoàn hảo và rất dễ sửdụng)
1.2 Quy định chung về hệ thống báo cháy
Việc thiết kế, lắp đặt hệ thống báo cháy tự động phải tuân thủ các yêu cầu,quyđịnh của các tiêu chuẩn, quy phạm hiện hành có liên quan và phải được cơ quanphòng cháy, chữa cháy có thẩm quyền chấp nhận
Hệ thống báo cháy tự động phải đáp ứng những yêu cầu sau:
Trang 7- Phát tín hiệu cháy nhanh chóng theo chức năng đã được đề ra;
- Chuyển tín hiệu phát hiện cháy thành tín hiệu báo động rõ ràng để những người xungquanh có thể thực hiện ngay các biện pháp thích hợp;
- Có khả năng chống nhiễu tốt;
- Báo hiệu nhanh chóng và rõ ràng mọi trường hợp sự cố của hệ thống;
- Không bị ảnh hưởng bởi các hệ thống khác được lắp đặt chung hoặc riêng rẽ;
- Không bị tê liệt một phần hay toàn bộ do cháy gây ra trước khi phát hiện ra cháy;
- Hệ thống báo cháy tự động phải đảm bảo độ tin cậy Hệ thống này phải thực hiện đầy
đủ các chức năng đã được đề ra mà không xảy ra sai sót
Những tác động bên ngoài gây ra sự cố cho một bộ phận của hệ thống khôngđược gây ra những sự cố tiếp theo trong hệ thống
Hệ thống báo cháy tự động bao gồm các bộ phận cơ bản :
- Trung tâm báo cháy;
- Đầu báo cháy tự động;
Một hệ thống báo cháy tự động tiêu biểu sẽ có 3 thành phần như sau:
Trung tâm cảnh báo: Được thiết kế dạng tủ, bao gồm các thiết bị chính : bo
mạch, biến áp và ắc quy
Thiết bị đầu vào
- Cảm biến: báo khói, báo nhiệt, báo gas, báo lửa
- Công tắc khẩn (nút nhấn khẩn)
Thiết bị đầu ra
- Bảng hiển thị (bàn phím);
Trang 8- Chuông báo động, còi báo động;
- Đèn báo động, đèn thoát hiểm;
- Bộ quay số điện thoại tự động;
- Thiết bị dập lửa
1.3.2 Giải thích chi tiết các thiết bị
+ Trung tâm báo cháy: (tủ trung tâm, trung tâm điều khiển, controlpanel)
Đây là thiết bị quan trọng nhất trong hệ thống và quyết định chất lượng cửa hệthống cung cấp năng lượng cho các đầu báo cháy năng lượng hoặc các sự cố tín hiệu
kỹ thuật, hiển thị các thông tin và phát lệnh báo động, chỉ thị nơi xảy ra cháy Trongtrường hợp cần thiết có thể truyền tín hiệu đến nơi nhận tin báo cháy Có khả năng tựkiểm tra hoạt động bình thường của hệ thống, chỉ thị sự cố của hệ thống như: Đứt dâychập mạch
+ Thiết bị đầu vào: Là thiết bị nhạy cảm với các hiện tượng của sự cháy(sự
tăng nhiệt, toả khói, phát sáng, phát lửa), và có nhiệm vụ nhận thông tin nơi xảy ra sựcháy và truyền tín hiệu đến trung tâm báo cháy
- Đầu báo khói:(Smoke detector)
Là thiết bị giám sát trực tiếp phát hiện ra dấu hiệu khói để truyển các tín hiệu vềtrung tâm xử lý Thời gian truyền tín hiệu về trung tâm báo cháy của các đầu báo khóikhông quá 30s Mật độ khói trong môi trường tại khu vực đặt đầu báo vượt quangưỡng cho phép (10%-20%) thì đầu báo sẽ phát tín hiệu về trung tâm để xử lí
Các đầu báo khói thường được bố trí tại các phòng làm việc, hội trường, các kho quỹ,các khu vực có mật độ không gian kín và các chất gây cháy thường tạo khói trước
Đầu báo khói được chia làm 2 loại chính như sau :
+ Đầu báo khói dạng điểm: Được lắp tại các khu vực mà phạm vi giám sát
nhỏ, trần nhà thấp (văn phòng, chung cư …)
- Đầu báo khói Ion: Thiết bị tạo ra các dòng ion dương và ion âm chuyển động,khi có khói, khói sẽ làm cản trở chuyển động của các ion dương và ion âm, từ đó thiết
bị sẽ gởi tín hiệu báo cháy về trung tâm xử lý
- Đầu báo khói Quang (photo): Thiết bị bao gồm một cặp đầu báo (một đầu pháttín hiệu, một đầu thu tín hiệu) bố trí đối nhau, khi có khói xen giữa 2 đầu báo, khói sẽlàm cản trở đường truyền tín hiệu giữa 2 đầu báo, từ đó đầu báo sẽ gởi tín hiệu báocháy về trung tâm xử lý
Trang 9+ Đầu báo khói dạng Beam: Gồm một cặp thiết bị được lắp ở hai đầu của khu
vực cần giám sát Thiết bị chiếu phát chiếu một chùm tia hồng ngoại, qua khu vựcthuộc phạm vi giám sát rồi tới một thiết bị nhận có chứa một tế bào cảm quang cónhiệm vụ theo dõi sự cân bằng tín hiệu của chùm tia sáng Đầu báo này hoạt động trênnguyên lý làm mờ ánh sáng đối nghịch với nguyên lý tán xạ ánh sáng (cảm ứng khóingay tại đầu báo)
- Đầu báo khói loại Beam có tầm hoạt động rất rộng (15m x 100m), sử dụngthích hợp tại những khu vực mà các loại đầu báo khói quang điện tỏ ra không thíchhợp, chẳng hạn như tại những nơi mà đám khói tiên liệu là sẽ có khói màu đen
Hơn nữa đầu báo loại Beam có thể đương đầu với tình trạng khắc nghiệt vềnhiệt độ, bụi bặm, độ ẩm quá mức, nhiều tạp chất,… Do đầu báo dạng Beam có thể đặtđằng sau cửa sổ có kính trong, nên rất dễ lau chùi, bảo quản
- Đầu báo dạng Beam thường được lắp trong khu vực có phạm vi giám sát lớn,trần nhà quá cao không thể lắp các đầu báo điểm (các nhà xưởng, …)
- Đầu báo nhiệt : (Heat detector)
Dùng để dò nhiệt độ của môi trường trong phạm vi được bảo vệ, khi nhiệt độcủa môi trường không thoả mãn những qui định của các đầu báo nhiệt do nhà sản xuấtqui định, thì nó sẽ phát tín hiệu báo động gửi về trung tâm xủ lí
Các đầu báo nhiệt được lắp đặt ở những nơi không thể lắp được đầu báo khói(nơi chứa thiết bị máy móc, Garage, các buồng điện động lực, nhà máy, nhà bếp,…)
+ Đầu báo nhiệt cố định : Là loại đầu báo bị kích hoạt và phát tín hiệu báođộng khi cảm ứng nhiệt độ trong bầu không khí chung quanh đầu báo tăng lên ở mức
độ nhà sản xuất quy định (57, 70, 100…)
+ Đầu báo nhiệt gia tang: Là loại đầu báo bị kích hoạt và phát tín hiệu báođộng khi cảm ứng hiện tượng bầu không khí chung quanh đầu báo gia tăng nhiệt độđột ngột khoảng 9/phút
+ Đầu báo ga (Gas Detector): Là thiết bị trực tiếp giám sát, phát hiện dấu hiệu
có gas khi tỉ lệ gas tập trung vượt quá mức 0.503% (Propane/ Butane) và gửi tín hiệubáo động về trung tâm xử lý
Các đầu báo gas thường được bố trí trong khoảng gần nơi có gas như các phòng
vô gas hay các kho chứa gas Các đầu báo gas được lắp trên tường, cách sàn nhà từ 16cm, tuyệt đối không được phép lắp đặt dưới sàn nhà
Trang 1010-+ Đầu báo lửa (Flame Detector): Là thiết bị cảm ứng các tia cực tím phát ra từngọn lửa, nhận tín hiệu, rồi gởi tín hiệu báo động về trung tâm xử lý khi phát hiện lửa.
Được sử dụng chủ yếu ở các nơi xét thấy có sự nguy hiểm cao độ, những nơi
mà ánh sáng của ngọn lửa là dấu hiệu tiêu biểu cho sự cháy (ví dụ như kho chứa chấtlỏng dễ cháy)
Đầu báo lửa rất nhạy cảm đối với các tia cực tím và đã được nghiên cứu tỉ mỉ
để tránh tình trạng báo giả Đầu dò chỉ phát tín hiệu báo động về trung tâm báo cháykhi có 2 xung cảm ứng tia cực tím sau 2 khoảng thời gian, mỗi thời kỳ là 5s
- Công tắc khẩn cấp ( Emergency breaker): Được lắp đặt tại những nơi dễ
thấy của hành lang, các cầu thang để xử dụng khi cần thiết Thiết bị này cho phếpngười sử dụng chủ động truyền thông tin báo cháy bằng cách nhấn hoặc kéo vào côngtắc khẩn, báo động khẩn cấp cho mọi người đang hiện diện trong khu vực đó biết để cóbiện pháp xử lý hoả hoạn và di chuyển ra khỏi khu vực nguy hiểm bằng các lối thoáthiểm Gồm có các loại công tắc khẩn như sau:
-Khẩn tròn, vuông
-Khẩn kính vỡ (break glass)
-Khẩn giật
+ Thiết bị đầu ra: Nhận tín hiệu từ trung tâm báo cháy truyền đến và có tính
năng phát đi bằng âm thanh (chuông, còi), bằng tín hiệu phát sáng (đèn) giúp mọingười nhận biết đang có hiện tượng cháy xảy ra
+Bảng hiển thị phụ: Hiển thị thông tin các khu vực xảy ra sự cố từ trung tâm
báo cháy truyền đến, giúp nhận biết tình trạng nơi xảy ra sự cố để xử lý kịp thời
+ Chuông báo cháy: Được lắp đặt tại phòng bảo vệ, các phòng có nhân viên
trực ban, hành lang, cầu thang hoặc những nơi đông người qua lại nhằm thông báo chonhững người xung quanh có thể biết được sự cố đang xảy ra để có phương án xử lý, ditản kịp thời
Khi xảy ra sự cố hỏa hoạn, chuông báo động sẽ phát tín hiệu báo động giúp chonhân viên bảo vệ nhận biết và thông qua thiết bị theo dõi sự cố hỏa hoạn (bảng hiển thịphụ) sẽ biết khu vực nào xảy ra hỏa hoạn, từ đó thông báo kịp thời đến các nhân viên
có trách nhiệm phòng cháy chữa cháy khắc phục sự cố hoặc có biện pháp xử lý thíchhợp
Trang 11+ Còi báo cháy : Có tính năng và vị trí lắp đặt giống như chuông báo cháy, tuy
nhiên còi được sử dụng khi khoảng cách giữa nơi phát thông báo đến nơi cần nhậnthông báo báo động quá xa
+ Đèn : Có công dụng phát tín hiệu báo động, mỗi lọai đèn có chức năng khác
nhau và được lắp đặt ở tại các vị trí thích hợp để phát huy tối đa tính năng của thiết bịnày Gồm có các lọai đèn:
+ Đèn chỉ lối thoát hiểm (Exit Light): Được đặt gần các cầu thang của mỗitầng lầu, để chỉ lối thoát hiểm trong trường hợp có cháy Tự động chiếu sáng trongtrường hợp mất nguồn AC
- Đèn báo cháy (Corridor Lamp): Được đặt bên trên công tắc khẩn của mỗitầng Đèn báo cháy sẽ sáng lên mỗi khi công tắc khẩn hoạt động, đồng thời đây cũng
là đèn báo khẩn cấp cho những người hiện diện trong tòa nhà được biết Điều này có ýnghĩa quan trọng, vì trong lúc bối rối do sự cố cháy, thì người sử dụng cần phân biệt rõràng công tác khẩn nào còn hiệu lực được kích hoạt máy bơm chữa cháy
- Đèn báo phòng (Room Lamp): Được lắp đặt trước cửa mỗi phòng giúp nhậnbiết phòng nào có sự cố một cách dễ dàng và nhanh chóng
- Đèn chiếu sáng trong trường hợp khẩn (Emergency Light) : Khi có báocháy, thao tác đầu tiên là phải cúp điện Bây giờ đèn chiếu sáng này sẽ tự động bậtsáng (nhờ có bình điện dự phòng battery), nó giúp cho mọi người dễ dàng tìm đườngthoát hiểm, hoặc giúp cho các nhân viên có trách nhiệm nhanh chóng thi hành phận sự.Hoặc trong trường hợp mất điện đột ngột do có sự cố về điện, đèn Emergency cũng tỏ
ra hữu hiệu
+ Bộ quay số điện thoại tự động : Được lắp trong trung tâm báo cháy, khi
nhận được thông tin báo cháy từ trung tâm thiết bị sẽ tự động quay số điện thoại đãđược cài đặt trước để thông báo đến người chịu trách nhiệm chính Thông thường quayđược từ 3 tới hơn 10 số
+ Bàn phím (Keypad, Bàn phím điều khiển): Là phương tiện để điều khiển
mọi hoạt động của hệ thống Qua bàn phím, bạn có thể điều khiển hoạt động theo ýmuốn một cách dễ dàng, như nhập lệnh đưa hệ thống vào chế độ giám sát, hoặc có thểngưng chế độ giám sát một số khu vực trong toàn bộ hệ thống, hoặc có thể lập trình để
hệ thống tự động chuyển sang chế độ giám sát vào một thời gian nhất định trong ngàyđối với một số khu vực nào đó
Trang 12+ Modul địa chỉ: Modul địa chỉ được sử dụng trong hệ thống báo cháy địa chỉ,
nó có khả năng cho biết vị trí chính xác nơi xảy ra sự cố cháy trong một khu vực đangbảo vệ
1.4 Nguyên lý hoạt động của hệ thống báo cháy
Quy trình hoạt động của hệ thống báo cháy là một quy trình khép kín Khi cóhiện tượng về sự cháy (chẳng hạn như nhiệt độ gia tăng đột ngột, có sự xuất hiện của khói hoặc các tia lửa) các thiết bị đầu vào (đầu báo, công tắc khẩn) nhận tín hiệu vàtruyền thông tin của sự cố về trung tâm báo cháy Tại đây trung tâm sẽ xử lý thông tinnhận được, xác định vị trí nơi xảy ra sự cháy (thông qua các zone) và truyền thông tinđến các thiết bị đầu ra (bảng hiển thị phụ, chuông, còi, đèn), các thiết bị này sẽ phát tínhiệu âm thanh, ánh sáng để mọi người nhận biết khu vực đang xảy ra sự cháy và kíchhoạt hệ thống dập lửa để xử lý kịp thời
1.5 Phân loại hệ thống báo cháy
1.5.1 Hệ báo cháy thông thường
Với tính năng đơn giản, giá thành không cao, hệ thống báo cháy thông thường chỉ thích hợp lắp đặt tại các khu vực có diện tích vừa hoặc nhỏ (khoảng vài ngàn m2),
số lượng các phòng không nhiều (vài chục phòng); lắp đặt cho những nhà, xưởng nhỏ… Các thiết bị trong hệ thống được đấu nối tiếp với nhau và nối tiếp với trung tâm báo cháy, nên khi xảy ra sự cố trung tâm chỉ có thể nhận biết khái quát và hiển thị toàn
bộ khu vực (zone) mà hệ thống giám sát (chứ không cho biết chính xác vị trí từng đầu báo, từng địa điểm có cháy) Điều này làm hạn chế khả năng xử lý của nhân viên giám sát
1.5.2 Hệ báo cháy địa chỉ
Với tính năng kỹ thuật cao, hệ thống báo cháy địa chỉ dùng để lắp đặt tại cácmặt bằng rộng lớn (vài chục ngàn m2), được chia ra làm nhiều khu vực độc lập, cácphòng trong từng khu vực riêng biệt với nhau Từng thiết bị trong hệ thống được đấutrực tiếp vào trung tâm báo cháy giúp trung tâm nhận tín hiệu xảy ra cháy tại từng khuvực, từng địa điểm một cách rõ ràng, chính xác Từ đó trung tâm có thể nhận biếtthông tin sự cố một cách chi tiết và được hiển thị trên bảng hiển thị phụ giúp nhân viêngiám sát có thể xử lý sự cố một cách nhanh chóng
Trang 131.6 Giới thiệu đề tài
có các hướng xử lý như phát chuông cảnh báo, đèn cảnh báo hoặc ngắt điện, kíchhoạt hệ thống chữa cháy Đề tài còn giúp người dân có thể tự tạo ra một thiết bịcảnh báo đơn giản nhưng hiệu quả cho gia đình mình
Thiết bị đầu vào: cảm biến khói , cảm biến gas ,cảm biến nhiệt độ
Thiết bị đầu ra: Loa báo động, Đèn báo động, bơm nước
1.6.2 Tầm quan trọng của đề tài
Đề tài này nhằm tìm ra một phương án mới, để giải quyết các thực trạng cháy
nổ hỏa hoạn Với những chức năng của nó, có thể đem lại độ an toàn tuyệt đối chongười sử dụng gas nói riêng và người dân nói chung Giúp người dùng có thể yêntâm trong lúc sinh hoạt
Do đó, công trình nghiên cứu mang tính cấp thiết Vì thế, kết quả nghiên cứu
có giá trị thực tiễn, có thể áp dụng ngay cho các hộ gia đình, nhà máy, xí nghiệp Ýnghĩa lý luận của đề tài là có thể tạo ra một hướng đi mới trong công nghệ cảm biến
và giúp cho người dân có thể tự tạo ra một thiết bị đơn giản nhưng đem lại hiệu quảtuyệt đối riêng cho mình
Trang 14CHƯƠNG 2: GIỚI THIỆU VỀ LẬP TRÌNH VI MẠCH ARDUINO2.1 Gi i thi u v arduino ớ ệ ề
Arduino là bo mạch vi điều khiển mạch đơn được sử dụng để làm thiết bị điện
tử cho các dự án đa lĩnh vực theo cách tiếp cận dễ dàng đối với người sử dụng Phầncứng bao gồm một bảng mạch điện tử phần cứng dạng nguồn mở được thiết từ bộ vi
xử lý 8-bit Atmel AVR , hoặc 32-bit Atmel ARM Phần mềm cho phần cứng này baogồm một trình biên dịch ngôn ngữ lập trình chuẩn và một bộ nạp khởi động, để có thểthực hiện các lệnh trên bộ vi điều khiển
Các bảng mạch Arduino có thể được mua trước khi lắp ráp hoặc bộ dụng cụ tựmình làm DIY Thông tin thiết kế phần cứng có sẵn cho những người muốn tự tay lắpráp một bảng mạch Arduino Người ta ước tính vào giữa năm 2011 có hơn 300.000 bộbảng mạch Arduino chính thức đã được sản xuất thương mại
Hình 2 1: Bo mạch Arduino UNO R3
Sơ lược lịch sử
Arduino được khởi đầu vào năm 2005 từ một dự án cho sinh viên tại Viện Thiết
kế Tương tác Ivrea tại Ivrea, Italia Tại thời điểm của chương trình đó sinh viên thường
sử dụng bo mạch “BASIC Stamp” có chi phí tới 100$, xem ra là đắt đôi với sinh viên.Một trong những người sáng lập, Massimo Banzi, hiện đang là giảng viên tại Ivrea
Một nghiên cứu về phần cứng đã đóng góp vào một thiết kế hệ thống kết nốiđiện dẫn của sinh viên người Colombia tên là Hernando Barragan Sau khi các nềntảng hệ thống điện dẫn đã được hoàn tất, các nhà nghiên cứu làm việc để làm cho hệ
Trang 15thống đó gọn nhẹ hơn, rẻ hơn, và có sẵn cho cộng đồng nguồn mở Trường này cuốicùng đã đóng cửa, do đó, các nhà nghiên cứu, trong số họ là David Cuartielles, đã thúcđẩy ý tưởng phát triển về Arduino.
Phần cứng
Một bảng mạch Arduino bao gồm một bộ vi điều khiển Atmel AVR 8-bit và cácthành phần bổ sung để tạo điều kiện lập trình và tích hợp cách mạch điện khác vớibảng mạch Arduino Một khía cạnh quan trọng của Arduino dựa trên tiêu chuẩn kết nốithống nhất, cho bo mạch CPU được kết nối với một loạt modul chuyển đổi tiện ích bổsung được gọi là Shield (bộ chắn) Một số Shield giao tiếp bo mạch Arduino trực tiếp
từ các chân nối khác nhau, nhưng Shield được định địa chỉ riêng biệt thông qua bus kếtnối nối tiếp I² C, cho phép Shield được xếp chồng lên nhau và được sử dụng song songnhau Arduino chuẩn sử dụng megaAVR là tổ chợp chip, đặc biệt là Atmega8 ,Atmega168, Atmega328, Atmega1280, và Atmega2560 Một số ít các bộ vi xử lý khác
đã được sử dụng tương thích chuẩn Arduino Hầu hết bo mạch bao gồm một bộ điều
áp tuyến tính 5V và một bộ dao động tinh thể 16 MHz (hoặc cộng hưởng gốm trongmột số biến thể dao động), mặc dù một số thiết kế như LilyPad chạy ở 8 MHz và chia
sẻ bộ điều áp trên bo mạch do hạn chế thông số định dạng thể Bộ vi điều khiển củaArduino cũng được lập trình trước nhờ một bộ nạp khởi động theo cách đơn giản là tảilên các chương trình vào bộ nhớ Flash trên chip, so với các thiết bị khác thường cầnmột lập trình viên bên ngoài hỗ trợ khi sử dụng
Ở cấp độ khái niệm, khi sử dụng xếp chồng phần mềm Arduino, tất cả bo mạchđược lập trình nhờ kết nối nối tiếp RS-232, nhưng cách này được thực hiện khác nhautheo từng phiên bản của phần cứng Bảng mạch Arduino nối tiếp chứa một mạch dịchcấp để chuyển đổi giữa tín hiệu cấp RS-232 và cấp TTL Bảng mạch Arduino hiện nayđược lập trình thông qua cổng USB, cài đặt này sử dụng chip chuyển đổi USB sangnối tiếp như FTDI FT232 Một số biến thể, chẳng hạn như Arduino Mini và Boarduinokhông chính thức, sử dụng một bảng mạch có thể tháo rời chuyển đổi USB sang nốitiếp hoặc cáp, Bluetooth hoặc các phương pháp khác (Khi được sử dụng với các công
cụ vi điều khiển truyền thống thay vì Arduino IDE, lập trình AVR ISP chuẩn phải được
sử dụng)
Bảng mạch Arduino luôn cho thấy hầu hết các chân nối I/O pins của vi điềukhiển để sử dụng bởi các mạch khác Các Diecimila, Duemilanove , và UNO hiện tạicung cấp 14 chân I/O số, sáu trong số đó có thểtạo tiến hiệu điều biến độ rộng xung, vàsáu đầu vào tương tự Các chân nằm ở mặt trên bo mạch, thông qua đầu chân cái 0.10-inch (2,5 mm) Một số Shield ứng dụng nhúng plug-in cũng đã có ở dạng thương mại
Trang 16Bo mạch Arduino Nano và Bare Bones tương thích Arduino có thể cung cấp cácchân cắm đực ở mặt duwois của bo mạch để kết nối các bo mạch khác không cần hàn.
Có rất nhiều bo mạch tương thích Arduino và bo mạch dẫn xuất từ Arduino.Một số có chức năng tương đương với Arduino và có thể được sử dụng thay thế lẫncho nhau Phần lớn là Arduino cơ bản với việc bổ sung các trình điều khiển đầu ra phổbiến, thường sử dụng trong giáo dục cấp trường để đơn giản hóa việclắp ráp các xe đẩy
và robot nhỏ Những biến thể khác là tương đương về điện nhưng thay đổi tham sốdạng (form-factor), đôi khi cho phép tiếp tục sử dụng các Shield, đôi khi không Một
số biến thể sử dụng bộ vi xử lý hoàn toàn khác, với mức độ khác nhau về tính tươngthích
Shield
Arduino và bảng mạch Arduino tương thích sử dụng các Shield – bo mạchmạch điện được cắm vào bo mạch Arduino chính thường thông qua các đầu chân cắmtrên bo mạch Arduino chủ Shield có thể cung cấp chức năng điều khiển động cơ, GPS,kết nối mạng thernet, màn hình LCD, hoặc bảng mạch khung (tạo mẫu) Một số Shieldcũng có thể được chế tạo để thực hiện DIY
Lược sử phát triển
Đội phát triển cốt lõi Arduino gồm Massimo Banzi, David Cuartielles, TomIgoe , Gianluca Martino, David Mellis và Nicholas Zambetti Massimo Banzi đã đượcphỏng vấn trên tuần san FLOSS ngày 21 tháng 3 năm 2009 tập trên mạng TwiT.tv,trong đó ông đã thảo luận về lịch sử và mục tiêu của dự án Arduino Ông cũng có buổi nói chuyện tại Hội nghị TEDGlobal 2012, nơi mà ông vạch ra sử dụng khác nhau củabảng mạch Arduino trên thế giới
Arduino là phần cứng nguồn mở: các thiết kế tham khảo phần cứng Arduinođược phân phối theo giấy phép Creative Commons Attribution Share-Alike 2.5 và có
Trang 17sẵn trên trang web của Arduino Bố trí và sản xuất tập tin cho một số phiên bản củaphần cứng Arduino cũng có sẵn Mã nguồn cho IDE có sẵn và phát hành theo giấyphép GNU General Public License, phiên bản 2.
Mặc dù thiết kế phần cứng và phần mềm là tự do sẵn có theo giấy phépcopyleft, các nhà phát triển đã yêu cầu tên “Arduino” được độc quyền sản phẩm chính thức và không được sử dụng cho sản phẩm phái sinh mà không được phép Văn bảnchính sách chính thức về việc sử dụng các tên Arduino nhấn mạnh rằng dự án là mởcửa cho kết hợp công việc của người khác vào các sản phẩm chính thức Một số sảnphẩm tương thích với Arduino phát hành thương mại đã tránh được “Arduino” tênbằng cách sử dụng tên các biến thể “-Duino “
Hình 2 2:Giao diện phần mềm
Chương trình Arduino được viết bằng C hoặc C++ Arduino IDE đi kèm vớimột thư viện phần mềm được gọi là "Wiring" từ dự án lắp ráp ban đầu, cho hoạt động đầu vào/đầu ra phổ biến trở nên dễ dàng hơn nhiều Người sử dụng chỉ cần định nghĩahai hàm để thực hiện một chương trình điều hành theo chu kỳ :
setup() : hàm chạy một lần duy nhất vào lúc bắt đầu của một chương trình dùng đểkhởi tạo các thiết lập
loop() : hàm được gọi lặp lại liên tục cho đến khi bo mạch được tắt đi
Trang 18Khi các bạn bật điện bảng mạch Arduino, reset hay nạp chương trình mới, hàmsetup() sẽ được gọi đến đầu tiên Sau khi xử lý xong hàm setup(), Arduino sẽ nhảy đến hàm loop() và lặp vô hạn hàm này cho đến khi bạn tắt điện bo mạch Arduino Chutrình đó có thể mô tả trong hình dưới đây:
Hình 2 3: Cách thức hoạt động của hàm Setup() và hàm loop()
Arduino IDE sử dụng GNU toolchain và AVR libc để biên dịch chương trình,
và sử dụng avrdude để tải lên các chương trình vào bo mạch chủ
Do nền tảng Arduino sử dụng vi điều khiển Atmel, môi trường phát triển củaAtmel, AVR Studio hoặc Atmel Studio mới hơn, cũng có thể được sử dụng để pháttriển phần mềm cho các Arduino
2.2 Ngôn ng l p trình Arduino ữ ậ
Các thiết bị dựa trên nền tảng Arduino được lập trình bằng ngôn riêng Ngônngữ này dựa trên ngôn ngữ Wiring được viết cho phần cứng nói Và Wiring lại là mộtbiến thể của C/C++ Một số người gọi nó là Wiring, một số khác thì gọi là C hay C/C++
Người dùng thì gọi nó là “ngôn ngữ Arduino”, ngôn ngữ Arduino bắt nguồn từ
C/C++ phổ biến hiện nay do đó rất dễ học, dễ hiểu Nếu học tốt chương trình Tin học
11 thì việc lập trình Arduino sẽ rất dễ đối với người dùng
Để lập trình cũng như gửi lệnh và nhận tín hiệu từ mạch Arduino, nhóm pháttriển dự án này đã cũng cấp đến cho người dùng một môi trường lập trình arduino nàycòn được gọi là Arduino IDE
Trang 19Hình 2 4: Đoạn mã nguồn Led Blink 2.2.1 Cấu trúc lệnh
setup ( Những lệnh trong setup() sẽ được chạy khi chương trình của bạn khởiđộng Bạn có thể sử dụng nó để khai báo giá trị của biến, khai báo thư viện,thiết lập các thông số,… )
loop ( Sau khi setup() chạy xong, những lệnh trong loop() được chạy Chúng sẽlặp đi lặp lại liên tục cho tới khi nào bạn ngắt nguồn của board Arduino mớithôi )
Cấu trúc điều khiển
if (nếu)
if else (nếu…thì)
switch / case (Giống như if, switch / case cũng là một dạng lệnh nếu thì, nhưng
nó được thiết kế chuyên biệt để bạn xử ý giá trị trên một biến chuyên biệt.)
for (Hàm for có chức năng làm một vòng lặp)
Trang 20 while (Vòng lặp while là một dạng vòng lặp theo điều kiện, mình không thể biếttrước số lần lặp cua nó, nhưng mình quản lý lúc nào thì nó ngừng lặp)
break (chức năng dừng ngay lập tức một vòng lặp (do, for, while) chứa nó trong
đó Khi dừng vòng lặp, tất cả những lệnh phía sau break và ở trong vòng lặpchịu ảnh hưởng của nó sẽ bị bỏ qua)
continue (chức năng bỏ qua một chu kì lặp trong một vòng lặp (for, do, while)chứa nó trong đó Khi gọi lệnh continue, những lệnh sau nó và ở trong cùngvòng lặp với nó sẽ bị bỏ qua để thực hiện những chu kì lặp kế tiếp.)
return (có nhiệm vụ trả về một giá trị (cùng kiểu dữ liệu với hàm) mà nó đượcgọi)
goto (Nó có nhiệm vụ tạm dừng chương trình rồi chuyển đến một nhãn đã đượcđịnh trước, sau đó lại chạy tiếp chương trình!)
#include (cho phép chương trình của bạn tải một thư viện đã được viết sẵn Tức
là bạn có thể truy xuất được những tài nguyên trong thư viện này từ chươngtrình của mình Nếu bạn có một đoạn code và cần sử dụng nó trong nhiềuchương trình, bạn có thể dùng #include để nạp đoạn code ấy vào chương trìnhcủa mình, thay vì phải chép đi chép lại đoạn code ấy.)
Trang 21 Trong điện tử, HIGH là một mức điện áp lớn hơn 0V Giá trị của HIGH được
định nghĩa khác nhau trong các mạch điện khác nhau, nhưng thường được quyước ở các mức như 1.8V, 2.7V, 3.3V 5V, 12V, )
LOW (Trong lập trình trên Arduino, LOW là một hằng số có giá trị nguyên là
Trang 22là 1 Trong điện tử, LOW là mức điện áp 0V hoặc gần bằng 0V, giá trị này
được định nghĩa khác nhau trong các mạch điện khác nhau, nhưng thường là 0Vhoặc hơn một chút xíu.)
INPUT/ INPUT_PULLUP/ OUTPUT (cấu hình Pin)
LED_BUILTIN (là một hằng số thay thế cho việc tuyên bố một biến có giá trịđiều khiển on-board LED Hầu hết trên các mạch Arduino, chúng có giá trị là13)
TRUE (true là một hằng logic Bạn cũng có thể HIỂU true là một hằng số
nguyên mang giá trị là 1 Trong các biểu thức logic, một hằng số hay giá trị của
một biểu thức khác 0 được xem như là mang giá trị true )
FALSE ( false là một hằng logic có giá trị là phủ định của true (và ngược lại), tức là (!true) = false Bạn cũng có thể hiểu false là một hằng số nguyên
mang giá trị là 0 Trong các biểu thức logic, một hằng số hay giá trị của một
biểu thức bằng 0 được xem như là bằng false)
Hằng số nguyên ( Hằng số nguyên là những con số được sử dụng trực tiếp trongchương trình Theo mặc định, những con số này có kiểu là int )
Hằng số thực ( Khi bạn viết một biểu thức tính toán, giá trị của biểu thức này sẽđược tính ra và trình biên dịch sẽ thay thế biểu thức này bằng một hằng số thực
đã tính ra được Điều đó gợi ý rằng trong những chương trình lớn, để giảm thờigian biên dịch, bạn nên tính trước giá trị của những biểu thức thay vì bắt trìnhbiên dịch tính toán )
Kiểu dữ liệu
VOID (là một từ khóa chỉ dùng trong việc khai báo một function Nhữngfunction được khai báo với "void" sẽ không trả về bất kì dữ liệu nào khi đượcgọi.)
BOOLEAN (Một biến được khai báo kiểu boolean sẽ chỉ nhận một trong hai
giá trị: true hoặc false Và bạn sẽ mất 1 byte bộ nhớ cho điều đó.)
CHAR
+ Kiểu dữ liệu này là kiểu dữ liệu biểu diễn cho 1 KÝ TỰ (nếu bạn cần biểu diễnmột chuỗi trong chương trình Arduino - bạn cần sử dụng kiểu dữ liệu String) Kiểu dữliệu này chiếm 1 byte bộ nhớ!
+ Kiểu char chỉ nhận các giá trị trong bảng mã ASCII
Trang 23Kiểu char được lưu dưới dạng 1 số nguyên byte có số âm (có các giá trị từ 127 128)
- UNSIGNED CHAR
+ Kiểu dữ liệu này là kiểu dữ liệu biểu diễn cho 1 KÝ TỰ (nếu bạn cần biểu diễnmột chuỗi trong chương trình Arduino - bạn cần sử dụng kiểu dữ liệu String) Kiểu dữliệu này chiếm 1 byte bộ nhớ!
+ Kiểu char chỉ nhận các giá trị trong bảng mã ASCII
+ Kiểu unsigned char biểu hiệu một số nguyên byte không âm (giá trị từ 0 - 255)
BYTE (Là một kiểu dữ liệu biểu diễn số nguyên nằm trong khoảng từ 0 đến255.)
WORD (kiểu số nguyên 16 bit không âm (chứa các giá trị từ 0 đến 65535), và
nó chiếm 2 byte bộ nhớ!)
LONG
+Là một kiểu dữ liệu mở rộng của int Những biến có kiểu long có thể mang giá trị
32bit từ -2,147,483,648 đến -2,147,483,647 Bạn sẽ mất 4 byte bộ nhớ cho một biếnkiểu long
+Khi tính toán với số nguyên (biến kiểu int), bạn phải thêm hậu tố "L" phía sau các
số nguyên kiểu int để chuyển chúng sang kiểu long Việc tính toán (cộng, trừ, nhân, )
giữa 2 số thuộc 2 kiểu dữ liệu khác nhau là không được phép
UNSIGNED LONG (Kiểu unsigned long là kiểu số nguyên nằm trong khoảng
từ 0 đến 4,294,967,295 (0 đến 232 - 1) Mỗi biến mang kiểu dữ liệu này chiếm 4byte bộ nhớ.)
Trang 24+Là kiểu số nguyên chính được dùng trong chương trình Arduino Kiểu int chiếm 2byte bộ nhớ !
+Trên mọi mạch Arduino nó đều chiếm 4 byte bộ nhớ và biểu thị giá trị trongkhoảnf -32,768 đến 32,767 (-215 đến 215-1) (16 bit)
FLOAT
+Để định nghĩa 1 kiểu số thực, bạn có thể sử dụng kiểu dữ liệu float Một biếndùng kiểu dữ liệu này có thể đặt một giá trị nằm trong khoảng -3.4028235E+38 đến3.4028235E+38 Nó chiếm 4 byte bộ nhớ
+Với kiểu dữ liệu float bạn có từ 6-7 chữ số có nghĩa nằm ở bên mỗi bên dấu
"." Điều đó có nghĩa rằng bạn có thể đặt một số thực dài đến 15 ký tự (bao gồm dấu )
STRING (chuỗi kí tự biểu diễn bằng array)
STRING(object)
Chuyển đổi kiểu dữ liệu
CHAR():
+ Hàm char() có nhiệm vụ chuyển kiểu dữ liệu của một giá trị về kiểu char
BYTE(): Hàm byte() có nhiệm vụ chuyển kiểu dữ liệu của một giá trị vềkiểu byte
INT() : Hàm int() có nhiệm vụ chuyển kiểu dữ liệu của một giá trị về kiểu int
WORD() : Hàm word() có nhiệm vụ chuyển kiểu dữ liệu của một giá trị vềkiểu word Hoặc ghép 2 giá trị thuộc kiểu bytethành 1 giá trị kiểu word
LONG() : Hàm long() có nhiệm vụ chuyển kiểu dữ liệu của một giá trị vềkiểu long
Trang 25 FLOAT() : Hàm float() có nhiệm vụ chuyển kiểu dữ liệu của một giá trị vềkiểu float
Phạm vi của biến và phân loại
Phạm vi hiệu lực của biến
Ngôn ngữ Arduino được xây dựng trên ngôn ngữ lập trình C Các biến củaArduino, cũng như C, có một phạm trù được gọi là phạm vi biến Điều này trái ngượcvới ngôn ngữ BASIC, ở ngôn ngữ BASIC này, mọi biến đều là biến toàn cục
Một biến toàn cục có nghĩa là, tất cả mọi nơi trong chương trình có thể đọcđược và thay đổi dữ liệu của nó mà không cần sử dụng biện pháp hỗ trợ nào Còn biếncục bộ thì chỉ cỏ có hàm khai báo nó (hoặc các hàm con của hàm đó) có thể thấy vàthay đổi được giá trị Ví dụ, mọi biến nằm ngoài các hàm (như setup() hay loop()) làbiến toàn cục, còn nằm bên trong các hàm là biến cục bộ của hàm đó
Khi chương trình của bạn dần trở nên lớn hơn (về kích thước file lập trình) hoặcphức tạp hơn thì bạn nên dùng các biến cục để trong các hàm để dễ dàng quản lý (thaycho việc khai báo hết toàn bộ là biến toàn cục) Biến cục bộ rất có ích trong việc này vìchỉ có mỗi hàm khai báo nó (và các hàm con) mới sử dụng được nó Điều này sẽ ngănchặn các lỗi về logic sẽ xảy ra nếu một hàm thay đổi giá trị của một hàm khác Ngoài
ra, sau khi đoạn chương trình con kết thúc, các biến cục bộ sẽ được tự động giải phóngkhỏi bộ nhớ, chương trình chính sẽ có thêm vùng nhớ cho việc xử lý
Biến cục độ khá hữu ích cho việc khai báo biến của vòng lặp vì chỉ có vòng lặpmới dùng được nó
STATIC - biến tĩnh
Biến tĩnh là biến sẽ được tạo ra duy nhất một lần khi gọi hàm lần đầu tiên và nó
sẽ không bị xóa đi để tạo lại khi gọi lại hàm ấy Đây là sự khác biệt giữa biến tĩnh vàbiến cục bộ
Biến tĩnh là loại biến lưỡng tính, vừa có tính chất của 1 biến toàn cục, vừa mantính chất của 1 biến cục bộ:
+ Tính chất 1 biến toàn cục: biến không mất đi khi chương trình con kết thúc,
nó vẫn nằm trong ô nhớ của chương trình và được tự động cập nhật khi chương trìnhcon được gọi lại Giống như 1 biến toàn cục vậy
+ Tính chất 1 biến cục bộ: biến chỉ có thể được sử dụng trong chương trình con
mà nó được khai báo
Để khai báo bạn chỉ cần thêm từ khóa "static" trước khai báo biến
Trang 26 CONST - biến hằng
Với một từ khóa "const" nằm trước một khai báo biến, bạn sẽ làm cho biến nàythành một biến chỉ có thể đọc "read-only" Nếu bạn có "lỡ lầm" thay đổi giá trị củamột biến hằng thì đừng lo lắng, chương trình dịch sẽ báo lỗi cho bạn!
Các biến có từ khóa const vẫn tuân theo phạm vi hiệu lực của biến Ngoài cách
sử dụng const để khai báo một biến hằng, ta còn có thể sử dụng #define để khai báo
một hằng số hoặc hằng chuỗi Tuy nhiên sử dụng const được ưa chuộng hơn trong lập
trình, vì khả năng "tuân theo" phạm vi hiệu lực của biến!
VOLATILE
Một biến được nên khai báo với từ khóa volatile nếu giá trị của nó có thể bị tác
động bởi các yếu tố nằm ngoài sự kiểm soát của chương trình đang chạy, nói đơn giản
hơn là giá trị của biến thay đổi một cách không xác định Các biến kiểu volatile thường
mà sẽ đưa biến lên lưu trữ ở RAM để xử lí tạm thời thay vì lưu trữ ở các thanh ghi
(register) bị ảnh hưởng bởi interrupts Những biến này thuộc kiểu số 2 kể trên.
Hàm hỗ trợ
SIZEOF() : Hàm sizeof() có nhiệm vụ trả về số byte bộ nhớ của một biến, hoặc
là trả về tổng số byte bộ nhớ của một mảngarray
2.2.3 Hàm và thủ tục
Nhập xuất Digital (Digital I/O)
pinMode () :Cấu hình 1 pin quy định hoạt động như là một đầu vào (INPUT)hoặc đầu ra (OUTPUT)
Trang 27 digitalWrite () : Xuất tín hiệu ra các chân digital, có 2 giá trị là HIGH hoặc
là LOW
Nếu một pin được thiết đặt là OUTPUT bởi pinMode() Và bạn dùngdigitalWrite để xuất tín hiệu thì điện thế tại chân này sẽ là 5V (hoặc là 3,3 V trên mạch3,3 V) nếu được xuất tín hiệu là HIGH, và 0V nếu được xuất tín hiệu là LOW
digitalRead () : Đọc tín hiệu điện từ một chân digital (được thiết đặt là INPUT).Trả về 2 giá trị HIGH hoặc LOW
Nhập xuất Analog (Analog I/O)
analogReference() : Hàm analogReference() có nhiệm vụ đặt lại mức (điện áp)tối đa khi đọc tín hiệu analogRead Ứng dụng như sau, giả sử bạn đọc một tínhiệu dạng analog có hiệu điện thế từ 0-1,1V Nhưng mà nếu dùng mức điện áptối đa mặc định của hệ thống (5V) thì khoảng giá trị sẽ ngắn hơn => độ chínhxác kém hơn => hàm này ra đời để giải quyết việc đó!
analogRead()
Nhiệm vụ của analogRead() là đọc giá trị điện áp từ một chân Analog (ADC).Trên mạch Arduino UNO có 6 chân Analog In, được kí hiệu từ A0 đến A5 Trên cácmạch khác cũng có những chân tương tự như vậy với tiền tố "A" đứng đầu, sau đó là
số hiệu của chân
analogRead() luôn trả về 1 số nguyên nằm trong khoảng từ 0 đến 1023 tương
ứng với thang điện áp (mặc định) từ 0 đến 5V Bạn có thể điều chỉnh thang điện áp nàybằng hàm analogReference()
Hàm analogRead() cần 100 micro giây để thực hiện
analogWrite() - PWM - PPM : analogWrite() là lệnh xuất ra từ một chân trênmạch Arduino một mức tín hiệu analog (phát xung PWM) Người ta thường điều khiển mức sáng tối của đèn LED hay hướng quay của động cơ servo bằngcách phát xung PWM như thế này
Hàm thời gian
millis(): millis() có nhiệm vụ trả về một số - là thời gian (tính theo mili giây) kể
từ lúc mạch Arduino bắt đầu chương trình của bạn Nó sẽ tràn số và quay số 0(sau đó tiếp tục tăng) sau 50 ngày
micros() :micros() có nhiệm vụ trả về một số - là thời gian (tính theo microgiây) kể từ lúc mạch Arduino bắt đầu chương trình của bạn Nó sẽ tràn số và