Mục lục:

Trạm thời tiết NaTaLia: Trạm thời tiết sử dụng năng lượng mặt trời Arduino Đã thực hiện đúng cách: 8 bước (có hình ảnh)
Trạm thời tiết NaTaLia: Trạm thời tiết sử dụng năng lượng mặt trời Arduino Đã thực hiện đúng cách: 8 bước (có hình ảnh)

Video: Trạm thời tiết NaTaLia: Trạm thời tiết sử dụng năng lượng mặt trời Arduino Đã thực hiện đúng cách: 8 bước (có hình ảnh)

Video: Trạm thời tiết NaTaLia: Trạm thời tiết sử dụng năng lượng mặt trời Arduino Đã thực hiện đúng cách: 8 bước (có hình ảnh)
Video: Thanh niên lần đầu chưa có kinh nghiệm kiểu#funny #tiktok 2024, Tháng bảy
Anonim
Trạm thời tiết NaTaLia: Trạm thời tiết cung cấp năng lượng mặt trời Arduino đã hoàn thành đúng cách
Trạm thời tiết NaTaLia: Trạm thời tiết cung cấp năng lượng mặt trời Arduino đã hoàn thành đúng cách
Trạm thời tiết NaTaLia: Trạm thời tiết cung cấp năng lượng mặt trời Arduino đã hoàn thành đúng cách
Trạm thời tiết NaTaLia: Trạm thời tiết cung cấp năng lượng mặt trời Arduino đã hoàn thành đúng cách

Sau 1 năm hoạt động thành công trên 2 địa điểm khác nhau, tôi đang chia sẻ kế hoạch dự án trạm thời tiết năng lượng mặt trời của mình và giải thích cách nó phát triển thành một hệ thống thực sự có thể tồn tại trong thời gian dài từ năng lượng mặt trời. Nếu bạn làm theo hướng dẫn của tôi và sử dụng các vật liệu chính xác như đã liệt kê, bạn có thể xây dựng một trạm thời tiết chạy bằng năng lượng mặt trời sẽ hoạt động trong nhiều năm. Trên thực tế, yếu tố duy nhất hạn chế thời gian hoạt động của nó là tuổi thọ của loại pin bạn đang sử dụng.

Bước 1: Vận hành Trạm thời tiết

1, Bộ phát: Hộp gắn ngoài trời với bảng điều khiển năng lượng mặt trời gửi các phép đo từ xa thời tiết (Nhiệt độ, Độ ẩm, Chỉ số nhiệt, Hệ số năng lượng mặt trời) theo định kỳ đến đơn vị thu trong nhà.

2, Bộ thu: Dàn lạnh được làm từ Raspberry PI 2 + Arduino Mega có Bộ thu RF 433 Mhz được kết nối để nhận dữ liệu. Trong thiết lập của tôi, thiết bị này không có bất kỳ chức năng hiển thị LCD cục bộ nào. Nó chạy không cần chú ý. Một chương trình C chính đảm nhận việc nhận dữ liệu đến từ Arduino thông qua chuỗi nối tiếp, sau đó ghi dữ liệu vào tệp văn bản và làm cho dữ liệu nhận được cuối cùng có sẵn thông qua telnet để các thiết bị khác truy vấn nó.

Trạm đang điều khiển đèn trong nhà tôi bằng cách đọc điện trở quang (xác định xem bên ngoài là ngày hay đêm). Trong trường hợp của tôi, máy thu không có đầu nhưng bạn có thể dễ dàng sửa đổi dự án để thêm màn hình LCD. Một trong những thiết bị sử dụng, phân tích cú pháp và hiển thị dữ liệu thời tiết từ trạm là dự án khác của tôi: Ironforge the NetBSD Toaster.

Bước 2: Phiên bản đầu tiên

Phiên bản đầu tiên
Phiên bản đầu tiên
Phiên bản đầu tiên
Phiên bản đầu tiên
Phiên bản đầu tiên
Phiên bản đầu tiên
Phiên bản đầu tiên
Phiên bản đầu tiên

Có rất nhiều dự án năng lượng mặt trời trên mạng nhưng nhiều người trong số họ phạm phải lỗi phổ biến là hệ thống lấy nhiều năng lượng hơn từ pin theo thời gian mà tấm pin mặt trời có thể bổ sung, đặc biệt là trong những tháng mùa đông tối, nhiều mây.

Khi bạn thiết kế một hệ thống sử dụng năng lượng mặt trời, điều duy nhất quan trọng là TIÊU THỤ ĐIỆN, trên tất cả các thành phần: mcu, bộ phát sóng vô tuyến, bộ điều chỉnh điện áp, v.v.

Sử dụng một máy tính lớn như raspberry pi hoặc thiết bị wifi đói như ESP chỉ để thu thập và vận chuyển vài bit dữ liệu thời tiết sẽ là một việc làm quá mức cần thiết nhưng như tôi sẽ trình bày trong hướng dẫn này, ngay cả một bảng Arduino nhỏ cũng vậy.

Cách tốt nhất là luôn đo dòng điện trong quá trình xây dựng của bạn bằng đồng hồ đo hoặc bằng ống soi (hữu ích khi bạn cố gắng đo mức tăng đột biến nhỏ trong việc sử dụng trong quá trình hoạt động trong khoảng thời gian rất ngắn (mili giây)).

Trên hình ảnh đầu tiên, bạn có thể thấy trạm đầu tiên (dựa trên Arduino Nano) của tôi và bo mạch Arduino Barebone Atmega 328P thứ hai.

Phiên bản đầu tiên, mặc dù nó hoạt động hoàn hảo (theo dõi môi trường và gửi dữ liệu qua radio) nhưng tiêu thụ điện năng quá cao ~ 46mA và cạn kiệt pin trong vài tuần.

Tất cả các phiên bản đang sử dụng pin sau:

18650 6000mAh Pin sạc Li-ion được bảo vệ được tích hợp Bảng bảo vệ

CẬP NHẬT các pin ScamFire này. Mặc dù đây là một thiết bị có thể hướng dẫn khá cũ nhưng tôi vẫn cảm thấy buộc phải sửa nó do pin không có thật này. KHÔNG mua loại pin đã đề cập, hãy tự nghiên cứu về các loại pin LION / LIPO khác, tất cả các loại pin 3.7V sẽ hoạt động với dự án này.

Cuối cùng, tôi đã có thời gian để gỡ pin ScamFire để xem dung lượng thực của nó là bao nhiêu. Do đó chúng ta sẽ chạy 2 phép tính song song với công suất thực và công suất được "quảng cáo".

Trước hết, đó là một điều rằng pin này là giả và không có gì họ tuyên bố về nó là thật, các phiên bản mới thậm chí còn tệ hơn họ đã sao chép hàng giả với việc bỏ đi mạch bảo vệ 2 xu để không có gì ngăn chúng phóng điện xuống 0.

Một bài viết nhỏ về pin LION / LIPO:

TLDR:

Điều này có nghĩa là điện áp tối đa của tế bào là 4,2v và điện áp "danh định" (trung bình) là 3,7V.

Ví dụ, đây là thông tin về điện áp của pin 'cổ điển' 3,7V / 4,2V. Điện áp bắt đầu ở mức tối đa 4,2 và nhanh chóng giảm xuống khoảng 3,7V trong phần lớn thời lượng pin. Khi bạn chạm 3,4V, pin sẽ chết và ở mức 3,0V, mạch cắt sẽ ngắt kết nối pin.

Các phép đo của tôi bằng cách sử dụng tải giả:

Pin sạc: 4.1V

Cutoff đặt thành: 3.4V

Tải mô phỏng: 0,15A (thiết bị của tôi có một chút vấn đề với việc xuống thấp hơn mức này.)

Dung lượng đo được: 0,77Ah cung cấp cho nó một 0,8 Ah vô cớ là 800mAh thay vì 6000mAh được quảng cáo!

Vì pin này thậm chí không có mạch bảo vệ nên tôi có thể thoải mái hạ thấp hơn nhưng ở mức 3,4V sau 10 phút nó đã sập xuống 3,0V.

Do đó, với các phép tính đơn giản, pin đang cung cấp:

Lý thuyết

Điện áp pin = 3.7V

Công suất = 3,7x6000 = 22000 mWh

Thực

Điện áp pin = 3.7VPower = 3.7x800 = 2960 mWh

Phiên bản: 0.1 ARDUINO NANO DỰA

Ngay cả với thư viện LowPower, Arduino nano tiêu thụ ~ 16 mA (ở chế độ ngủ) -> FAIL.

Lý thuyết

Pavg = VxIavg = 5Vx16mA = 80 mW

Thời lượng pin = 22000/80 = 275 giờ = 11 ngày xấp xỉ

RealPavg = VxIavg = 5Vx16mA = 80 mW

Thời lượng pin = 800/80 = 10 giờ

Phiên bản: 0.2 Atmega 328P Barebone

Năng lượng tiêu thụ bởi ATmega328 phụ thuộc rất nhiều vào những gì bạn đang làm với nó. Chỉ cần ngồi ở đó ở trạng thái mặc định, nó có thể sử dụng 16mA @ 5V trong khi chạy ở tốc độ 16MHz.

Khi ATmega328P ở Chế độ hoạt động, nó sẽ liên tục thực hiện vài triệu lệnh mỗi giây. Hơn nữa, các thiết bị ngoại vi trên bo mạch Bộ chuyển đổi tương tự sang kỹ thuật số (ADC), Giao diện ngoại vi nối tiếp (SPI), Bộ hẹn giờ 0, 1, 2, Giao diện hai dây (I2C), USART, Bộ định thời gian giám sát (WDT) và Phát hiện Brown-out (BOD) tiêu thụ điện năng.

Để tiết kiệm điện, ATmega328P MCU hỗ trợ một số chế độ ngủ và có thể tắt các thiết bị ngoại vi không sử dụng. Các chế độ ngủ khác nhau ở những bộ phận vẫn hoạt động, theo thời lượng ngủ và thời gian cần thiết để thức dậy (thời gian thức dậy). Chế độ ngủ và các thiết bị ngoại vi đang hoạt động có thể được điều khiển bằng thư viện nguồn và chế độ ngủ AVR hoặc ngắn gọn hơn là với thư viện Công suất thấp tuyệt vời.

Thư viện Low-Power rất dễ sử dụng nhưng rất mạnh mẽ. Câu lệnh LowPower.powerDown (SLEEP_8S, ADC_OFF, BOD_OFF); đặt MCU trong SLEEP_MODE_PWR_DOWN trong 16 mili giây đến 8 giây, tùy thuộc vào đối số đầu tiên. Nó vô hiệu hóa ADC và BOD. Chế độ ngủ tắt nguồn có nghĩa là tất cả các chức năng của chip sẽ bị vô hiệu hóa cho đến lần ngắt tiếp theo. Hơn nữa, bộ dao động bên ngoài bị dừng lại. Chỉ ngắt mức trên INT1 và INT2, ngắt thay đổi chân, khớp địa chỉ TWI / I2C hoặc WDT, nếu được bật, mới có thể đánh thức MCU. Vì vậy, với câu lệnh duy nhất, bạn sẽ giảm thiểu tiêu thụ năng lượng. Đối với đèn LED nhỏ 3,3 V Pro không có đèn LED nguồn và không có bộ điều chỉnh (xem bên dưới) đang chạy tuyên bố, mức tiêu thụ năng lượng là 4,5 μA. Điều đó rất gần với những gì được đề cập trong biểu dữ liệu ATmega328P cho chế độ ngủ khi tắt nguồn với WDT được kích hoạt 4,2 μA (biểu dữ liệu được liên kết trong các nguồn). Do đó, tôi khá tự tin rằng chức năng powerDown tắt mọi thứ có thể xảy ra một cách hợp lý. Với câu lệnh LowPower.powerDown (SLEEP_FOREVER, ADC_OFF, BOD_OFF);, WDT sẽ bị vô hiệu hóa và bạn sẽ không thức dậy cho đến khi một ngắt được kích hoạt.

Vì vậy, với thiết lập barebone, chúng ta có thể đặt chip vào chế độ ngủ trong 5 phút, trong khi nó tiêu thụ rất ít năng lượng (0,04 mA nếu không có thiết bị ngoại vi). Tuy nhiên đây chỉ là chip Atmega 328P với bộ dao động tinh thể và không có gì khác, bộ tăng điện áp được sử dụng trong cấu hình này để tăng điện áp pin từ 3,7V -> 5,0 V cũng tiêu thụ 0,01 mA.

Một mức tiêu hao điện áp không đổi là điện trở quang được thêm vào làm tăng mức tiêu thụ ở chế độ nghỉ lên 1 mA tổng thể (điều này bao gồm tất cả các thành phần).

Công thức để tính toán mức tiêu thụ chính xác cho thiết bị ở cả chế độ ngủ và thức là:

Iavg = (Ton * Ion + Tsleep * Isleep) / (Tấn + Tsleep)

Ion = 13mA

Điều này chủ yếu đến từ máy phát RF433 Mhz:

Hệ thống điều khiển:

Điện áp làm việc: 3V - 12V cho tối đa. Nguồn điện sử dụng 12V Dòng điện làm việc: tối đa Tối đa dưới 40mA và tối thiểu 9m Chế độ cộng hưởng: (SAW) Chế độ điều chế: ASK Tần số làm việc: Eve 315MHz hoặc 433MHz Công suất truyền: 25mW (315MHz tại 12V) Lỗi tần số: + 150kHz (tối đa) Vận tốc: nhỏ hơn 10Kbps

Isleep = 1mA

Sẽ ít hơn đáng kể nếu không có điện trở quang.

Thời gian Trunon Tấn = 250 mS = 0,25s

Thời gian ngủ Tsleep = 5 phút = 300 giây

Iavg = (Ton * Ion + Tsleep * Isleep) / (Tấn + Tsleep)

Iavg = (0,25 giây * 13mA + 300 giây * 1mA) / (0,25 giây + 300 giây)

Iavg = 1,26mA

Pavg = VxIavg = 5Vx1,26mA = 6 mW

Lý thuyết

Tuổi thọ pin = 22000mWh / 6mW = 3666 giờ = khoảng 152 ngày

Thực

Tuổi thọ pin = 800mWh / 6mW = 133 giờ = 5,5 ngày xấp xỉ

Mặc dù đây vẫn là dòng UltraFire tốt hơn những gì tôi sử dụng ban đầu, bạn có thể thấy rằng nếu không có bảng điều khiển năng lượng mặt trời hoặc mức tiêu thụ thấp 1mA, dự án này sẽ không tồn tại lâu.

Hãy thoải mái xây dựng nhà ga và ghi lại những phát hiện và tính toán của bạn vào phần bình luận và tôi sẽ cập nhật bài viết. Tôi cũng đánh giá cao kết quả với các MCU khác nhau và bộ chuyển đổi tăng cường.

Bước 3: Xây dựng một Trạm thời tiết thành công

Xây dựng một trạm thời tiết thành công
Xây dựng một trạm thời tiết thành công
Xây dựng một trạm thời tiết thành công
Xây dựng một trạm thời tiết thành công
Xây dựng một trạm thời tiết thành công
Xây dựng một trạm thời tiết thành công
Xây dựng một trạm thời tiết thành công
Xây dựng một trạm thời tiết thành công

Mặc dù đây là phiên bản thành công đầu tiên, nhưng nó có một chút lỗi về hình ảnh và tôi không thể làm lại những điều đó vì các đài đã được triển khai. Hai bộ tăng điện áp hiển thị trên hình là có thể sử dụng được tại thời điểm viết bài cho các ứng dụng tạo mô hình hàng không và các ứng dụng khác. Khi tôi thiết kế lại trạm của mình, tôi đã nghĩ đến việc có được một bảng nâng cấp điện áp nhỏ hơn và hiệu quả hơn, tuy nhiên kích thước nhỏ hơn chắc chắn không có nghĩa là nó hiệu quả hơn.

Mô-đun nhỏ mới trên hình thậm chí không có đèn chỉ báo thực sự đã tự tiêu hết 3mA (* FAIL *), vì vậy tôi vẫn ở lại với bảng cũ của mình:

Điều khiển PFM DC-DC USB 0.9V-5V đến 5V dc Mô-đun cấp nguồn tăng cường bước lên

Tại thời điểm viết bài, mô-đun này vẫn có sẵn trên Ebay với giá 99 xu nhưng nếu bạn quyết định sử dụng một bộ tăng cường khác, hãy luôn kiểm tra mức tiêu thụ điện ở chế độ chờ. Với một bộ tăng cường chất lượng tốt, nó không được nhiều hơn của tôi (0,01 mA), mặc dù đèn LED nhỏ trên bo mạch phải được khử hàn.

Bước 4: Danh sách phần cứng

Danh sách phần cứng
Danh sách phần cứng
  • 18650 6000mAh Pin sạc Li-ion được bảo vệ được tích hợp Bảng bảo vệ
  • Atmega 328P16M 5V với bộ nạp khởi động
  • Adafruit DC Boarduino (tương thích Arduino) Kit (w / ATmega328) <đây sẽ là một khoản đầu tư tốt nếu bạn đang thực hiện các dự án xương sống trong tương lai
  • Ảnh chụp Điện trở nhạy sáng Điện trở quang Điện trở quang điện trở 5mm GL5539
  • 1A 1000V Diode 1N4007 IN4007 DO-41 Diode chỉnh lưu
  • Điều khiển PFM DC-DC USB 0.9V-5V đến 5V dc Mô-đun cấp nguồn tăng cường bước lên
  • Hệ thống mô-đun bảng điều khiển năng lượng mặt trời nhỏ 1.6W 5.5V 266mA Bộ sạc pin Epoxy DIY
  • TP405 5V Mini USB 1A Mô-đun sạc bảng sạc pin Lithium
  • Bộ liên kết bộ thu và phát RF 433Mhz cho điều khiển từ xa Arduino / ARM / MC <Bộ, chứa cả bộ phát và bộ thu tín hiệu
  • Hộp nối bộ bảo vệ công tắc IP65 Vỏ chống thấm ngoài trời 150x110x70mm
  • Mô-đun cảm biến nhiệt độ và độ ẩm tương đối DHT22 mới cho Arduino
  • 1x220 Ohm, 2x10KOhm, 1xLED, 1xMini Switch, 1x1N4007diode
  • Bộ cộng hưởng / dao động gốm Adafruit 16 MHz [ADA1873]
  • Arduino UNO / Mega vv cho trạm thu + Raspberry PI 1/2/3
  • Hộp nhựa acrylic trong suốt (tùy chọn)

Bạn có thể tìm thấy tất cả những thứ này trên Ebay, tôi không muốn quảng bá bất kỳ người bán nào bằng cách liên kết đến các trang của họ và dù sao thì các liên kết này cũng sẽ chết trong tương lai.

Ghi chú cho danh sách phần cứng:

Chỉ trong trường hợp bạn đặt Atmega bằng cách nào đó bằng cách lập trình, hãy mua thêm chúng, tương tự như vậy đối với bộ tăng điện áp và bộ điều khiển sạc năng lượng mặt trời.

Bộ sạc năng lượng mặt trời chứa 2 đèn LED màu nhỏ chỉ được bật trong trường hợp sạc bằng năng lượng mặt trời và cho biết (màu đỏ-> đang sạc, màu xanh lam-> trạng thái đã sạc đầy). Những thứ này cũng có thể không được bán. Thay vào đó, nó cung cấp thêm một chút nước cho pin trong quá trình sạc.

Như bạn thấy không có người giữ pin nào trong danh sách của tôi. Tại sao? Bởi vì họ không đáng tin cậy. Tôi đã gặp vô số lần khi pin bị tuột ra khỏi ngăn chứa và mất kết nối. Đặc biệt nếu thiết bị của bạn được gắn trên một cột đĩa cao như của tôi, hãy mở cho mọi điều kiện thời tiết khắc nghiệt. Tôi thậm chí đã kéo pin vào ngăn chứa bằng 2 khóa kéo và nó vẫn xoay sở để di chuyển ra ngoài. Đừng làm như vậy, chỉ cần tháo lớp phủ bên ngoài khỏi pin và hàn dây trực tiếp vào đáy pin, có chứa mạch bảo vệ quá tải (không bỏ qua lớp bảo vệ). Giá đỡ pin chỉ có thể được sử dụng để giữ pin tại chỗ trong thiết bị.

Bảng sạc pin Lithium TP405 5V Mini USB 1A: rất tiếc bảng này không bao gồm tính năng bảo vệ dòng điện ngược cho bảng điều khiển năng lượng mặt trời, vì điều này bạn sẽ cần thêm 1 diode được đặt giữa một chân của bảng điều khiển năng lượng mặt trời và mạch sạc để ngăn dòng điện cố. chảy ngược trở lại bảng điều khiển năng lượng mặt trời vào ban đêm.

Bước 5: Lắp ráp

cuộc họp
cuộc họp
cuộc họp
cuộc họp
cuộc họp
cuộc họp

Bảng này chứa tương đối ít thành phần và các điểm đánh dấu trên bảng khá đơn giản.

Đảm bảo rằng bạn KHÔNG lắp Atmega328P sai cách (có thể làm nóng và đóng cục chip, cũng có thể phá hủy bộ tăng điện áp).

Trong thiết lập này, con chip hướng xuống dưới (lỗ chữ U nhỏ đánh dấu mã PIN1). Tất cả các thành phần khác phải rõ ràng.

Sử dụng cáp được bảo vệ (ví dụ: Cáp âm thanh từ CDrom sẽ hoạt động tốt) cho LDR. Trong một số trường hợp (qua nhiều tuần thử nghiệm), hóa ra nó đang can thiệp vào việc truyền tín hiệu vô tuyến. Đây là một trong những lỗi khó khắc phục, vì vậy nếu bạn không muốn gặp sự cố, chỉ cần sử dụng cáp được bảo vệ, hãy kết thúc câu chuyện.

Đèn LED: Đèn LED ở dưới cùng của hộp ban đầu được thêm vào để nhấp nháy khi có sóng vô tuyến đi nhưng sau này tôi đã coi nó như lãng phí năng lượng và nó chỉ nhấp nháy 3 lần trong quá trình khởi động.

TP: là điểm kiểm tra để đo dòng điện cho toàn mạch.

DHT22: Đừng mua DHT11 giá rẻ, hãy chi thêm 50 xu để mua DHT22 màu trắng cũng có thể đo nhiệt độ âm.

Bước 6: Thiết kế vỏ máy

Thiết kế trường hợp
Thiết kế trường hợp
Thiết kế trường hợp
Thiết kế trường hợp
Thiết kế trường hợp
Thiết kế trường hợp

Mặc dù hơi quá mức cần thiết, một khối lập phương in 3D (weather_cube) đã được tạo ra để giữ cảm biến nhiệt độ DHT22 tại chỗ. Khối lập phương được dán vào đáy hộp IP, chỉ có 1 lỗ để không khí đi tới cảm biến. Tôi đã thêm một tấm lưới ở lỗ để chống ong, ong bắp cày và những con ruồi nhỏ khác.

Một hộp bên ngoài có thể được sử dụng tùy chọn để làm cho ga chống thấm nước tốt hơn trong trường hợp bạn đang lắp nó trên một cột đĩa ở ngoài trời.

Ý tưởng cho 1 tính năng hữu ích: thêm một tấm mái kim loại lớn 1-2cms trên đầu hộp để cung cấp bóng râm từ mặt trời vào mùa hè, mặc dù điều này cũng có thể lấy đi ánh sáng mặt trời hữu ích của chúng ta khỏi bảng điều khiển. Bạn có thể đưa ra một thiết kế phân tách bảng điều khiển và hộp (để bảng điều khiển dưới ánh nắng mặt trời, hộp trong bóng tối).

Trên hình ảnh: một trong những trạm được đưa ra khỏi môi trường làm việc sau 1 năm, điện áp ắc quy vẫn ở mức 3,9V tuyệt đẹp, không có nước làm hỏng bất kỳ bộ phận nào của hộp mặc dù tấm lưới tôi dán ở dưới cùng của khối lập phương đã bị xé toạc. Lý do trạm cần được bảo dưỡng là lỗi kết nối trên đầu nối LDR, mặc dù cáp jumper dường như vẫn còn nguyên, kết nối đã bị hỏng do đó chân đôi khi bị nổi, cung cấp các đầu đọc tương tự LDR kém. Gợi ý: nếu bạn sử dụng dây nhảy PC tiêu chuẩn, hãy làm nóng tất cả chúng sau khi trạm hoạt động hoàn hảo để tránh điều này.

Bước 7: Phần mềm

Phần mềm
Phần mềm

Mã phần mềm sẽ yêu cầu 3 thư viện bên ngoài (LowPower, DHT, VirtualWire). Gần đây, tôi gặp sự cố khi tìm kiếm một số trong số chúng dễ dàng trực tuyến vì vậy tôi đính kèm chúng trong một tệp ZIP riêng biệt. Bất kể bạn đang sử dụng hệ điều hành Linux / Windows nào, chỉ cần tìm thư mục thư viện Arduino IDE của bạn và giải nén chúng ở đó.

Chỉ cần một lưu ý, bất kể tôi đã khuyên không nên mua DHT11, nếu bạn sử dụng sai loại cảm biến DHT, chương trình sẽ bị treo vĩnh viễn ở phần đầu ở phần khởi động (bạn thậm chí sẽ không thấy đèn led khởi động nhấp nháy 3 lần).

Mã vòng lặp chính rất đơn giản, đầu tiên nó đọc các giá trị môi trường (nhiệt độ, chỉ số nhiệt, độ ẩm, năng lượng mặt trời), gửi chúng qua radio sau đó sử dụng thư viện năng lượng thấp để đưa Arduino vào trạng thái ngủ trong 5 phút.

Tôi nhận thấy rằng việc hạ thấp tốc độ truyền sẽ làm tăng độ ổn định của truyền dẫn vô tuyến. Trạm đang gửi một lượng dữ liệu rất nhỏ, 300 bps là quá đủ. Cũng đừng quên rằng máy phát chỉ hoạt động từ khoảng. 4.8V, trong phiên bản 3.3V trong tương lai, điều này có thể dẫn đến chất lượng truyền tải thậm chí còn tệ hơn (gửi dữ liệu xuyên tường và các chướng ngại vật khác). Tôi gặp sự cố khi sử dụng Arduino Mega gắn với Raspberry PI 2 cấp nguồn cho Mega từ PI, mà tôi không nhận được bất kỳ đường truyền nào. Giải pháp là cấp nguồn cho Mega từ nguồn cung cấp 12V bên ngoài riêng biệt.

Bước 8: Phiên bản 2 (Dựa trên ESP32)

Phiên bản 2 (Dựa trên ESP32)
Phiên bản 2 (Dựa trên ESP32)
Phiên bản 2 (Dựa trên ESP32)
Phiên bản 2 (Dựa trên ESP32)
Phiên bản 2 (Dựa trên ESP32)
Phiên bản 2 (Dựa trên ESP32)

Mọi thứ có thể phá vỡ sẽ vỡ ra để trích dẫn Murphy già tốt và cuối cùng sau nhiều năm các nhà ga đã thất bại vì những cách bí ẩn. Một người bắt đầu gửi dữ liệu mặt trời vô nghĩa lên đến hàng chục nghìn, điều này là không thể do: Bảng Arduino chứa 6 kênh (8 kênh trên Mini và Nano, 16 trên Mega), bộ chuyển đổi tương tự sang kỹ thuật số 10 bit. Điều này có nghĩa là nó sẽ ánh xạ điện áp đầu vào từ 0 đến 5 volt thành các giá trị nguyên từ 0 đến 1023. Vì vậy, sau khi thay thế radio, LDR và lập trình lại Atmega 328P nhiều lần, tôi đã từ bỏ và quyết định đã đến lúc đổi mới. Hãy bắt đầu ESP32.

Bo mạch mà tôi đã sử dụng là: ESP32 WEMOS LOLIN32 Lite V1.0.0 Wifi & Bluetooth Card Rev1 MicroPython 4MB FLASH

wiki.wemos.cc/products:lolin32:lolin32_lit…

Bộ vi điều khiển ESP-32

Điện áp hoạt động 3.3V Chân vào / ra kỹ thuật số 19 Chân đầu vào tương tự 6 Tốc độ đồng hồ (Tối đa) 240Mhz Đèn flash 4M byte Chiều dài 5mm Chiều rộng 2,54mm Trọng lượng 4g

Không giống như trong hình, không có logo LOLIN (hàng giả từ Trung Quốc). Điều ngạc nhiên thú vị đầu tiên của tôi là sơ đồ chân được in trên bảng khớp với sơ đồ chân của Arduino! Sau khi đối phó với rất nhiều bảng noname, nơi tôi đã phải tìm kiếm sơ đồ chân cả ngày dài chết mệt vì mắc lỗi cuối cùng một bảng mà sơ đồ chân thẳng về phía trước WoW!

Tuy nhiên đây là mặt tối của câu chuyện:

Ban đầu tôi đã kết nối LDR với A15 là chân 12 vì việc gắn các chân với nhau dễ dàng hơn. Sau đó, tôi đã có 4095 lần đọc (đó là mức tối đa bạn có thể nhận được với AnlogRead trên ESP32) khiến tôi phát điên vì toàn bộ lý do tại sao tôi xây dựng lại trạm là các đầu đọc LDR bị hỏng từ cái cũ (DHT vẫn hoạt động tốt). Vì vậy, nó chỉ ra rằng:

Esp 32 tích hợp hai thanh ghi ACD 12-bit. ADC1 có 8 kênh được gắn vào GPIO 32-39 và ADC2 có 10 kênh ở chân khác. Vấn đề là ESP32 sử dụng ADC2 để quản lý các chức năng wifi, vì vậy nếu bạn sử dụng Wifi, bạn không thể sử dụng đăng ký đó. API trình điều khiển ADC hỗ trợ ADC1 (8 kênh, gắn với GPIO 32 - 39) và ADC2 (10 kênh, gắn với GPIO 0, 2, 4, 12 - 15 và 25 - 27). Tuy nhiên, việc sử dụng ADC2 có một số hạn chế đối với ứng dụng:

Trình điều khiển Wi-Fi sử dụng ADC2. Do đó ứng dụng chỉ có thể sử dụng ADC2 khi trình điều khiển Wi-Fi chưa khởi động. Một số chân ADC2 được sử dụng làm chân đóng đai (GPIO 0, 2, 15) do đó không thể được sử dụng tự do. Đó là trường hợp trong Bộ công cụ phát triển chính thức sau:

