สารบัญ:

TinyLiDAR บน Pi?: 9 ขั้นตอน (พร้อมรูปภาพ)
TinyLiDAR บน Pi?: 9 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: TinyLiDAR บน Pi?: 9 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: TinyLiDAR บน Pi?: 9 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: Sensors Expo 2018: LiDAR in a Chip (ST FlightSense™) 2024, ตุลาคม
Anonim
TinyLiDAR บน Pi?
TinyLiDAR บน Pi?

สวัสดีอีกครั้ง!

ตอนนี้คุณได้ใช้เวลาที่มีคุณภาพกับ tinyLiDAR และ Arduino แล้ว Raspberry Pi ของคุณอาจรู้สึกเหงาบ้าง;)

pi มีพอร์ต I2C ใช่ไหม ทำไมไม่ลองติดมันและลองที่นั่นดูล่ะ! แผนดี แต่ถ้าคุณได้ลองแล้ว คุณอาจสังเกตเห็นว่าข้อมูลดูแปลกไปเล็กน้อย

ใช่ pi ได้สร้าง pull-ups 1.8K แล้ว ดังนั้นคุณจะต้องตัดแผ่น I2C บน tinyLiDAR เพื่อดึง 4.7K ออกจากวงจร - ดูคู่มืออ้างอิงสำหรับรายละเอียด แต่นี่ไม่ใช่สาเหตุของข้อมูลแปลก ๆ

เป็นเพราะบัส I2C ของ pi ไม่ตรงตามสเป็ค มันเป็นเช่นนี้ตั้งแต่เปิดตัว pi ครั้งแรกเนื่องจากชุดชิป Broadcom ตั้งแต่เริ่มต้น พวกเขาไม่รองรับคุณสมบัติ I2C ที่เรียกว่า "การยืดเวลา" อย่างถูกต้อง

คุณสามารถอ่านเพิ่มเติมเกี่ยวกับข้อผิดพลาด h/w ได้ที่นี่

ขั้นตอนที่ 1: การยืดนาฬิกาคืออะไร?

การยืดนาฬิกาคืออะไร?
การยืดนาฬิกาคืออะไร?

อย่างที่คุณอาจทราบ บัส I2C ประกอบด้วยสายไฟ 3 เส้น สิ่งเหล่านี้มีไว้สำหรับนาฬิกา (SCL) ข้อมูล (SDA) และพื้นทั่วไป สายนาฬิกาและข้อมูลเป็นแบบ open-collector/open-drain ซึ่งหมายความว่าพวกเขาต้องการตัวต้านทานแบบดึงขึ้นที่เชื่อมต่อกับรางจ่ายไฟที่เป็นบวกเพื่อให้มีตรรกะสูง เพื่อให้ลอจิกต่ำ อุปกรณ์ใดๆ บนรถบัสสามารถดึงสายลงสู่พื้นทั่วไปได้

ตามมาตรฐาน I2C อุปกรณ์มาสเตอร์เป็นอุปกรณ์ที่ให้สัญญาณนาฬิกาบนสาย SCL แต่ถ้าอัตรานี้เร็วเกินไป อุปกรณ์ Slave จะได้รับอนุญาตให้ช้าลงโดยเพียงแค่กดสายนาฬิกาค้างไว้จนกว่าจะพร้อมที่จะจัดการ กับข้อมูล นี่แหละที่เราเรียกว่า "การยืดเวลา"

อย่างเป็นทางการ การยืดเวลานาฬิกาถูกระบุว่าเป็นคุณสมบัติเสริมในมาตรฐาน I2C แต่เป็นคุณสมบัติทั่วไปที่จำเป็นสำหรับทาส "อัจฉริยะ" ส่วนใหญ่ที่ต้องการเวลาพิเศษในการให้ข้อมูลเซ็นเซอร์ ฯลฯ

ขั้นตอนที่ 2: ความช่วยเหลือเล็กน้อยจากหมูที่บินได้

เพื่อจัดการกับข้อบกพร่องของ I2C h/w เราพบห้องสมุดฟรีเล็กๆ ที่เรียกว่า "pigpio" เป็นไลบรารี่ยอดนิยม รวดเร็ว และน้ำหนักเบาที่เขียนด้วยภาษาซี มันทำงานเป็นดีมอนพื้นหลังสำหรับ Raspberry Pi และช่วยให้เราควบคุม I2C รวมถึง GPIO ได้อย่างง่ายดายจากไพ ธ อน ไลบรารีปฏิบัติต่อพอร์ต I2C เหมือนกับ GPIO และด้วยเหตุนี้จึงข้ามข้อผิดพลาดในการยืดเวลานาฬิกา I2C เช่นเดียวกับซอฟต์แวร์ทั้งหมดบน pi ไลบรารี่ของ pigpio อยู่ห่างออกไปเพียงแค่ "รวม" เท่านั้น ไปกันเลย!

ขั้นตอนที่ 3: TL;DR เวอร์ชัน

ตั้งค่า PiEnable SSH เพื่อเข้าสู่ระบบด้วย PuttyInstall pigpio library รับไฟล์ zip tinyLiDARUnzip และเรียกใช้จาก Putty

ไม่จำเป็น:

ตั้งค่า SublimeText ด้วย WinSCP

ขั้นตอนที่ 4: การติดตั้ง

การติดตั้ง
การติดตั้ง

สำหรับ Raspberry Pi 3 ของเรา เราใช้ระบบปฏิบัติการ New Out Of the Box Software (NOOBS Lite v2.4) มาตรฐาน มันมีเวอร์ชันเริ่มต้นของ Python ที่ติดตั้งไว้แล้วสำหรับเราพร้อมที่จะเขียนโค้ดด้วย คุณสามารถดาวน์โหลด OS ได้จากที่นี่

เมื่อติดตั้งบนการ์ด micro SD แล้ว คุณต้องเชื่อมต่อแป้นพิมพ์และจอภาพเพื่อให้คุณสามารถเข้าสู่ระบบ pi ได้เป็นครั้งแรก:

ชื่อผู้ใช้: pi รหัสผ่าน: raspberry

จากนั้น คุณสามารถเริ่มเซิร์ฟเวอร์เชลล์ที่ปลอดภัย (SSH) ด้วยคำสั่งเหล่านี้:

sudo systemctl เปิดใช้งาน sshsudo systemctl เริ่ม ssh

ต่อไปเราจะต้องการที่อยู่ IP ของ pi บนเครือข่ายของคุณเพื่อให้เราสามารถเข้าสู่ระบบด้วย PuTTY เพื่อรับสิ่งนี้ เพียงพิมพ์:

ชื่อโฮสต์ -I

และมองหาที่อยู่รูปแบบ IPv4 (สำหรับการตั้งค่าของเราคือ: 192.168.0.27)

ขั้นตอนข้างต้นจะช่วยให้ pi เรียกใช้ "headless" ได้ ซึ่งหมายความว่าคุณไม่จำเป็นต้องพิมพ์บนแป้นพิมพ์นี้อีก และไม่จำเป็นต้องใช้จอภาพวิดีโออีกต่อไป เราจะเข้าสู่ระบบผ่านเครือข่ายผ่านการเชื่อมต่อ SSH ที่ปลอดภัยในอนาคต คำสั่งดังกล่าวทำให้เซิร์ฟเวอร์ SSH เริ่มทำงานโดยอัตโนมัติทุกครั้งที่เปิด pi สิ่งนี้สะดวกสำหรับเราในขณะที่เรากำลังเข้ารหัส แต่อาจเป็นความเสี่ยงด้านความปลอดภัยในภายหลัง (การหวาดระแวงนั้นดี) ดังนั้นเมื่อคุณพร้อม คุณสามารถปิดใช้งานคุณสมบัติเริ่มต้น SSH อัตโนมัติได้โดยใช้คำสั่งนี้:

sudo systemctl ปิดการใช้งาน ssh

คำสั่งนี้ควรพิมพ์ที่แป้นพิมพ์ที่เชื่อมต่อกับ pi แน่นอน

PuTTY เป็นโปรแกรมเทอร์มินัลซึ่งจำเป็นต้องออกคำสั่งจากพีซีไปยัง pi ดังนั้นคุณควรคว้าสำเนาล่าสุดจากที่นี่

ติดตั้งและเริ่มต้น PuTTY คุณจะต้องพิมพ์ที่อยู่ IP จากด้านบนที่รายการชื่อโฮสต์และใช้การตั้งค่า SSH เริ่มต้น ตั้งชื่อเซสชั่นที่คุณต้องการและกดบันทึก จากนั้นกดโหลดและคลิกเปิดเพื่อเริ่มเซสชัน

ควรพาคุณไปที่หน้าจอเข้าสู่ระบบสำหรับ pi ใช้ชื่อผู้ใช้และรหัสผ่านเดียวกับที่คุณใช้ก่อนหน้านี้

ขั้นตอนที่ 5: ติดตั้ง Pigpio

สิ่งเดียวที่เราต้องติดตั้งหลังจากนี้ก็คือไลบรารี่ของ pigpio และเราสามารถทำได้โดยใช้คำสั่งต่อไปนี้

เคล็ดลับ: คุณสามารถคัดลอก [ctrl+c] และวาง [คลิกขวาเมาส์] เหล่านี้และคำสั่งอื่นๆ ลงในเทอร์มินัล PuTTY

sudo apt-get update

sudo apt-get ติดตั้ง pigpio python-pigpio python3-pigpio

ขั้นตอนที่ 6: ทางเลือก: Dev System Setup

ทางเลือก: Dev System Setup
ทางเลือก: Dev System Setup

นี่คือเคล็ดลับที่อาจช่วยประหยัดเวลาในโลกของการพัฒนาโค้ดของคุณได้ เราเกลียดโปรแกรมแก้ไขข้อความที่ใช้ยูนิกซ์จริงๆ อินเทอร์เฟซผู้ใช้มักจะงุ่มง่ามและแบบอักษรดูด GNU nano เกือบจะทนได้ แต่ไม่มีสิ่งใดที่ละเอียดเท่า SublimeText ที่คุณสามารถดาวน์โหลดได้จากที่นี่

เรามีสภาพแวดล้อมการพัฒนาที่ใช้ Windows และชอบที่จะใช้โปรแกรมแก้ไขข้อความนี้ทุกครั้งที่ทำได้ ดังนั้นเคล็ดลับในที่นี้คือการตั้งค่าระบบของคุณให้สามารถใช้โปรแกรมแก้ไขข้อความระดับมืออาชีพนี้บนเดสก์ท็อปของ Windows เพื่อเขียนโค้ดบน pi ที่ไม่มีส่วนหัวได้โดยตรง

ยังไง? ใช้แอพฟรีที่เรียกว่า WinSCP ที่คุณสามารถดาวน์โหลดได้จากที่นี่

ขั้นตอนที่ 7: การตั้งค่า WinSCP

การตั้งค่า WinSCP
การตั้งค่า WinSCP
การตั้งค่า WinSCP
การตั้งค่า WinSCP

WinSCP เป็นโปรแกรมถ่ายโอนไฟล์ที่ปลอดภัยซึ่งให้การแสดงภาพกราฟิกของไฟล์ที่มีอยู่ในประเภท rpi ของคุณ เช่นเดียวกับที่คุณเห็นในตัวจัดการไฟล์บนพีซีที่ใช้ Windows ของคุณ

ดังนั้นไปข้างหน้าและติดตั้งสองโปรแกรมข้างต้นด้วยตอนนี้

ถัดไป คุณจะต้องทำการปรับเปลี่ยนเล็กน้อยเพื่อให้ทั้งหมดทำงานได้อย่างถูกต้อง

สำหรับ WinSCP คุณสามารถคลิกที่ NEW Site เราจะใช้การตั้งค่า SFTP เริ่มต้น และคุณจะต้องป้อนที่อยู่ IP (สำหรับชื่อโฮสต์) ของ pi ของคุณและชื่อล็อกอิน (สำหรับชื่อผู้ใช้) เท่านั้น คุณสามารถเลือกที่จะปล่อยรหัสผ่านว่างไว้ได้หากต้องการ โดยระบบจะถามรหัสผ่านทุกครั้งที่คุณเข้าสู่ระบบ

ถัดไป ให้คลิกปุ่มขั้นสูง จากนั้นคลิกทางด้านซ้ายเพื่อตั้งค่า Environment Shell ทางด้านขวาเปลี่ยน "ค่าเริ่มต้น" ให้ดึงลงมาที่ตัวเลือก "sudo su -" สิ่งนี้จะช่วยให้สามารถเขียนการเปลี่ยนแปลงไปยัง pi ของคุณโดยไม่มีข้อผิดพลาดในการอนุญาตเมื่อคุณกดบันทึกจาก SublimeText

ตั้งค่า SublimeText เป็น Default Editor ใน WinSCP

ในการดำเนินการนี้ ให้คลิกปุ่มเครื่องมือบนหน้าจอการตั้งค่าการเข้าสู่ระบบ WinSCP ที่คุณเริ่มกล่องโต้ตอบ NewSite ภาพหน้าจอทั้งสองแสดงให้เห็นว่ามีการกำหนดค่าอย่างไร แต่โดยทั่วไป คุณจะคลิกเพื่อกำหนดค่าการตั้งค่า Editors และเพิ่ม Editor ซึ่งจะเป็นตัวแก้ไขภายนอก จากนั้นคุณสามารถเรียกดูไฟล์.exe ของตำแหน่งที่โปรแกรมแก้ไขนี้อยู่ในคอมพิวเตอร์ของคุณ

ขั้นตอนที่ 8: (w) รับรหัส

(w) รับรหัส
(w) รับรหัส

เมื่อเสร็จแล้ว ให้เข้าสู่ระบบด้วย WinSCP และ PuTTY

ตอนนี้เราพร้อมแล้ว เราสามารถเริ่มโค้ด tinyLiDAR ของเราได้

สร้างไดเร็กทอรีชื่อ tinyLiDAR ภายใต้ไดเร็กทอรี home/pi ของคุณ

คุณสามารถทำได้โดยคลิกขวาที่ด้านขวาของหน้าจอ WinSCP แล้วเลือก New / Directory

ตอนนี้ที่เทอร์มินัล PuTTY คุณสามารถพิมพ์

cd t

และกด tab เพื่อให้คำสั่งของคุณเติมข้อความอัตโนมัติเพื่อไปยังไดเร็กทอรี tinyLiDAR

เมื่อที่นี่พิมพ์ต่อไปนี้:

wget

เพื่อรับไฟล์โดยตรงจากเซิร์ฟเวอร์ของเรา จากนั้นเราสามารถเปิดเครื่องรูดโดยพิมพ์

เปิดเครื่องรูด

แล้วกด tab เพื่อเติมชื่ออัตโนมัติอีกครั้ง

หากต้องการเรียกใช้เพียงพิมพ์

หลาม tlgui.py

และ tinyLiDAR ของคุณจะตอบสนองต่อทุกคำสั่งของคุณบน pi:)

ขั้นตอนที่ 9: หมายเหตุสำหรับแฮกเกอร์ที่ใกล้จะเป็น

ไปข้างหน้าและดูภายใต้ประทุนโดยดับเบิลคลิกที่ไฟล์รหัสใด ๆ จาก WinSCP เป็นไฟล์ที่มีนามสกุล.py ไฟล์ควรเปิดขึ้นใน SublimeText บนพีซีของคุณโดยตรง เปลี่ยนสิ่งที่คุณต้องการแล้วกดบันทึก การเปลี่ยนแปลงของคุณจะถูกบันทึกโดยตรงไปยัง pi ของคุณ

เมื่อพร้อมแล้ว คุณเรียกใช้อีกครั้งโดยใช้แป้นลูกศรขึ้นสำหรับคำสั่งที่พิมพ์ล่าสุด หรือเพียงพิมพ์อีกครั้งแล้วกด Enter:

หลาม tlgui.py

คุณอาจสังเกตเห็นว่าเลย์เอาต์ Terminal GUI ดูดีกว่ารุ่น Arduino เล็กน้อย เป็นเพราะ PuTTY รองรับอักขระ Unicode ดังนั้นเราจึงสามารถใช้อักขระควบคุมเคอร์เซอร์พิเศษบางอย่างเพื่อให้ดูละเอียดยิ่งขึ้น

นอกจากนี้ยังมีคำสั่งเพิ่มเติมที่นี่ (เมื่อเทียบกับรุ่น Arduino) ซึ่งก็คือ "dc" สำหรับฟังก์ชันอ่านต่อเนื่อง ลองใช้และดูว่าคุณคิดอย่างไร

นั่นคือทั้งหมด!

ขอบคุณสำหรับการอ่านและสนุกกับการแฮ็คบน pi:)

แนะนำ: