Mục lục:

JAWS: Chỉ là một trạm thời tiết khác: 6 bước
JAWS: Chỉ là một trạm thời tiết khác: 6 bước

Video: JAWS: Chỉ là một trạm thời tiết khác: 6 bước

Video: JAWS: Chỉ là một trạm thời tiết khác: 6 bước
Video: Dấu hiệu phụ nữ yêu thật lòng khi quan hệ? | Cuộc Sống Quanh Ta 2024, Tháng mười một
Anonim
JAWS: Chuẩn bị Nội dung của Chúng tôi Sẵn sàng
JAWS: Chuẩn bị Nội dung của Chúng tôi Sẵn sàng
JAWS: Chuẩn bị nội dung của chúng tôi
JAWS: Chuẩn bị nội dung của chúng tôi
JAWS: Chuẩn bị nội dung của chúng tôi
JAWS: Chuẩn bị nội dung của chúng tôi

Nó khá đơn giản để tạo một JAWS như vậy.

Bạn nhận được các cảm biến của mình, bạn ném chúng lại với nhau trên bảng và bạn bắt đầu sử dụng các thư viện đi kèm với các cảm biến.

Hãy bắt đầu với việc thiết lập chương trình.

Vì tôi nói tiếng Hà Lan (người bản ngữ) nên tất cả dữ liệu và phần lớn các biến số tôi sử dụng đều bằng tiếng Hà Lan. Vì vậy, bây giờ bạn có cơ hội học một ngôn ngữ khác…

Chúng ta muốn gì từ JAWS?

Dễ dàng: chúng tôi muốn xem một màn hình hiển thị cho chúng tôi thời gian thực tế, ngày tháng, chu kỳ (mặt trời mọc, mặt trời lặn, độ dài trong ngày và buổi trưa thiên văn).

Bên cạnh đó, sẽ rất tốt khi xem nhiệt độ bên trong và bên ngoài, độ ẩm tương đối và điểm sương, và áp suất không khí.

Để làm cho mọi thứ dễ dàng hơn, tôi sử dụng centigrades cho nhiệt độ và hPa (= mBar) cho áp suất. Vì vậy, không ai phải tính toán ngược lại từ Fahrenheit hoặc pound trên mỗi khối vuông…

Tại thời điểm này, chỉ có những dữ liệu này…

Trong tương lai, tôi sẽ thêm Tốc độ không khí, hướng gió và lượng mưa.

Ý tưởng là tôi sẽ có một túp lều thời tiết bên ngoài và tất cả dữ liệu sẽ được gửi qua 2,4 GHz đến dàn lạnh.

Bước 3: JAWS: Phần mềm

JAWS: Phần mềm
JAWS: Phần mềm

Để truy cập phần mềm của chúng tôi, hầu hết có thể được tìm thấy với các thư viện hiện có.

Trong JAWS, tôi sử dụng những cái sau:

  1. SPI.h: Thư viện gốc từ Arduino cho giao thức 4 dây. Của cô ấy, nó được sử dụng cho TFT-Shield
  2. Adafruit_GFX.h và MCUfriend_kbv.h: cả hai đều được sử dụng cho đồ họa và màn hình. Những điều này giúp bạn dễ dàng viết văn bản, vẽ đường thẳng và hộp trên màn hình TFT.
  3. dht.h: cho DHT của chúng tôi: thư viện này có thể được sử dụng cho DHT11 (màu xanh lam) và DHT22.
  4. Wire.h: thư viện Arduino giúp giao tiếp nối tiếp dễ dàng. Nó được sử dụng cho đồng hồ và thẻ SD.
  5. SD.h: Một lần nữa là bản gốc Arduino, để ghi và đọc từ thẻ SD.
  6. TimeLord.h: cái này tôi sử dụng để giữ thời gian, tính toán mặt trời lặn hoặc mặt trời mọc từ bất kỳ vị trí địa lý nào. Nó cũng đặt đồng hồ cho DST (mùa hè hoặc mùa đông).

Hãy bắt đầu với đồng hồ.

Khi đọc đồng hồ, bạn cần các biến nhận được từ các thanh ghi khác nhau bên trong mô-đun đồng hồ. Khi chúng ta làm cho chúng không chỉ là những con số, chúng ta có thể sử dụng những dòng sau:

const int DS1307 = 0x68; const char * days = {"Zo.", "Ma.", "Di.", "Wo.", "Do.", "Vr.", "Za."};

const char * months = {"01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11 "," 12 "};

n

Với TimeLord, chúng tôi lấy dữ liệu này làm dữ liệu, cho vị trí của tôi: (Lokeren, Bỉ)

TimeLord Lokeren; thiết lập nó Lokeren. Position (51.096, 3.99); kinh độ và vĩ độ

Lokeren. TimeZone (+ 1 * 60); GMT +1 = +1 x 60 phút

Lokeren. DstRules (3, 4, 10, 4, 60); DST từ tháng thứ 3, tuần thứ 4 đến tháng thứ 10, tuần thứ 4, + 60 phút

int jaar = năm +2000;

byte sunRise = {0, 0, 12, monthday, month, year}; bắt đầu tính toán mỗi ngày từ 00 giờ

byte sunSet = {0, 0, 12, monthday, month, year}; giống như trên

byte maan = {0, 0, 12, ngày tháng, tháng, năm}; giống như trên

pha nổi;

Từ đây, các tính toán được thực hiện.

phase = Lokeren. MoonPhase (maan);

Lokeren. SunRise (sunRise);

Lokeren. SunSet (sunSet);

Lokeren. DST (sunRise);

Lokeren. DST (sunSet);

int ZonOpUur = sunRise [tl_hour];

int ZonOpMin = sunRise [tl_minute];

int ZonOnUur = sunSet [tl_hour];

int ZonOnMin = sunSet [tl_minute];

Đây là ví dụ về cách mọi thứ được tính toán trong TimeLord. Với thư viện này, bạn có (khá) chính xác thời gian hoàng hôn và bình minh.

Ở phần cuối, tôi sẽ đưa toàn bộ chương trình bằng Có thể hướng dẫn này. Nó khá dễ hiểu.

Bước 4: Phần mềm khác…

Phần mềm khác…
Phần mềm khác…
Phần mềm khác…
Phần mềm khác…

Thông tin thêm về phần mềm…

Chúng tôi có ba phần lớn trong phần mềm.

1) Chúng tôi nhận được một số dữ liệu thô từ các cảm biến khác nhau của chúng tôi: từ đồng hồ, DHT và BMP180 của chúng tôi. Đó là đầu vào của chúng tôi.

2) Chúng ta cần dịch dữ liệu từ (1 và 0) sang một thứ có ý nghĩa. Đối với điều này, chúng tôi sử dụng các thư viện và biến của chúng tôi.

3) Chúng tôi muốn đọc và lưu trữ dữ liệu của mình. Đó là kết quả đầu ra của chúng tôi. Để sử dụng ngay lập tức, chúng tôi có LCD-TFT, để sử dụng sau này, chúng tôi có dữ liệu đã lưu trên thẻ SD của mình.

Trong vòng lặp của chúng tôi (), chúng tôi nhận được rất nhiều "GOTO's": chúng tôi chuyển đến các thư viện khác nhau. Chúng tôi lấy dữ liệu của mình từ một trong các cảm biến, lấy dữ liệu và lưu trữ chúng trong (hầu hết) một biến dữ liệu nổi. Chúng tôi chọn tên biến của mình một cách khôn ngoan, không phải với x hoặc y mà với những tên như "tempOutside" hoặc "áp lực" hoặc những thứ tương tự. Để làm cho chúng dễ đọc hơn. OK, điều này làm cho nó nặng hơn một chút khi sử dụng biến và tiêu tốn nhiều bộ nhớ hơn.

Đây là mẹo: khi làm cho các biến của chúng ta hiển thị trên màn hình, bạn chỉ cần đặt chúng vào đúng vị trí.

