فهرست مطالب:

ESP32 Scraper-parser-mailer و Live Mapper: 4 مرحله (همراه با تصاویر)
ESP32 Scraper-parser-mailer و Live Mapper: 4 مرحله (همراه با تصاویر)

تصویری: ESP32 Scraper-parser-mailer و Live Mapper: 4 مرحله (همراه با تصاویر)

تصویری: ESP32 Scraper-parser-mailer و Live Mapper: 4 مرحله (همراه با تصاویر)
تصویری: 20 Python Packages That Are Actually Great! 2024, نوامبر
Anonim
ESP32 Scraper-parser-mailer و Live Mapper
ESP32 Scraper-parser-mailer و Live Mapper
ESP32 Scraper-parser-mailer و Live Mapper
ESP32 Scraper-parser-mailer و Live Mapper
ESP32 Scraper-parser-mailer و Live Mapper
ESP32 Scraper-parser-mailer و Live Mapper

سلام دنیا! این اولین دستورالعمل من است! من مارکو از گروستو ایتالیا هستم ، توسعه دهنده نیستم ، مهندس الکترونیک نیستم ، اما راهنمای محیط زیست در پارک طبیعی محلی (پارک طبیعی مارمما) هستم.

در تعاونی من ما با تورهای قایقرانی ، تورهای طبیعی و آرام در رودخانه Ombrone برای تماشای پرندگان و کمی آرامش کار می کنیم.

اما رودخانه Ombrone نیز به دلیل نوع مشخص جریان خود مشهور است: از تابستان "صفر" تا جریان پاییز و زمستان چند هزار متر مکعب آب در ساعت.

به همین دلیل ، رودخانه Ombrone به طور مداوم توسط خدمات عالی هیدرومتری منطقه ای (SIR) تحت نظارت است ، با یک سایت فوق العاده که داده های جمع آوری شده را در دسترس قرار می دهد.

اکنون ما منتظر پایان فصل و اولین سیل پاییزی برای برداشتن بارانداز و قایقرانی هستیم…

اما هنگامی که ما شروع به صحبت در مورد تراشیدن تجزیه و تحلیل esp32ing و غیره می کنیم؟ یک لحظه بیشتر

در طول قرنطینه ایتالیایی ، من اولین درس پلک زدن آردوینو را انجام دادم ، خنک … و من به بازی با سنسورها و آردوینو C ادامه دادم. بنابراین اگر کد من را خام یا پر از شکاف منطقی مزخرف می بینید ، این را در نظر بگیرید!

من کارهای زیادی را فقط برای هدر دادن زمان انجام دادم ، اما با این خطر دائمی سیل ، تصمیم گرفتم کاری جالب انجام دهم: به لطف ESP32 با فاکتور فرم آردوینو (Wemos d1 r32) که ماه ها آن را بسته بودم ، زیرا فکر می کردم "دشوار" است. ، من واقعاً رضایت زیادی داشتم:

من یک اسکریپر انجام داده ام که داده ها را از یک صفحه SIR آورده و تجزیه می کند و متغیرهای به دست آمده بر روی یک LCD ارزان i2c را نمایش می دهد و به عنوان فرکانس روشنایی در برخی از LED ها در یک نقشه واقع گرایانه چشمک می زند.

بنابراین اگر سیل از سمت کوه بیاید ، با افزایش روشنایی (تغییر سطح) و افزایش فرکانس (تغییر سطح در یک ساعت) از led های روی نقشه هشدار داده می شوم … اما ESP32 همچنین می تواند ایمیل ارسال کند! بنابراین چرا تابع را برای این کار انجام نمی دهید؟

اجازه دهید اکنون کد زیر را ببینیم!

تدارکات

  • برد مبتنی بر ESP32: من از Wemos d1 r32 استفاده کرده ام که دارای پین های زن است و کار با آن راحت تر است
  • leds ، رنگ قرمز بیشتر "هشدار مانند" است
  • LCD I2C 16x2 فقط آبی است اما رنگ سبز شیک تر است
  • تخته چوب پنبه ارزان
  • زمان شب (اختیاری)

مرحله 1: کد

کد
کد
کد
کد

بصورت آنلاین فقط آموزشهای بخار پیدا کرده ام که از سایتهای خارجی برای تجزیه و تحلیل داده ها استفاده می کند ، بنابراین سعی کردم قدرت هسته های esp32 را تجزیه و تحلیل داده ها را مستقیماً بر روی برد آزمایش کنم … بدون مشکل!

بنابراین اگر مشاهده کنید منبع صفحه SIR می تواند نحوه عملکرد آن را درک کند: خوشبختانه آنها از مقادیر "کاما جدا شده مانند" برای نمایش داده های خود استفاده می کنند ، بنابراین با این کد من یک ایستگاه هیدروگرافی (کد TOSnumber) را جستجو می کنم و تعداد کاما را می شمارم (به عنوان جدا کننده) که حاوی مقدار مورد نظر من است (و آن را به عنوان متغیر ذخیره کنید) ، سپس آن را به عنوان روشنایی led و زمان در میلی ثانیه برای چشمک زدن "سطح تنوع" تغییر دهید

هسته اصلی این تراشنده در برگه http است:

ind = payload.indexOf ("TOSstation_number")؛ // موقعیت (ind) را از کجا شروع به شمارش کاما کنید

رشته my_var = getValue_ind (بار ، '،' ، 8) ؛ // جایی که 8 سلول هشتم با کاما (جدا کننده) تعریف شده است

"محموله" چیزی است که من از وب دریافت می کنم قبلاً از "نقل قول" و "& nbsp" ؛

و تابع getValue_ind که در برگه اصلی قرار دارد

رشته getValue_ind (داده های رشته ، جدا کننده کاراکتر ، شاخص int) {

int پیدا شد = 0؛ int strIndex = {0 ، -1} ؛ int maxIndex = data.length () - 1؛ for (int i = ind؛ i <= maxIndex && found <= index؛ i ++) {// from ind position if (data.charAt (i) == جداکننده || i == maxIndex) {found ++؛ strIndex [0] = strIndex [1] + 1؛ strIndex [1] = (i == maxIndex)؟ i + 1: i ؛ }} بازگشت یافت شد> فهرست؟ data.substring (strIndex [0] ، strIndex [1]): ""؛ }

اقتباس از

کد هر 15 دقیقه صفحه را درخواست می کند ، حدود 44 کیلوبایت است ، فکر نمی کنم بار زیادی برای سرورها و ESP32 باشد. برای جلوگیری از پیمایش زیاد ، برنامه را در توابع مختلف تقسیم کرده ام ، نظرات را بخوانید

در اینجا چسباندن کد واقعا آشفته است … من فایل های.ino را مستقیماً قرار می دهم

من از ویژگی زبانه های arduino IDE استفاده کرده ام بنابراین فایل های.ino متفاوتی دارم

این آخرین نسخه کد است (؟) ، تلاش زیادی وجود دارد ، بنابراین من از هر پیشنهادی قدردانی می کنم!

- برای راستایی روشنایی led برای مقادیر کم ، - برای تابع "map" برای متغیرهای نقطه شناور - برای استفاده از هسته دوم در ESP32 ، - برای درک نحوه چاپ نامه html از یک رشته با sprintfI زمان واقعی زیادی را صرف کرده اید ، بنابراین نظرات مربوط به فایل های.ino یا github را بخوانید!

به عنوان تنظیمات بارگذاری ، من از ابزارها: طرح پارتیشن: NO OTA استفاده کرده ام تا فضای بیشتری برای این کد بزرگ داشته باشم

خوش بگذره

برای مشاهده کد در github اینجا را کلیک کنید

مرحله 2: نقشه

نقشه
نقشه
نقشه
نقشه
نقشه
نقشه

این آموزش بر روی کد ESP32 تمرکز دارد ، بنابراین می توانم فقط چند کلمه کلیدی ، پیوندها و ابزارهای مورد استفاده را به شما ارائه دهم:

خدمات عالی برای استخراج مناطق بردار از openstreetmap

  • QGis "استیک" برای هضم آنها
  • برای ساده سازی نقشه خود ، جدول ویژگی را جستجو کنید
  • یک طرح چاپی ایجاد کنید و نقشه را با فرمت svg در قالب کاغذ A3 صادر کنید
  • با تصویرگر "هموارتر" لذت ببرید
  • آن را چاپ کنید

مرحله 3: مهمانی چسب داغ

مهمانی چسب داغ
مهمانی چسب داغ
مهمانی چسب داغ
مهمانی چسب داغ
مهمانی چسب داغ
مهمانی چسب داغ
مهمانی چسب داغ
مهمانی چسب داغ

بنابراین من می توانم پیشنهاد کنم که سوراخ های led و صفحه نمایش روی کاغذ را قبل از تعمیر روی صفحه چوب پنبه برش دهید

سیم کشی واقعا ساده است و توسط من بد انجام شده است: P

سطح لحیم کاری من: کبوتر

همانطور که از کد مشاهده می کنید ، led ها به پین های IO می روند

#تعریف LED_PIN0 14 // si #تعریف LED_PIN1 27 // بوون #تعریف LED_PIN2 16 // sass #تعریف LED_PIN3 17 // tur #تعریف LED_PIN4 25 // ist #تعریف LED_PIN5 26 // berr

برای درک ESP32 pinout را جستجو کنید

مرحله 4: محصول نهایی

محصول نهایی
محصول نهایی

بنابراین این عکس بهترین نیست ، اما وقتی سیلابی از رودخانه گرفتیم ، یک ویدیوی زیبا می گذارم!

توصیه شده: