İçindekiler:

ESP32 Scraper-parser-mailer ve Live Mapper: 4 Adım (Resimlerle)
ESP32 Scraper-parser-mailer ve Live Mapper: 4 Adım (Resimlerle)

Video: ESP32 Scraper-parser-mailer ve Live Mapper: 4 Adım (Resimlerle)

Video: ESP32 Scraper-parser-mailer ve Live Mapper: 4 Adım (Resimlerle)
Video: Best Programming Languages #programming #coding #javascript 2024, Kasım
Anonim
ESP32 Kazıyıcı-ayrıştırıcı-posta gönderici ve Canlı Eşleştirici
ESP32 Kazıyıcı-ayrıştırıcı-posta gönderici ve Canlı Eşleştirici
ESP32 Kazıyıcı-ayrıştırıcı-posta gönderici ve Canlı Eşleştirici
ESP32 Kazıyıcı-ayrıştırıcı-posta gönderici ve Canlı Eşleştirici
ESP32 Kazıyıcı-ayrıştırıcı-posta gönderici ve Canlı Eşleştirici
ESP32 Kazıyıcı-ayrıştırıcı-posta gönderici ve Canlı Eşleştirici

Selam Dünya! Bu benim ilk Eğitilebilirliğim! Ben Grosseto İtalya'dan Marco, geliştirici değilim, elektronik mühendisi değilim ama yerel doğal parkımızda (Maremma doğal parkı) çevre rehberiyim.

Kooperatifimde kano turları, kuş gözlemciliği ve biraz da rahatlama için Ombrone nehrinde doğal ve sakin turlar ile çok çalışıyoruz.

Ancak Ombrone nehri, karakteristik akış türüyle de ünlüdür: yaz "sıfır" dan sonbahar-kış akışına saatte birkaç bin metreküp su.

Bu nedenle, Ombrone nehri, toplanan verileri kullanılabilir hale getiren harika bir site ile mükemmel bölgesel hidrometrik servis (SIR) tarafından sürekli olarak izlenir.

Şimdi rıhtım ve kanoları kaldırmak için sezonun sonunu ve ilk sonbahar sellerini bekliyoruz…

Ancak, esp32ing vb. ayrıştırma kazıma hakkında konuşmaya başladığımızda? bir an daha

İtalyan kilitlenmesi sırasında ilk arduino yanıp sönme dersini yaptım, harika… ve sensörler ve arduino C ile oynamaya devam ettim. Yani kodumu kaba veya anlamsız mantıksal boşluklarla dolu bulursanız, bunu düşünün!

Sadece zaman kaybetmek için çok şey yaptım ama bu sürekli sel riskiyle havalı bir şey yapmaya karar verdim: arduino form faktörlü bir ESP32 (Wemos d1 r32) sayesinde "zor" olduğunu düşündüğüm için aylarca sardım., gerçekten çok tatmin oldum:

Bir SIR web sayfasından veri getiren ve ayrıştıran ve ucuz bir i2c LCD'de elde edilen değişkenleri görüntüleyen ve gerçekçi bir harita üzerinde bazı ledlerde parlaklık-frekans yanıp sönen bir kazıyıcı yaptım.

yani dağ tarafından bir sel gelirse, haritadaki ledlerin artan parlaklığı (seviye değişimi) ve artan sıklığı (bir saat içinde seviye değişimi) ile uyarılırım… ama ESP32 e-posta da gönderebilir! Öyleyse neden bunun için bir işlev yapmıyorsunuz?

Şimdi aşağıdaki kodu görmeye gidelim!

Gereçler

  • ESP32 tabanlı kart: Wemos d1 r32 kullandım çünkü dişi pinler var ve kullanımı daha kolay
  • ledler, kırmızı daha çok "uyarı gibi"
  • I2C 16x2 LCD iv'e sadece mavi ama yeşil daha şık
  • ucuz mantar pano
  • gece saati (isteğe bağlı)

Adım 1: Kod

kod
kod
kod
kod

çevrimiçi sadece verileri ayrıştırmak için harici siteleri kullanan vapourous öğreticiler buldum, bu yüzden verileri doğrudan tahtada ayrıştırarak esp32 çekirdeklerinin gücünü test etmeye çalıştım… sorunsuz!

bu nedenle, SIR sayfa kaynağını görüntülerseniz nasıl çalıştığını anlayabilirsiniz: neyse ki verilerini görüntülemek için "virgülle ayrılmış benzer" değerler kullanırlar, bu nedenle bu kodla bir hidrografik istasyon (kod TOSnumber) ararım ve virgül sayısını sayarım (ayırıcı olarak) istediğim değeri içerir (ve değişken olarak saklar), ardından "varyasyon seviyesi" yanıp sönmesi için led parlaklığı ve milis cinsinden süre olarak yeniden eşleyin

Bu kazıyıcının çekirdeği http sekmesindedir:

ind = payload.indexOf("TOSstation_number"); // virgül saymaya başladığımız yeri (ind) al

String my_var = getValue_ind(yük, ', ', 8); // burada 8, virgülle (ayırıcı) tanımlanan sekizinci hücredir

"yük", daha önce "alıntılar" ve "&nbsp" den temizlenmiş web'den aldığım şeydir;

ve ana sekmedeki getValue_ind işlevi

String getValue_ind(Dize verisi, karakter ayırıcı, int indeksi) {

int bulundu = 0; int strIndex = {0, -1}; int maxIndex = data.length() - 1; for (int i = ind; i <= maxIndex && bulundu <= dizin; i++) { //ind konumundan if (data.charAt(i) == ayırıcı || i == maxIndex) { bulundu++; strIndex[0] = strIndex[1] + 1; strIndex[1] = (i == maxIndex) ? ben + 1: ben; } } dönüş bulundu> dizin ? data.substring(strIndex[0], strIndex[1]): ""; }

stackoverflow.com/a/14824108 adresinden uyarlanmıştır

kod her 15 dakikada bir sayfayı soruyor, yaklaşık 44Kb, sunucular ve ESP32 için büyük bir yük olduğunu düşünmüyorum.. Çok fazla kaydırma yapmamak için programı farklı işlevlere böldüm, yorumları okuyun

burada kod yapıştırma gerçekten bir karmaşa….ino dosyalarını doğrudan koyuyorum

arduino IDE'nin sekmeler özelliğini kullandım, böylece farklı.ino dosyalarım var

Bu, kodun (?) en son sürümüdür, çok fazla çaba var, bu yüzden herhangi bir öneriyi takdir edeceğim!

- düşük değerler için led parlaklığının düzleştirilmesi için, - kayan nokta değişkenleri için "harita" işlevi için - ESP32'de ikinci çekirdeğin kullanımı için, - sprintfI ile bir dizeden html postasının nasıl yazdırılacağını anlamak için çok fazla gerçek "nerding zamanı" harcadı, bu yüzden.ino dosyalarındaki veya github'daki yorumları okuyun!

yükleme ayarları olarak bu büyük kod için daha fazla alana sahip olmak için Araçlar: Bölümleme Düzeni: OTA YOK kullandım

iyi eğlenceler

github'daki kod için buraya tıklayın

2. Adım: Harita

Harita
Harita
Harita
Harita
Harita
Harita

Bu tut, ESP32 koduna odaklanmıştır, bu nedenle size sadece kullanılan bazı anahtar kelimeleri, bağlantıları ve araçları verebilirim:

openstreetmap'ten vektörel alanların çıkarılması için mükemmel hizmet

  • onları sindirmek için "ostik" QGis
  • haritanızı basitleştirmek için özellik tablosunu arayın
  • bir baskı düzeni oluşturun ve haritayı svg formatında A3 kağıt formatında dışa aktarın
  • "daha pürüzsüz" illüstratörle eğlenin
  • yazdır

3. Adım: Sıcak Tutkal Partisi

Sıcak Tutkal Partisi
Sıcak Tutkal Partisi
Sıcak Tutkal Partisi
Sıcak Tutkal Partisi
Sıcak Tutkal Partisi
Sıcak Tutkal Partisi
Sıcak Tutkal Partisi
Sıcak Tutkal Partisi

bu yüzden mantar panoya sabitlemeden önce led ve ekran için kağıt üzerindeki delikleri kalıpla kesmeyi önerebilirim

kablolama gerçekten basit ve benim tarafımdan kötü yapılmış: P

Lehimleme seviyem: Güvercin

koddan da görebileceğiniz gibi ledler IO pinlerine gidiyor

#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

anlamak için ESP32 pinout'u arayın

Adım 4: Bitmiş Ürün

Bitmiş ürün
Bitmiş ürün

bu yüzden bu fotoğraf en iyisi değil, ama bir nehir taşkınımız olduğunda güzel bir video koyacağım!

Önerilen: