Mündəricat:

ESP32 Sıyırıcı-ayrıştırıcı-poçt göndərən və Live Mapper: 4 addım (şəkillərlə)
ESP32 Sıyırıcı-ayrıştırıcı-poçt göndərən və Live Mapper: 4 addım (şəkillərlə)

Video: ESP32 Sıyırıcı-ayrıştırıcı-poçt göndərən və Live Mapper: 4 addım (şəkillərlə)

Video: ESP32 Sıyırıcı-ayrıştırıcı-poçt göndərən və Live Mapper: 4 addım (şəkillərlə)
Video: ESP32, более мощная чем любая другая Ардуино 2024, Noyabr
Anonim
ESP32 Scraper-ayrıştırıcı-poçt göndərən və Live Mapper
ESP32 Scraper-ayrıştırıcı-poçt göndərən və Live Mapper
ESP32 Scraper-ayrıştırıcı-poçt göndərən və Live Mapper
ESP32 Scraper-ayrıştırıcı-poçt göndərən və Live Mapper
ESP32 Scraper-ayrıştırıcı-poçt göndərən və Live Mapper
ESP32 Scraper-ayrıştırıcı-poçt göndərən və Live Mapper

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

Kod
Kod
Kod
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ə

Xəritə
Xəritə
Xəritə
Xəritə
Xəritə
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ı

İsti Yapışqan Partiyası
İsti Yapışqan Partiyası
İsti Yapışqan Partiyası
İsti Yapışqan Partiyası
İsti Yapışqan Partiyası
İsti Yapışqan Partiyası
İsti Yapışqan Partiyası
İ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

Hazır məhsul
Hazır məhsul

bu şəkil ən yaxşı deyil, amma bir çay axını olanda gözəl bir video qoyacağam!

Tövsiyə: