สารบัญ:
- เสบียง
- ขั้นตอนที่ 1: รหัส
- ขั้นตอนที่ 2: แผนที่
- ขั้นตอนที่ 3: ปาร์ตี้กาวร้อน
- ขั้นตอนที่ 4: ผลิตภัณฑ์สำเร็จรูป
วีดีโอ: ESP32 Scraper-parser-mailer และ Live Mapper: 4 ขั้นตอน (พร้อมรูปภาพ)
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:02
สวัสดีชาวโลก! นี่เป็นคำสั่งสอนครั้งแรกของฉัน! ฉัน 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 คือเซลล์ที่แปดที่กำหนดโดยเครื่องหมายจุลภาค (ตัวคั่น)
"เพย์โหลด" คือสิ่งที่ฉันได้รับจากเว็บที่ก่อนหน้านี้ล้างจาก "ใบเสนอราคา" และ " ";
และฟังก์ชัน 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: ผลิตภัณฑ์สำเร็จรูป
รูปนี้ไม่ได้สวยที่สุด แต่เมื่อน้ำท่วมแล้ว ฉันจะเอาวิดีโอดีๆ มาฝาก!
แนะนำ:
ติดตาม: ศูนย์สื่อขั้นสูงพร้อม Odroid N2 และ Kodi (รองรับ 4k และ HEVC): 3 ขั้นตอน
ติดตาม: Advanced Media Center พร้อม Odroid N2 และ Kodi (รองรับ 4k และ HEVC): บทความนี้เป็นบทความต่อจากบทความก่อนหน้าของฉันที่ประสบความสำเร็จค่อนข้างมากเกี่ยวกับการสร้างศูนย์สื่ออเนกประสงค์ โดยอ้างอิงจาก Raspberry PI ที่ได้รับความนิยมมากในตอนแรก แต่ ในภายหลัง เนื่องจากไม่มีเอาต์พุตที่สอดคล้องกับ HEVC, H.265 และ HDMI 2.2 จึงมีสวิตช์
Blinds Control ด้วย ESP8266, Google Home และ Openhab Integration และ Webcontrol: 5 ขั้นตอน (พร้อมรูปภาพ)
การควบคุมมู่ลี่ด้วย ESP8266, Google Home และ Openhab Integration และ Webcontrol: ในคำแนะนำนี้ ฉันจะแสดงให้คุณเห็นว่าฉันเพิ่มระบบอัตโนมัติให้กับมู่ลี่ของฉันอย่างไร ฉันต้องการเพิ่มและลบระบบอัตโนมัติได้ ดังนั้นการติดตั้งทั้งหมดจึงเป็นแบบหนีบ ส่วนหลักคือ: สเต็ปเปอร์มอเตอร์ ตัวขับสเต็ปควบคุม bij ESP-01 เกียร์และการติดตั้ง
DIY IBeacon และ Beacon Scanner ด้วย Raspberry Pi และ HM13: 3 ขั้นตอน
DIY IBeacon และ Beacon Scanner ด้วย Raspberry Pi และ HM13: Story A beacon จะส่งสัญญาณอย่างต่อเนื่องเพื่อให้อุปกรณ์บลูทู ธ อื่น ๆ รู้ว่ามีอยู่ และฉันอยากได้บีคอนบลูทูธเพื่อติดตามกุญแจมาตลอด เพราะฉันลืมเอามันมาเหมือน 10 ครั้งในปีที่แล้ว และฉันก็เกิดขึ้น
RuuviTag และ PiZero W และ Blinkt! เทอร์โมมิเตอร์แบบ Bluetooth Beacon: 3 ขั้นตอน (พร้อมรูปภาพ)
RuuviTag และ PiZero W และ Blinkt! เครื่องวัดอุณหภูมิที่ใช้ Bluetooth Beacon: คำแนะนำนี้อธิบายวิธีการอ่านข้อมูลอุณหภูมิและความชื้นจาก RuuviTag โดยใช้ Bluetooth กับ Raspberry Pi Zero W และเพื่อแสดงค่าเป็นเลขฐานสองบน Pimoroni กะพริบตา! pHAT.หรือเรียกสั้นๆ ว่า จะสร้างสถานะอย่างไร
วิธีการสร้าง Quadcoptor (NTM 28-30S 800kV 300W และ Arducopter APM 2.6 & 6H GPS 3DR Radio และ FlySky TH9X): 25 ขั้นตอน (พร้อมรูปภาพ)
วิธีการสร้าง Quadcoptor (NTM 28-30S 800kV 300W และ Arducopter APM 2.6 & 6H GPS 3DR Radio และ FlySky TH9X): นี่คือบทแนะนำเกี่ยวกับวิธีการสร้าง Quadcopter โดยใช้มอเตอร์ NTM 28-30S 800kV 300W และ Arducopter APM 2.6 & 6H GPS & วิทยุ 3DR ฉันพยายามอธิบายแต่ละขั้นตอนด้วยรูปภาพจำนวนหนึ่ง หากคุณมีคำถามหรือความคิดเห็นใด ๆ โปรดตอบกลับ