Kazalo:

ESP32 Scraper-parser-mailer in Live Mapper: 4 koraki (s slikami)
ESP32 Scraper-parser-mailer in Live Mapper: 4 koraki (s slikami)

Video: ESP32 Scraper-parser-mailer in Live Mapper: 4 koraki (s slikami)

Video: ESP32 Scraper-parser-mailer in Live Mapper: 4 koraki (s slikami)
Video: Leveraging OpenAI ChatGPT to Scrape Millions of Email Addresses 2024, November
Anonim
ESP32 Scraper-parser-mailer in Live Mapper
ESP32 Scraper-parser-mailer in Live Mapper
ESP32 Scraper-parser-mailer in Live Mapper
ESP32 Scraper-parser-mailer in Live Mapper
ESP32 Scraper-parser-mailer in Live Mapper
ESP32 Scraper-parser-mailer in Live Mapper

Pozdravljen, svet! To je moj prvi Instructable! Jaz sem Marco iz italijanskega Grosseta, nisem razvijalec, nisem elektrotehnik, ampak sem okoljski vodnik v našem lokalnem naravnem parku (naravni park Maremma).

V moji zadrugi veliko delamo z izleti s kanuji, naravoslovnimi in umirjenimi izleti po reki Ombrone za opazovanje ptic in malce smiselne sprostitve.

Toda reka Ombrone slovi tudi po značilni vrsti pretoka: od poletnega "ničelnega" do jesensko-zimskega pretoka več tisoč kubičnih metrov vode na uro.

Iz tega razloga reko Ombrone nenehno spremlja odlična regionalna hidrometrična služba (SIR), s fantastičnim mestom, ki omogoča zbiranje zbranih podatkov.

Zdaj čakamo na konec sezone in na prve jesenske poplave za odstranitev pristanišča in kanujev …

Ko pa začnemo govoriti o razčlenjevanju esp32inga itd? še trenutek več

Med zaklepanjem v Italiji sem opravil prvo lekcijo o utripanju arduino, kul… in nadaljeval sem s poigravanjem s senzorji in arduinom C. Torej, če se vam zdi moja koda surova ali polna nesmiselnih logičnih vrzeli, razmislite o tem!

Veliko sem naredil samo zato, da bi izgubljal čas, vendar sem se s tem stalnim tveganjem poplav odločil, da naredim nekaj kul: zahvaljujoč ESP32 z arduino faktorjem oblike (Wemos d1 r32), ki sem ga več mesecev zavijal, ker se mi je zdelo "težko", Res sem bil zadovoljen:

Naredil sem strgalo, ki prinaša in razčlenjuje podatke s spletne strani SIR in prikazuje spremenljivke, pridobljene na poceni LCD-ju i2c, in kot utripanje frekvence svetlosti na nekaterih LED na realističnem zemljevidu.

tako da, če poplava prihaja s planinske strani, me bodo opozorili zaradi naraščajoče svetlosti (sprememba ravni) in naraščajoče frekvence (sprememba ravni v eni uri) LED na zemljevidu … vendar lahko ESP32 pošilja tudi e -pošto! Zakaj torej ne bi naredili funkcije za to?

pojdimo zdaj pogledat spodnjo kodo!

Zaloge

  • Plošča na osnovi ESP32: Uporabil sem Wemos d1 r32, ker imajo ženske zatiče in je z njo lažje rokovati
  • LED, rdeča je bolj "budna kot"
  • I2C 16x2 LCD je samo modra, zelena pa je bolj elegantna
  • poceni plutovinasta plošča
  • nočni čas (neobvezno)

1. korak: Koda

Kodeks
Kodeks
Kodeks
Kodeks

Na spletu sem našel le valovite vadnice, ki za razčlenjevanje podatkov uporabljajo zunanja spletna mesta, zato sem poskušal preizkusiti moč jeder esp32, ki podatke razčlenjujejo neposredno na ploščo … brez težav!

torej, če si ogledate stran SIR, lahko razumete, kako deluje: na srečo za prikaz svojih podatkov uporabijo vrednosti, ločene z vejicami, zato s to kodo iščem hidrografsko postajo (koda TOSnumber) in preštejem število vej (kot ločilo), ki vsebujejo želeno vrednost (in jo shranite kot spremenljivko), nato pa jo znova preslikajte kot svetlost LED in čas v milisah za utripanje "ravni variacije"

Jedro tega strgala je v zavihku

ind = payload.indexOf ("TOSstation_number"); // dobimo položaj (ind), od koder začnemo šteti vejice

Niz my_var = getValue_ind (koristna obremenitev, ',', 8); // kjer je 8 osma celica, definirana z vejicami (ločilo)

"payload" je tisto, kar dobim s spleta, prej očiščeno iz "quotations" in "& nbsp";

in funkcijo getValue_ind, ki je na glavnem zavihku

Niz getValue_ind (Podatkovni niz, ločilo znakov, int indeks) {

int najdeno = 0; int strIndex = {0, -1}; int maxIndex = data.length () - 1; for (int i = ind; i <= maxIndex && found <= index; i ++) {// z ind položaja if (data.charAt (i) == ločilo || i == maxIndex) {najdeno ++; strIndex [0] = strIndex [1] + 1; strIndex [1] = (i == maxIndex)? i + 1: i; }} vrnitev najdena> indeks? data.substring (strIndex [0], strIndex [1]): ""; }

prilagojeno s

koda zahteva stran vsakih 15 minut, gre za približno 44 KB, mislim, da to ni velika obremenitev za strežnike in za ESP32.. Da se izognem prevelikemu drsenju, sem program razdelil na različne funkcije, preberite komentarje

tukaj je lepljenje kode res zmešnjava … datoteke.ino sem dal neposredno

Uporabil sem funkcijo zavihkov v arduino IDE, zato imam različne datoteke.ino

to je najnovejša različica kode (?), veliko truda je, zato bom vesel vsakega predloga!

- za poravnavo svetlosti LED za nizke vrednosti, - za funkcijo "zemljevid" za spremenljivke s plavajočo vejico - za uporabo drugega jedra na ESP32, - za razumevanje, kako natisniti html pošto iz niza s sprintf porabil veliko resničnega "nergajočega časa", zato preberite komentarje na datotekah.ino ali na githubu!

kot nastavitve nalaganja sem uporabil Orodja: Partition Sheme: NO OTA, da bi imeli več prostora za to ogromno kodo

zabavaj se

kliknite tukaj za kodo na githubu

2. korak: Zemljevid

Zemljevid
Zemljevid
Zemljevid
Zemljevid
Zemljevid
Zemljevid

ta pouk je osredotočen na kodo ESP32, zato vam lahko dam le nekaj ključnih besed, povezav in uporabljenih orodij:

odlična storitev za ekstrakcijo vektorskih področij iz openstreetmap

  • "ostični" QGis za njihovo prebavo
  • poiščite tabelo atributov za poenostavitev zemljevida
  • ustvarite postavitev tiskanja in izvoz zemljevida v formatu svg na formatu papirja A3
  • zabavajte se z "bolj gladkim" ilustratorjem
  • natisni

3. korak: zabava z vročim lepilom

Zabava z vročim lepilom
Zabava z vročim lepilom
Zabava z vročim lepilom
Zabava z vročim lepilom
Zabava z vročim lepilom
Zabava z vročim lepilom
Zabava z vročim lepilom
Zabava z vročim lepilom

zato lahko predlagam, da izrežete luknje za LED in zaslon na papirju, preden jih pritrdite na plutovinasto ploščo

ožičenje je res preprosto in slabo opravljeno: P

Moja stopnja spajkanja: Golob

kot lahko vidite iz kode, LED gredo na IO zatiče

#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

poiščite pinout ESP32 za razumevanje

4. korak: Končni izdelek

Končni izdelek
Končni izdelek

tako da ta fotografija ni najboljša, toda ko bomo dobili poplavo reke, bom dal lep video!

Priporočena: