Phát hiện mức chất lỏng cùng Raspberry Pi

Phát hiện mức chất lỏng cùng Raspberry Pi

11:34 - 21/02/2019

Chúng ta có thể phát hiện mực chất lỏng mà cảm biến không cần tiếp xúc trực tiếp phù hợp với các ứng dụng nguy hiểm như: phát hiện chất độc hai, axit , kiềm mạnh hay tất cả chất lỏng chứa trong bình kín (không thể quan sát hay đo trực tiếp được)

NVIDIA Jetson AGX Orin hiệu suất AI mạnh nhất của NVIDIA Jetson Family với 275 TOPS, 2048 NVIDIA® CUDA® cores, 64 Tensor Cores
NVIDIA Jetson AGX Orin Hardware Layout and GPIO Expansion Header Pinout
NVIDIA Jetson là nền tảng hàng đầu thế giới dành cho Trí tuệ nhân tạo (AI) và Deep Learning
Cách sử dụng Camera CSI với hệ điều hành Raspberry Pi Bulleyes mới nhất
Jetson Stats dùng cho Giám sát và Điều khiển trên NVIDIA Jetson Ecosystem [Xavier NX, Nano, AGX Xavier, TX1, TX2]

Heyoo, Chào các bạn mình đã trở lại đây hôm nay mình sẽ cùng các bạn lập trình để xác định mức nước, dùng module cảm biến mức chất lỏng không tiếp xúc. Tất nhiên rồi, chúng ta cần em Pi quen thuộc, trong `little-project` này ta có thể dùng một mình em Pi cũng được, nhưng tính dài hạn hơn, để em Pi của chúng ta như Pi mọc thêm cánh :)) thì mình dùng thêm board adapter ARPI600 , vì sao mình nói “ Pi mọc thêm cánh “ bởi vì khi kết nối Pi với ARPI600 ta có thể làm thêm được nhiều việc mà lại dễ dàng kết nối, gọn gàng,... ví dụ như Xbee (ứng dụng trong IOTs), Real-time, đọc được tín hiệu Analog,…

Dài dòng vậy đủ rồi, mình xin được tập trung vào bài viết:

Giới thiệu, nội dung chính

Cảm biến mức chất lỏng không tiếp xúc (Link) hoặc cảm biến mức chất lỏng sử dụng quang học (LINK)sử dụng phương pháp đo không tiếp xúc.

Việc đo mà không phải tiếp xúc trực tiếp với chất lỏng, cảm biến có thể thích hợp trong các ứng dụng nguy hiểm như: phát hiện chất độc hai, axit, kiềm mạnh hay tất cả chất lỏng chứa trong bình kín (không thể quan sát hay đo trực tiếp được)

Có thể đo tất cả các loại chất lỏng chứa trong bình

Lưu ý: chỉ áp dụng cho bình phi kim, hoặc nếu kim loại thì vị trí đặt cảm biến phải thay bằng phi kim

Chúng ta có một mạch chuyển đổi tín hiệu, OUTPUT mà chúng ta dùng chỉ 2 mức logic nên rất dễ để lập trình có nước hay không.

Phần cứng:

 

- Một adapter board ARPI600 để giúp em Pi đọc tín hiệu Digital. (Dùng mỗi em Pi cũng được)

 

 

- Cách kết nối ARPI600 : ta chỉ cần cắm vào là xong phần kết nối giữa ARPI600 và Pi.

 

Thông số kỹ thuật của module cảm biến

  • Điện áp hoạt động VCC: 5V ~ 24V
  • Dòng điện tiêu thụ: 5mA
  • Điện áp đầu ra (High Level): VCC
  • Điện áp đầu ra (Low Level): 0V
  • Dòng điện đầu ra: 1 ~ 50mA
  • Thời gian đáp ứng: 500ms
  • Nhiệt độ hoạt động: 0 ~ 105*C
  • Độ dày thành bình: 0 ~ 13mm
  • Độ ẩm: 5% ~ 100%
  • Nhựa ABS
  • Chuẩn kháng nước IP67
  • Kích thước: 28 * 28mm

 

 KẾT NỐI

1) Không dùng ARPI600: 

Mình sử dụng GPIO17 để đọc dữ liệu, 2 chân còn lại là Vcc của module đấu vào 5v của Pi, và GND đấu GND.

2) Dùng ARPI600:

Với ARPI600 mình sử dụng pin P1 để đọc dữ liệu.

Xong phần kết nối tiếp theo chúng ta cùng đến phần lập trình, dưới đây là code của hai cách làm.

- Sau khi bật terminal, các bạn tạo 1 file để lập trình: sudo nano waterlevelsensor.c

- Sau đó copy code bên dưới một trong hai cách và paste vào.

- Tiếp theo các bạn dùng Ctrl + x chọn Yes để thoát ra và lưu.

- Dùng lệnh: gcc -Wall -o waterlevelsensor  waterlevelsensor.c -lwiringPi để compile ra file waterlevelsensor 

- Cuối cùng để chạy chương trình: sudo ./ waterlevelsensor

- Chúng ta lắp đặt như sơ đồ để check.

Source code:

Phần 1: Code không dùng ARPI600


#include <wiringPi.h>

#include <stdio.h>

 

#define wts 17

int main(void) {

  wiringPiSetupGpio();

  pinMode(wts, INPUT);

  while (1) {

    if (digitalRead(wts))             // digitalRead(wts) == 1

      printf(“ Co nuoc !”);

    else

      printf(“ Chua co nuoc “);

    printf(“\n”);

    delay(1000);

  }

}

 

Cách 2: Code dùng ARPI600

#include <wiringPi.h>

#include <stdio.h>

 

#define wts            // chân P1

int main(void) {

  wiringPiSetup ();

  pinMode(wts, INPUT);

  while (1) {

    if (digitalRead(wts))              // digitalRead(wts) == 1

      printf(“ Co nuoc !”);

    else

      printf(“ Chua co nuoc “);

    printf(“\n”);

    delay(1000);

  }

}

 ________________________________________________________________________________________

Như vậy là mình đã cùng các bạn hoàn thành `little-project` này, chúng ta có thể ứng dụng vào nhiều dự án khác nhau đặc biệt trong  các ứng dụng nguy hiểm như: phát hiện chất độc hại, axit, kiềm mạnh hay tất cả chất lỏng chứa trong bình kín (không thể quan sát hay đo trực tiếp được).

Chúc các bạn thành công nếu có ý tưởng muốn chúng mình thực hiện hãy inbox với fanpage nhé !

Thực hiện bài viết: Nguyễn Huy Hiệp

 

 

 

Để cập nhật các tin tức công nghệ mới các bạn làm theo hướng dẫn sau đây :

Các bạn vào Trang chủ >> Tin tức. ở mục này có các bài viết kỹ thuật thuộc các lĩnh vực khác nhau các bạn có thể lựa chọn lĩnh vực mà mình quan tâm để đọc nhé !!!

Các bạn cũng có thế kéo xuống cuối trang để xem những tin tức công nghệ mới nhất.