Academia.eduAcademia.edu
ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG BÁO CÁO BÀI TẬP LỚN Môn học: KỸ THUẬT VI ĐIỀU KHIỂN VÀ ỨNG DỤNG Đề tài: Nghiên cứu, thiết kế hệ thống giám sát môi trường Sinh viên thực hiện : Dương Văn Huy Đinh Hoang Thượng Nguyễn Thành Nam Trần Văn Cương Nguyễn Cao Mạnh Lớp :KTĐ-ĐT K14B Giáo viên hướng dẫn: Th.S Mai Thị Kim Anh LỜI NÓI ĐẦU Trong những năm gần đây trên thế giới cùng với sự phát triển mạnh mẽ của ngành công nghiệp chế tạo linh kiện bán dẫn và vi mạch tổng hợp, một hướng phát triển mới của các vi xử lý đã hình thành đó là các vi điều khiển. Với nhiều ưu điểm, vi điều khiển đã được sử dụng rộng rãi trên nhiều lĩnh vực khác nhau. Bằng cách áp dụng vi điều khiển vào trong quá trình sản xuất và xử lý, vi điều khiển đã thực sự thể hiện được ưu thế của mình so với các thiết bị điều khiển thông thường. Vì nhiều những lý do trên, trong các trường Đại Học, Cao Đẳng, vi xử lý thực sự trở thành một môn học hết sức quan trọng, trong đó board mạch Arduino gần như là một môn học sử dụng để trang bị cho chúng ta những kiến thức cơ bản về vi xử lý, từ đó mở rộng ra các loại vi xử lý khác có cấu trúc phức tạp hơn như 8051,AVR, … Qua đề tài này, đã giúp em hình dung được thực tế vi xử lý áp dụng như thế nào trong cuộc sống hiện đại, cụ thể chính là thiết bị cảnh báo an ninh dùng board mạch Arduino Nano. Bài tập gồm 3 chương: Chương 1: Tổng quan về hệ thống giám sát môi trường , các thành phần chính của hệ thống giám sát môi trường, các thành phần của hệ thống sám sát môi trường ,nguyên lí hoạt động ngôn ngữ sủa dụng và phần mền mô phỏng. Chương 2: Khảo sát board mạch Arduino Nano Chương 3: Thiết kế phần cứng và phần mềm. Nhóm chúng em xin chân thành cảm ơn sự giúp đỡ, chỉ bảo tận tình của thầy Phạm Đức Long trong suốt thời gian chúng em thực hiện đề tài này . MỤC LỤC LỜI MỞ ĐẦU:........................................................................................................ CHƯƠNG 1: : Tổng quan về hệ thống giám sát môi trường , các thành phần chính của hệ thống giám sát môi trường, các thành phần của hệ thống sám sát môi trường ,nguyên lí hoạt động ngôn ngữ sủa dụng và phần mền mô phỏng.1.1: Phân tích yêu cầu bài toán 1.2: Tổng quan về hệ thống giám sát môi trường…………………………………… 1.2.1: Sơ đồ khối......................................................…………………………….. 1.3: Lựa chọn linh kiện........................................................................................ 1.3.1 Tổng quan và đặc tính kỹ thuật của các linh kiện sử dụng............................... 1.4: Ngôn ngữ sử dụng và phần mềm mô phỏng. ………………………………. CHƯƠNG 2: Thiết kế và thực thi 2.1: Thiết kế phần cứng 2.1.1. Mạch nguyên lý……………………… …………………………………... 2.1.2: Mạch in và mạch thật……………………….......................................... 2.2: Thiết kế phần mềm……………………………………………………. 2.2.1: Lưu đồ thuật toán.....................................…………………………… 2.2.2: Mã nguồn chương trình……………………………………………….. 2.3 . Một số ảnh của sản phẩm...................................................................... CHƯƠNG 1: TỔNG QUAN VỀ HỆ THỐNG GIÁM SÁT MÔI TRƯỜNG, CÁC THÀNH PHẦN CHÍNH CỦA HỆ THỐNG GIÁM SÁT MÔI TRƯỜNG, NGUYÊN LÝ HOẠT ĐỘNG, NGÔN NGỬ SỬ DỤNG VÀ PHẦN MỀM MÔ PHỎNG 1.1: Phân tích yêu cầu bài toán Yêu cầu bài toán:: Nghiên cứu, xây dựng, thiết kê hệ thống giám sát môi trường để chúng ta có thể biết được nhiệt độ, độ ẩm, thời gian thực để chúng ta có thể lựa chọn công việc vào 1 thời điểm sao cho thích hợp. 1.2: Tổng quan về hệ thống giám sát môi trường Hiện nay do biến đổi khí hậu nên thời tiết môi trường cũng biến đổi một cách thất thường ảnh hưởng rất lớn đến sức khỏe của con người.Sức khỏe con người là rất quan trọng vì vậy cần tạo ra một hệ thống để có thể biết được nhiệt độ ,độ ẩm của môi trường để con người có thể chăm sóc sức khỏe của bản thân mình một cách tốt nhất. Một vấn đề nữa đó là môi trường ảnh hưởng trực tiếp đến công việc của con người đặc biệt là công việc của người nông dân phụ thuộc rất nhiều vào môi trường.Vậy tạo ra một hệ thống giám sát môi trường là thực sự cần thiết Động cơ đề tài: - Do con người không biết thời tiết môi trường hôm đó ra sao mà làm những công việc phù hợp khiến cơ thể mệt mỏi có thể ốm sốt cảm cúm. - Về nông nghiệp nếu không biết môi trường hôm nó ra sao nếu môi trường khắc nghiệt quá sẽ ảnh hưởng đến mùa màng ( ví dụ : ngày deo hạt, ngày trồng cây có thể làm hỏng hạt , cây có thể chết) Vì vậy em đã nảy sinh ý tưởng thiết kế ra một hệ thống giám sát môi trường để phục vụ đời sống cho con người. Trong đề tài này chúng tôi sẽ thiết kế một hệ thống sử dụng cảm biến DHT11 để có thể đo được nhiệt độ,độ ẩm của môi trường, module DS1307 để kiểm soát thời gian thực và hiển thị lên màn hình LCD. 1.2.1 Sơ đồ khối Chức năng các khối. Khối Vi Điều Khiển: nhận tín hiệu từ cảm biến rồi xử lý tín hiệu theo yêu cầu của lập trình viên rồi đưa tín hiệu ra màn hình hiển thị LCD. Khối cảm biến và Module: đo nhiệt độ , độ ẩm, thời gian từ ngoài môi trường và sau khi quét xong sẽ đưa tới khối VĐK. Khối LCD: chịu trách nhiệm hiển thị theo yêu cầu đã được lập trình theo hệ thống. Khối nguồn: có nhiệm vụ cấp nguồn cho các khối khác. 1.3 Lựa chọn Linh kiện - Adruino NANO (sử dụng chíp ATM 328P) - Cảm biến nhiệt độ,độ ẩm DHT11 - Module DS1307 - Màn hình hiển thị LCD - Một số phụ kiện khác (biến trở 10k, điện trở 10k, điện trở 220) 1.3.1. Tổng quan về board mạch adruino + Giới thiệu Môi trường Arduino được thiết kế đơn giản cho người mới bắt đầu sử dụng. Arduino được sử dụng để tạo ra rất nhiều dự án tuyệt vời như nhạc cụ, robot, điêu khắc ánh sáng, trò chơi, đồ nội thất tương tác … Arduino được sử dụng rất nhiều trong các chương trình giáo dục trên toàn thế giới, đặc biệt đối với các nhà thiết kế và nghệ sĩ những người muốn tạo ra những cái mới độc đáo mà không có am hiểu sâu về vấn đề của kỹ thuật. Bởi vì Arduino được thiết kế sử dụng cho những người không am hiểu về kỹ thuật , phần mềm Arduino có rất nhiều ví dụ được cung cấp bởi nhà phát triển nên rất dễ dàng để tiếp cận sử dụng Mặc dù dễ dàng sử dụng nhưng Arduino có phần cứng được thiết kế rất tinh tế nên các kỹ sư có thể dễ dàng nhúng nó vào trong các ứng dụng nhúng. Những người đã sử dụng và phát triển các ứng dụng nhúng bằng vi điều khiển cũng bị thu hút bởi Arduino do khả năng phần cứng tốt và phần mềm tiện dụng dễ dàng cho việc giải quyết các ý tưởng. Phần cứng Arduino : là các board Arduino nơi thực thi các chương trình lập trình. Các board này có thể điều khiển hoặc đáp trả các tín hiệu điện, vì vậy các thành phần được ghép trực tiếp vào nó để tương tác với thế giới thực hiện để cảm nhận hoặc truyền thông. Ví dụ các cảm biến bao gồm các thiết bị hiển thị. Hầu hết các board Arduino sử dụng kết nối kiểu USB dùng để cấp nguồn và upload dữ liệu cho board Arduino. Arduino được biết nhiều nhất là phần cứng của nó, nhưng phải có phần mềm để lập trình phần cứng. Cả phần cứng và phần mềm gọi chung là “Arduino”. Các phần mềm là miễn phí, mã nguồn mở. Ngoài ra, có một số hoạt động liên quan tới Arduino được giải đáp bởi diễn đàn Arduino trên toàn thế giới và Wikimedia gọi chung là sân chơi Arduino. Phần mềm Arduino :được gọi là sketches, được tạo ra trên máy tính có tính hợp môi trường phát triển (IDE). IDE cho phép viết , chỉnh sửa code và truyền đổi sao cho phần cứng có thể hiểu. IDE dùng để biên dịch và nạp vào Arduino ( quá trình xử lý này gọi là UPLOAD). Arduino là một board mạch vi xử lý, nhằm xây dựng các ứng dụng tương tác với nhau hoặc với môi trường được thuận lợi hơn. Một board mạch Arduino bao gồm một vi điều khiển AVR với nhiều linh kiện bổ sung giúp dễ dàng lập trình và có thể mở rộng với các mạch khác. Một khía cạnh quan trọng của Arduino là các kết nối tiêu chuẩn của nó, cho phép người dùng kết nối với CPU của board với các module thêm vào có thể dễ dàng chuyển đổi, được gọi là shield. Vài shield truyền thông với board Arduino trực tiếp thông qua các chân khách nhau, nhưng nhiều shield được định địa chỉ thông qua serial bus I²C-nhiều shield có thể được xếp chồng và sử dụng dưới dạng song song. Arduino chính thức thường sử dụng các dòng chip megaAVR, đặc biệt là ATmega8, ATmega168, ATmega328, ATmega1280, và ATmega2560. Một vài các bộ vi xử lý khác cũng được sử dụng bởi các mạch Aquino tương thích. Hầu hết các mạch gồm một bộ điều chỉnh tuyến tính 5V và một thạch anh dao động 16 MHz (hoặc bộ cộng hưởng ceramic trong một vài biến thể), mặc dù một vài thiết kế như LilyPad chạy tại 8 MHz và bỏ qua bộ điều chỉnh điện áp onboard do hạn chế về kích cỡ thiết bị. Một vi điều khiển Arduino cũng có thể được lập trình sẵn với một boot loader cho phép đơn giản là upload chương trình vào bộ nhớ flash on-chip, so với các thiết bị khác thường phải cần một bộ nạp bên ngoài. Điều này giúp cho việc sử dụng Arduino được trực tiếp hơn bằng cách cho phép sử dụng một máy tính gốc như là một bộ nạp chương trình. Theo nguyên tắc, khi sử dụng ngăn xếp phần mềm Arduino, tất cả các board được lập trình thông qua một kết nối RS-232, nhưng cách thức thực hiện lại tùy thuộc vào đời phần cứng. Các board Serial Arduino có chứa một mạch chuyển đổi giữa RS232 sang TTL. Các board Arduino hiện tại được lập trình thông qua cổng USB, thực hiện thông qua chip chuyển đổi USB-to-serial như là FTDI FT232. Vài biến thể, như Arduino Mini và Boarduino không chính thức, sử dụng một board adapter hoặc cáp nối USB-to-serial có thể tháo rời được, Bluetooth hoặc các phương thức khác. (Khi sử dụng một công cụ lập trình vi điều khiển truyền thống thay vì ArduinoIDE, công cụ lập trình AVR ISP tiêu chuẩn sẽ được sử dụng.) Board Arduino sẽ đưa ra hầu hết các chân I/O của vi điều khiển để sử dụng cho những mạch ngoài. Diecimila, Duemilanove, và bây giờ là Uno đưa ra 14 chân I/O kỹ thuật số, 6 trong số đó có thể tạo xung PWM (điều chế độ rộng xung) và 6 chân input analog, có thể được sử dụng như là 6 chân I/O số. Những chân này được thiết kế nằm phía trên mặt board, thông qua các header cái 0.10-inch (2.5 mm). Nhiều shield ứng dụng plug-in cũng được thương mại hóa. Các board Arduino Nano, và Arduino-compatible Bare Bones Board và Boarduino có thể cung cấp các chân header đực ở mặt trên của board dùng để cắm vào các breadboard. Có nhiều biến thể như Arduino-compatible và Arduino-derived. Một vài trong số đó có chức năng tương đương với Arduino và có thể sử dụng để thay thế qua lại. Nhiều mở rộng cho Arduino được thực thiện bằng cách thêm vào các driver đầu ra, thường sử dụng trong các trường học để đơn giản hóa các cấu trúc của các 'con rệp' và các robot nhỏ. Những board khác thường tương đương về điện nhưng có thay đổi về hình dạng-đôi khi còn duy trì độ tương thích với các shield, đôi khi không. Vài biến thể sử dụng bộ vi xử lý hoàn toàn khác biệt, với các mức độ tương thích khác nhau. 1.3.3. Lịch sử phát triển của các loại vi xử lý, vi điều khiển Vi xử lý được chế tạo từ các tranzito tích hợp trên một vi mạch tích hợp đơn. Xuất hiện lần đầu tiên vào những năm đầu của thập kỷ 70 của thế kỷ 20. Sử dụng mã BCD trên nền 4 bit. Các vi xử lý 4 bit và 8 bit được sử dụng trong các thiết bị đầu cuối, máy in, các hệ thống tự động...Đến giữa những năm 1970 thì lần đầu tiên các vi xử lý 8 bit với 16 bit địa chỉ được sử dụng như máy tính đa mục đích. Các hãng sản xuất vi xử lý đầu tiên ở thời điểm này là Intel, Texas Instruments và Garrett AiResearch với ba dòng chip tương ứng: Intel 4004, TMS 1000 và Central Air Data Computer. Đây là những vi xử lý 4 bit. Sau sự ra đời của các vi xử lý 4 bit thì các hãng cho ra đời các dòng 8 bit, 12 bit, 16 bit, 32 bit, 64 bit. Intel 8008 là vi xử lý 8 bit đầu tiên trên thế giới được sản xuất năm 1972. Tiếp sau thành công của 8008 là các phiên bản như 8080 (1974), Zilog Z80 (1976). Các vi xử lý của Motorola 6800 được phát hành tháng 8 năm 1974 và MOS technology ra đời năm 1975. Intersil 6100 là vi xử lý 12 bit, từ khi được sản xuất bởi công ty Harris nó được biết đến với tên HM-6100 được sử dụng trong quân đội suốt thập niên 1980. Vi xử lý 16 bit đầu tiên được giới thiệu bởi hãng National Semiconductor IMP-16 vào năm 1973 đây là vi xử lý đa chip. Đến năm 1975 hãng này giới thiệp vi xử lý đơn chip đầu tiên. Hãng Texas Instruments ra đời vi xử lý 16 bit đơn chip TI-990 sử dụng như một máy tính mini. Intel cũng cho ra đời dòng vi xử lý 16 bit lấy tên 8086. Vi xử lý 16 bit chỉ xuất hiện trên thị trường một thời gian ngắn thì dòng 32 bit đã bắt đầu xuất hiện. MC6800 là vi xử lý 32 bit đầu tiên của hãng Motorola, họ 68k có 32 bit thanh ghi nhưng sử dụng đường dẫn dữ liệu 16 bit bên trong và 16 bit dữ liệu bên ngoài để giảm số lượng pin, hỗ trợ 24 bit địa chỉ. Motorola thường được biết đến như vi xử lý 16 bit mặc dù nó có cấu trúc 32 bit. Vi xử lý 32 bit đầy đủ đầu tiên là AT&T Bell Labs BELLMAC-32A với mẫu đầu tiên vào năm 1980 và sản xuất năm 1982. Vi xử lý 32 bit đầu tiên của Intel là dòng iAPX 432 được giới thiệu năm 1981 nhưng không thu được thành công. Vi xử lý ARM đầu tiên ra đời năm 1985 với thiết kế RISC viết tắt của reduced instruction set computer máy tính có tập lệnh rút gọn, các vi xử lý ARM được sử dụng chủ yếu trong các điện thoại di động. Vi xử lý 64 bit được thiết kế cho các máy tính cá nhân. Nó được thiết kế vào đầu những năm 1990 đến đầu những năm 2000 chứng kiến vi xử lý 64 bit nhằm vào thị trường máy tính. Vi xử lý AMD 64 bit tương thích ngược với x86, x86-64 còn gọi là AMD64 trong tháng 9 năm 2003, tiếp sau thành công của Intel64. Kỷ nguyên của máy tính 64 bit đã bắt đầu. Vi điều khiển là một máy tính được tích hợp trên một chíp, nó thường được sử dụng để điều khiển các thiết bị điện tử. Vi điều khiển thực chất gồm một vi xử lý có hiệu suất đủ cao và giá thành thấp (so với các vi xử lý đa năng dùng trong máy tính) kết hợp với các thiết bị ngoại vi như các bộ nhớ, các mô đun vào/ra, các mô đun biến đổi từ số sang tương tự và từ tương tự sang số, mô đun điều chế độ rộng xung (PWM)... Vi điều khiển thường được dùng để xây dựng hệ thống nhúng. Nó xuất hiện nhiều trong các dụng cụ điện tử, thiết bị điện, máy giặt, lò vi sóng, điện thoại, dây truyền tự động... Hầu hết các loại vi điều khiển hiện nay có cấu trúc Harvard là loại cấu trúc mà bộ nhớ chương trình và bộ nhớ dữ liệu được phân biệt riêng. Cấu trúc của một vi điều khiển gồm CPU, bộ nhớ chương trình (thường là bộ nhớ ROM hoặc bộ nhớ Flash), bộ nhớ dữ liệu (RAM), các bộ định thời, các cổng vào/ra để giao tiếp với các thiết bị bên ngoài, tất cả các khối này được tích hợp trên một vi mạch. Các loại vi điều khiển trên thị trường hiện nay: Freescale 68HC11 (8-bit) Intel 8051 STMicroelectronics STM8S (8-bit), ST10 (16-bit) và STM32 (32-bit) Atmel AVR (8-bit), AVR32 (32-bit), và AT91SAM (32-bit) Freescale ColdFire (32-bit) và S08 (8-bit) Hitachi H8 (8-bit), Hitachi SuperH (32-bit) MIPS (32-bit PIC32) PIC (8-bit PIC16, PIC18, 16-bit dsPIC33 / PIC24) PowerPC ISE PSoC (Programmable System-on-Chip) Texas Instruments Microcontrollers MSP430 (16-bit), C2000 (32-bit), và Stellaris (32-bit) Toshiba TLCS-870 (8-bit/16-bit) Zilog eZ8 (16-bit), eZ80 (8-bit) Philips Semiconductors LPC2000, LPC900, LPC700 1.3.4: Adruino NANO + Cấu trúc bên trong của Arduino Nano Arduino Nano là một hội đồng quản trị nhỏ, hoàn chỉnh và có bề dày bảng dựa trên ATmega328 (Arduino Nano 3.0) hoặc ATmega168 (Arduino Nano 2.x). Nó có nhiều hoặc ít hơn các chức năng tương tự của Arduino Duemilanove, nhưng trong một gói khác nhau. Nó chỉ thiếu một jack cắm nguồn DC, và hoạt động với một cáp USB Mini-B thay vì một cổng USB tiêu chuẩn. Nano được thiết kế và đang được sản xuất bởi Gravitech. Adruino NANO (chíp ATM 328p) Thông số kỹ thuật: Vi điều khiển Atmel ATmega168 hoặc ATmega328 Điện áp hoạt động: (mức logic) 5 V Điện áp đầu vào: (đề nghị) 7-12 V Điện áp đầu vào: (giới hạn) 6-20 V Số I / O Pins kỹ thuật số: 14 (trong đó 6 cung cấp đầu ra PWM) Ngõ vào Analog: 8 Dòng điện một chiều cho mỗi I / O Pin: 40 mA Bộ nhớ Flash: 16 KB (ATmega168) hoặc 32 KB (ATmega328) trong đó 2 KB được sử dụng bởi trình nạp khởi động SRAM: 1 KB (ATmega168) hoặc 2 KB (ATmega328) EEPROM: 512 byte (ATmega168) hoặc 1 KB (ATmega328) Tốc độ đồng hồ: 16 MHz Kích thước: 0,73 "x 1,70" Arduino Nano có thể được cung cấp qua kết nối USB Mini-B, nguồn điện bên ngoài không được kiểm soát 6-20V (pin 30) hoặc nguồn điện bên ngoài được điều chỉnh 5V (chân 27). Nguồn điện được tự động chọn vào nguồn điện áp cao nhất. Các FTDI FT232RL chip trên Nano chỉ được cung cấp nếu bảng đang được cung cấp trên USB. Do đó, khi chạy bằng nguồn ngoài (không USB), sản lượng 3.3V (được cung cấp bởi chip FTDI) không có sẵn và đèn RX và TX LED sẽ nhấp nháy nếu chân kỹ thuật số 0 hoặc 1 cao. ATmega168 có 16 KB bộ nhớ flash để lưu trữ mã (trong đó 2 KB được sử dụng cho bộ tải khởi động); ATmega328 có 32 KB, (cũng với 2 KB được sử dụng cho bộ nạp khởi động). ATmega168 có 1 KB SRAM và 512 byte của EEPROM (có thể đọc và ghi bằng thư viện EEPROM); ATmega328 có 2 KB SRAM và 1 KB của EEPROM. Mỗi một trong số 14 chân kỹ thuật số trên Nano có thể được sử dụng như một đầu vào hoặc đầu ra, sử dụng các chức năng của pinMode (), digitalWrite () và digitalRead (), hoạt động ở 5 volts. Mỗi pin có thể cung cấp hoặc nhận tối đa 40 mA và có một điện trở kéo lên bên trong (bị ngắt kết nối theo mặc định) 20-50 kOhms. Ngoài ra, một số chân có các chức năng chuyên biệt: Serial: 0 (RX) và 1 (TX). Được sử dụng để nhận dữ liệu nối tiếp TTL (RX) và truyền (TX). Các chân này được kết nối với các chân tương ứng của chip FTDI USB-to-TTL Serial. Ngắt ngoài: 2 và 3. Những chân này có thể được cấu hình để kích hoạt một ngắt trên một giá trị thấp, một cạnh tăng hoặc giảm, hoặc thay đổi giá trị. PWM: 3, 5, 6, 9, 10, và 11. Cung cấp đầu ra PWM 8-bit với chức năng analogWrite (). SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Những chân này hỗ trợ truyền thông SPI, mặc dù được cung cấp bởi phần cứng cơ bản, hiện tại không có trong ngôn ngữ Arduino. LED: 13. Có một đèn LED gắn sẵn kết nối với chân số 13. Khi pin có giá trị CAO, đèn LED bật, khi pin ở LOW, nó tắt. Nano có 8 đầu vào analog, mỗi bộ đều cung cấp 10 bit độ phân giải (tức là 1024 giá trị khác nhau). Theo mặc định chúng đo từ mặt đất đến 5 volts, tuy nhiên có thể thay đổi phần trên của dải bằng cách sử dụng hàm analogReference (). Ngoài ra, một số chân có chức năng đặc biệt: I2C: 4 (SDA) và 5 (SCL). Hỗ trợ giao tiếp I2C (TWI) bằng cách sử dụng thư viện Wire (tài liệu trên trang web Wiring). Có một vài chân khác trên bảng: AREF. Điện áp tham khảo cho các đầu vào tương tự. Được sử dụng với analogReference (). Cài lại. Mang dòng này LOW để thiết lập lại vi điều khiển. Thông thường được sử dụng để thêm một nút đặt lại để che chắn ngăn chặn một trên bảng. Arduino Nano có một số cơ sở để giao tiếp với máy tính, một Arduino khác, hoặc các vi điều khiển khác. ATmega168 và ATmega328 cung cấp giao tiếp nối tiếp UART TTL (5V), có sẵn trên chân số 0 (RX) và 1 (TX). Một FTDI FT232RL trên bảng này truyền thông nối tiếp qua USB và các trình điều khiển FTDI (kèm theo phần mềm Arduino) cung cấp cổng ảo cho phần mềm trên máy tính. Phần mềm Arduino bao gồm một màn hình nối tiếp cho phép dữ liệu văn bản đơn giản được gửi đến và từ bảng Arduino. Các RX và TX LED trên bảng sẽ nhấp nháy khi dữ liệu được truyền qua chip FTDI và kết nối USB tới máy tính (nhưng không cho truyền thông nối tiếp trên chân 0 và 1). Thư viện SoftwareSerial cho phép truyền thông nối tiếp trên bất kỳ chân kỹ thuật số của Nano. ATmega168 và ATmega328 cũng hỗ trợ giao tiếp I2C (TWI) và SPI. Phần mềm Arduino bao gồm một thư viện Wire để đơn giản hóa việc sử dụng bus I2C. Arduino Nano có thể được lập trình bằng phần mềm Arduino (tải về). Chọn "Arduino Diecimila, Duemilanove, hoặc Nano w / ATmega168" hoặc "Arduino Duemilanove hoặc Nano w / ATmega328" từ trình đơn Tools> Board (theo vi điều khiển trên bảng của bạn). Để biết chi tiết, xem tài liệu tham khảo và hướng dẫn. ATmega168 hoặc ATmega328 trên Arduino Nano được tích trữ sẵn với một bộ nạp khởi động cho phép bạn tải mã mới lên nó mà không cần sử dụng một lập trình phần cứng bên ngoài. Nó giao tiếp bằng cách sử dụng giao thức STK500 gốc. Bạn cũng có thể bỏ qua trình nạp khởi động và chương trình vi điều khiển thông qua tiêu đề ICSP (In-Circuit Serial Programming). Thay vào đó, đòi hỏi phải nhấn nút thiết lập lại trước khi tải lên, Arduino Nano được thiết kế theo cách cho phép thiết lập lại bằng phần mềm chạy trên máy tính kết nối. Một trong những dòng điều khiển dòng chảy phần cứng (DTR) của FT232RL được kết nối với đường đặt lại của ATmega168 hoặc ATmega328 thông qua một tụ điện 100 nanofarad. Khi dòng này được khẳng định (lấy thấp), dòng thiết lập lại giọt đủ lâu để thiết lập lại chip. Phần mềm Arduino sử dụng khả năng này để cho phép bạn tải lên mã bằng cách nhấn nút tải lên trong môi trường Arduino. Điều này có nghĩa là trình nạp khởi động có thể có thời gian chờ ngắn hơn, vì việc giảm DTR có thể được phối hợp tốt với sự bắt đầu tải lên. Thiết lập này có ý nghĩa khác. Khi Nano được kết nối với máy tính chạy Mac OS X hoặc Linux, nó sẽ reset mỗi lần kết nối từ phần mềm (thông qua USB). Trong khoảng nửa giây tiếp theo, bộ tải khởi động đang chạy trên Nano. Mặc dù chương trình được lập trình để bỏ qua các dữ liệu không đúng định dạng (tức là bất cứ thứ gì ngoài việc tải lên mã mới), nó sẽ chặn các byte đầu tiên của dữ liệu được gửi tới bảng sau khi kết nối được mở. Nếu một phác thảo chạy trên bảng sẽ nhận được cấu hình một lần hoặc các dữ liệu khác khi nó bắt đầu, đảm bảo rằng phần mềm mà nó giao tiếp đợi một giây sau khi mở kết nối và trước khi gửi dữ liệu này. Tóm tắt phần cứng Arduino nano: IC chính: ATmega328P-AU. IC nạp và giao tiếp UART: CH340. Điện áp cấp: 5VDC cổng USB hoặc 6-9VDC chân Raw. Mức điện áp giao tiếp GPIO: TTL 5VDC. Dòng GPIO: 40mA. Số chân Digital: 14 chân, trong đó có 6 chân PWM. Số chân Analog: 8 chân (hơn Arduino Uno 2 chân). Flash Memory: 32KB (2KB Bootloader). SRAM: 2KB EEPROM: 1KB Clock Speed: 16Mhz. Tích hợp Led báo nguồn, led chân D13, LED RX, TX. Tích hợp IC chuyển điện áp 5V LM1117. Kích thước: 18.542 x 43.18mm 1.3.5 Màn hình hiển thị LCD 16x2 Khối có chức năng hiển thị qua màn hình LCD 16 cột 2 dòng. LCD dùng chíp HD44780 phổ biến trên thị trường,hiển thị ký tự trong mã Ascii. LCD nhận tín hiệu của vi điều khiển. Đó là các tín hiệu điều khiển hiển thị các ký tự mong muốn sau đó xử lý và hiển thị theo ý muốn của người lập trình. Sơ đồ chân: Chức năng các chân của LCD 16*2 1.3.6: Cảm Biến Cảm biến là gì: Cảm biến là thiết bị điện tử cảm nhận những trạng thái hay quá trình vật lý hay hóa học ở môi trường cần khảo sát, và biến đổi thành tín hiệu điện để thu thập thông tin về trạng thái hay quá trình đó. Thông tin được xử lý để rút ra tham số định tính hoặc định lượng của môi trường, phục vụ các nhu cầu nghiên cứu khoa học kỹ thuật hay dân sinh và gọi ngắn gọn là đo đạc, phục vụ trong truyền và xử lý thông tin, hay trong điều khiển các quá trình khác. Cảm biến thường được đặt trong các vỏ bảo vệ tạo thành đầu thu hay đầu dò (Test probe), có thể có kèm các mạch điện hỗ trợ, và nhiều khi trọn bộ đó lại được gọi luôn là "cảm biến". Tuy nhiên trong nhiều trường hợp thì thuật ngữ cảm biến ít dùng cho vật có kích thước lớn. Thuật ngữ này cũng không dùng cho một số loại chi tiết, như cái núm của công tắc bật đèn khi mở tủ lạnh, dù rằng về mặt hàn lâm núm này làm việc như một cảm biến. Có nhiều loại cảm biến khác nhau và có thể chia ra hai nhóm chính: Cảm biến vật lý: sóng điện từ, ánh sáng, tử ngoại, hồng ngoại, tia X, tia gamma, hạt bức xạ, nhiệt độ, áp suất, âm thanh, rung động, khoảng cách, chuyển động, gia tốc, từ trường, trọng trường,... Cảm biến hóa học: độ ẩm, độ PH, các ion, hợp chất đặc hiệu, khói,... Các hiện tượng cần cảm biến rất đa dạng, cũng như phương cách chế ra các cảm biến, và những cảm biến mới liên tục phát triển. Việc phân loại cảm biến cũng phức tạp vì khó có thể đưa ra đủ các tiêu chí phân loại cho tập hợp đa dạng như vậy được. Cảm biến chủ động và cảm biến bị động phân biệt ở nguồn năng lượng dùng cho phép biến đổi lấy từ đâu. Cảm biến chủ động không sử dụng điện năng bổ sung để chuyển sang tín hiệu điện. Điển hình là cảm biến áp điện làm bằng vật liệu gốm, chuyển áp suất thành điện tích trên bề mặt. Các an-ten cũng thuộc kiểu cảm biến chủ động. Cảm biến bị động có sử dụng điện năng bổ sung để chuyển sang tín hiệu điện. Điển hình là các photodiode khi có ánh sáng chiếu vào thì có thay đổi của điện trở tiếp giáp bán dẫn p-n được phân cực ngược. Câc cảm biến bằng biến trở cũng thuộc kiểu cảm biến bị động. Phân loại thì như vậy nhưng một số cảm biến nhiệt độ kiểu lưỡng kim dường như không thể xếp hẳn vào nhóm nào, nó nằm vào giữa. A Phân loại theo nguyên lý hoạt động: Cảm biến điện trở: Hoạt động dựa theo di chuyển con chạy hoặc góc quay của biến trở, hoặc sự thay đổi điện trở do co giãn vật dẫn. Cảm biến cảm ứng: Cảm biến biến áp vi phân: Cảm biến vị trí (Linear variable differential transformer, LVDT) Cảm biến cảm ứng điện từ: các antenna Cảm biến dòng xoáy: Các đầu dò của máy dò khuyết tật trong kim loại, của máy dò mìn. Cảm biến cảm ứng điện động: chuyển đổi chuyển động sang điện như microphone điện động, đầu thu sóng địa chấn trên bộ (Geophone). Cảm biến điện dung: Sự thay đổi điện dung của cảm biến khi khoảng cách hay góc đến vật thể kim loại thay đổi. Cảm biến điện trường: Cảm biến từ giảo (magnetoelastic): ít dùng. Cảm biến từ trường: Cảm biến hiệu ứng Hall, cảm biến từ trường dùng vật liệu sắt từ,... dùng trong từ kế. Cảm biến áp điện: Chuyển đổi áp suất sang điện dùng gốm áp điện như titanat bari, trong các microphone thu âm, hay ở đầu thu sóng địa chấn trong nước (Hydrophone) như trong các máy Sonar. Cảm biến quang: Các cảm biến ảnh loại CMOS hay cảm biến CCD trong camera, các photodiode ở các vùng phổ khác nhau dùng trong nhiều lĩnh vực. Ví dụ đơn giản nhất là đầu dò giấy trong khay của máy in làm bằng photodiode. Chúng đang là nhóm đầu bảng được dùng phổ biến, nhỏ gọn và tin cậy cao. Cảm biến huỳnh quang, nhấp nháy: Sử dụng các chất phát quang thứ cấp để phát hiện các bức xạ năng lượng cao hơn, như các tấm kẽm sulfua. Cảm biến điện hóa: Các đầu dò ion, độ pH,... Cảm biến nhiệt độ: Cặp lưỡng kim, hoặc dạng linh kiện bán dẫn như Precision Temperatur Sensor LM335 có hệ số 10 mV/°K. B Vai trò của cảm biến trong tự động hóa: Cảm biến có vai trò quan trọng trong các bài toán điều khiển quá trình nói riêng và trong các hệ thống điều khiển tự động nói chung. Là thiết bị có khả năng cảm nhận các tín hiệu điều khiển vào, ra. Có vai trò đo đạc các giá trị. Giới hạn cảm nhận với đại lượng vật lý cần đo 1.3.6.1 Cảm biến được sử dụng trong hệ thống Cảm Biến DHT11 Cảm Biến DHT 11 là cảm biến nhiệt độ,độ ẩm . Cảm biến DHT11 đã được tích hợp trong một mạch duy nhất nên rất dễ để kết nối với Adruino Thông số kĩ thuật Điện áp hoạt động: 3-5.5V DC Ngưỡng độ ẩm: 20 - 90% Sai số độ ẩm: ± 5% Ngưỡng nhiệt độ: 0 - 55oC Sai số nhiệt độ: ± 2oC Cách kết nối các chân của DHT 11 với Adruino NaNo DHT 11 Adruino NaNo GND GND VCC 5V Signal D2 1.4: Ngôn ngữ sử dụng và phần mềm mô phỏng Ngôn ngữ sử dụng lập trình trên nền tảng Arduino. Phần mềm mô phỏng trên Proteus. CHƯƠNG II: THIẾT KẾ VÀ THỰC THI 2.1: Thiết kế phần cứng 2.1.1: Mạch nguyên lý 2.1.2: Sơ đồ mạch in Mạch thật: 2.2 Thiết kế phần mềm 2.2.1: Lưu đồ thuật toán Lưu đồ thuật toán : 2.2.2: Mã nguồn chương trình CODE: #include <DHT.h> #include <LiquidCrystal.h> LiquidCrystal lcd(8,9,4, 5, 6, 7);// const int DHTPIN = 2; // const int DHTTYPE = DHT11; // DHT dht(DHTPIN, DHTTYPE); // byte degree[8] = { // 0B01110, 0B01010, 0B01110, 0B00000, 0B00000, 0B00000, 0B00000, 0B00000 }; void setup() { lcd.begin(16, 2); // lcd.print("Nhiet DO: ");// lcd.setCursor(0,1); // lcd.print("DO AM: "); // lcd.createChar(1, degree); dht.begin(); // } void loop() { float h = dht.readHumidity(); // float t = dht.readTemperature(); // if (isnan(t) || isnan(h)) { // } else { lcd.setCursor(10,0); // lcd.print(round(t)); // lcd.print(" "); lcd.write(1); lcd.print("C"); lcd.setCursor(10,1); // lcd.print(round(h));// lcd.print(" %"); } } 2.3: Một số hình ảnh của sản phẩm