/ / Tự làm một nhiệt kế kỹ thuật số tự làm với Arduino

Tự làm một nhiệt kế kỹ thuật số tự làm với Arduino

Xây dựng nhiệt kế Arduino tự làm của bạn là một cách thú vị và thiết thực để mở rộng kỹ năng mày mò của bạn, nhưng bạn nên bắt đầu từ đâu? Hãy tham gia cùng chúng tôi khi đi sâu vào hệ thống dây điện và mã hóa để biến Arduino, đầu dò nhiệt độ DS18B20 và màn hình OLED thành một nhiệt kế kỹ thuật số chính xác có thể hoạt động tốt trong phòng, bể cá và thậm chí ngoài trời.

Bạn cần gì để tự làm một nhiệt kế kỹ thuật số Arduino?


bộ phận nhiệt kế kỹ thuật số

Tất cả các thành phần này có thể được tìm thấy trên các trang web như eBay và Amazon.

Một bảng Arduino

Bạn có thể sử dụng hầu như bất kỳ Arduino nào có đầu ra 5V cho dự án này. Chúng tôi đang sử dụng Arduino Pro Micro để nhiệt kế hoàn chỉnh của chúng tôi nhỏ gọn, nhưng bạn có thể sử dụng bảng lớn hơn như Arduino Uno nếu bạn muốn tránh hàn cho dự án này.

Đầu dò nhiệt độ DS18B20

Cảm biến nhiệt độ DS18B20 có thể được tìm thấy dưới dạng cảm biến độc lập nhỏ, PCB có gắn cảm biến hoặc như đầu dò chống thấm nước trên dây dài. Chúng tôi chọn loại thứ hai, vì điều này cho phép chúng tôi sử dụng nhiệt kế bên trong bể cá, nhưng bạn có thể chọn bất kỳ biến thể nào của cảm biến nhiệt độ DS18B20. Không giống như các loại cảm biến nhiệt độ khác, DS18B20s cung cấp tín hiệu trực tiếp sang kỹ thuật số cho Arduino của bạn, thay vì tín hiệu tương tự đến từ các tùy chọn như cảm biến nhiệt độ LM35.

Màn hình OLED / LCD

Màn hình hiển thị mà bạn chọn cho nhiệt kế của mình sẽ có ảnh hưởng lớn đến thành phẩm. Chúng tôi đã chọn màn hình OLED trắng đơn sắc 1,3 inch tương thích với I2C cho nhiệt kế của mình, nhưng bạn có thể chọn bất cứ thứ gì mình thích miễn là nó hỗ trợ I2C.

LÀM VIDEO TRONG NGÀY

Các bộ phận nhỏ bổ sung

  • Điện trở 4,7K (kiloohm)
  • 28 đến 22 AWG silicone / dây cách điện PVC
  • Một breadboard (tùy chọn cho những người không muốn hàn)

Đấu dây nhiệt kế tự làm của bạn


sơ đồ đầy đủ nhiệt kế kỹ thuật số tự làm

Hệ thống dây điện cho dự án này đơn giản hơn nhiều so với những gì bạn có thể tưởng tượng. Bằng cách sử dụng sơ đồ mạch điện ở trên, bạn có thể tạo nhiệt kế kỹ thuật số tự làm của riêng mình mà không tốn nhiều công sức, nhưng chúng tôi cũng chia nhỏ sơ đồ bên dưới để giúp bạn dễ làm theo hơn.

Đấu dây cho đầu dò nhiệt độ DS18B20


sơ đồ nhiệt kế kỹ thuật số tự làm DS18B20

Việc đấu dây chính xác cho đầu dò nhiệt độ DS18B20 của bạn là rất quan trọng đối với dự án này và bạn cần đảm bảo rằng bạn sử dụng điện trở 4,7K mà chúng tôi đã đề cập trước đó, nếu không đầu dò của bạn sẽ không hoạt động bình thường. Đầu dò đi kèm với ba dây: Nối đất (thường màu đen), VCC (thường màu đỏ) và Dữ liệu.


  • VCC kết nối với chân 5V trên Arduino của bạn
  • Nối đất kết nối với chân GND trên Arduino của bạn
  • Dữ liệu có thể kết nối với bất kỳ chân kỹ thuật số nào trên Arduino của bạn (chúng tôi đã chọn chân kỹ thuật số 15)
  • Các dây Dữ liệu và VCC cũng cần được kết nối với nhau bằng điện trở 4,7K

Kết nối màn hình I2C OLED


sơ đồ nhiệt kế kỹ thuật số tự làm oled

Vì chúng tôi đang sử dụng kết nối I2C giữa màn hình OLED và Arduino, chúng tôi chỉ phải kết nối bốn dây trước khi có thể bắt đầu sử dụng màn hình: VCC, Ground, SDA và SCL. Hầu như mọi Arduino hiện đại đều được tích hợp các chân SDA và SCL, cung cấp khả năng kết nối tới 128 thành phần I2C duy nhất vào một bảng mạch duy nhất.

Arduino Pro Micro của chúng tôi có SDA trên chân số 2 và SCL trên chân số 3, nhưng bạn có thể cần tìm sơ đồ sơ đồ chân của bảng mạch cụ thể mà bạn đã chọn trước khi bắt đầu.

  • VCC kết nối với chân 5V trên Arduino của bạn
  • Nối đất kết nối với chân GND trên Arduino của bạn
  • SDA kết nối với chân SDA trên Arduino của bạn
  • SCL kết nối với chân SCL trên Arduino của bạn

Kiểm tra mạch của bạn

Điều quan trọng là bạn phải kiểm tra mạch bạn đã tạo trước khi bắt đầu viết mã cuối cùng cho nó, nhưng bạn có thể sử dụng các dự án ví dụ đi kèm với các thư viện được thảo luận bên dưới để kiểm tra mạch bạn đã tạo.

Mã hóa cảm biến nhiệt độ và màn hình OLED của bạn

Mã hóa nhiệt kế kỹ thuật số tự làm của bạn phức tạp hơn so với nối dây, nhưng Arduino IDE có thể được sử dụng cho việc này để làm cho nó dễ dàng hơn.

Chọn các thư viện chính xác

  • Thư viện màn hình OLED: Chúng tôi đang sử dụng thư viện Adafruit_SH1106.h để hiển thị, vì đây là thư viện mà nó được thiết kế để hoạt động. Các màn hình OLED khác có thể sử dụng thư viện của riêng chúng, như thư viện Adafruit_SSD1306.h và bạn thường có thể tìm ra cái nào bạn cần từ trang sản phẩm mà bạn nhận màn hình của mình.
  • Đầu dò nhiệt độ DS18B20: Chúng tôi cần hai thư viện cho đầu dò nhiệt độ của chúng tôi. DallasTempentic.h được sử dụng để thu thập dữ liệu nhiệt độ và OneWire.h để làm cho kết nối dây đơn của chúng tôi khả thi.


Khi các thư viện này đã được cài đặt và đưa vào dự án của bạn, mã của bạn sẽ trông giống như đoạn mã bên dưới. Lưu ý rằng chúng tôi cũng đã bao gồm mã để đặt chân cho các thành phần của chúng tôi.

#include <Adafruit_SH1106.h> //Display library
#include <OneWire.h>
#include <DallasTemperature.h> //Temp probe library
#define OLED_RESET -1
Adafruit_SH1106 display(OLED_RESET);
#define ONE_WIRE_BUS 15 //Temp probe data wire pin
OneWire oneWire(ONE_WIRE_BUS); //Tell OneWire which pin we are using
DallasTemperature sensors(&oneWire); //OneWire reference to Dallas Temperature

Xây dựng các chức năng

  • thiết lập vô hiệu: Chúng tôi đang sử dụng tiêu chuẩn cài đặt chức năng khởi tạo cả màn hình và đầu dò nhiệt độ của chúng tôi.
  • vòng lặp vô hiệu: Tiêu chuẩn của chúng tôi vòng hàm sẽ chỉ được sử dụng để gọi Trưng bày chức năng.
  • Hiển thị vô hiệu: Chúng tôi đã thêm một Trưng bày chức năng gọi của chúng tôi Nhân viên bán thời gian chức năng và cung cấp thông tin cho màn hình của chúng tôi.
  • int Temp: Của chúng tôi Nhân viên bán thời gian chức năng được sử dụng để đọc nhiệt độ cho Trưng bày chức năng.

Sau khi hoàn thành, đoạn mã này sẽ giống như đoạn mã dưới đây.

void setup() {
}
void loop() {
}
void Display() {
}
int Temp() {
}

Mã hóa màn hình OLED

Trước khi chúng tôi có thể thêm mã vào Trưng bày chúng tôi cần đảm bảo rằng bảng điều khiển OLED được khởi tạo trong thiết lập vô hiệu chức năng. Đầu tiên, chúng tôi sử dụng một display.begin lệnh để bắt đầu hiển thị, theo sau là display.clearDisplay lệnh để đảm bảo màn hình hiển thị rõ ràng.

void setup() {
display.begin(SH1106_SWITCHCAPVCC, 0x3C); //Change based on your display library
display.clearDisplay();
}

Từ đây, chúng tôi có thể thêm mã vào Trưng bày chức năng. Cái này bắt đầu bằng cái khác display.clearDisplay trước khi khai báo một biến số nguyên mới với một giá trị gọi Nhân viên bán thời gian chức năng (chúng tôi sẽ đề cập đến vấn đề này sau). Sau đó, chúng tôi có thể sử dụng biến này để hiển thị nhiệt độ trên màn hình bằng cách sử dụng mã sau.

void Display() {
display.clearDisplay();
int intTemp = Temp(); //Calls our Temp function
display.setTextSize(3); //Sets our text size
display.setTextColor(WHITE); //Sets our text color
display.setCursor(5, 5); //Sets our text position on the display
display.print(intTemp); //Prints out the value provided by the Temp function
display.drawCircle(44, 7, 3, WHITE); //Draws a degree symbol
display.setCursor(50, 5);
display.print("C"); //Adds C to indicate that our temperature is in Celsius
}

Mã hóa đầu dò nhiệt độ DS18B20

Giống như màn hình của chúng tôi, đầu dò nhiệt độ của chúng tôi cũng cần mã thiết lập để khởi tạo thành phần.

void setup() {
display.begin(SH1106_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
sensors.begin();
}

Tiếp theo, đã đến lúc tự lập trình đầu dò và chúng ta cần thêm mã vào Nhân viên bán thời gian chức năng. Đầu tiên, chúng tôi sẽ yêu cầu nhiệt độ từ đầu dò của chúng tôi, tiếp theo là ghi lại kết quả dưới dạng một biến float và chuyển nó thành một số nguyên. Nếu quá trình này thành công, nhiệt độ được trả về Trưng bày chức năng.

int Temp() {
sensors.requestTemperatures(); // Send the command to get temperatures
float tempC = sensors.getTempCByIndex(0); //This requests the temp in Celsius and assigns it to a float
int intTemp = (int) tempC; //This converts the float to an integer
if (tempC != DEVICE_DISCONNECTED_C) //Check if our reading worked
{
return intTemp; //Return our temperature value to the Display function
}
}

Kết thúc

Cuối cùng, chúng ta chỉ cần cho biết chính của chúng ta vòng chức năng gọi của chúng tôi Trưng bày hoạt động với mỗi chu kỳ của mã, để lại cho chúng ta một dự án trông giống như thế này.

#include <Adafruit_SH1106.h> //Display library
#include <OneWire.h>
#include <DallasTemperature.h> //Temp probe library
#define OLED_RESET -1
Adafruit_SH1106 display(OLED_RESET);
#define ONE_WIRE_BUS 15 //Temp probe data wire pin
OneWire oneWire(ONE_WIRE_BUS); //Tell OneWire which pin we are using
DallasTemperature sensors(&oneWire); //OneWire reference to Dallas Temperature
void setup() {
display.begin(SH1106_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
sensors.begin();
}
void loop() {
Display(); //Calls our display function
}
void Display() {
display.clearDisplay();
int intTemp = Temp(); //Calls our Temp function
display.setTextSize(3); //Sets our text size
display.setTextColor(WHITE); //Sets our text color
display.setCursor(5, 5); //Sets our text position on the display
display.print(intTemp); //Prints out the value provided by the Temp function
display.drawCircle(44, 7, 3, WHITE); //Draws a degree symbol
display.setCursor(50, 5);
display.print("C"); //Adds C to indicate that our temperature is in Celsius
}
int Temp() {
sensors.requestTemperatures(); // Send the command to get temperatures
float tempC = sensors.getTempCByIndex(0); //This requests the temp in Celsius and assigns it to a float
int intTemp = (int) tempC; //This converts the float to an integer
if (tempC != DEVICE_DISCONNECTED_C) //Check if our reading worked
{
return intTemp; //Return our temperature value to the Display function
}
}


Xây dựng một nhiệt kế kỹ thuật số tự làm

Dự án này phải thú vị và nhiều thông tin, đồng thời mang lại cho bạn cơ hội chế tạo một món đồ thiết thực. Chúng tôi đã thiết kế mã này đơn giản nhất có thể, nhưng bạn có thể sử dụng nó làm nền tảng cho một dự án phức tạp hơn khi bạn học.


arduino-các dự án
15 dự án Arduino tuyệt vời cho người mới bắt đầu

Quan tâm đến các dự án Arduino nhưng không biết bắt đầu từ đâu? Những dự án dành cho người mới bắt đầu này sẽ dạy bạn cách bắt đầu.

Đọc tiếp


Thông tin về các Tác giả

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *