สารบัญ:
- ขั้นตอนที่ 1: การรับวัสดุ
- ขั้นตอนที่ 2: การตั้งค่าอุปกรณ์
- ขั้นตอนที่ 3: การเข้ารหัส Arduino เพื่อดึงข้อมูล
- ขั้นตอนที่ 4: การใช้การประมวลผลเพื่อฟัง
- ขั้นตอนที่ 5: การแสดงข้อมูลบน Tableau Public
- ขั้นตอนที่ 6: การปรับแต่ง Viz
วีดีโอ: ผู้ทำแผนที่เส้นทาง: 6 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:07
ในโครงการ IoT นี้ เราเชื่อมต่อ NEO-6M (โมดูล GPS) เพื่อส่งข้อมูลตำแหน่งผ่าน Arduino ไปยังแผ่นงาน Excel ที่จะบันทึกลงในคอมพิวเตอร์ หลังจากนั้นด้วย Tableau Public เราสร้างการแสดงภาพข้อมูลของข้อมูลนี้เพื่อแมปเส้นทางที่เราใช้ แม้ว่านี่จะเป็นวิธีหนึ่งในการรวบรวมและนำเสนอข้อมูลแบบเรียลไทม์ในข้อมูลที่มีความสัมพันธ์สูง กล่าวคือ กระบวนการนี้สามารถนำไปใช้กับโครงการที่ขับเคลื่อนด้วยข้อมูลอื่นๆ ได้
ขั้นตอนที่ 1: การรับวัสดุ
สำหรับโครงการนี้ คุณจะต้องมีสิ่งต่อไปนี้:
- โมดูล GPS NEO-6M
- Arduino Uno
- สายจัมเปอร์ชาย/ชาย (ต้องใช้ 4 เส้น)
- สายเคเบิล USB 2.0 ประเภท A ถึง B
- คอมพิวเตอร์ที่มีโปรแกรมเหล่านี้: Tableau Public, Arduino IDE (พร้อม TinyGPS++) และการประมวลผล
ขั้นตอนที่ 2: การตั้งค่าอุปกรณ์
ก่อนอื่นเราต้องตั้งค่าโมดูล GPS กับ Arduino UNO เพื่อให้ Arduino มีอินเทอร์เฟซสำหรับแสดงข้อมูล สายสี่สายแต่ละเส้นที่เชื่อมต่อกับ NEO-6M นั้นสอดคล้องกับพอร์ตเฉพาะ หาก NEO-6M ของคุณไม่ได้มาพร้อมกับสายไฟ คุณจะต้องต่อสายไฟโดยตรงด้วยสายจัมเปอร์ ในแผนภาพด้านบน สีแดงสอดคล้องกับกำลัง (VCC) สีดำถึงพื้น (GND) สีเหลืองเพื่อส่งข้อมูล (TxD) และสีขาวเพื่อรับข้อมูล (RxD) เราเชื่อมต่อสายเหล่านี้กับสายจัมเปอร์ตัวผู้/ตัวผู้ เพื่อให้เราสามารถเชื่อมต่อกับ Arduino ได้ ตามแผนภาพด้านบน เราเชื่อมต่อสายกราวด์กับพินดิจิทัล GND บน Arduino, สาย TxD กับ 4, สาย RxD กับ ~3 และสาย VCC กับ 5V สำหรับแรงดันไฟฟ้า ในขั้นตอนถัดไป เราจะต้องกำหนด TxD และ RxD ด้วยตัวเลขที่ถูกต้องใน SoftwareSerial
เมื่ออุปกรณ์ทั้งสองเชื่อมต่อกัน เราจำเป็นต้องจัดหาแหล่งพลังงาน เชื่อมต่อสาย USB 2.0 กับแล็ปท็อปของคุณและไฟบน NEO-6M จะสว่างขึ้น
ขั้นตอนที่ 3: การเข้ารหัส Arduino เพื่อดึงข้อมูล
ตอนนี้เราได้ตั้งค่าอุปกรณ์เพื่อรวบรวมข้อมูล GPS จากดาวเทียมแล้ว เราจะเขียนโค้ดเพื่อแยกวิเคราะห์ข้อมูล GPS ที่เราต้องการ สมมติว่าคุณได้รับสัญญาณแล้ว (โมดูล GPS ของฉันจะกะพริบเป็นสีน้ำเงิน) โดยค่าเริ่มต้น NEO-6M จะพิมพ์ข้อมูลดิบบนจอภาพแบบอนุกรมในรูปแบบของข้อความ NMEA ซึ่งดูเหมือน $GP ตามด้วยตัวอักษรและอนุกรมอื่นๆ ของตัวเลข ภาพด้านบนให้แนวคิดทั่วไปเกี่ยวกับสิ่งที่ควรแสดงบนจอภาพอนุกรมของคุณเมื่อใส่รหัส Arduino พื้นฐานแล้ว
ในการอธิบายโค้ดที่ฉันแนบมา (หรือถ้าคุณต้องการลองโค้ดด้วยตัวเอง) ก่อนอื่นคุณต้องรวมไลบรารี SoftwareSerial และ TinyGPS++ (สำหรับไลบรารี Sketch > Include > Add. ZIP) SoftwareSerial ช่วยให้เรามีการเชื่อมต่อแบบอนุกรม TinyGPS++ ให้เครื่องมือง่าย ๆ ในการพิมพ์ข้อมูลเป้าหมายในรูปแบบที่อ่านได้ ตรวจสอบให้แน่ใจว่าคุณได้เริ่มต้นอ็อบเจ็กต์ SoftwareSerial ไปยังพินที่เกี่ยวข้องบน Arduino ในฟังก์ชันการตั้งค่า เราใช้ 9600 เป็นอัตราบอด
เพื่อจุดประสงค์ของคำแนะนำนี้ เราจะพิมพ์ข้อมูลเจ็ดประเภทในฟังก์ชันลูปเท่านั้น: ละติจูด (องศา) ลองจิจูด (องศา) ความเร็ว (กม.) หลักสูตร (องศา) ระดับความสูง (กม.) จำนวนดาวเทียมใน การใช้งานและ hdop คุณสามารถค้นหาไวยากรณ์สำหรับพิมพ์ข้อมูลนี้ในไลบรารี Arduiniana รูปแบบทั่วไปคือ Serial.print() ตัวอย่างเช่น หากต้องการพิมพ์ลองจิจูด เราจะพิมพ์ Serial.print(gps.location.lng(), 6) 6 หมายถึงจำนวนหลักที่เราต้องการทางด้านขวาของจุดทศนิยม
รหัสของฉันมีอักขระพิเศษที่พิมพ์เพื่อประโยชน์ของ regex ที่จัดรูปแบบได้ง่ายในขั้นตอนต่อไป อย่างไรก็ตาม หากคุณต้องการหยุดในขั้นตอนนี้ โปรดจัดรูปแบบข้อมูลให้แตกต่างออกไปเพื่อให้ง่ายต่อการดูบนจอภาพแบบอนุกรม
ขั้นตอนที่ 4: การใช้การประมวลผลเพื่อฟัง
แม้ว่าเราจะมีโค้ดสำหรับ Arduino IDE ที่ตั้งค่าไว้ แต่เรามีปัญหาในการบันทึกข้อมูลนี้ ณ ตอนนี้ เราสามารถดูได้เฉพาะข้อมูลบนจอภาพอนุกรมในขณะที่เรากำลังเก็บรวบรวมข้อมูล มีหลายวิธีในการบันทึกข้อมูลนี้ แต่ฉันเลือกการประมวลผลเป็นหลักเพราะอินเทอร์เฟซเลียนแบบ Arduino IDE และใช้ Java ซึ่งเป็นภาษาที่ฉันคุ้นเคย (โปรดทราบว่าคุณสามารถควบคุมบอร์ด Arduino ด้วยการประมวลผลได้หากคุณดาวน์โหลด Firmata) การประมวลผลจะรับฟังบนพอร์ตที่เชื่อมต่อกับ Arduino และมีความสามารถในการจัดการข้อมูลที่อ่านบนจอภาพแบบอนุกรม หากต้องการค้นหาชื่อพอร์ตนี้ ให้ย้อนกลับไปที่ไฟล์ Arduino IDE ของคุณและเช็คอินในเครื่องมือ > พอร์ต
ฉันได้ให้รหัสการประมวลผลแล้ว แต่นี่คือภาพรวมโดยย่อเกี่ยวกับวิธีการทำงานของรหัส
ก่อนฟังก์ชันการตั้งค่า ตรวจสอบให้แน่ใจว่าคุณมีตัวแปรสำหรับพอร์ต ตารางผลลัพธ์ แถวที่เราจะใช้งาน และชื่อของไฟล์ จากนั้นในฟังก์ชันการตั้งค่า จะมีพารามิเตอร์สำหรับกำหนดขนาดของหน้าต่าง Run ของคุณ แต่ตัวเลขเหล่านี้จะไม่ส่งผลต่อการทำงานของเรา (เช่น ตั้งค่าเป็น (500, 500)) เมื่อคุณเริ่มต้นพอร์ต ให้ใช้ชื่อของพอร์ตในรูปแบบสตริงและอัตราบอดที่ 9600 สุดท้าย สร้างเก้าคอลัมน์ (สำหรับหมวดหมู่ GPS เจ็ดประเภท เวลา และวันที่) เพื่อเริ่มต้นตาราง
ในฟังก์ชันการวาด เราใช้ฟังก์ชันวันที่และเวลาในตัวเพื่อติดตามว่าข้อมูล GPS แต่ละชุดถูกดึงออกมาเมื่อใด ตอนนี้เพื่ออ่านสตรีมข้อมูลจาก Arduino และวางไว้ใต้ส่วนหัวที่เหมาะสมพร้อมเวลาและวันที่ที่ถูกต้อง เราใช้นิพจน์ทั่วไป
ฉันใช้ regex เพื่อแยกวิเคราะห์ข้อมูลที่แน่นอนด้วยฟังก์ชัน matchAll ที่ค้นหานิพจน์ใดๆ ระหว่างเครื่องหมายเท่ากับและอัฒภาค (ตัวคั่นที่ฉันใส่ในโค้ด Arduino) จากนั้นจึงวางแท็กที่ตรงกันทั้งหมด ซึ่งเป็นข้อมูลตัวเลขในอาร์เรย์สองมิติ จากนั้นเราสามารถเรียกดัชนีอาร์เรย์เหล่านี้มาวางไว้ใต้ส่วนหัวของแผ่นงาน Excel
ในการบันทึกไฟล์.csv ใหม่ เราใช้การกดแป้นเพื่อปิดหน้าต่าง Run ยิ่งคุณกดคีย์นานเท่าไหร่ คุณก็จะเก็บข้อมูลได้มากขึ้นเท่านั้น ตามแนวทางอื่น ฉันยังตัดสินใจบันทึกไฟล์ลงในโฟลเดอร์ข้อมูลโดยมีวันที่และเวลาเป็นชื่อไฟล์
ขั้นตอนที่ 5: การแสดงข้อมูลบน Tableau Public
ขั้นตอนสุดท้ายเกี่ยวข้องกับการสร้างภาพข้อมูลบางส่วน มีโปรแกรมมากมายสำหรับสร้างและแสดงการสร้างภาพข้อมูล เช่น Plotly แต่สำหรับโครงการนี้ เราจะใช้ Tableau เปิด Tableau Public และเปิดไฟล์ Excel ที่บันทึกไว้เป็นไฟล์ข้อความ ในการสร้างเวิร์กชีต ให้คลิกที่ชีต 1 ที่ด้านล่างซ้ายมือ
เนื่องจากเรากำลังทำงานกับข้อมูล GPS เราจะใช้แผนที่เพื่อแสดงข้อมูลของเรา ในคอลัมน์ด้านซ้ายที่มีข้อความว่าหน่วยวัด เราจะลากลองจิจูดไปที่คอลัมน์และละติจูดไปที่แถวที่ด้านบน Tableau ตั้งค่าเริ่มต้นทั้งสองการวัดเป็น AVG ดังนั้นให้คลิกที่รายการแบบเลื่อนลงถัดจากเงื่อนไขและเปลี่ยนทั้งสองเป็น Dimension ตอนนี้แผนที่ควรมีเส้นทางที่แสดงโดยใช้ค่าละติจูดและลองจิจูดที่รวบรวมไว้
ในการล้างข้อมูลของคุณเพื่อหาข้อผิดพลาด (ซึ่งสามารถทำได้ก่อนที่จะเปิด Tableau) คุณสามารถเลือกที่จะยกเว้นบางแวดวงของตำแหน่งโดยคลิกที่วงกลมเหล่านั้นและเลือกตัวเลือก โมดูล GPS ของฉันไม่ถูกต้อง 100% เนื่องจากไม่พบบางส่วนของเส้นทางของฉัน แต่มีการบันทึกเส้นทางทั่วไปแล้ว
ขั้นตอนที่ 6: การปรับแต่ง Viz
ส่วนสุดท้ายคือการทำให้ข้อมูลนี้อ่านง่ายขึ้น หากคุณต้องการบริบทของถนน คุณสามารถไปที่ Map > Map Layer > Streets and Highways อย่าลังเลที่จะทดลองกับเครื่องหมายอื่น ๆ ฉันลากความเร็วไปที่สีเพื่อแสดงว่าความเข้มของสีเพิ่มขึ้นเมื่อความเร็วเพิ่มขึ้น ฉันยังใช้ Detail แทน Label for Course เพราะ Label จะแสดงตัวเลขบนแผนที่ ในขณะที่ฉันต้องการให้ข้อมูลปรากฏขึ้นเมื่อคุณวางเมาส์เหนือจุดที่ตั้งเท่านั้น
ตอนนี้ คุณมีประสบการณ์กระบวนการทั้งหมดในการรวบรวมข้อมูลและแสดงสิ่งที่คุณมีในการแสดงข้อมูลเป็นภาพแล้ว คุณสามารถนำไปใช้กับโครงการอื่นๆ ได้!
โดย Pingdi Huang ฤดูร้อนปี 2018
แนะนำ:
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: 5 ขั้นตอน
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: การตวัดเป็นวิธีง่ายๆ ในการสร้างเกม โดยเฉพาะอย่างยิ่งเกมปริศนา นิยายภาพ หรือเกมผจญภัย
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: 3 ขั้นตอน
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: ในคำแนะนำนี้ เราจะทำการตรวจจับใบหน้าบน Raspberry Pi 4 ด้วย Shunya O/S โดยใช้ Shunyaface Library Shunyaface เป็นห้องสมุดจดจำใบหน้า/ตรวจจับใบหน้า โปรเจ็กต์นี้มีจุดมุ่งหมายเพื่อให้เกิดความเร็วในการตรวจจับและจดจำได้เร็วที่สุดด้วย
วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: 3 ขั้นตอน
วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: ในบทช่วยสอนนี้ ฉันจะแสดงขั้นตอนสำคัญในการติดตั้งปลั๊กอิน WordPress ให้กับเว็บไซต์ของคุณ โดยทั่วไป คุณสามารถติดตั้งปลั๊กอินได้สองวิธี วิธีแรกคือผ่าน ftp หรือผ่าน cpanel แต่ฉันจะไม่แสดงมันเพราะมันสอดคล้องกับ
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): 8 ขั้นตอน
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): ตัวแปลงสัญญาณเสียงล้ำเสียง L298N Dc ตัวเมียอะแดปเตอร์จ่ายไฟพร้อมขา DC ตัวผู้ Arduino UNOBreadboardวิธีการทำงาน: ก่อนอื่น คุณอัปโหลดรหัสไปยัง Arduino Uno (เป็นไมโครคอนโทรลเลอร์ที่ติดตั้งดิจิตอล และพอร์ตแอนะล็อกเพื่อแปลงรหัส (C++)
เครื่อง Rube Goldberg 11 ขั้นตอน: 8 ขั้นตอน
เครื่อง 11 Step Rube Goldberg: โครงการนี้เป็นเครื่อง 11 Step Rube Goldberg ซึ่งออกแบบมาเพื่อสร้างงานง่ายๆ ในรูปแบบที่ซับซ้อน งานของโครงการนี้คือการจับสบู่ก้อนหนึ่ง