Mündəricat:
2025 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2025-01-13 06:56
Salam Dünya! Bu mənim ilk təlimatımdır! Mən Grosseto İtaliyadan olan Marco, geliştirici deyiləm, elektron mühəndis deyiləm, ancaq yerli təbii parkımızda (Maremma təbii parkı) ətraf mühit bələdçisiyəm.
Kooperativimdə, kano turları, Ombrone çayı üzərində quş seyr etmək və bir az rahatlamaq üçün təbii və sakit turlarla çox işləyirik.
Ancaq Ombrone çayı xarakterik axın növü ilə də məşhurdur: yazdan "sıfıra" qədər payız-qış axını saatda bir neçə min kubmetr su.
Bu səbəbdən, Ombrone çayı, toplanmış məlumatları əldə etməyə imkan verən fantastik bir saytla mükəmməl regional hidrometrik xidmət (SIR) tərəfindən daim izlənilir.
İndi mövsümün bitməsini və doku və kanoları çıxarmaq üçün ilk payız daşqınlarını gözləyirik …
Bəs esp32ing və s. bir an daha
İtalyan kilidləmə zamanı ilk arduino göz qırpma dərsini tamamladım … və sensorlar və arduino C ilə oynamağı davam etdirdim, buna görə də kodumu xam və ya cəfəng məntiqi boşluqlarla dolu hesab edirsənsə bunu düşün!
Vaxt itirməmək üçün çox şey etdim, amma bu daimi daşqın riski ilə sərin bir şey etməyə qərar verdim: "çətin" olduğunu düşündüyüm üçün aylarla bükdüyüm arduino forma faktorlu (Wemos d1 r32) ESP32 sayəsində., Həqiqətən çox məmnun oldum:
Bir SIR veb səhifəsindən məlumat gətirən və təhlil edən və əldə edilən dəyişənləri ucuz bir i2c LCD-də və bəzi xəritədə bəzi LED-lərdə parlaqlıq tezliyi yanıb-sönən bir kazıyıcı etdim.
dağ tərəfdən bir daşqın gəlsə, xəritədəki ledlərin artan parlaqlığı (səviyyənin dəyişməsi) və artan tezliyin (bir saat ərzində səviyyənin dəyişməsi) xəbərdarlığı alacağam … amma ESP32 də e -poçt göndərə bilər! Bəs niyə bunun üçün bir funksiya etməyək?
İndi aşağıdakı kodu görmək üçün gedək!
Təchizat
- ESP32 əsaslı lövhə: Wemos d1 r32 səbəbiylə dişi sancaqlar istifadə etdim və idarə etmək daha asandır
- LEDlər, qırmızı daha "uyanık"
- I2C 16x2 LCD iv'e yalnız mavi, ancaq yaşıl daha şık
- ucuz mantar lövhəsi
- gecə vaxtı (isteğe bağlı)
Addım 1: Kod
məlumatları təhlil etmək üçün xarici saytlardan istifadə edən yalnız buxarlı dərsliklər tapdım, buna görə məlumatları birbaşa lövhədə təhlil edən esp32 nüvələrinin gücünü sınamağa çalışdım … problemsiz!
SIR səhifəsinə baxsanız onun necə işlədiyini anlaya bilərik: xoşbəxtlikdən məlumatlarını göstərmək üçün "virgüllə ayrılmış" kimi dəyərlər istifadə edirlər, buna görə də bu kodla bir hidroqrafik stansiya (kod TOSnumber) axtarıram və vergül sayını hesablayıram (ayırıcı olaraq) istədiyim dəyəri ehtiva edir (və dəyişkən olaraq saxlayır), sonra "dəyişmə səviyyəsi" yanıb -sönmək üçün milisaniyədə led parlaqlığı və vaxtı olaraq yenidən düzəldin.
Bu kazıyıcının nüvəsi http sekmesindedir:
ind = payload.indexOf ("TOSstation_number"); // vergül saymağa başladığınız yerdən (ind) alın
String my_var = getValue_ind (yük, ',', 8); // burada 8 vergüllə təyin olunan səkkizinci hüceyrədir (ayırıcı)
"faydalı yük", əvvəllər "kotirovkalar" və "& nbsp" dən təmizlənmiş internetdən aldığım şeydir;
və əsas sekmedeki getValue_ind funksiyası
String getValue_ind (String data, char separator, int index) {
int tapıldı = 0; int strIndex = {0, -1}; int maxIndex = data.length () - 1; for (int i = ind; i <= maxIndex && found <= index; i ++) {// ind mövqeyindən əgər (data.charAt (i) == ayırıcı || i == maxIndex) {tapılmış ++; strIndex [0] = strIndex [1] + 1; strIndex [1] = (i == maxIndex)? i + 1: i; }} qayıtdı> indeks? data.substring (strIndex [0], strIndex [1]): ""; }
stackoverflow.com/a/14824108 saytından uyğunlaşdırılmışdır
kod hər 15 dəqiqədən bir səhifəni soruşur, təxminən 44 Kb -dir, serverlər və ESP32 üçün böyük bir yük olduğunu düşünmürəm.. Çox sürüşməmək üçün proqramı fərqli funksiyalara böldüm, şərhləri oxuyun
burada kodu yapışdırmaq həqiqətən bir qarışıqlıqdır..ino fayllarını birbaşa qoyuram
Arduino IDE -nin sekmeler xüsusiyyətindən istifadə etdim, buna görə də fərqli.ino fayllarım var
bu kodun son versiyasıdır (?), çox səy var, buna görə hər hansı bir təklifi yüksək qiymətləndirəcəyəm!
- aşağı dəyərlər üçün LED parlaqlığını düzəltmək üçün, - üzən nöqtə dəyişənləri üçün "xəritə" funksiyası üçün - ESP32 -də ikinci nüvənin istifadəsi üçün, - sprintfI ilə bir sətirdən html poçtunun necə çap olunacağını anlamaq üçün. çox "əsəbi vaxt" keçirdi, buna görə.ino faylları və ya githubdakı şərhləri oxuyun!
Yükləmə parametrləri olaraq Alətlərdən istifadə etdim: Bölmə Şeması: Bu böyük kod üçün daha çox yerə sahib olmaq üçün OTA YOX
əylənin
githubdakı kod üçün bura vurun
Addım 2: Xəritə
Bu tut ESP32 koduna daxil edilmişdir, buna görə sizə yalnız bəzi açar sözlər, bağlantılar və istifadə olunan vasitələr verə bilərəm:
openstreetmap formalı vektor sahələrini çıxarmaq üçün əla xidmət
- həzm etmək üçün "ostik" QGis
- xəritənizi asanlaşdırmaq üçün atribut cədvəli axtarın
- çap düzeni yaradın və xəritəni A3 kağız formatında svg formatında ixrac edin
- "daha hamar" illüstratorla əylənin
- çap et
Addım 3: İsti Yapışqan Partiyası
Mantar lövhəsinə düzəltmədən əvvəl kağızdakı ekranın və ekranın deliklərini kəsməyi təklif edə bilərəm
naqillər həqiqətən sadədir və pis mənim tərəfimdən edilir: P.
Lehimləmə səviyyəm: Göyərçin
koddan gördüyünüz kimi ledlər IO pinlərinə gedir
#define LED_PIN0 14 // si #LED_PIN1 müəyyən edin 27 // buon #define LED_PIN2 16 // sass #define LED_PIN3 17 // tur #define LED_PIN4 25 // ist #define LED_PIN5 26 // berr
Anlamaq üçün ESP32 pinout axtarın
Addım 4: Hazır məhsul
bu şəkil ən yaxşı deyil, amma bir çay axını olanda gözəl bir video qoyacağam!