Hai thư viện được sử dụng ở đây, Adafruit_GFX.h và MCUfriend_kbv.h có một bộ công việc tuyệt vời để sử dụng màu sắc, phông chữ và khả năng vẽ đường. Trong trường hợp đầu tiên, tôi sử dụng màn hình 12864- với các thư viện này, sau đó tôi đã thay đổi điều đó trong màn hình tft. Tất cả những gì tôi phải làm là đặt các hộp, hình chữ nhật và đường thẳng, và đảm bảo rằng dữ liệu xuất hiện ở đúng vị trí. Đối với điều đó, bạn có thể sử dụng setCursor và tft. Write làm lệnh. Dễ dàng thực hiện nó. Màu sắc cũng có thể được đặt làm biến, có rất nhiều ví dụ trong các thư viện đó về cách chọn chúng.

Để ghi trên thẻ SD, chúng ta cũng cần một số thủ thuật đơn giản.

Ví dụ: chúng tôi đọc dữ liệu của mình từ đồng hồ dưới dạng giờ, phút và giây riêng biệt. Nhiệt độ là nhiệt độ DHT và nhiệt độ DHTT, để phân biệt giữa trong nhà hay ngoài trời.

Khi chúng tôi muốn đặt chúng vào thẻ SD, chúng tôi sử dụng một chuỗi: chúng tôi bắt đầu mọi vòng lặp dưới dạng một chuỗi trống:

variablestring = ""; Sau đó, chúng tôi có thể lấp đầy nó với tất cả dữ liệu của mình:

variablestring = variablestring + giờ + ":" + phút + ":" + giây. Điều này cho chuỗi giống như 12:00:00.

Vì chúng tôi viết nó dưới dạng tệp TXT (xem SD.h trên Arduino.cc), đối với các biến tiếp theo, chúng tôi thêm một tab, vì vậy việc nhập nó vào Excel sẽ dễ dàng hơn.

Vì vậy, chúng ta đi đến: variablestring = variablestring + "\ t" + DHT.tempether + "\ t" + DHTT. Nhiệt độ.

Và như thế.

Bước 5: Một số ảnh chụp màn hình…

Một số ảnh chụp màn hình…
Một số ảnh chụp màn hình…
Một số ảnh chụp màn hình…
Một số ảnh chụp màn hình…
Một số ảnh chụp màn hình…
Một số ảnh chụp màn hình…

Để chắc chắn rằng chúng tôi không làm "quá tải" bộ dữ liệu của mình, tôi chỉ viết dữ liệu 10 phút một lần. Mang lại cho chúng tôi 144 mục mỗi ngày, tôi nghĩ không tệ.

Và tất nhiên, bạn có thể tiếp tục xử lý dữ liệu đó: bạn có thể tính giá trị trung bình, bạn có thể tìm kiếm cực đại và cực tiểu, bạn có thể so sánh với những năm trước…

Các văn phòng Met thường tính trung bình ngày và đêm, đối với nhiệt độ: ban ngày bắt đầu từ 8 giờ sáng và kéo dài đến 8 giờ tối.

Đối với gió, áp suất và lượng mưa, các giá trị trung bình được lấy từ nửa đêm đến nửa đêm.

Bước 6: Đã hoàn thành?

Hoàn thành?
Hoàn thành?
Hoàn thành?
Hoàn thành?

Không thực sự… Như tôi đã nói, cuối cùng tôi muốn cảm biến tốc độ gió và hướng gió hoạt động với phần còn lại của JAWS.

Công trình xây dựng nhỏ mà tôi thực hiện có chiều cao khoảng 4m. Nhà khí tượng học nhận được tốc độ gió từ độ cao 10m. Hơi quá cao đối với tôi…

Tôi hy vọng bạn thích đọc này!

Adafruit-GFX được giải thích tại đây:

MCUFRIEND_kbv.h có tại đây:

Thông tin thêm về BMP 120 (giống như BMP085):

Giới thiệu về DHT22:

Đề xuất: