Sisukord:

ESP32 kaabitsa parsija ja reaalne kaardistaja: 4 sammu (koos piltidega)
ESP32 kaabitsa parsija ja reaalne kaardistaja: 4 sammu (koos piltidega)

Video: ESP32 kaabitsa parsija ja reaalne kaardistaja: 4 sammu (koos piltidega)

Video: ESP32 kaabitsa parsija ja reaalne kaardistaja: 4 sammu (koos piltidega)
Video: Belajar MicroPython (ESP8266 / ESP32) | 1. PENGENALAN MICROPYTHON 2024, November
Anonim
ESP32 Scraper-parser-mailer ja Live Mapper
ESP32 Scraper-parser-mailer ja Live Mapper
ESP32 Scraper-parser-mailer ja Live Mapper
ESP32 Scraper-parser-mailer ja Live Mapper
ESP32 Scraper-parser-mailer ja Live Mapper
ESP32 Scraper-parser-mailer ja Live Mapper

Tere, Maailm! See on minu esimene juhendatav! Olen Marco Itaaliast Grossetost, ma ei ole arendaja, ma ei ole elektroonikainsener, vaid olen keskkonnajuht meie kohalikus looduspargis (Maremma looduspark).

Minu kooperatiivis töötame palju kanuumatkade, looduslike ja rahulike ekskursioonidega Ombrone jõel linnuvaatluseks ja natuke lõõgastumiseks.

Kuid Ombrone'i jõgi on kuulus ka oma iseloomuliku voolu poolest: suvisest "nullist" kuni sügis-talvise vooluni mitu tuhat kuupmeetrit vett tunnis.

Sel põhjusel jälgib Ombrone jõge pidevalt suurepärane piirkondlik hüdromeetriline teenistus (SIR), kus on fantastiline sait, mis teeb kogutud andmed kättesaadavaks.

Nüüd ootame hooaja lõppu ja esimesi sügiseseid üleujutusi, et eemaldada dokk ja kanuud …

Aga kui me hakkame rääkima kraapimisest parsimisest esp32 jne? veel hetk

Itaalia sulgemise ajal olen teinud esimese arduino pilgutamise õppetunni, lahe … ja olen jätkuvalt mänginud andurite ja arduino C -ga. Nii et kui leiate, et minu kood on toores või täis jama loogilisi lünki, arvestage sellega!

Tegin palju asju lihtsalt aja raiskamiseks, kuid selle pideva üleujutusohuga otsustasin teha midagi lahedat: tänu ESP32 -le, millel on arduino vormitegur (Wemos d1 r32), mida hoidsin mitu kuud pakendis, sest pidasin seda keeruliseks, Mul oli tõesti palju rahulolu:

Olen teinud kaabitsa, mis toob ja analüüsib andmeid SIR-i veebisaidilt ning kuvab saadud muutujad odaval i2c-LCD-l ja heleduse-sageduse vilgub mõnel LED-il realistlikul kaardil.

nii et kui üleujutus tuleb mäeküljelt, hoiatavad mind kaardil olevate LED -ide heleduse suurenemine (taseme muutus) ja sageduse suurenemine (taseme muutus ühe tunni jooksul) … kuid ESP32 võib saata ka e -kirju! Miks mitte teha selleks funktsiooni?

lähme nüüd allolevat koodi vaatama!

Tarvikud

  • ESP32 -põhine plaat: olen kasutanud Wemos d1 r32, kuna sellel on naissoost tihvtid ja seda on lihtsam käsitseda
  • LEDid, punane on rohkem "tähelepanelik"
  • I2C 16x2 LCD iv'e ainult sinine, kuid roheline on stiilsem
  • odav korkplaat
  • ööaeg (valikuline)

Samm: kood

Kood
Kood
Kood
Kood

Internetist olen leidnud ainult auravaid õpetusi, mis kasutavad andmete parsimiseks väliseid saite, nii et proovisin testida esp32 tuumade võimsust, analüüsides andmeid otse tahvlil … ilma probleemideta!

nii et kui vaatate SIR -lehe allikat, saate aru, kuidas see töötab: õnneks kasutab ta oma andmete kuvamiseks väärtusi "komaga eraldatud nagu", nii et selle koodiga otsin hüdrograafijaama (kood TOSnumber) ja loen komade arvu (kui eraldaja), mis sisaldavad soovitud väärtust (ja salvestab selle muutujana), seejärel muutke see led -heleduse ja aja millimeetrites, et vilkuda "variatsiooni tase"

Selle kaabitsa tuum on vahekaardil

ind = kasulik koormus.indexOf ("TOSjaama_number"); // saada positsioon (ind), kust hakata komasid lugema

String my_var = getValue_ind (kasulik koormus, ',', 8); // kus 8 on komadega määratletud kaheksas lahter (eraldaja)

"kasulik koormus" on see, mida saan veebist, mis on eelnevalt puhastatud "hinnapakkumistest" ja "& nbsp";

ja funktsioon getValue_ind, mis asub põhikaardil

String getValue_ind (stringi andmed, sümbolieraldaja, int indeks) {

int leitud = 0; int strIndex = {0, -1}; int maxIndex = andmed.pikkus () - 1; jaoks (int i = ind; i <= maxIndex && leitud <= index; i ++) {// ind positsioonilt, kui (data.charAt (i) == eraldaja || i == maxIndex) {leitud ++; strIndex [0] = strIndex [1] + 1; strIndex [1] = (i == maxIndex)? i + 1: i; }} tagastamine leitud> indeks? data.substring (strIndex [0], strIndex [1]): ""; }

kohandatud saidilt

kood küsib lehte iga 15 minuti järel, see on umbes 44Kb, ma ei usu, et see on serveritele ja ESP32 -le suur koormus. Liigse kerimise vältimiseks jagasin programmi erinevateks funktsioonideks, lugege kommentaare

siin on koodi kleepimine tõesti jama … panen.ino failid otse

Olen kasutanud arduino IDE sakkide funktsiooni, nii et mul on erinevaid.ino -faile

see on koodi viimane versioon (?), seal on palju pingutusi, nii et ma hindan kõiki soovitusi!

- LED -heleduse sirgendamiseks madalate väärtuste korral, - ujukoma muutujate funktsiooni "kaart" jaoks - ESP32 teise tuuma kasutamiseks, - et mõista, kuidas printida html -kirja stringist, kasutades sprintfI have veetsite palju tõelist "nohitsemisaega", nii et lugege.ino -failide kommentaaridest või githubist!

üleslaadimisseadistustena olen kasutanud Tools: Partition Scheme: NO OTA, et selle tohutu koodi jaoks rohkem ruumi oleks

lõbutse hästi

koodi saamiseks klõpsake siin githubis

2. samm: kaart

Kaart
Kaart
Kaart
Kaart
Kaart
Kaart

seda õpetust stimuleeritakse ESP32 koodil, nii et saan teile anda ainult mõned märksõnad, lingid ja kasutatud tööriistad:

suurepärane teenus vektorpiirkondade väljavõtmiseks vormistatakse avatud tänavakaart

  • "ostic" QGis nende seedimiseks
  • otsige kaardi lihtsustamiseks atribuuditabelit
  • looge prindipaigutus ja eksportige kaart svg -vormingus A3 -vormingus paberile
  • nautige "siledama" illustraatoriga
  • printige see

3. samm: kuumliimipidu

Kuuma liimi pidu
Kuuma liimi pidu
Kuuma liimi pidu
Kuuma liimi pidu
Kuuma liimi pidu
Kuuma liimi pidu
Kuuma liimi pidu
Kuuma liimi pidu

nii et ma võin soovitada enne korkplaadile kinnitamist LED-i ja ekraani augud välja lõigata

juhtmestik on tõesti lihtne ja minu poolt halvasti tehtud: P

Minu jootmistase: tuvi

nagu koodist näete, lähevad LED -id IO -tihvtidele

#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

mõistmiseks otsige ESP32 pistikut

4. samm: valmistoode

Valmis toode
Valmis toode

nii et see foto pole just kõige parem, aga kui jõeuputuse saame, siis panen kena video!

Soovitan: