2025 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2025-01-13 06:58
Chào thế giới! Đây là lần đầu tiên có thể hướng dẫn của tôi! Tôi là Marco đến từ Grosseto Ý, tôi không phải là nhà phát triển, tôi không phải là kỹ sư điện tử nhưng tôi là hướng dẫn viên môi trường trong công viên tự nhiên địa phương của chúng tôi (công viên tự nhiên Maremma).
Trong hợp tác xã của tôi, chúng tôi làm việc rất nhiều với các tour du lịch bằng xuồng, các chuyến du lịch tự nhiên và yên tĩnh trên sông Ombrone để ngắm chim và một chút cảm giác thư giãn.
Nhưng sông Ombrone cũng nổi tiếng với kiểu dòng chảy đặc trưng: từ mùa hè "số 0" đến mùa thu - đông với lưu lượng vài nghìn mét khối nước mỗi giờ.
Vì lý do này, sông Ombrone liên tục được theo dõi bởi dịch vụ đo đạc thủy văn khu vực (SIR) tuyệt vời, với một trang web tuyệt vời cung cấp dữ liệu thu thập được.
Bây giờ chúng tôi đang chờ đợi cuối mùa và những trận lũ đầu mùa thu để dời bến và những chiếc ca nô…
Nhưng khi chúng ta bắt đầu nói về việc cạo phân tích cú pháp esp32ing, v.v.? một lúc nữa
Trong thời gian khóa máy ở Ý, tôi đã thực hiện bài học nhấp nháy arduino đầu tiên, thật tuyệt… và tôi đã tiếp tục thử nghiệm với các cảm biến và arduino C. Vì vậy, nếu bạn thấy mã của tôi thô thiển hoặc đầy những khoảng trống logic vô nghĩa, hãy xem xét điều này!
Tôi đã làm rất nhiều thứ chỉ để lãng phí thời gian nhưng với nguy cơ ngập lụt liên tục này, tôi quyết định làm một điều gì đó tuyệt vời: nhờ một ESP32 với hệ số hình thức arduino (Wemos d1 r32) mà tôi đã giữ trong nhiều tháng vì tôi nghĩ "khó khăn", Tôi thực sự đã rất hài lòng:
Tôi đã thực hiện một công cụ quét mang và phân tích dữ liệu từ trang web SIR và hiển thị các biến thu được trên màn hình LCD i2c rẻ tiền và khi tần số sáng nhấp nháy trên một số đèn LED trên bản đồ thực tế.
vì vậy nếu lũ lụt đến từ sườn núi, tôi sẽ được cảnh báo bởi độ sáng ngày càng tăng (mức độ thay đổi) và tần suất ngày càng tăng (mức độ thay đổi trong một giờ) của các đèn led trên bản đồ… nhưng ESP32 cũng có thể gửi email! Vì vậy, tại sao không làm một chức năng cho điều này?
chúng ta hãy đi đến để xem mã bên dưới ngay bây giờ!
Quân nhu
- Bo mạch dựa trên ESP32: Tôi đã sử dụng Wemos d1 r32 vì có chân cái và dễ xử lý hơn
- đèn led, màu đỏ là "cảnh báo như"
- I2C 16x2 LCD chỉ có một màu xanh lam nhưng màu xanh lá cây thì phong cách hơn
- bảng nút chai giá rẻ
- thời gian ban đêm (tùy chọn)
Bước 1: Mã
trực tuyến, tôi chỉ tìm thấy các hướng dẫn hấp dẫn sử dụng các trang web bên ngoài để phân tích dữ liệu, vì vậy tôi đã cố gắng kiểm tra sức mạnh của các lõi esp32 phân tích dữ liệu trực tiếp trên bảng… mà không gặp vấn đề gì!
vì vậy nếu bạn xem nguồn trang SIR có thể hiểu cách hoạt động của nó: may mắn là họ sử dụng các giá trị "được phân tách bằng dấu phẩy như" để hiển thị dữ liệu của họ, vì vậy với mã này, tôi tìm kiếm một trạm thủy văn (mã TOSnumber) và đếm số dấu phẩy (dưới dạng dấu phân cách) có chứa giá trị tôi muốn (và lưu trữ nó dưới dạng biến), sau đó ánh xạ lại nó dưới dạng độ sáng dẫn và thời gian tính bằng mili giây cho "mức độ biến đổi" nhấp nháy
Cốt lõi của bộ quét này nằm trong tab
ind = payload.indexOf ("TOSstation_number"); // lấy vị trí (ind) từ nơi bắt đầu đếm dấu phẩy
String my_var = getValue_ind (payload, ',', 8); // trong đó 8 là ô thứ tám được xác định bằng dấu phẩy (dấu phân cách)
"payload" là những gì tôi nhận được từ trang web đã được làm sạch trước đó từ "danh ngôn" và "& nbsp";
và hàm getValue_ind nằm trong tab chính
Chuỗi getValue_ind (Dữ liệu chuỗi, dấu phân tách ký tự, chỉ mục int) {
int tìm thấy = 0; int strIndex = {0, -1}; int maxIndex = data.length () - 1; for (int i = ind; i <= maxIndex && found <= index; i ++) {// từ vị trí ind if (data.charAt (i) == dấu phân tách || i == maxIndex) {found ++; strIndex [0] = strIndex [1] + 1; strIndex [1] = (i == maxIndex)? i + 1: i; }} trả về tìm thấy> chỉ mục? data.substring (strIndex [0], strIndex [1]): ""; }
phỏng theo
mã yêu cầu trang cứ sau 15 phút, nó khoảng 44Kb, tôi không nghĩ là tải quá lớn đối với máy chủ và đối với ESP32.. Để tránh cuộn quá nhiều, tôi đã chia chương trình thành các chức năng khác nhau, hãy đọc các nhận xét
ở đây việc dán mã thực sự là một mớ hỗn độn… tôi đặt trực tiếp các tệp.ino
Tôi đã sử dụng tính năng tab của arduino IDE nên tôi có các tệp.ino khác nhau
đây là phiên bản mới nhất của mã (?), có rất nhiều nỗ lực, vì vậy tôi sẽ đánh giá cao bất kỳ đề xuất nào!
- để làm thẳng độ sáng của đèn led đối với các giá trị thấp, - đối với chức năng "bản đồ" cho các biến dấu phẩy động - để sử dụng lõi thứ hai trên ESP32, - để hiểu cách in một thư html từ một chuỗi với sprintfI có đã dành rất nhiều "thời gian hồi hộp" thực sự, vì vậy hãy đọc các nhận xét trên tệp.ino hoặc trên github!
như cài đặt tải lên, tôi đã sử dụng Công cụ: Sơ đồ phân vùng: KHÔNG CÓ OTA để có thêm dung lượng cho mã khổng lồ này
chúc vui vẻ
bấm vào đây để biết mã trên github
Bước 2: Bản đồ
tut này được viết trên mã ESP32 nên tôi chỉ có thể cung cấp cho bạn một số từ khóa, liên kết và công cụ được sử dụng:
dịch vụ tuyệt vời để trích xuất các khu vực vectơ tạo thành openstreetmap
- QG "thẩm thấu" để tiêu hóa chúng
- tìm kiếm bảng thuộc tính để đơn giản hóa bản đồ của bạn
- tạo bố cục in và xuất bản đồ ở định dạng svg trên khổ giấy A3
- vui vẻ với người vẽ minh họa "mượt mà hơn"
- in nó
Bước 3: Tiệc keo nóng
vì vậy tôi có thể đề nghị cắt các lỗ cho đèn led và màn hình hiển thị trên giấy trước khi sửa nó trên bảng nút chai
hệ thống dây điện thực sự đơn giản và do tôi làm rất tệ: P
Mức độ hàn của tôi: Pigeon
như bạn có thể thấy từ mã, đèn led đi đến chân IO
#define LED_PIN0 14 // si # define LED_PIN1 27 // buon #define LED_PIN2 16 // sass #define LED_PIN3 17 // tur #define LED_PIN4 25 // ist #define LED_PIN5 26 // berr
tìm kiếm sơ đồ chân của ESP32 để hiểu
Bước 4: Thành phẩm
vì vậy bức ảnh này không phải là tốt nhất, nhưng khi chúng tôi có một số lũ sông, tôi sẽ đưa một video hay!