Chương 1: Tổng quan. Chương 2: Cơ sở lý thuyết. Chương 3: Thiết kế hệ thống. Chương 4: Kết quả thực hiện.
Chương 5: Kết luận và hướng phát triển đề tài. 11 do an ĐỒ ÁN TỐT NGHIỆP CHƯƠNG 2 : Cơ Sở Lý Thuyết 2.1 Lý Thuyết Điện Tử 2.1 Khảo sát board vi điều khiển arduino uno 2.1: Board Arduino uno Arduino UNO R3 là một board mạch thiết kế với bộ vi xử lý trung tâm là vi điều khiển AVR ATMega328p. Có 14 chân đầu vào / đầu ra số ( trong đó có 6 đầu được sử dụng như đầu ra PWM ), 6 đầu vào analog, 2 UARTs ( cổng nối tiếp phần cứng ), một 16 MHz dao động thạch anh, kết nối USB , một jack cắm điện, một đầu ICSP, và một nút reset. Chứa tất cả mọi thứ cần thiết để hỗ trợ các vi điều khiển, chỉ đơn giản là kết nốinó với một máy tính bằng cáp USB hoặc nguồn điện ngoài, với một bộ chuyển đổi AC thành DC hoặc pin để bắt đầu.
Bộ nhớ chương trình 32KB trong đó có 0.5KB được sử dụng bởi bootloader, dung lượng RAM là 2KB, 1KB EEPROM. Mega tương thích với hầu hết các lá chắn được thiết kế cho các ArduinoDuemilanove hoặc Diecimila. Thông số kỹ thuật: Vi điều khiển: Atmega 328P 8bit Điện áp hoạt động: 5V Điện áp đầu vào (đề nghị): 7-12V Điện áp đầu vào (giới hạn): 6-20V Số chân I/O Digital: 14 (trong đó 6 chân cung cấp đầu ra PWM) Số chân input analog: 6 độ phân giải 10 bit 12 do an ĐỒ ÁN TỐT NGHIỆP Dòng DC mỗi chân I/O: 30 mA Dòng DC cho 3.3V: 50 mA Flash Memory: 32 KB trong đó 0.5 KB sử dụng bởi bộ nạp khởi động SRAM: 2 KB EEPROM: 1 KB Xung Clock: 16 MHz 13 do an ĐỒ ÁN TỐT NGHIỆP Sơ đồ chân: 2.2: Sơ đồ chân Arduino uno Môi trường lập trình: Thiết kế board mạch nhỏ gọn, trang bị nhiều tính năng thông dụng mang lại nhiều lợi thế cho arduino, tuy nhiên sức mạnh thực sự của arduino nằm ở phần mềm. Môi trường lập trình đơn giản dễ sử dụng, ngôn ngữ lập trình wiring dễ hiểu và dựa trên nền tảng C/C++ rất quen thuộc với người làm kỹ thuật.
Và quan trọng là số lượng thư viện code được viết sẵn và chia sẻ bởi cộng đồng nguồn mở là cực kỳ lớn. Môi trường lập trình arduino IDE có thể chạy trên ba nền tảng phổ biến nhất hiện nay là Windows, Macintosh OSX và Linux. Do có tính chất nguồn mở nên môi trườnglập trình này hoàn toàn miễn phí và có thể mở rộng thêm bởi người dùng có kinh nghiệm. 14 do an ĐỒ ÁN TỐT NGHIỆP 2.1 ADC Arduino sử dụng ADC 10 bit chuyển đổi 5v đầu vào Công thức : 2.3 Khảo sát module Wifi ESP 8266 Node MCU ESP8266 Node MCU là một SoC của hãng Espressif System dùng cho các ứng dụng di động, cung cấp khả năng kết nối wifi tới các hệ thống khác với mức giá thấp nhất với các tính năng tốt nhất.
Giá bán lẻ module ESP8266 trên thị trường hiện nay chỉ khoản 200. Module được hàn sẵn các chân ngõ ra và tích hợp antenna trên mạch. Module ESP8266 hoạt động với nguồn điện áp 3.3V và tiêu thụ dòng tối đa 215mA.3: Module Wifi ESP8266 Node MCU 2.1 Chức năng chân: Tx,Rx : Chân giao tiếp theo chuẩn UART của module RST : Reset module CH_PD : Được nối lên mức cao để module hoạt động ESP8266 có các chức năng cơ bản sau: Hỗ trợ chuẩn wifi 802.11 b/g/n protocol Hỗ trợ Wi-Fi direct ( P2P ) , Access Point mềm Tích hợp giao thức TCP/IP stack 15 do an ĐỒ ÁN TỐT NGHIỆP Tích hợp LNA, khuếch đại công suất Hỗ trợ diversity antenna SDIO 2.0, SPI, UART Độ lợi công suất phát +19,5dBm ở chế độ 802.11b Công suất tiêu thụ khi ở chế độ nghỉ ít hơn 1mW Thời gian khởi động từ chế độ nghỉ và bắt đầu truyền dữ liệu ít hơn 2ms Module ESP8266 NODE MCU được sản xuất ban đầu với frimwave AT, người dùng có thể flash lại frimwave khác để sử dụng như các bộ frimwave dùng mã lua lập trình.2 Chế độ hoạt động OFF: chân CHIP_PD được duy trì mức thấp. RTC ngừng hoạt dộng.
Tất cả thanh ghi được xóa DEEP SLEEP: RTC được mở, những bộ phận khác của module vẫn đóng. RTC internal recovery memory lưu các thông tin kết nối WiFi. SLEEP: Chỉ có RTC chạy. dao động thạch anh stops.
Hệ thống sẽ được đánh thức bởi một trong số các bộ phận sau : MAC, host, RTC timer, ngắt ngoài. WAKEUP: Hệ thống khởi động lại từ chế độ sleep.1 Bộ mã AT của ESP8266 2.1: Tập lệnh UART của ESP8266 Chức Lệnh Cách sử dụng năng Khởi AT+RST động lại module Thoát AT+CWQAP Access Point AT+CWMODE=<mode> Chế độ Giá trị <mode> AT+CWMODE Wifi 1: Máy trạm 2: Access Point 16 do an ĐỒ ÁN TỐT NGHIỆP 3: Cả hai Liệt kê danh sách AT+CWLAP Access Point Truy cập AT+ CWJAP =<ssid>,< pwd > AT+CWJAP Access SSID : tên Access Point Point Pwd : Password Access Point -single connection AT+CIPSTART= <type>,<addr>,<port>; 2) Chọn dùng -multiple connection AT+CIPSTART UDP hay AT+CIPSTART= <id><type>,<addr>, <port> TCP -ví dụ với đa kết nối : AT+CIPSTART=4,"TCP","X1.X4",9999 single connection(+CIPMUX=0) Gửi dữ AT+CIPSEND=<length> AT+CIPSEND liệu multiple connection (+CIPMUX=1) AT+CIPSEND= <id>,<length> Đóng kết AT+CIPCLOSE nối UDB/TCP Lấy địa AT+CIFSR chỉ IP AT+ CWSAP= <ssid>,<pwd>,<chl>, <ecn> Thiết lập SSID : tên Access Point AT+ CWSAP Access Point Pwd : Password Access Point Chl : Channel wifi Kiểm tra AT+ tình trạng CIPSTATUS kết nối Thiết lập AT+ CIPSERVER= <mode>[,<port> ] AT+ ở chế độ 17 do an ĐỒ ÁN TỐT NGHIỆP CIPSERVER server Mode = 0 để đóng và 1 để mở AT+ CIPMUX=<mode> Thiết lập AT+ CIPMUX đa kết nối Với mode = 0 cho single connection và mode =1 cho đa kết nối Nhận dữ +IPD liệu 2.4: Module RTC DS3231 là IC thời gian thực giá rẻ, rất chính xác với thạch anh tích hợp sẵn có khả năng điều chỉnh nhiệt. IC có đầu vào cho pin riêng, tách biệt khỏi nguồn chính đảm bảo cho việc giữ thời gian chính xác. Thạch anh tích hợp sẵn giúp tăng độ chính xác trong thời gian dài hoạt động và giảm số lượng linh kiện cần thiết khi làm board.
DS3231 là IC thời gian thực giá rẻ, rất chính xác với thạch anh tích hợp sẵn có khả năng điều chỉnh nhiệt. IC có đầu vào cho pin riêng, tách biệt khỏi nguồn chính đảm bảo cho việc giữ thời gian chính xác. Thạch anh tích hợp sẵn giúp tăng độ chính xác trong thời gian dài hoạt động và giảm số lượng linh kiện cần thiết khi làm board. 18 do an ĐỒ ÁN TỐT NGHIỆP Thông Số: Điện thế hoạt động 3.5V I2C bus có tốc độ tối đa 400Khz 2.5 Module PH DFRobot 2.5: Module pH DF Robot Điện áp hoạt động: 5v Kích thước: 43 x 32mm Tầm đo: 0-14pH Nhiệt độ: 0-6 Độ chính xác: 0.1pH (25 ) Thời gian đáp ứng: phút Các đầu ra của điện cực pH mV, và giá trị pH của mối quan hệ được thể hiện như sau (25 ℃): 19 do an ĐỒ ÁN TỐT NGHIỆP 2.1: Điện áp quy đổi giá trị pH Voltage (mv) pH value Voltage (mv) pH value 414.6: Dạng sóng điều khiển LCD Nhìn vào dạng sóng ta có thể thấy được trình tự điều khiển như sau: Điều khiển tín hiệu RS.
Điều khiển tín hiệu R/W xuống mức thấp. Điều khiển tín hiệu E lên mức cao để cho phép. Xuất dữ liệu D7:D0. Điều khiển tín hiệu E về mức thấp.
Điều khiển tín hiệu R/W lên mức cao trở lại. 20 do an ĐỒ ÁN TỐT NGHIỆP 2.7 Các chuẩn giao tiếp truyền dữ liệu 2.1 Cấu trúc mã JSON JSON (JavaScript Object Noattion) là 1 định dạng hoán vị dữ liệu nhanh. Chúng dễ dàng cho chúng ta đọc và viết. Dễ dàng cho thiết bị phân tích và phát sinh.
Chúng là cơ sở dựa trên tập hợp của Ngôn Ngữ Lập Trình JavaScript, tiêu chuẩn ECMA-262 phiên bản 3 - tháng 12 năm 1999. JSON là 1 định dạng kiểu text mà hoàn toàn độc lập với các ngôn ngữ hoàn chỉnh, thuộc họ hàng với các ngôn ngữ họ hàng C, gồm có C, C++, C#, Java, JavaScript, Perl, Python, và nhiều ngôn ngữ khác. Những đặc tính đó đã tạo nên JSON 1 ngôn ngữ hoán vị dữ liệu lý tưởng. Đây là 1 cấu trúc dữ liệu phổ dụng.
Hầu như tất cả các ngôn ngữ lập trình hiện đại đều hổ trợ chúng trong 1 hình thức nào đó. Chúng tạo nên ý nghĩa của 1 định dạng hoán vị dữ liệu với các ngôn ngữ lập trình cũng đã được cơ sở hoá trên cấu trúc này. Cú pháp của JSON rất đơn giản là mỗi thông tin dữ liệu sẽ có 2 phần đó là key và value, điều này tương ứng trong CSDL là tên field và giá trị của nó ở một record nào đó. Tuy nhiên nhìn qua thì đơn giản nhưng nếu ta mổ xẻ nó ra thì có một vài điều như sau: Chuỗi JSON được bao lại bởi dấu ngoặc nhọn {} Các key, value của JSON bắt buộc phải đặt trong dấu nháy kép {"}, nếu đặt nó trong dấu nháy đơn thì đây không phải là một chuỗi JSON đúng chuẩn.
Nên trường hợp trong value của bạn có chứa dấu nháy kép thì hãy dùng dấu (\) để đặt trước nó, ví dụ học \"json là gì\" tại website freetuts. Nếu có nhiều dữ liệu (nhiều cặp key => value) thì ta dùng dấu phẩy (,) để ngăn cách Các key của JSON bạn nên đặt chữ cái không dấu hoặc số, dấu _ và không có khoảng trắng., ký tự đầu tiên không nên đặt là số. Điều này rất giống với nguyên tắc đặt tên biến trong PHP. Những cấu trúc này có thể đã được lồng vào nhau.
21 do an ĐỒ ÁN TỐT NGHIỆP 2.7: Cấu trúc mã JSON 2.8: nội dung gửi đi của mã JSON 2.2 UART Thuật ngữ USART trong tiếng anh là viết tắt của cụm từ: Universal Synchronous & Asynchronous serial Reveiver and Transmitter, nghĩa là bộ truyền nhận nối tiếp đồng bộ và không đồng bộ. Cần chú ý rằng khái niệm USART (hay UART nếu chỉ nói đến bộ truyền nhận không đồng bộ) thường để chỉ thiết bị phần cứng (device, hardware), không phải chỉ một chuẩn giao tiếp. Giao tiếp SPI và I2C có 1 dây truyền dữ liệu và 1 dây được sử dụng để truyền xung clock (SCL) để đồng bộ trong giao tiếp. Với UART thì không có dây SCL, vấn đề được giải quyết khi mà việc truyền UART được dùng giữa 2 vi xử lý với nhau, đồng nghĩa với việc mỗi vi xử lý có thể tự tạo ra xung clock cho chính nó xử dụng.
Để bắt đầu cho việc truyền dữ liệu bằng UART, một START bit được gửi đi, sau đó là các bit dữ liệu và kết thúc quá trình truyền là STOP bit. 22 do an ĐỒ ÁN TỐT NGHIỆP 2.9: cấu trúc truyề dữ liệu UART Khi ở trạng thái chờ mức điện thế ở mức 1 (high).