Ý tưởng được mượn từ dự án. Màn hình thời tiết ESP8266.
Tôi quyết định mang nó đến với tâm trí.
Các tác vụ sau đã được đặt:
- Cập nhật mã liên quan đến sử dụng phiên bản mới thư viện ArduinoJson.h.
- Viết lại mã bằng hàm millis () thay vì hàm delay (). Rõ ràng là sử dụng độ trễ để đặt tạm dừng giữa việc thay đổi thông tin trên màn hình, không thể thực hiện các điều khiển nút;
- Làm tải bản phác thảo qua Wifi;
- Tránh xa Wemos D1 R2 cồng kềnh trên Wemos D1 mini;
- Bất cứ khi nào có thể Hiển thị;
- Sử dụng hộp đựng được làm sẵn với các lỗ nút cho các thiết bị dựa trên LCD1602;
- Sử dụng các nút 6x6 tiêu chuẩn được hàn vào bảng. Thêm các nút điều khiển đèn nền, nút băng chuyền để thay đổi dữ liệu được hiển thị và nút để buộc cập nhật dữ liệu từ máy chủ.
Các thành phần sau đây đã được sử dụng:
- Vỏ được làm bằng nhựa ABS với một bộ nắp cho các nút;
- Thanh chống nylon 6 + 5 mm nam M3 màu đen, 4 chiếc;
- Hạt nylon M3 màu đen, 4 chiếc;
- Bài viết nylon 6 + 5 mm nam M2 trắng, 3 chiếc;
- Chân đế bằng nylon 6 mm màu trắng, 1 chiếc;
- Đế nylon 8 mm mẹ trắng, 1 chiếc;
- Kệ nylon 10 mm mẹ trắng, 2 chiếc;
- LCD 1602 (I2C), màu vàng;
- Wemos d1 mini;
- Wemos d1 DC-Power khiên;
- Ván bánh 3x7;
- Nút 6x6, cao 7 mm, 3 cái;
- Dây Dupont 10cm mẹ-mẹ, 4 chiếc;
- 24 dây AWG đen và đỏ;
- Dây silicon 20 AWG màu xanh và trắng;
- Điện trở 5 kOhm - 2 chiếc, 10 kOhm - 1 chiếc (đã đến tay);
- Bộ đổi nguồn 9V 1A;
- Keo epoxy hai thành phần.
Các trường hợp được sử dụng có một số lợi thế. Thứ nhất, ngoài màn hình, bảng tách rời tiêu chuẩn 3x7, với các thành phần được cài đặt trên cả hai mặt, hoàn toàn phù hợp với chiều cao. Thứ hai, ở hai đầu nó có các lỗ hình chữ nhật để làm mát. Hóa ra các nút nhảy giữa các lỗ này được cắt hoàn hảo bởi các tệp nhỏ 3 và 4 mm. Nếu bạn cắt một vài bước nhảy và cắt một lỗ hình chữ nhật nhỏ trong trường hợp, thì đầu nối nguồn DC-005 sẽ đi hoàn hảo vào lỗ được hình thành với hình học phức tạp. Ngoài ra, mặt sau của trường hợp này có một lỗ vuông lớn, rõ ràng, được cho là để lắp đặt pin.Thông qua nó, thuận tiện để kết nối một cái gì đó bên trong mà không cần tháo rời vỏ máy. Sau đó, nó có thể được đóng lại bằng thủy tinh hoặc nhựa.
Xây dựng tiến độ:
Đầu tiên, một nguyên mẫu đã được thực hiện trên một chiếc bánh mì.
Sau đó, trường hợp được hoàn thành với một tập tin.
Sau đó, các thành phần chính được hàn và lắp được thực hiện. Chân được uốn cong đặc biệt để các khớp có thể tháo rời phù hợp với chiều cao. Một vài giá đỡ nylon phải được nộp để tất cả các nút có cùng độ cao.
Do đó, mặt trước của bảng với các nút, điện trở và dây như sau:
Do đó, phần bên trong của thiết bị trông như thế này:
Khi lắp ráp, thiết bị trông như thế này:
Vượt qua khó khăn:
- Trong một thời gian dài, tôi không thể hiểu tại sao các nút không hoạt động, mặc dù đồng hồ vạn năng hiển thị rõ ràng 0 khi các nút được nhấn và 4.6 - 5.0 V khi nhấn (tùy thuộc vào nguồn điện). Hóa ra trong các thiết bị Wemos / Lolin, cần phải chỉ ra số GPIO là số pin trong bản phác thảo. Ví dụ, D5 là GPIO14. Vì vậy, đây là pin thứ 14.
const int buttonPin = 14;
- Để hiển thị thời tiết, điều kiện là cần thiết:
currentMillis - trướcMillis == WeatherTime
Thư tín nghiêm ngặt, bởi vì nó phải được thực hiện một lần.
Để thực hiện một yêu cầu đến máy chủ, điều kiện là cần thiết:currentMillis - trướcMillis> = getDataTime
Tuân thủ lỏng lẻo, bởi vì nó được thực thi cho đến khi dữ liệu nhận được cờ của Wap được đặt.
Trên thực tế, điều này không rõ ràng và để hiểu điều này, phải mất khá nhiều thời gian. - Tôi cũng phải dằn vặt bản thân với phản ứng của máy chủ:
Chuỗi thời tiết = root ["thời tiết"] [0] ["chính"]; Mô tả chuỗi = root ["thời tiết"] [0] ["mô tả"];
Zero hoàn toàn không cảm thấy khó chịu. Hóa ra có hai trạm thời tiết ở Moscow và cái thứ hai không phải lúc nào cũng hoạt động (để nhận dữ liệu từ nó, bạn phải chỉ định [1] nếu nó hoạt động).
Kho chứa mã và thư viện được đặt ở đây.