Chào buổi chiều, hôm nay tôi sẽ chia sẻ hướng dẫn cách làm đồng hồ bằng nhiệt kế phòng. Đồng hồ chạy Arduino Màn hình đồ họa UNO, WG12864B được sử dụng để hiển thị thời gian và nhiệt độ. Là một cảm biến nhiệt độ - DS18b20. Không giống như hầu hết các đồng hồ khác, tôi sẽ không sử dụng RTS (Đồng hồ thời gian thực), nhưng cố gắng làm mà không có mô-đun bổ sung này.
Đối với điều này tự làm Các thành phần sau là bắt buộc:
- Arduino UNO (Hoặc bất kỳ bảng tương thích Arduino nào khác)
- Màn hình đồ họa WG12864B
- Cảm biến nhiệt độ DS18b20
- Điện trở 4,7 Kom 0,25 W
- Điện trở 100 ohm 0,25 W
- Khoang chứa pin cho 4 pin AA
- Hộp thích hợp
- Tập tin nhỏ
- Sơn móng tay (màu đen hoặc màu cơ thể)
- Một chút nhựa mỏng hoặc các tông
- băng keo điện
- dây kết nối
- bảng mạch
- Nút
- hàn sắt
- Hàn, nhựa thông
- Băng keo hai mặt
Bước 1 Chuẩn bị bao vây.
Vì vậy, đồng hồ của chúng tôi nên được đặt ở đâu đó. Bạn cần tìm một hộp phù hợp. Điều chính là màn hình WG12864B, Arduino và một bảng mạch nhỏ cho các nút phù hợp với nó. Kích thước hộp tối thiểu là 7 x 7 x 10 cm. Nếu bạn sử dụng một bảng Arduino nhỏ, bạn có thể đẩy nó vào một hộp và một hộp nhỏ hơn, nhưng tôi sẽ mô tả quá trình sử dụng Arduino UNO làm ví dụ. Chất liệu của chiếc hộp được làm tốt nhất là bằng nhựa, nếu như của tôi, nó là sắt, nó đáng để chăm sóc lớp cách nhiệt để không có gì để đi xung quanh bên trong. Nhựa là thích hợp hơn vì nó dễ cắt hơn. Với một hộp, anh ấy là trường hợp của đồng hồ của chúng tôi, quyết định. Bây giờ cần phải cắt một cửa sổ dưới màn hình có kích thước 6,5x4 cm. Nếu hộp là sắt, cực kỳ khó để làm điều đó một cách cẩn thận. Cho dù bạn cố gắng thế nào, sẽ có sứt mẻ sơn và độ nhám gần vết cắt. Do đó, trước tiên, chúng tôi cắt nó ra, để làm điều này, bạn có thể sử dụng máy mài mài, một mũi khoan có vòi để cắt hoặc dao phay, nói chung, tùy bạn chọn, với những gì trong tay. Sau đó, chúng tôi làm sạch các cạnh bằng một tập tin. Chúng tôi sơn tất cả sơn sứt mẻ bằng sơn móng tay, màu sắc phù hợp. Kết quả phải như sau:
Bước 2 Chuẩn bị màn hình đồ họa.
Với kết nối của màn hình, thoạt nhìn, nhiều vấn đề và khó khăn phát sinh. Nhưng nếu bạn lần đầu tiên đối phó với các loại của họ, nó sẽ trở nên dễ dàng và dễ hiểu hơn nhiều. Có nhiều biến thể và loại màn hình trên bộ điều khiển ks0107 / ks0108.Tất cả các màn hình thường được chia thành 4 loại:
Tùy chọn A: HDM64GS12L-4, Crystalfontz CFAG12864B, Sparkfun LCD-00710CM, Điện tử NKC LCD-0022, Winstar WG12864B-TML-T
Tùy chọn B: HDM64GS12L-5, Lumex LCM-S12864GSF, Futurlec BLUE128X64LCD, AZ Hiển thị AGM1264F, Displaytech 64128A BC, Adaf nhung GLCD, DataVision DG12864-88, Topway LM1286412
Tùy chọn C: Thâm Quyến Jinghua Hiển thị Co Ltd. Jm12864
Tùy chọn D: Wintek-Cascades WD-G1906G, Wintek-GEN / WD-G1906G / KS0108B, Wintek / WD-G1906G / S6B0108A, TECDIS / Y19061 / HD61202, Varitronix / MGLS19264 / HD61202
Danh sách không đầy đủ, có rất nhiều trong số họ. Phổ biến nhất và, theo tôi, WG12864B3 V2.0 tiện lợi. Màn hình có thể được kết nối với Arduino thông qua cổng nối tiếp hoặc song song. Khi được sử dụng với Arduino UNO, tốt hơn là chọn kết nối cổng nối tiếp - khi đó chúng ta chỉ cần 3 đầu ra của vi điều khiển, thay vì tối thiểu 13 dòng khi được kết nối qua cổng song song. Mọi thứ được kết nối khá đơn giản. Có một sắc thái nữa, hai loại màn hình có thể được tìm thấy khi bán, với một chiết áp tích hợp (để điều chỉnh độ tương phản) và không có nó. Tôi đã chọn và tôi khuyên bạn nên làm tương tự với tích hợp sẵn.
Điều này làm giảm số lượng các bộ phận và thời gian hàn. Nó cũng có giá trị đặt một điện trở giới hạn hiện tại là 100 Ohms cho đèn nền. Bằng cách kết nối trực tiếp 5 volt, có nguy cơ đốt cháy đèn nền.
WG12864B - Arduino UNO
1 (GND) - GND
2 (VCC) - + 5V
4 (RS) - 10
5 (R / W) - 11
6 (E) - 13
15 (PSB) - GND
19 (BLA) - thông qua điện trở - + 5V
20 (BLK) - GND
Điều thuận tiện nhất là thu thập mọi thứ phía sau màn hình và xuất 5 dây từ nó để kết nối với Arduino UNO. Kết quả sẽ giống như thế này:
Đối với những người vẫn chọn kết nối song song, tôi sẽ đưa ra bảng kết nối.
Và cách bố trí cho màn hình tùy chọn B:
Bước 3 Kết nối cảm biến nhiệt độ.
Như tôi đã nói, chúng tôi sẽ sử dụng cảm biến tích hợp DS18B20 để đo nhiệt độ. Tôi đã chọn nó vì độ chính xác đo cao của nó, sai số không quá 0,5 ° C. Cảm biến được hiệu chỉnh tại thời điểm sản xuất, không yêu cầu cài đặt bổ sung. Phạm vi đo nhiệt độ -55 ... + 125 ° C. Có hai chế độ hoạt động: với một nguồn năng lượng bên ngoài và sức mạnh giả mạo. Khi hoạt động ở chế độ nguồn ngoài, kết nối như sau:
Khi sử dụng "công suất giả", cảm biến sẽ nhận được năng lượng từ đường truyền. Trong chế độ này, hai dây là đủ để kết nối DS18b20 với vi điều khiển. Các tụ điện bên trong của cảm biến được tích điện do năng lượng trên đường truyền ở mức thấp trên xe buýt. Chế độ "dinh dưỡng ký sinh" có nhiều tính năng và do đó tôi không khuyên bạn nên sử dụng nó. Nhưng nếu bạn vẫn quyết định sử dụng nó, đây là sơ đồ:
Hoặc bạn có thể sử dụng sơ đồ nối dây được cải thiện khi sử dụng "công suất giả":
Một số cảm biến có thể được bao gồm trên một đường truyền thông. Đối với đồng hồ của chúng tôi một là đủ. Chúng tôi kết nối dây từ chân pin D18 NG DS18b20 với bộ pin 5 Arduino Arduino UNO.
Bước 4 Chuẩn bị một bảng với các nút.
Để đặt thời gian và ngày trên đồng hồ, chúng tôi sẽ sử dụng ba nút. Để thuận tiện, hàn ba nút trên bảng mạch và rút dây ra.
Chúng tôi kết nối như sau: dây chung cho cả ba nút được kết nối với Arduino Arduino GND. Nút đầu tiên, nó phục vụ để vào chế độ cài đặt thời gian và chuyển đổi theo thời gian và ngày, kết nối với "Pin 2". Nút thứ hai, nút để tăng giá trị, là "Chân 3" và nút thứ ba, nút giảm giá trị, là "Chân 4".
Bước 5 Đặt tất cả lại với nhau.
Để tránh đoản mạch, hãy cách nhiệt màn hình. Trong một vòng tròn, chúng tôi quấn băng keo điện, và ở mặt sau, chúng tôi gắn chặt vào băng keo hai mặt, cắt theo kích thước, một dải vật liệu cách điện. Các tông dày hoặc nhựa mỏng là phù hợp. Tôi đã sử dụng nhựa từ một máy tính bảng giấy. Hóa ra như sau:
Ở mặt trước của màn hình dọc theo cạnh, chúng tôi dán một băng dính hai mặt trên nền bọt, tốt nhất là màu đen.
Chúng tôi kết nối màn hình với Arduino:
Thêm vào đó, chúng tôi kết nối từ ngăn chứa pin với Arduino VIN VIN Arduino, trừ đi với GND ốp lưng. Chúng tôi đặt nó phía sau Arduino. Trước khi cài đặt trong trường hợp, đừng quên kết nối cảm biến nhiệt độ và bảng với các nút.
Bước 6 Chuẩn bị và điền vào bản phác thảo.
Một cảm biến nhiệt độ cần thư viện OneWire.
Đầu ra cho màn hình thông qua thư viện U8glib:
Để chỉnh sửa và điền vào bản phác thảo, cài đặt hai thư viện này. Có hai cách để làm điều này. Chỉ cần giải nén các tài liệu lưu trữ này và đặt các tệp đã giải nén vào thư mục của thư viện trên thư mục của thành phố có tên trong thư mục Arduino được cài đặt.Hoặc tùy chọn thứ hai là cài đặt thư viện trực tiếp trong môi trường lập trình. Không giải nén các tài liệu lưu trữ đã tải xuống, trong Arduino IDE, chọn menu Phác thảo - Kết nối Thư viện. Ở đầu danh sách thả xuống, chọn mục "Thêm thư viện .Zip". Trong hộp thoại xuất hiện, chọn thư viện mà bạn muốn thêm. Mở menu Phác thảo - Kết nối lại Thư viện. Ở dưới cùng của danh sách thả xuống, bạn sẽ thấy một thư viện mới. Bây giờ thư viện có thể được sử dụng trong các chương trình. Đừng quên khởi động lại Arduino IDE sau tất cả điều này.
Cảm biến nhiệt độ hoạt động theo giao thức Một Dây và có một địa chỉ duy nhất cho mỗi thiết bị - mã 64 bit. Mỗi lần, tìm kiếm mã này là không thực tế. Do đó, trước tiên bạn phải kết nối cảm biến với Arduino, điền vào bản phác thảo nằm trong Tệp - Ví dụ - Nhiệt độ Dallas - Menu OneWireSearch. Tiếp theo, chạy Công cụ - Cổng giám sát. Arduino nên tìm cảm biến của chúng tôi, viết địa chỉ của nó và đọc nhiệt độ hiện tại. Chúng tôi sao chép hoặc đơn giản là ghi lại địa chỉ của cảm biến. Mở bản phác thảo Arduino_WG12864B_Term, tìm dòng:
byte addr [8] = {0x28, 0xFF, 0xDD, 0x14, 0xB4, 0x16, 0x5, 0x97}; // địa chỉ cảm biến của tôi
Chúng tôi ghi lại địa chỉ cảm biến của bạn giữa các lần niềng răng, thay thế địa chỉ cảm biến của tôi.
Chứng khoán:
//u8g.setPrintPos (44, 64); u8g.print (sek); // In giây để kiểm tra tính đúng đắn của khóa học
Hiển thị giây bên cạnh Data Data. Điều này là cần thiết để thiết lập chính xác quá trình thời gian.
Nếu đồng hồ vội vàng hoặc bị trễ, bạn nên thay đổi giá trị trong dòng:
if (micros () - thuận trước> 494000) {// thay đổi thành cái khác để điều chỉnh là 500.000
Tôi đã xác định bằng thực nghiệm số mà đồng hồ đi khá chính xác. Nếu đồng hồ của bạn đang vội, bạn nên tăng số này; nếu tôi đứng sau, hãy giảm nó. Để xác định tính chính xác của khóa học và cần một giây kết luận. Sau khi hiệu chỉnh chính xác số, giây có thể được nhận xét và do đó loại bỏ khỏi màn hình.
Điền vào bản phác thảo.