Subscribe to Continue Downloading

Redirecting...
Module NodeMCU - Code C++ cảm biến màu sắc với Arduino + báo cáo

Code C++ cảm biến màu sắc với Arduino + báo cáo

by Tuan Postin , on October 20, 2022

Choose Your Desired Option(s)

Code C++ cảm biến màu sắc với Arduino + báo cáo

Module NodeMCU - Code C++ cảm biến màu sắc với Arduino + báo cáo

Module NodeMCU

 

Thông số kỹ thuật:

  • Chip: ESP8266EX
  • WiFi: 2.4 GHz hỗ trợ chuẩn 802.11 b/g/n
  • Điện áp hoạt động: 3.3V
  • Điện áp vào: 5V thông qua cổng USB
  • Số chân I/O: 11 (tất cả các chân I/O đều có Interrupt/PWM/I2C/One-wire, trừ chân D0)
  • Số chân Analog Input: 1 (điện áp vào tối đa 3.3V)
  • Bộ nhớ Flash: 4MB
  • Giao tiếp: Cable Micro USB
  • Hỗ trợ bảo mật: WPA/WPA2
  • Tích hợp giao thức TCP/IP
  • Lập trình trên các ngôn ngữ: C/C++, Micropython, NodeMCU – Lua

 

Cam bien mau sac - Code C++ cảm biến màu sắc với Arduino + báo cáo

Cảm biến màu sắc TCS3200

 

So do chan DHT11 - Code C++ cảm biến màu sắc với Arduino + báo cáo

Sơ đồ chân DHT11

 

Cau tao cua cam bien do am - Code C++ cảm biến màu sắc với Arduino + báo cáo

 

Cấu tạo của cảm biến độ ẩm

 

Cau tao cua bien tro nhiet do - Code C++ cảm biến màu sắc với Arduino + báo cáo

 

Cấu tạo của biến trở nhiệt độ

 

Tìm dải RGB tương ứng với mỗi màu: đỏ, xanh lục, xanh lam

 

3333 - Code C++ cảm biến màu sắc với Arduino + báo cáo

 

Để đo dải R (red), ta kéo S2 và S3 xuống mức thấp để báo cho cảm biến là ta muốn đo dải màu là Red . Sau đó dải tầ số đầu ra được xác định tương đương khi gọi hàm pulseIn(pin, Value)

Hàm pulseIn(pin,Value) sẽ đọc một xung tín hiệu digital (HIGH/LOW) và trả về chu kì của xung tín hiệu, tức là thời gian tín hiệu chuyển từ mức HIGH xuống LOW hoặc ngược lại (LOW -> HIGH).

Frequency = pulseIn(sensorOut,low) nghĩa là nó sẽ đợi tín hiệu tại chân sensorOut xuống mức thấp, khởi động bộ đếm thời gian và chờ đến khi chân sensorOut lên mức cao thì bộ đếm thời gian sẽ dừng. Tương tự với dải G và B ta sẽ kéo S2 và S3 thích hợp để tìm ra khoảng dao động giữa các màu sắc với nhau

 

Đếm số lượng vật thể thông qua màu sắc

44 - Code C++ cảm biến màu sắc với Arduino + báo cáo

 

Dựa vào tần số xác định với mỗi dải màu được làm ở bước trước ta phân biệt được các vật thể với các trạng thái màu cơ bản là: đỏ, lục, lam. Từ đó gửi dữ liệu phân biệt lên Broker MQTT. Mỗi lần nhận được giá trị gửi lên, số lượng vật thể tương ứng sẽ tăng lên một và lưu các thông số vật thể nhận diện đó vào cơ sở dữ liệu.

* Hiện thị màu sắc lên Web Server

Để hiển thị được màu sắc lên giao diện web. Ta cần chuyển tần số ứng với các giải màu nhận diện về thang mức sáng. Từ đó ta chuyển đổi dữ liệu R,G,B từ int sang dạng chuỗi JSON và gửi lên web Server . Server sẽ nhận được chuỗi Json tương ứng như sau {“R”:170,”G”:51,”B”:112}. Từ các thông số gửi lên đó sẽ chuyển dữ liệu thành mà sắc tương ứng.

 

Lấy dữ liệu cảm biến và gửi lên Broker MQTT

 

555 - Code C++ cảm biến màu sắc với Arduino + báo cáo

 

Các giá trị nhiệt độ, độ ẩm được đo được bởi các hàm dht.readHumidity() và dht.readTemperature(). Sau đó sẽ được chuyển thành dạng JSON với định dạng như sau:

{“ID”:”NodeMCU”,”Temperature”:26,”Humidity”:74}.

          Hàm isnan() để kiểm tra cảm biến có đang hoạt động hay không. Nếu cảm biến không hoạt động mặc định giá trị trả lên sẽ là 0.

 

Giao dien Web Server - Code C++ cảm biến màu sắc với Arduino + báo cáo

 

Giao diện Web Server

Download Category ,
Product Version
File Type INO, WINDOWS BATCH, EJS, JS, CSS, JSON , . .
File Size 1.41 MB
Developer
Documentation

Release Information

  • Released
    :

    October 20, 2022

  • Last Updated
    :

    October 20, 2022

  • Categories
    :
  • File Included
    :

    INO, WINDOWS BATCH, EJS, JS, CSS, JSON , . .

  • File Size
    :

    1.41 MB

Share Your Valuable Opinions

You must log in to submit a review.

  • Sign up
Password Strength Very Weak
Lost your password? Please enter your username or email address. You will receive a link to create a new password via email.
We do not share your personal details with anyone.

Please wait a moment...

(Don't refresh or go back)