Thiết kế giao diện trên Thingspeak

Một phần của tài liệu HỆ THỐNG vườn THÔNG MINH có CỔNG gắn THẺ RFID mở cửa (Trang 82)

- Bước 1: đầu tiên truy cập vào đường link https://thingspeak.com/ và bấm vào mục Sign in  click vào Create one để tạo một tài khoản sử dụng.

Hình 2.78 Truy cập vào Server Thingspeak

- Bước 2: Sau khi click vào Create one thì tiếp tục điền địa chỉ email  chọn địa điểm  điền đầy đủ họ tên  chọn Continue.

- Bước 3: Sau khi nhấn đăng kí thì hệ thống sẽ gửi vào email mà mình đăng ký một đường link xác thực, vào lại gmail và nhấn xác minh tài khoản là xong.

- Bước 4: Vào channels  chọn my channels  Chọn new channel.

Hình 2.81 Tạo kênh để theo dõi trên Thingspeak

- Bước 5: ở mục name đặt là giám sát  đặt tên field 1: nhiệt dộ  bấm vào dấu tích xanh ở mục field 2 và đặt tên là độ ẩm  save channel.

CHƯƠNG 3: GIẢI THUẬT VÀ ĐIỀU KHIỂN 3.1 Hoạt động của hệ thống

- Hệ thống hoạt động với 2 chế độ: tự động (Auto) và chỉnh tay (Manual).

+ Ở chế độ tự động: khi cấp điện cho hệ thống thì các thiết bị bắt đầu hoạt động, lúc này cảm biến độ ẩm đất và cảm biến nhiệt độ bắt đầu đọc tín hiệu sau đó gửi qua cho vi điều khiển (arduino). Khi vi điều nhận được tín hiệu từ cảm biến thì nó bắt đầu làm nhiệm vụ đọc và xử lý các tín hiệu đó sau đó xuất ra màn hình LCD, đồng thời kiểm tra xem giá trị có thay đổi hay không, nếu có thay đổi thì tiến hành gửi dữ liệu qua Esp8266. Khi Esp8266 nhận được dữ liệu thì nó bắt đầu kết nối wifi và gửi lên server Thingspeak cũng như app Blynk. Bên cạnh đó, ở chế độ tự động này thì khi cảm biến độ ẩm đất, nhiệt độ, quang trở đọc tín hiệu nếu phát hiện độ ẩm, nhiệt độ và cường độ ánh sáng vượt ngưỡng cài đặt trước đó thì lúc vi điều khiển nhận được các tín hiệu đấy sẽ điều khiển bật thiết bị bơm, quạt và đèn lên. Tiếp theo, đến phần cửa tự động khi ta quẹt thẻ (thẻ 1, thẻ 2) vào module RFID thì nó cũng gửi tín hiệu sang vi điều khiển, vi điều khiển sẽ phân tích để điều khiển servo thay đổi góc quay (đóng/mở cửa), ta có chọn thêm hoặc xóa thẻ ra vào thông qua một nút nhấn. Dĩ nhiên các tín hiệu cũng được vi điều khiển gửi sang Esp8266 rồi đưa lên app Blynk thể hiện trạng thái của chúng. Ngoài ra, khi quẹt sai thẻ 3 lần trở lên thì còi cảnh báo sẽ được bật lên.

+ Ở chế độ chỉnh tay: khi nhấn chuyển từ chế độ tự động sang chế độ chỉnh tay ở trên app Blynk thì lúc này Esp8266 sẽ bắt đầu gửi tín hiệu sang cho vi điều khiển (arduino). Khi vi điều khiển nhận được tín hiệu thì nó sẽ phân tích và biết đã được chuyển sang chế độ chỉnh tay. Bây giờ thì ta có thể sử dụng app Blynk để điều khiển bật tắt các thiết bị như quạt, máy bơm, đèn. Tất nhiên, các thiết bị còn lại như cảm biến nhiệt độ, độ ẩm, quang trở, module RFID và loa vẫn hoạt động bình thường.

3.2 Lưu đồ giải thuật

3.2.1 Lưu đồ giải thuật trên vi điều khiển Arduino Uno

Bắt đầu chạy chương trình, các phần cứng khởi tạo xong (LCD, ADC…). Nếu đang hoạt động ở chế độ tự động thì sau khoảng thời gian 2 - 3s thì cảm biến nhiệt độ gửi lệnh lấy và nhận giá trị về bằng 1 hàm, lấy kết quả vừa nhận đi nhân cho 10 để làm tròn thành số nguyên để có thể hiện thị lên LCD dễ dàng hơn. Tiếp theo, cảm biến độ ẩm bắt đầu đọc trung bình 10 lần để kết quả có thể giảm đi sự sai số, sau đó lấy kết quả vừa đọc được đem chia lại cho 10 và áp dụng công thức tính adc để tính ra độ ẩm tương ứng, tiếp tục lấy kết quả vừa nhận được đem phủ định lại 1 lần nữa vì cảm biến độ ẩm đất phân áp ngược có nghĩa là khi ướt thì 2 chân

này nó dẫn với nhau nên giá trị nhận được sẽ là mức 0, khi khô thì 2 chân được hở ra nhờ có Vcc đổ xuống nên giá trị nhận được là mức 1 tương ứng là 5V (100% độ ẩm). Tiếp theo, sẽ đọc quang trở dựa vào giá trị nhận được phân biệt biết trời sáng/tối và thiết lập điều kiện để có thể tắt/bật đèn (giá trị quang trở > 900 thì bật đèn và ngược lại, đèn được bật dựa vào giá trị quang trở gửi cho arduino, vi điều khiển nhận được sẽ phát tín hiệu mức cao điều khiển relay đóng tiếp điểm thường hở ngõ ra điều khiển tải điện áp cao như đèn sáng lên), cũng như quang trở thì nhiệt độ, độ ẩm đất cũng tương tự như vậy nếu nhận được các giá trị vượt ngưỡng cài đặt trước đó thì các thiết bị như máy bơm và quạt sẽ được bật lên (nếu nhiệt độ lớn hơn 35 thì quạt sẽ được bật lên, độ ẩm đất bé hơn 60% thì máy bơm sẽ được bật cấp nước cho đất). Đồng thời các kết quả và trạng thái trước đó (chế độ, đèn, quạt, máy bơm, nhiệt độ, độ ẩm) cũng được vi điều khiển gửi sang cho module wifi esp8266 theo cú pháp (với nhiệt độ và độ ẩm thì theo cú pháp: “ký tự đầu” + hàng trăm + hàng chục + hàng đơn vị + “ký tự kết thúc”, còn với đèn, quạt, máy bơm thì cú pháp sẽ là “ký tự đầu” + 1 con số bất kỳ theo ý muốn để phân biệt + "ký tự kết thúc”). Sau đó nhiệt độ, độ ẩm lần lượt được xuất lên màn hình hiển thị LCD. Tiếp theo, đến phần đọc thẻ từ, đầu tiên nó kiểm tra xem có thẻ từ quẹt vào module RFID hay không nếu có thì nó bắt đầu đọc uid của thẻ đó về và kiểm tra xem đó có phải là thẻ chủ (thẻ 1 - master) hay là thẻ tớ (thẻ 2) nếu đúng 1 trong 2 thẻ thì biến trạng thái mở = 1 và sẽ gửi dữ liệu sang cho esp8266 theo cú pháp tương tự như quạt, ngược lại nếu trạng thái mở = 0 tức là thẻ quẹt vào không phải là thẻ chủ (thẻ 1) cũng không là thẻ 2 (lúc này chưa được thêm) màn hình sẽ xuất ra với dòng chữ là sai thẻ, nếu quẹt sai quá 3 lần thì hàm báo sai sẽ bắt đầu hoạt động loa được bật lên đồng thời gửi lên màn hình cảnh báo đếm ngược trong vòng 10 giây lúc này dữ liệu cũng được gửi sang module wifi esp8266 trạng thái của loa với cú pháp như đèn ở trên, sau 10 giây loa cũng được tắt và trạng thái của loa cũng được gửi sang esp8266 1 lần nữa, sau đó màn hình sẽ hiện lên chữ mời quét thẻ. Còn khi biến trạng thái mở lên 1 thì nó đến hàm kiểm tra nút nhấn xem biến trạng thái thêm đang có giá trị là bao nhiêu, nếu biến trạng thái thêm = 0 thì cửa sẽ được mở khoảng 5s

(biến chạy < 30) trong lúc mở cửa thì dữ liệu cũng được xuất ra màn hình LCD với dòng chữ là đúng thẻ, khi điều kiện biến chạy sai (>30) thì cửa tự động được đóng lại các biến trạng thái cũng được cài đặt lại giá trị = 0. Trong lúc cửa mở (trạng thái mở = 1) nếu biến trạng thái thêm = 1 tức là nút nhấn được nhấn thì lúc này màn hình LCD hiện là thêm thẻ, hàm thêm thẻ từ sẽ bắt đầu đọc dữ liệu nó cũng bắt đầu kiểm tra xem thẻ quẹt vào có phải là thẻ chủ hay không nếu đó là thẻ chủ thì xuất ra màn hình là không thể thêm vì thẻ này là thẻ cố định, ngược lại nếu không phải là thẻ chủ thì nó bắt đầu công việc đọc mã uid của thẻ đó bằng cách tách mã uid đó thành 4 thanh ghi 8 bit lưu vào bộ nhớ eeprom sau đó đọc giá trị đấy rồi tính gộp giá trị đó lại thành 1 thanh ghi 32 bit hoàn chỉnh lúc này trên màn hình cũng xuất ra chữ thêm thẻ thành công. Trong lúc cửa mở (trạng thái mở = 1) nếu biến trạng thái thêm = 2 tức là nút nhấn được nhấn 2 lần lúc này màn hình LCD sẽ hiện là xóa thẻ, hàm xóa thẻ từ sẽ bắt đầu đọc dữ liệu sẽ bắt đầu đọc dữ liệu nó cũng bắt đầu kiểm tra xem thẻ quẹt vào có phải là thẻ chủ hay là thẻ 2 nếu đó là thẻ chủ hoặc là thẻ 2 mà thẻ 2 chưa được thêm trước đó thì xuất ra màn hình là không thể thêm và không thể xóa thẻ chủ vì thẻ chủ là thẻ cố định, ngược lại nếu là thẻ 2 đã được thêm vào bộ nhớ eeprom trước đó thì nó sẽ cho 4 giá trị ứng với 4 thanh ghi 8 bit các giá trị là 0 tức là sau khi gộp lại thì ta được 1 thanh ghi 32 bit với mã uid = 0 nghĩa là đã xóa thẻ thành công (vì không có thẻ từ nào có mã uid = 0 cả), lúc này màn hình cũng được xuất ra với dòng chữ là xóa thẻ thành công, các biến trạng thái cũng được cài đặt quay về bằng 0 để tiếp tục chu kỳ mới. Nếu làm việc với chế độ chỉnh tay thì khi vi điều khiển nhận được tín hiệu từ module wifi esp8266 nó sẽ chuyển từ chế độ tự động sang chế độ chỉnh tay ngay lập tức, lúc này các cảm biến và cổng rfid vẫn hoạt động bình thường không bị ảnh hưởng gì hết, còn lại khi nhận được dữ liệu với các chuỗi kí tự được ta quy định từ module wifi esp8266 nếu đúng điều kiện thì các biến trạng thái được thiết lập cho quạt, máy bơm, đèn sẽ được thỏa điều kiện nhờ đó thì các thiết bị đấy sẽ được bật/tắt bằng tay khi ta điều khiển trên app Blynk.

3.2.2 Lưu đồ giải thuật trên Esp8266

Bắt đầu chạy chương trình, khởi tạo tốc độ baud 9600, khởi tạo blynk. Sau khi ứng blynk khởi động xong thì nếu ta muốn hệ thống chuyển chế độ từ tự động sang tự chỉnh thì ta có thể nhấn vào nút nhấn chế độ ở trên giao diện blynk (ban đầu hoạt động ở chế độ tự động) lúc này esp8266 đã được kết nối wifi thì sẽ nhận được

tín hiệu từ blynk gửi về nó kiểm tra xem nếu biến giá trị 1 = 1 tức là hệ thống sẽ hoạt động sang chế độ tự chỉnh đồng thời lúc này esp8266 cũng gửi dữ liệu sang cho vi điều khiển, ngược lại nếu biến giá trị 1 = 0 thì hệ thống vẫn hoạt động ở chế độ tự động tín hiệu cũng sẽ được module wifi gửi qua cho vi điều khiển. Tương tự thì các thiết bị như đèn, quạt, máy bơm cũng hoạt động như trên (biến giá trị lần lượt ứng với đèn, quạt, máy bơm là 2,3,4 khi các thiết bị này được bật/tắt trên blynk thì esp8266 sẽ nhận được giá trị tương ứng là 1/0 rồi gửi sang cho vi điều khiển để điều khiển các thiết bị). Nếu hệ thống hoạt động ở chế độ tự động thì module wifi esp8266 kiểm tra xem có dữ liệu từ vi điều khiển gửi qua hay không nếu có thì bắt đầu nhận dữ đó, tiếp theo nó kiểm tra xem biến data có bằng dấu chấm hay không (data=’.’ đây là cú pháp được sử dụng để gửi dữ liệu đã được nói ở phần giải thuật vi điều khiển), nếu thỏa điều kiện đó thì tiếp tục xét điều kiện tiếp theo là dl[0] = ‘t’ hay không (dl[0] là biến dữ liệu vị trí thứ 0 trong mảng – t là kí tự đại diện cho nhiệt độ), nếu thỏa 2 điều kiện đó thì bắt đầu tính toán giá trị nhiệt độ sau đó gửi lên app blynk ở vị trí virtual pin V9 và giá trị này phải đem chia lại cho 10 (vì trước đó vi điều khiển đã nhân 10 để làm tròn thành số nguyên để có thể hiển thị lên màn hình LCD), nếu data khác ‘.’ thì các dữ liệu đó sẽ được liên tục lưu vào chuỗi cho đến khi điều kiện đó đúng thì nó tiếp tục xét điều kiện tiếp theo. Đến phần đọc độ ẩm cũng tương tự như vậy nếu thỏa mãn 2 điều kiện (data = ‘.’ và dl[0] = ‘h’ – h là kí tự đại diện cho độ ẩm có thể tùy chỉnh ký tự khác) thì bắt đầu tính toán giá trị độ ẩm đất sau đó gửi lên cho app blynk ở vị trí V8 đã được quy định. Tiếp tục, xét 3 điều kiện (data = ‘.’ và dl[0] = ‘c’ – c là kí tự đại diện cho thẻ có thể tùy chỉnh ký tự khác), nếu thỏa 2 điều kiện đó rồi xét thêm điều kiện thứ 3 là nếu dl[1] = ‘1’ tức là esp8266 nhận tín hiệu từ vi điều khiển mở cửa với thẻ được quét là thẻ 1 thì led đại diện cho thẻ 1 trên blynk sẽ được bật lên để thể hiện trạng thái. Tương tự cho thẻ 2 cũng được xét như vậy chỉ khác là dùng biến dl[1] = ‘2’, nếu dl[1] = ‘0’ tức là trạng thái không có thẻ nào hết thì 2 led đại diện cho 2 thẻ sẽ được tắt hết. Tiếp tục, vẫn xét 4 điều kiện nếu thỏa 2 điều kiện (data = ‘.’ và dl[0] = ‘b’ – b là kí tự đại diện cho loa) thì xét thêm điều kiện thứ 3 là nếu dl[1] = ‘1’ thì loa ở giao diện blynk sẽ được

sáng lên, nếu điều kiện thứ 4 xảy ra là dl[1] = ‘2’ thì led đại diện cho loa ở blynk sẽ được tắt đi. Bây giờ đến các thiết bị còn lại, đầu tiên là đèn cũng xét 4 điều kiện nếu thỏa 2 điều kiện đầu (data = ‘.’ và dl[0] = ‘d’ – d là kí tự đại diện cho đèn) thì tiếp tục xét điều kiện thứ 3 là dl[1] = ‘1’ thì module wifi sẽ gửi dữ liệu lên blynk và đặt vào virtual pin V2 giá trị là 1 tức là đèn được bật lên, nếu thỏa điều kiện thứ 4 (dl[1] = ‘2’) thì module wifi sẽ gửi dữ liệu lên blynk và đặt vào virtual pin V2 giá trị là 0 tức là đèn được tắt đi. Tiếp theo là quạt cũng xét 4 điều kiện nếu thỏa 2 điều kiện đầu (data = ‘.’ và dl[0] = ‘q’ – q là kí tự đại diện cho quạt) thì tiếp tục xét điều kiện thứ 3 là dl[1] = ‘1’ thì module wifi sẽ gửi dữ liệu lên blynk và đặt vào virtual pin V3 giá trị là 1 tức là quạt được bật lên, nếu thỏa điều kiện thứ 4 (dl[1] = ‘2’) thì module wifi sẽ gửi dữ liệu lên blynk và đặt vào virtual pin V3 giá trị là 0 tức là quạt được tắt đi. Tiếp tục là máy bơm cũng xét 4 điều kiện nếu thỏa 2 điều kiện đầu (data = ‘.’ và dl[0] = ‘m’ – m là kí tự đại diện cho máy bơm) thì tiếp tục xét điều kiện thứ 3 là dl[1] = ‘1’ thì module wifi sẽ gửi dữ liệu lên blynk và đặt vào virtual pin V4 giá trị là 1 tức là máy bơm được bật lên, nếu thỏa điều kiện thứ 4 (dl[1] = ‘2’) thì module wifi sẽ gửi dữ liệu lên blynk và đặt vào virtual pin V4 giá trị là 0 tức là máy bơm được tắt đi. Khi đã thực hiện xong những công việc trên thì vòng lặp for bắt đầu được thực hiện xóa dữ liệu cũ trong chuỗi và chuẩn bị cho chu kỳ mới. Cuối cùng khi giá trị nhiệt độ, độ ẩm được tính toán xong ở bước phía trên thì module wifi sẽ kiểm tra lại việc kết nối wifi sau đó gửi nhiệt độ vào Field 1, độ ẩm đất vào Field 2 trên giao diện Thingspeak, dữ liệu trên đấy cứ cách khoảng thời gian tầm 17s nó sẽ được cập nhật một lần.

CHƯƠNG 4: THỰC NGHIỆM 4.1 Tiến trình thực nghiệm

- Bước 1: Cấp nguồn 12V cho hệ thống sau đó điều chỉnh biến trở của mạch hạ áp để điện áp được giảm xuống còn 5V để cung cấp cho vi điều khiển hoạt động, còn module điều khiển động cơ L298 vẫn được sử dụng nguồn 12V để điều khiển máy bơm và quạt.

- Bước 2: Sau khi cấp nguồn thì các thiết bị trong hệ thống bắt đầu khởi động.

- Bước 3: Mở ứng dụng blynk và đăng nhập vào web thingspeak sau đó bắt đầu thực hiện tất cả các tính năng của hệ thống đã đặt ra trước đó.

- Bước 4: Kiểm tra lại các kết quả vừa thực hiện ở trên ứng dụng blynk cũng như là trên web thingspeak.

4.2 Kết quả thực nghiệm

- Sau khi cấp điện 220V cho hệ thống qua adapter thì điện áp giảm xuống

Một phần của tài liệu HỆ THỐNG vườn THÔNG MINH có CỔNG gắn THẺ RFID mở cửa (Trang 82)