Სარჩევი:

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 ნაბიჯი (სურათებით)
ვიდეო: The HARDEST part about programming 🤦‍♂️ #code #programming #technology #tech #software #developer 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

გამარჯობა მსოფლიო! ეს არის ჩემი პირველი ინსტრუქცია! მე ვარ მარკო გროსეტოს იტალიიდან, მე არ ვარ დეველოპერი, მე არ ვარ ელექტრო ინჟინერი, მაგრამ მე ვარ გარემოსდაცვითი მეგზური ჩვენს ადგილობრივ ბუნებრივ პარკში (მარემმას ბუნებრივი პარკი).

ჩემს კოოპერატივში ჩვენ ბევრს ვმუშაობთ კანოეს ტურებით, ნატურალისტური და მშვიდი ტურებით მდინარე ომბრონეზე ფრინველებზე დაკვირვებისთვის და ცოტათი დასვენებისთვის.

მაგრამ მდინარე ომბრონე ასევე ცნობილია თავისი დამახასიათებელი სახის ნაკადებით: ზაფხულიდან "ნულიდან" შემოდგომა-ზამთრის დინებამდე საათში რამდენიმე ათასი კუბური მეტრი წყალი.

ამ მიზეზით, ომბრონის მდინარეს მუდმივად აკონტროლებენ შესანიშნავი რეგიონული ჰიდრომეტრული სამსახური (SIR), ფანტასტიკური ადგილით, რომელიც გროვდება მონაცემებს.

ახლა ჩვენ ველოდებით სეზონის დასრულებას და პირველ შემოდგომის წყალდიდობას დოკისა და კანოების მოსაშორებლად …

მაგრამ როდესაც ჩვენ ვიწყებთ საუბარს scp3ing parsing esp32ing და ა.შ.? კიდევ ერთი წამი

იტალიური ბლოკირების დროს მე გავაკეთე არდუინოს დახუჭვის პირველი გაკვეთილი, მაგარი… და მე გავაგრძელე თამაში სენსორებით და არდუინო C. ასე რომ, თუკი ჩემი კოდი უხეში ან უაზრო ლოგიკური ხარვეზებით სავსე გეჩვენებათ, გაითვალისწინეთ ეს!

ბევრი რამ გავაკეთე დროის დასაკარგავად, მაგრამ წყალდიდობის ამ მუდმივი რისკის გამო გადავწყვიტე რაღაც მაგარი გამეკეთებინა: ESP32- ის წყალობით არდუინოს ფორმულატორით (Wemos d1 r32), რომელსაც თვეების განმავლობაში ვიკეტებოდი, რადგან ვფიქრობდი "ძნელი" მე ნამდვილად მქონდა ბევრი კმაყოფილება:

მე გავაკეთე სკრაპერი, რომელიც მოიტანს და აანალიზებს მონაცემებს SIR ვებ – გვერდიდან და აჩვენებს ცვლადებს იაფ i2c LCD– ზე და სიკაშკაშე სიხშირის მოციმციმე რეალისტურ რუქაზე.

ასე რომ, თუ წყალდიდობა მოდის მთის მხრიდან, მე გამაფრთხილებენ რუქების მზარდი სიკაშკაშე (დონის ცვლილება) და სიხშირე (დონის ცვლილება ერთ საათში)… მაგრამ ESP32– ს ასევე შეუძლია წერილების გაგზავნა! მაშ, რატომ არ შეასრულეთ ეს ფუნქცია?

მოდით ახლა ვნახოთ ქვემოთ მოყვანილი კოდი!

მარაგები

  • ESP32 დაფაზე დაფუძნებული: მე გამოვიყენე Wemos d1 r32, რადგან მათ აქვთ ქალი ქინძისთავები და მისი მართვა უფრო ადვილია
  • leds, წითელი უფრო "ფრთხილია"
  • I2C 16x2 LCD მხოლოდ ლურჯია, მაგრამ მწვანე უფრო ელეგანტურია
  • იაფი კორპის დაფა
  • ღამე (სურვილისამებრ)

ნაბიჯი 1: კოდი

Კოდი
Კოდი
Კოდი
Კოდი

ინტერნეტით ვიპოვე მხოლოდ ორთქლის გაკვეთილები, რომლებიც იყენებს გარე საიტებს მონაცემების გასაანალიზებლად, ამიტომ ვცდილობდი გამოვცადო esp32 ბირთვების ძალა მონაცემთა გადასაწყვეტად პირდაპირ დაფაზე … უპრობლემოდ!

თუ თქვენ ათვალიერებთ SIR გვერდის წყაროს შეუძლია გაიგოს როგორ მუშაობს იგი: საბედნიეროდ ისინი იყენებენ მნიშვნელობებს "გამოყოფილი მძიმით" მათი მონაცემების საჩვენებლად, ამიტომ ამ კოდით მე ვეძებ ჰიდროგრაფიულ სადგურს (კოდი TOSnumber) და ვითვლი მძიმის რაოდენობას (როგორც გამყოფი), რომელიც შეიცავს მნიშვნელობას (და შეინახეთ როგორც ცვლადი), შემდეგ გადააკეთეთ როგორც led სიკაშკაშე და დრო მილიებში "ვარიაციის დონის" მოციმციმედ

ამ სკრაპერის ბირთვი არის http ჩანართში:

ind = payload.indexOf ("TOSstation_number"); // მიიღეთ პოზიცია (ინდ) საიდანაც დაიწყეთ მძიმის დათვლა

სიმებიანი 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 ++) {// საწყისი პოზიციიდან if (data.charAt (i) == გამყოფი || i == maxIndex) {ნაპოვნია ++; strIndex [0] = strIndex [1] + 1; strIndex [1] = (i == maxIndex)? i + 1: i; }} ნაპოვნია დაბრუნება> ინდექსი? data.substring (strIndex [0], strIndex [1]): ""; }

ადაპტირებული

კოდი ითხოვს გვერდს ყოველ 15 წუთში, ეს არის დაახლოებით 44 Kb, არა მგონია დიდი დატვირთვა იყოს სერვერებისთვის და ESP32– ისთვის.

აქ კოდის ჩასმა მართლაც არეულობაა … მე პირდაპირ.ino ფაილებს ვდებ

მე გამოვიყენე arduino IDE- ს ჩანართების ფუნქცია, ასე რომ მე მაქვს განსხვავებული.ino ფაილები

ეს არის კოდის უახლესი ვერსია (?), ბევრი ძალისხმევაა, ამიტომ მე ვაფასებ ნებისმიერ წინადადებას!

- დაბალი სიდიდეებისათვის led სიკაშკაშის გასწორების მიზნით, - მცურავი წერტილის ცვლადებისთვის "რუქის" ფუნქციისთვის - ESP32– ზე მეორე ბირთვის გამოყენებისათვის, - იმის გასაგებად, თუ როგორ უნდა დაბეჭდოთ html წერილი სტრიქონიდან sprintfI მაქვს გაატარა ბევრი ნამდვილი "ნერვიულობის დრო", ასე რომ წაიკითხეთ.ino ფაილების ან github– ის კომენტარებზე!

როგორც ატვირთვის პარამეტრები მე გამოვიყენე Tools: Partition Scheme: NO OTA რომ მქონდეს მეტი სივრცე ამ უზარმაზარი კოდისთვის

გაერთე

დააწკაპუნეთ აქ github– ის კოდისთვის

ნაბიჯი 2: რუკა

Რუკა
Რუკა
Რუკა
Რუკა
Რუკა
Რუკა

ეს სახელმძღვანელო მითითებულია ESP32 კოდზე, ასე რომ მე შემიძლია მოგაწოდოთ მხოლოდ რამდენიმე საკვანძო სიტყვა, ბმულები და ინსტრუმენტები:

შესანიშნავი სერვისი ვექტორული უბნების ამონაწერი openstreetmap

  • "ოსტიკური" QGis მათი მონელებისთვის
  • მოძებნეთ ატრიბუტების ცხრილი თქვენი რუკის გასამარტივებლად
  • შექმენით ბეჭდვის განლაგება და გაუშვით რუკა svg ფორმატში A3 ქაღალდის ფორმატში
  • გაერთეთ "გამარტივებულ" ილუსტრატორთან
  • დაბეჭდე

ნაბიჯი 3: ცხელი წებოს წვეულება

ცხელი წებოს წვეულება
ცხელი წებოს წვეულება
ცხელი წებოს წვეულება
ცხელი წებოს წვეულება
ცხელი წებოს წვეულება
ცხელი წებოს წვეულება
ცხელი წებოს წვეულება
ცხელი წებოს წვეულება

ასე რომ მე შემიძლია შემოგთავაზოთ მოკვლა ხვრელები led და ეკრანზე ქაღალდზე სანამ გაასწორებთ კორპის დაფაზე

გაყვანილობა მართლაც მარტივი და ცუდია გაკეთებული ჩემ მიერ: P

ჩემი შედუღების დონე: მტრედი

როგორც ხედავთ კოდიდან leds მიდის 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: მზა პროდუქტი

მზა პროდუქტი
მზა პროდუქტი

ასე რომ, ეს ფოტო არ არის საუკეთესო, მაგრამ როდესაც ჩვენ ვიღებთ მდინარის წყალდიდობას, დავდებ მშვენიერ ვიდეოს!

გირჩევთ: