Chào buổi chiều, tôi tiếp tục làm Arduino trong thời gian rảnh rỗi, và lần này ông đã viết hướng dẫn sản xuất một trạm thời tiết nhỏ. Nó sẽ hoạt động như một chiếc đồng hồ với một ngày và hiển thị nhiệt độ trong và ngoài phòng. Là bộ điều khiển chính, chúng tôi sẽ sử dụng Arduino UNO, nhưng một bo mạch khác có Atmega328p trên tàu sẽ làm được. Để hiển thị, chúng tôi sử dụng màn hình đồ họa WG12864B. Chúng tôi cũng kết nối hai cảm biến nhiệt độ DS18b20. Một trong nhà, chúng tôi lấy ra thứ hai bên ngoài. Hãy bắt đầu nào.
Trong quá trình sản xuất tự làm chúng ta sẽ cần:
- 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, 2 chiếc
- Cấp nguồn 6 - 12 V
- Điện trở 4,7 Kom 0,25 W, 2 chiếc.
- Điện trở 100 ohms 0,25 W
- Ngăn chứa pin cho 4 pin AAA hồng Pink
- Hộp từ hộp mực của bảng điều khiển SEGA
- băng keo điện
- dây kết nối
- bảng mạch
- Nút
- dao văn phòng phẩm
- hàn sắt
- Hàn, nhựa thông
- Băng keo hai mặt
Bước 1 Chuẩn bị WG12864B3.
Những người chưa từng làm việc với màn hình trước đây có thể bị hoảng sợ bởi một số lượng lớn các sửa đổi, dường như giống nhau, của màn hình. Tôi sẽ giải thích một chút. Hầu hết các màn hình loại này hoạt động trên chip ks0107 / ks0108. Tất cả các màn hình có thể đượ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
Chúng trông gần giống nhau. Nhưng chúng có các chân kết nối khác nhau. Tôi đã chọn và tôi khuyên bạn, WG12864B3 V2.0, nhưng nếu màn hình xuất hiện khác đi, hoặc bạn chỉ cần có nó trong tay, bạn có thể dễ dàng tìm ra nó bằng cách sử dụng bảng:
Đặc điểm tóm tắt:
Có rất nhiều chương trình kết nối khác nhau trên Internet và mọi thứ dường như đang hoạt động. Có điều là không chỉ có các màn hình khác nhau, mà còn có hai cách để kết nối chúng: nối tiếp và song song. Khi sử dụng kết nối cổng nối tiếp, chúng ta chỉ cần 3 đầu ra của vi điều khiển. Với mức tối thiểu song song là 13. Sự lựa chọn trong trường hợp này là hiển nhiên, Arduino có ít kết luận. Đối với kết nối song song, sơ đồ kết nối như sau:
Đối với một kết nối nối tiếp, mà chúng ta sẽ sử dụng, sơ đồ như sau:
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ở 100 Ohm - + 5V
20 (BLK) - GND
Để điều chỉnh độ tương phản, nên có một chiết áp trên màn hình. Có những màn hình không có nó, nhưng bây giờ nó hiếm khi:
Cần một điện trở 100 ohm để điện áp 5 volt không vô tình đốt điốt điốt.
Bước 2 Làm vụ án.
Đối với trường hợp, lấy hộp từ tiền tố hộp mực Sega. Nếu bạn không tìm thấy hộp này trong tay, bạn có thể sử dụng hộp khác. Điều chính là màn hình và Arduino phù hợp với nó.
Cắt màng trong suốt trên đầu hộp để không còn mảnh nào:
Sau đó, sử dụng một con dao văn thư, cắt ra một cửa sổ có kích thước 37x69 cho màn hình.
Ở phía ngược lại, dọc theo mép của vết cắt, chúng tôi dán một cuộn băng keo hai mặt, tốt nhất là màu đen:
Lấy giấy bảo vệ ra khỏi băng dính và dán màn hình của chúng tôi lên đó:
Từ bên ngoài nó sẽ trông như thế này:
Bên dưới màn hình, cũng trên băng dính hai mặt, chúng tôi gắn chặt Arduino, thực hiện các bước cắt sơ bộ cho cổng USB và ổ cắm điện:
Việc cắt bỏ các ổ cắm Arduino phải được thực hiện ở cả hai mặt của hộp để có thể tự do đóng lại:
Bước 3 Cảm biến nhiệt độ.
Chúng tôi sẽ sử dụng cảm biến nhiệt độ kỹ thuật số DS18B20. Sử dụng chúng, chúng tôi có được độ chính xác đo lường lớn, sai số không quá 0,5 ° C, trong phạm vi nhiệt độ rộng -55 ... + 125 ° C. Ngoài ra, cảm biến kỹ thuật số tự thực hiện tất cả các tính toán và Arduino chỉ đơn giản nhận được các bài đọc làm sẵn. Khi kết nối cảm biến này, đừng quên điện trở kéo lên, 4,7 kΩ, giữa các tiếp điểm DQ và VDD. Một số tùy chọn kết nối cũng có thể. Với sức mạnh bên ngoài, theo tôi là lựa chọn tốt nhất, chúng tôi sẽ sử dụng nó:
Nếu bạn muốn, bạn có thể sử dụng chế độ năng lượng ký sinh:
Hoặc một lựa chọn thực phẩm ký sinh cải tiến:
Với bất kỳ nguồn điện nào, các cảm biến được kết nối song song:
Chúng tôi sẽ đặt cảm biến đo nhiệt độ trên bảng nhỏ cùng với hai nút, chúng tôi sẽ sử dụng để đặt thời gian và ngày của đồng hồ:
Dây chung từ cả hai nút được kết nối với GND, dây từ nút đầu tiên được kết nối với A0, từ giây đến A1.
Gắn chặt vào băng keo hai mặt bên cạnh Arduino:
Cảm biến, được cho là đặt bên ngoài phòng, tốt hơn là chọn trong vỏ bằng kim loại, bụi và chống ẩm:
Tính toán dây có độ dài cần thiết để cảm biến có thể được treo bên ngoài cửa sổ, điều chính là nó không quá 5 mét, nếu bạn cần thêm chiều dài, bạn sẽ cần giảm giá trị của điện trở kéo lên.
Dây từ bus dữ liệu DQ của cả hai cảm biến được kết nối với chân 5 của Arduino.
Vdd - +5 Arduino.
GND - GND Arduino.
Bước 4 Nguồn.
Đối với nguồn điện, bạn có thể sử dụng nguồn điện có điện áp từ 6 đến 12 volt. Ở cuối dây điện, hãy cắm phích cắm phù hợp với ổ cắm điện Arduino:
Hoặc bạn có thể đặt một ngăn chứa pin cho bốn pin AAA AAA, pin hồng Pink trong hộp đựng. Và kết nối dây tích cực từ khoang với Vin Arduino và trừ đi GND.
Bước 5 Chuẩn bị môi trường lập trình.
Trước tiên, bạn cần tải xuống và cài đặt Arduino IDE với trang web chính thức
Và cũng thêm vào hai thư viện cần thiết cho bản phác thảo. OneWire - cần thiết để liên lạc với các cảm biến DS18b20:
U8glib - được sử dụng để hiển thị thông tin trên màn hình:
Tải thư viện. Sau đó, chúng tôi giải nén các tài liệu lưu trữ và di chuyển nội dung của tài liệu lưu trữ vào thư mục của thư viện trên máy chủ thư mục tên lửa nằm trong thư mục có cài đặt Arduino IDE. Bạn cũng có thể thêm các thư viện thông qua Arduino IDE. Để thực hiện việc này, mà không giải nén tài liệu lưu trữ, hãy chạy Arduino IDE, chọn Phác thảo - Kết nối Thư viện từ menu Phác thảo. Ở đầu danh sách thả xuống, chọn mục "Thêm thư viện .Zip". Chúng tôi chỉ ra vị trí của tài liệu lưu trữ được tải xuống. Sau tất cả các bước, bạn cần khởi động lại Arduino IDE.
Bước 6 Chỉnh sửa bản phác thảo.
Cảm biến nhiệt độ hoạt động bằng 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. Không nên thêm các lệnh tìm kiếm cảm biến vào bản phác thảo. Không cần phải tải cảm biến nấc Arduino mỗi lần.Do đó, trước tiên, hãy đặt mọi thứ lại với nhau, điền vào bản phác thảo trong Arduino, nằm trong menu Tệp - Ví dụ - Nhiệt độ Dallas - OneWireSearch. Sau đó 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ỉ và đọc nhiệt độ. Những địa chỉ này cần được ghi lại hoặc chỉ được sao chép ở đâu đó. Bây giờ hãy mở bản phác thảo Ard_Tic_Tak_WG12864B_2_x_Term_Serial và tìm các dòng:
byte addr1 [8] = {0x28, 0xFF, 0x75, 0x4E, 0x87, 0x16, 0x5, 0x63}; // địa chỉ nội bộ
byte addr2 [8] = {0x28, 0xFF, 0xDD, 0x14, 0xB4, 0x16, 0x5, 0x97}; // địa chỉ của cảm biến bên ngoài
Chúng tôi thay thế các địa chỉ tương ứng với vị trí của các cảm biến bằng địa chỉ của chúng tôi.
Đồng hồ của chúng tôi không sử dụng mô-đun RTC (đồng hồ thời gian thực), vì vậy bạn cần điều chỉnh đồng hồ. Để thuận tiện, bỏ ghi chú dòng (giây sẽ xuất hiện trên màn hình):
//u8g.setPrintPos (44, 50); u8g.print (sek); // In giây để kiểm tra tính đúng đắn của khóa học
Đặt thời gian chính xác thông qua màn hình cổng. Để thực hiện việc này, hãy mở màn hình cổng, đợi cho đến khi hoàn thành các phép đo nhiệt độ ban đầu và nhập ngày giờ hiện tại theo định dạng "ngày, tháng, năm, giờ, phút, giây". Không có khoảng trắng, chia số bằng dấu phẩy hoặc dấu chấm.
Nếu đồng hồ vội vàng, hãy thay đổi giá trị thành lớn hơn, tôi khuyên bạn nên thử nghiệm với gia số 100 đơn vị. Nếu độ trễ, giảm giá trị trong dòng:
if (micros () - thịnh hành & gt; 494000) {// thay đổi thành cái khác để điều chỉnh là 500.000
Thực nghiệm xác định số mà đồng hồ đi khá chính xác. Để 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.