Vì vậy, kết nối LDR từ chân 12 đến A0 là VP đã giải quyết mọi thứ nhưng tôi không hiểu tại sao họ thậm chí còn liệt kê các chân ADC2 là có sẵn cho các nhà sản xuất. Có bao nhiêu người theo sở thích khác đã lãng phí hàng tấn thời gian cho đến khi tìm ra điều này? Ít nhất hãy đánh dấu các chân không sử dụng được bằng màu đỏ hoặc thứ gì đó hoặc không đề cập đến nó trong sách hướng dẫn để các nhà sản xuất khác chỉ có thể tìm hiểu về chúng nếu họ thực sự cần chúng. Toàn bộ mục đích của ESP32 là sử dụng nó với WIFI, mọi người đều sử dụng nó với WIFI.

Khởi đầu tốt cách thiết lập Arduino IDE cho bảng này:

Mặc dù tôi đã đặt nó trong mã ở đây nhưng nó lại xảy ra một lần nữa:

Mã này có thể không được biên dịch cho các kiểu ESP32 khác với Weemos LOLIN 32!

Cài đặt bản dựng: -Sử dụng upload / serial: 115200 -Sử dụng CPU / ram: 240Mhz (Wifi | BT) -Sử dụng flash freq: 80 Mhz

Có rất nhiều trạm thời tiết dựa trên ESP32 trên mạng, chúng có nhiều điểm chung hơn so với phiên bản 1 của tôi với chip barebone vì chúng dễ thiết lập hơn, bạn không cần lập trình viên chỉ cần cắm thiết bị vào usb và lập trình nó và Chế độ ngủ sâu rất tuyệt vời khi chạy pin trong thời gian dài. Ngay lập tức, đây là điều đầu tiên tôi đã thử nghiệm ngay cả trước khi hàn vào các chân đột phá vì như tôi đã lưu ý nhiều nơi trong dự án này, điều quan trọng nhất là mức tiêu thụ điện năng và với pin hiện tại (giả) và bảng điều khiển năng lượng mặt trời nhỏ ở chế độ chờ điện thực sự không thể vượt quá 1-2 triệu vì nếu không thì dự án sẽ không thể tự duy trì lâu dài.

Một điều bất ngờ thú vị nữa là chế độ ngủ sâu lại hoạt động như quảng cáo. Trong giấc ngủ sâu, dòng điện quá thấp đến mức chiếc đồng hồ đa năng rẻ tiền của tôi thậm chí không thể đo được (hoạt động đối với tôi).

Trong quá trình gửi dữ liệu, dòng điện vào khoảng 80mA (nhiều hơn khoảng 5 lần so với khi Atmega 328P thức dậy và truyền), tuy nhiên đừng quên rằng với V1, mức tiêu hao điện trung bình 1mA trên LDR ở chế độ ngủ (điều này cũng phụ thuộc vào mức độ ánh sáng và đi từ 0,5mA - 1mA) hiện đã biến mất.

Bây giờ pin UltraFire bị gỡ lỗi nếu bạn sử dụng cùng một loại pin, đây là những gì bạn có thể mong đợi:

Iavg = (Ton * Ion + Tsleep * Isleep) / (Tấn + Tsleep)

Iavg = (2 giây * 80mA + 300 giây * 0,01mA) / (2 giây + 300 giây) Iavg = 0,5mA

Pavg = VxIavg = 5Vx0,5mA = 2,5 mW

Lý thuyết

Tuổi thọ pin = 22000mWh / 2,5mW = 8800 giờ = khoảng 366 ngày

Thực

Tuổi thọ pin = 800mWh / 2,5mW = 320 giờ = khoảng 13 ngày

Tôi không có phạm vi để đo chính xác thời gian bật đèn, nhưng với các chỉnh sửa của tôi, nó chỉ xuất hiện trong khoảng 2 giây.

Tôi không muốn dành cả buổi chiều cho việc mã hóa mọi thứ tùy chỉnh vì vậy tôi đã tìm kiếm một số trạm thời tiết khác trên Bảng hướng dẫn dựa trên ESP32 để xem họ làm gì để lưu trữ dữ liệu. Đáng buồn thay, họ đang sử dụng các trang web không linh hoạt và hạn chế, chẳng hạn như weathercloud. Vì tôi không phải là fan của "đám mây" và mã của họ đã bị hỏng từ lâu vì trang web đã thay đổi API kể từ đó, nên tôi đã mất 10 phút để thực hiện một giải pháp tùy chỉnh vì nó không khó như người ta nghĩ. Bắt đầu nào!

Trước hết, không có pic bảng mạch riêng nào cho dự án này, bởi vì nó sử dụng các thành phần giống hệt nhau (xin lỗi vì nó được hàn trong bức tranh breadboard xấu xí) như V1 với sự khác biệt là mọi thứ đều chạy ra 3,3V. DHT nối nhịp với VCC, LDR giảm với 10k. Vấn đề mà người ta có thể thấy với pin 18650 như hàng giả Trung Quốc của tôi (6500 mAh ultra sun fire lol: D) là chúng bắt đầu tắt đường cong phóng điện từ khoảng 4.1V mới và đi cho đến khi mạch cắt của chúng hoạt động để ngăn chặn sự hư hại của tế bào (những người đủ may mắn để có được nó). Điều này không tốt cho chúng tôi như đầu vào 3.3V. Mặc dù bảng LOLIN này có đầu nối pin lithium và mạch sạc trong dự án này, tôi muốn tân trang lại hầu hết những gì có thể từ trạm cũ, vì vậy với 18650 cũ, bạn KHÔNG THỂ sử dụng bộ sạc tích hợp này. Giải pháp rất đơn giản: Tôi cắt cáp micro USB được hàn vào 5V ra khỏi bộ tăng áp cũ và vấn đề đã được giải quyết, vì bo mạch trên microUSB có bộ điều chỉnh.

Vì vậy, sự khác biệt giữa phiên bản cũ và mới là ở pin cũ cung cấp 3.7V -> boost lên 5V -> ardu chạy trên 5V -> tất cả các thành phần chạy trên 5V.

Trong cái mới: pin cung cấp 3.7V -> tăng lên 5V -> được điều chỉnh thông qua reg tích hợp trên ESP32 -> tất cả các thành phần chạy trên 3.3V.

Phần mềm khôn ngoan, chúng ta cũng sẽ cần một thư viện DHT khác, DHT của Arduino không tương thích với ESP. Những gì chúng ta cần được gọi là DHT ESP.

Tôi bắt đầu dựa vào mã của mình xung quanh ví dụ DHT mà mã này cung cấp. Hoạt động của mã là:

1, Lấy dữ liệu môi trường từ DHT + Dữ liệu mặt trời từ tế bào quang

2, Kết nối wifi bằng IP tĩnh

3, ĐĂNG dữ liệu lên tập lệnh php

4, Đi ngủ trong 10 phút

Như bạn sẽ thấy, tôi đã điều chỉnh mã cho hiệu quả để giảm thiểu tuyệt đối thời gian thức dậy vì nó tiêu hao năng lượng gấp 5 lần so với dự án cũ khi nó được bật. Tôi đã làm điều này như thế nào? Trước hết, nếu có BẤT KỲ loại lỗi nào, hàm getTempe Heat () sẽ trả về giá trị false (có nghĩa là 10 phút sẽ ngủ lại). Điều này có thể giống như cảm biến DHT không thể khởi động hoặc kết nối wifi không khả dụng. Như bạn nhận thấy vòng lặp while () thông thường để tiếp tục thử liên kết wifi mãi mãi cũng bị xóa nhưng cần để độ trễ 1 giây ở đó nếu không nó sẽ không luôn kết nối và nó cũng phụ thuộc vào loại AP, tải, v.v. tốc độ của nó như thế nào sẽ xảy ra, với 0,5 giây tôi có hành vi không nhất quán (đôi khi nó không thể kết nối). Nếu bất cứ ai biết cách tốt hơn để làm điều này, xin vui lòng để lại nó trong các ý kiến. Chỉ khi dữ liệu DHT được đọc VÀ kết nối wifi được kích hoạt, nó sẽ cố gắng đăng dữ liệu lên script trên máy chủ web. Tất cả các loại chức năng lãng phí thời gian như Serial.println () cũng bị vô hiệu hóa ở chế độ hoạt động bình thường. Là máy chủ, tôi cũng sử dụng IP để tránh tra cứu DNS không cần thiết, trong mã của tôi, cả cổng mặc định và máy chủ dns đều được đặt thành 0.0.0.0.

Tôi không hiểu tại sao rất khó để tạo API của riêng bạn khi tất cả những gì cần làm là:

sprintf (phản hồi, "temp =% d & hum =% d & hi =% d & sol =% d", temp, hum, hi, sol);

int httpResponseCode = http. POST (phản hồi);

Bạn đặt mã php nhỏ này vào bất kỳ pi raspberry nào và bạn có thể thực hiện các tác vụ hệ thống () ngay lập tức dựa trên phép đo từ xa như bật quạt hoặc bật đèn nếu trời đủ tối.

Một số lưu ý về mã:

WiFi.config (staticIP, cổng vào, mạng con, dns); // PHẢI sau khi Wifi bắt đầu thật ngu ngốc…

WiFi.mode (WIFI_STA); // PHẢI nếu không nó cũng sẽ tạo ra một AP không mong muốn

Vâng, bây giờ bạn biết. Ngoài ra, thứ tự của các cấu hình IP có thể thay đổi qua các nền tảng, trước tiên tôi đã thử các ví dụ khác trong đó các giá trị cổng và mạng con được chuyển đổi. Tại sao phải đặt IP tĩnh? Rõ ràng là, nếu bạn có một hộp chuyên dụng trên mạng của mình như một máy chủ linux chạy isc dhcpd, bạn không muốn có hàng trăm triệu mục nhật ký từ khi ESP thức dậy và lấy IP từ DHCP. Các bộ định tuyến thường không ghi lại các liên kết nên sẽ không thể nhìn thấy được. Đây là cái giá của việc tiết kiệm điện năng.

V2 đã không bao giờ có thể tự duy trì do pin chất lượng kém và tôi chỉ đơn giản là đặt nó trên một bộ chuyển đổi, vì vậy nếu bạn muốn chế tạo V1 hoặc V2 KHÔNG mua loại pin đã đề cập, hãy tự nghiên cứu về pin (bất kỳ loại 18650 nào dung lượng trên 2000mAh được quảng cáo trên Ebay là lừa đảo với xác suất rất cao).

Đề xuất: