สารบัญ:

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 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: How to Solve CORS Error in 2 min [WATCH THIS] | CORS Explained in EASY Way 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

สวัสดีชาวโลก! นี่เป็นคำสั่งสอนครั้งแรกของฉัน! ฉัน Marco จากกรอสเซโตในอิตาลี ฉันไม่ใช่นักพัฒนา ฉันไม่ใช่วิศวกรอิเล็กทรอนิกส์ แต่ฉันเป็นไกด์ด้านสิ่งแวดล้อมในอุทยานธรรมชาติในท้องถิ่นของเรา (อุทยานธรรมชาติมาเรมมา)

ในสหกรณ์ของฉัน เราทำงานมากมายกับทัวร์พายเรือแคนู ทัวร์ธรรมชาติและความสงบในแม่น้ำ Ombrone เพื่อการดูนกและผ่อนคลายความรู้สึกเล็กน้อย

แต่แม่น้ำ Ombrone ก็มีชื่อเสียงในด้านการไหลของน้ำ: จากฤดูร้อน "ศูนย์" ไปจนถึงการไหลของน้ำหลายพันลูกบาศก์เมตรต่อชั่วโมงในฤดูใบไม้ร่วงและฤดูหนาว

ด้วยเหตุผลนี้ แม่น้ำออมโบรเนจึงได้รับการตรวจสอบอย่างต่อเนื่องโดยบริการไฮโดรเมตริกระดับภูมิภาค (SIR) ที่ยอดเยี่ยม พร้อมไซต์ที่ยอดเยี่ยมที่ทำให้ข้อมูลที่รวบรวมได้

ตอนนี้เรากำลังรอการสิ้นสุดของฤดูกาลและสำหรับน้ำท่วมในฤดูใบไม้ร่วงครั้งแรกสำหรับการถอดท่าเรือและเรือแคนู…

แต่เมื่อเราเริ่มพูดถึงการแยกวิเคราะห์ esp32ing เป็นต้น? อีกสักครู่

ระหว่างการล็อกดาวน์ของอิตาลี ฉันได้ทำบทเรียน Arduino Blink ครั้งแรกแล้ว เจ๋งมาก… และฉันได้ลองเล่นกับเซ็นเซอร์และ Arduino C ต่อไป ดังนั้นหากคุณพบว่าโค้ดของฉันหยาบหรือเต็มไปด้วยช่องว่างเชิงตรรกะที่ไร้สาระ ให้พิจารณาสิ่งนี้!

ฉันทำหลายสิ่งหลายอย่างเพื่อเสียเวลา แต่ด้วยความเสี่ยงที่จะเกิดน้ำท่วมอย่างต่อเนื่อง ฉันจึงตัดสินใจทำสิ่งที่เจ๋ง: ขอบคุณ ESP32 ที่มีรูปแบบ Arduino (Wemos d1 r32) ซึ่งฉันเก็บไว้เป็นเวลาหลายเดือนเพราะฉันคิดว่า "ยาก" ฉันมีความพึงพอใจมากจริงๆ:

ฉันได้ทำเครื่องขูดที่ดึงและแยกวิเคราะห์ข้อมูลจากหน้าเว็บ SIR และแสดงตัวแปรที่ได้รับบนจอ LCD ราคาถูกของ i2c และเมื่อความถี่ความสว่างกะพริบบนไฟ LED บางดวงบนแผนที่ที่สมจริง

ดังนั้นหากน้ำท่วมจากฝั่งภูเขา ฉันจะถูกเตือนโดยความสว่างที่เพิ่มขึ้น (การเปลี่ยนแปลงระดับ) และความถี่ที่เพิ่มขึ้น (การเปลี่ยนแปลงระดับในหนึ่งชั่วโมง) ของไฟ LED บนแผนที่… แต่ ESP32 ยังสามารถส่งอีเมลได้! ทำไมไม่ทำฟังก์ชั่นสำหรับสิ่งนี้?

ไปดูโค้ดด้านล่างนี้กันเลย!

เสบียง

  • บอร์ดที่ใช้ ESP32: ฉันใช้ Wemos d1 r32 เพราะมีหมุดตัวเมียและจัดการได้ง่ายกว่า
  • ไฟ LED สีแดงเป็นมากกว่า "เตือนเหมือน"
  • จอ LCD I2C 16x2 มีแค่สีฟ้าแต่สีเขียวดูเก๋กว่า
  • กระดานไม้ก๊อกราคาถูก
  • เวลากลางคืน (ไม่จำเป็น)

ขั้นตอนที่ 1: รหัส

รหัส
รหัส
รหัส
รหัส

ออนไลน์ ฉันพบแต่บทเรียนแบบไอระเหยที่ใช้ไซต์ภายนอกเพื่อแยกวิเคราะห์ข้อมูล ดังนั้นฉันจึงพยายามทดสอบพลังของแกน esp32 ที่แยกวิเคราะห์ข้อมูลโดยตรงบนกระดาน… โดยไม่มีปัญหา!

ดังนั้นหากคุณดูแหล่งที่มาของหน้า SIR สามารถเข้าใจวิธีการทำงาน โชคดีที่พวกเขาใช้ค่า "คั่นด้วยเครื่องหมายจุลภาค" เพื่อแสดงข้อมูล ดังนั้นด้วยรหัสนี้ ฉันจะค้นหาสถานีอุทกศาสตร์ (รหัส TOSnumber) และนับจำนวนจุลภาค (เป็นตัวคั่น) ที่มีค่าที่ฉันต้องการ (และเก็บไว้เป็นตัวแปร) จากนั้นทำการแมปใหม่เป็นความสว่าง LED และเวลาเป็นมิลลิวินาทีเพื่อให้ "ระดับความแปรปรวน" กะพริบ

แกนหลักของมีดโกนนี้อยู่ในแท็บ

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; สำหรับ (int i = ind; i <= maxIndex && พบ <= ดัชนี; i ++) { // จากตำแหน่ง ind if (data.charAt (i) == ตัวคั่น || i == maxIndex) { พบ ++; strIndex[0] = strIndex[1] + 1; strIndex[1] = (i == maxIndex) ? ผม + 1: ผม; } } พบผลตอบแทน> index ? data.substring(strIndex[0], strIndex[1]): ""; }

ดัดแปลงจาก

รหัสถามหน้าทุก ๆ 15 นาทีมันประมาณ 44Kb ฉันไม่คิดว่าเป็นภาระใหญ่สำหรับเซิร์ฟเวอร์และสำหรับ ESP32.. เพื่อหลีกเลี่ยงการเลื่อนมากเกินไปฉันได้แบ่งโปรแกรมในฟังก์ชั่นต่าง ๆ อ่านความคิดเห็น

ที่นี่การวางโค้ดนั้นยุ่งเหยิงจริงๆ… ฉันใส่ไฟล์.ino โดยตรง

ฉันใช้คุณสมบัติแท็บของ arduino IDE ดังนั้นฉันจึงมีไฟล์.ino ที่แตกต่างกัน

นี่เป็นโค้ดเวอร์ชันล่าสุด (?) มีความพยายามอย่างมาก ดังนั้นฉันจะขอบคุณสำหรับข้อเสนอแนะใด ๆ

- สำหรับการยืดความสว่าง led สำหรับค่าต่ำ - สำหรับฟังก์ชัน "map" สำหรับตัวแปรจุดลอยตัว - สำหรับการใช้คอร์ที่สองบน ESP32 - เพื่อทำความเข้าใจวิธีพิมพ์เมล html จากสตริงด้วย sprintfI มี ใช้เวลา "เนิร์ด" อย่างแท้จริง ดังนั้นอ่านความคิดเห็นในไฟล์.ino หรือบน github!

ตามการตั้งค่าการอัปโหลด ฉันเคยใช้เครื่องมือ: Partition Scheme: NO OTA เพื่อให้มีพื้นที่มากขึ้นสำหรับโค้ดขนาดใหญ่นี้

มีความสุข

คลิกที่นี่เพื่อดูรหัสบน github

ขั้นตอนที่ 2: แผนที่

แผนที่
แผนที่
แผนที่
แผนที่
แผนที่
แผนที่

tut นี้เน้นที่รหัส ESP32 ดังนั้นฉันจึงสามารถให้คำหลักลิงก์และเครื่องมือที่ใช้เท่านั้น:

บริการที่เป็นเลิศสำหรับการแยกพื้นที่ vectorial จาก openstreetmap

  • QGis "ostic" สำหรับการย่อยพวกเขา
  • ค้นหาตารางแอตทริบิวต์เพื่อทำให้แผนที่ของคุณง่ายขึ้น
  • สร้างรูปแบบการพิมพ์และส่งออกแผนที่ในรูปแบบ svg ในรูปแบบกระดาษ A3
  • ขอให้สนุกกับนักวาดภาพประกอบที่ "เนียน" ขึ้น
  • พิมพ์

ขั้นตอนที่ 3: ปาร์ตี้กาวร้อน

ปาร์ตี้กาวร้อน
ปาร์ตี้กาวร้อน
ปาร์ตี้กาวร้อน
ปาร์ตี้กาวร้อน
ปาร์ตี้กาวร้อน
ปาร์ตี้กาวร้อน
ปาร์ตี้กาวร้อน
ปาร์ตี้กาวร้อน

ดังนั้นฉันจึงสามารถแนะนำให้ตัดรูสำหรับไฟ LED และการแสดงผลบนกระดาษก่อนที่จะแก้ไขบนกระดานไม้ก๊อก

การเดินสายไฟนั้นง่ายมากและฉันทำไม่ดี:P

ระดับการบัดกรีของฉัน: Pigeon

ดังที่คุณเห็นจากรหัสไฟ LED ไปที่พิน IO

#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

ค้นหา ESP32 pinout เพื่อทำความเข้าใจ

ขั้นตอนที่ 4: ผลิตภัณฑ์สำเร็จรูป

ผลิตภัณฑ์สำเร็จรูป
ผลิตภัณฑ์สำเร็จรูป

รูปนี้ไม่ได้สวยที่สุด แต่เมื่อน้ำท่วมแล้ว ฉันจะเอาวิดีโอดีๆ มาฝาก!

แนะนำ: