สารบัญ:

DragonBoard และ OBD2: 12 ขั้นตอน
DragonBoard และ OBD2: 12 ขั้นตอน

วีดีโอ: DragonBoard และ OBD2: 12 ขั้นตอน

วีดีโอ: DragonBoard และ OBD2: 12 ขั้นตอน
วีดีโอ: Building and Testing an Automotive Platform - How Automotive Grade Linux is Built and Tested 2024, กรกฎาคม
Anonim
DragonBoard และ OBD2
DragonBoard และ OBD2

การอ่านข้อมูลที่ออกมาจากพอร์ต OBD2 ในรถของคุณ เป็นไปได้ที่จะรวบรวมข้อมูลที่น่าทึ่งจากมัน เราใช้ DragonBoard 410c ในโครงการนี้และให้รายละเอียดที่นี่ เพื่อให้คุณทำเองได้

โครงการนี้เกิดขึ้นได้เพราะความร่วมมือกับ #Qualcomm #Embarcados #Linaro #Arrow #BaitaAceleradora ที่ทำให้เราสามารถเข้าถึงฮาร์ดแวร์ที่ดีที่สุดในตลาด รวมถึงการติดต่อกับผู้เชี่ยวชาญที่ดีที่สุดเพื่อสนับสนุนการพัฒนา

ทีมงานแต่งโดยคนเหล่านี้:

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

Para seguir este projeto em Português, กลุ่ม aqui:

www.instructables.com/id/DragonBoard-Com-OBD

สำหรับโครงการนี้ เราใช้รายการต่อไปนี้:

  • Qualcomm DragonBoard 410c
  • อินเตอร์เฟส ELM327 Bluetooth OBD2
  • ดองเกิล USB 3G/4G
  • ที่ชาร์จในรถยนต์ Tension Inverter (110v)

ขั้นตอนที่ 1: ดำเนินการตั้งค่าเริ่มต้น DragonBoard 410c**

ดำเนินการตั้งค่าเริ่มต้น DragonBoard 410c**
ดำเนินการตั้งค่าเริ่มต้น DragonBoard 410c**
ดำเนินการตั้งค่าเริ่มต้น DragonBoard 410c**
ดำเนินการตั้งค่าเริ่มต้น DragonBoard 410c**
ดำเนินการตั้งค่าเริ่มต้น DragonBoard 410c**
ดำเนินการตั้งค่าเริ่มต้น DragonBoard 410c**

ด้วยการใช้ Qualcomm DragonBoard 410c เราเริ่มโครงการด้วยการติดตั้งการแจกจ่ายของ Linux ที่เรียกว่า Linaro ทำให้เราสามารถตั้งค่าอุปกรณ์ทั้งหมดที่จำเป็นได้

ในการสร้างรูปภาพของ Linaro สำหรับ DragonBoard ให้ใช้ Ubunto บน VirtualBox เพื่อให้คุณสามารถใช้ FastBoot (ซึ่งเป็นแอพที่ใช้ Linux) โดยพื้นฐานแล้วสิ่งที่คุณต้องทำคือเปิด Terminal ที่ VM Ubuntu แล้วป้อน:

sudo apt-get android-tools-fastboot

ในการติดตั้ง Linaro เราต้องผ่าน 2 ขั้นตอนสำคัญ:

1) การติดตั้ง BOOTLOADER

ชื่อไฟล์: dragonboard410c_bootloader_emmc_linux-79.zip

builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/

แตกไฟล์และเลือกโฟลเดอร์:

cd /FolderName (พาธไปยังโฟลเดอร์ที่คลายซิป)

ป้อนรหัสต่อไปนี้:

อุปกรณ์ fastboot sudo

ผลตอบแทนที่คาด:

(เลขฐานสิบหก) fastboot

จากนั้นพิมพ์:

sudo./flashall

ผลตอบแทนที่คาด:

เสร็จ. เวลาทั้งหมด 1,000 วินาที (ไม่มีข้อผิดพลาด)

การติดตั้งระบบปฏิบัติการ

builds.96boards.org/releases/dragonboard410c/linaro/debian/latest/

ดาวน์โหลด 2 ไฟล์นี้:

boot-linaro-ยืด-qcom-snapdragon-arm64-20170607-246.img.gz

นี่เป็นเวอร์ชันล่าสุดที่มีอยู่ในปัจจุบัน (มิถุนายน/17) ดังนั้นชื่ออาจมีการเปลี่ยนแปลงในอนาคต รูปแบบที่คุณต้องการคือ "boot-linaro-VersionName" อันนี้ชื่อ "ยืด" และก่อนหน้าคือ "เจสซี่"

linaro-ยืด-alip-qcom-snapdragon-arm64-20170607-246.img.gz

นี่เป็นเวอร์ชันล่าสุดจนถึงปัจจุบัน (มิถุนายน/17) และชื่ออาจมีการเปลี่ยนแปลงในอนาคต มองหารูปแบบ "linaro-VersionName-alip"

เปิดเครื่องรูดไฟล์จาก. GZ

เข้าถึงโฟลเดอร์ "root" ที่เกี่ยวข้องกับไฟล์ที่คลายซิป

ตัวอย่าง: "/Downloads" ซึ่งเป็นที่จัดเก็บไฟล์ที่ดาวน์โหลด

ตอนนี้เริ่มต้นด้วยคำสั่งต่อไปนี้:

อุปกรณ์ fastboot sudo

sudo fastboot บูตแฟลช boot-linaro-NomeDaVersão-qcom-snapdragon-arm64-DATA.img

ผลตอบแทนที่คาดหวัง (การจำเวลาอาจแตกต่างกันไป):

เสร็จ. เวลาทั้งหมด: 100.00s

เชื่อมต่อเมาส์ คีย์บอร์ด และจอภาพ/ทีวีโดยใช้พอร์ต HDMI

มีสิ่งนี้ในมือ:

ผู้ใช้: linaro

รหัสผ่าน: linaro

เปิดแอป Lxterminal และดำเนินการดาวน์โหลดรายการอัปเดตที่มีเกี่ยวกับแพ็คเกจที่ติดตั้ง:

sudo apt-get update

ตรวจสอบให้แน่ใจว่าได้ติดตั้งแพ็คเกจที่มีอยู่จากรายการ:

sudo apt-get อัพเกรด

คำแนะนำ: Linaro ได้รับเลือกเนื่องจากการบูตที่เร็วมาก และชุมชนมีส่วนร่วมมากและมุ่งเน้นการแก้ปัญหา ซึ่งช่วยประหยัดเวลาได้มาก

ขั้นตอนที่ 2: ค้นหา DragonBoard 410c ของคุณโดยใช้เสาอากาศ GPS

ค้นหา DragonBoard 410c ของคุณโดยใช้เสาอากาศ GPS
ค้นหา DragonBoard 410c ของคุณโดยใช้เสาอากาศ GPS
ค้นหา DragonBoard 410c ของคุณโดยใช้เสาอากาศ GPS
ค้นหา DragonBoard 410c ของคุณโดยใช้เสาอากาศ GPS

เริ่มต้นด้วยการติดตั้งแอพที่จำเป็นซึ่งจะเป็นไคลเอนต์ไปยังโมดูล GPS ชื่อแอปคือ: GNSS-GPSD, GPSD และ GPSD-CLIENTS โดยทำตามคำสั่ง:

sudo apt-get ติดตั้ง gnss-gpsd gpsd gpsd-clients

เมื่อติดตั้งแอปเหล่านี้แล้ว คุณจะต้องมีคำสั่งเพิ่มเติมเพื่อเริ่มต้นอย่างถูกต้อง:

sudo systemctl start qdsp-start.service

sudo systemctl เริ่ม gnss-gpsd.service sudo systemctl เริ่ม qmi-gps-proxy.service

ตอนนี้นำ DragonBoard 410c ออกไปยังพื้นที่โล่งกว้าง มองเห็นท้องฟ้าได้ชัดเจน ทำให้สามารถรับสัญญาณจากดาวเทียมได้ ตอนนี้พิมพ์ลงในเทอร์มินัล:

gpsmon –n

จากการทดสอบของเรา ข้อมูลจะเริ่มปรากฏบนหน้าจอหลังจากผ่านไป 10 นาทีโดยเฉลี่ย ที่เปลี่ยนแปลงไปมากจากที่หนึ่งไปยังอีกที่หนึ่ง นอกเหนือจากตำแหน่งของ DragonBoard บนหน้าต่างหรือในอาคาร นอกจากสิ่งกีดขวางอื่นๆ มากมายที่อาจรบกวนการรับสัญญาณ GPS

ขั้นตอนที่ 3: ติดตั้ง 3G/4G USB Dongle

การติดตั้ง 3G/4G USB Dongle
การติดตั้ง 3G/4G USB Dongle
การติดตั้ง 3G/4G USB Dongle
การติดตั้ง 3G/4G USB Dongle
การติดตั้ง 3G/4G USB Dongle
การติดตั้ง 3G/4G USB Dongle
การติดตั้ง 3G/4G USB Dongle
การติดตั้ง 3G/4G USB Dongle

มีสองสามวิธีในการเชื่อมต่อ DragonBoard 410c กับเครือข่าย 3G/4G/GSM:

  • การใช้ Shield / BreakoutBoard กับโมเด็ม GSM ที่มีสล็อต SimCard ด้วย
  • ใช้ดองเกิล USB 3G/4G

สำหรับโครงการนี้ เราตัดสินใจใช้ E3272 USB Dongle ของ Huawei เพราะหาซื้อได้ง่ายและรวดเร็ว

ในการกำหนดค่าโมเด็ม คุณสามารถใช้เทอร์มินัล (โดยใช้แอป WVDial) แต่วิธีที่ง่ายที่สุดคือการใช้อินเทอร์เฟซผู้ใช้แบบกราฟิก (GUI) ของ Linaro ได้ดังนี้

  • ด้วย USB Dongle ที่เชื่อมต่อกับ DragonBoard ให้คลิกขวาที่ไอคอน "เครือข่าย" ที่มุมล่างขวาของหน้าจอ
  • “แก้ไขการเชื่อมต่อ” > “เพิ่ม”;
  • เลือก "บรอดแบนด์บนมือถือ" จากเมนูแบบเลื่อนลง
  • คลิก "สร้าง"

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

ขั้นตอนที่ 4: เปลี่ยน DragonBoard 410c ให้เป็น Wifi Hotspot / Access Point

เปลี่ยน DragonBoard 410c ให้เป็น Wifi Hotspot / Access Point
เปลี่ยน DragonBoard 410c ให้เป็น Wifi Hotspot / Access Point
เปลี่ยน DragonBoard 410c ให้เป็น Wifi Hotspot / Access Point
เปลี่ยน DragonBoard 410c ให้เป็น Wifi Hotspot / Access Point
เปลี่ยน DragonBoard 410c ให้เป็น Wifi Hotspot / Access Point
เปลี่ยน DragonBoard 410c ให้เป็น Wifi Hotspot / Access Point

วิธีที่ง่ายที่สุดในการกำหนดค่า DragonBoard 410c เป็นเราเตอร์ไร้สายหรือฮอตสปอต (เมื่อคุณกำหนดค่าการเชื่อมต่ออินเทอร์เน็ตแล้ว) คือการใช้ GUI ของระบบ โดยทำตามขั้นตอนด้านล่าง:

  • คลิกขวาที่ไอคอนเครือข่ายที่มุมล่างขวา
  • เลือก "แก้ไขการเชื่อมต่อแล้วเลือก" เพิ่ม
  • เลือก "Wi-Fi"
  • คลิกสร้าง

เปลี่ยนชื่อเครือข่ายที่คุณต้องการสร้างในฟิลด์ "SSID" และเปลี่ยนฟิลด์ "Mode" เป็น "Hotspot"

เพื่อให้แน่ใจว่าจะใช้งานได้ ให้ตรวจสอบสิ่งต่อไปนี้:

  • ไปที่แท็บ “การตั้งค่า IPv4”
  • ตรวจสอบว่า "วิธีการ"

ขั้นตอนที่ 5: การเข้าถึง DragonBoard 410c แบบไร้สายโดยใช้ SSH ผ่านการเชื่อมต่อ Hotspot

การเข้าถึง DragonBoard 410c แบบไร้สายโดยใช้ SSH ผ่านการเชื่อมต่อ Hotspot
การเข้าถึง DragonBoard 410c แบบไร้สายโดยใช้ SSH ผ่านการเชื่อมต่อ Hotspot

เราจัดการเพื่อสร้างวิธีการเข้าถึง DragonBoard จากระยะไกล ไม่ว่าคุณจะอยู่ใกล้หรือไม่ก็ตาม โดยปกติคุณจะต้องเชื่อมต่อกับบอร์ดโดยใช้ wifi หรือบลูทูธ อีกวิธีหนึ่งคือการเข้าถึงโดยเชื่อมต่อกับเครือข่าย Wifi เดียวกัน (เช่น จากเราเตอร์) ในการดำเนินการในขั้นตอนต่อไป เรากำลังสร้างอุปกรณ์ที่มีอยู่ในตัว ซึ่งสร้างเครือข่ายของตัวเอง และเปิดขึ้นสู่เว็บเพื่อให้สามารถเข้าถึงได้

คุณสามารถเริ่มต้นด้วยการติดตั้ง "Auto SSH" โดยใช้รหัสด้านล่าง:

sudo apt-get install gcc make

wget https://www.harding.motd.ca/autossh/autossh-1.4e.tgz tar -xf autossh-1.4e.tgz cd autossh-1.4e./configure ทำให้ sudo ทำการติดตั้ง

ตอนนี้เรากำลังจะสร้างคีย์การเข้ารหัสโดยใช้มาตรฐาน RSA คีย์นี้จะใช้เพื่อเข้าถึงอินสแตนซ์ปลายทางของ Linux อย่างปลอดภัยผ่าน IP สาธารณะของโมเด็ม 3G เป้าหมายหลักของขั้นตอนนี้ โค้ดต่อไปนี้จะคัดลอกคีย์นั้นไปยัง Trusted Keys Repository ของ Linux เพื่อให้แน่ใจว่ามีความปลอดภัยในการเชื่อมต่อมากยิ่งขึ้น

ssh-keygen -t rsa

scp ~/.ssh/id_rsa.pub user@remote_server:.ssh/authorized_keys autossh -M 0 -q -f -N -i /home/pi/.ssh/id_rsa -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -R 2222:localhost:22 user@remote_server

ทำตามขั้นตอนเหล่านี้ คุณเพิ่งเปลี่ยน Qualcomm DragonBoard 410c เป็น Cloud Server! \o/

ขั้นตอนที่ 6: เชื่อมต่อ DragonBoard 410c กับ OBD ของรถยนต์โดยใช้ Bluetooth - ตอนที่ 1/2

การเชื่อมต่อ DragonBoard 410c กับ OBD ของรถยนต์โดยใช้ Bluetooth - ตอนที่ 1/2
การเชื่อมต่อ DragonBoard 410c กับ OBD ของรถยนต์โดยใช้ Bluetooth - ตอนที่ 1/2
การเชื่อมต่อ DragonBoard 410c กับ OBD ของรถยนต์โดยใช้ Bluetooth - ตอนที่ 1/2
การเชื่อมต่อ DragonBoard 410c กับ OBD ของรถยนต์โดยใช้ Bluetooth - ตอนที่ 1/2

อินเทอร์เฟซการสื่อสารของรถยนต์ทำผ่านพอร์ต OBD2 ข้อมูลที่มีการแลกเปลี่ยนในพอร์ตนี้จำเป็นต้องได้รับการแปล และเราจำเป็นต้องมีอุปกรณ์สำหรับล่าม มีตัวเลือกฮาร์ดแวร์สองแบบ: ELM327 หรือ STN1170

สำหรับโครงการนี้ เราใช้อุปกรณ์บลูทูธที่มีชิปเซ็ตที่ใช้ ELM327

สิ่งสำคัญที่ควรทราบคือความพร้อมใช้งานของ ELM327 ไม่ได้หมายความว่าจะเป็นรุ่นดั้งเดิมของ ELM327 ชิปเซ็ตส่วนใหญ่ที่มีอยู่นั้นใช้เวอร์ชัน 1.5 ซึ่งเป็นช่วงที่ข้อมูลของชิปถูกโคลนและรั่วไหลออกสู่ตลาด ELM327 ดั้งเดิมมีอยู่ในเวอร์ชัน 2.2 แล้ว วิวัฒนาการของชิปเซ็ตนี้ทำให้ข้อมูลเพิ่มเติมเกี่ยวกับรถยนต์รุ่นใหม่ๆ สิ่งสำคัญคือต้องรู้ว่า เพราะขึ้นอยู่กับการทดสอบ คุณอาจหรือไม่สามารถเข้าถึงข้อมูลจากรถรุ่นใหม่กว่าได้

ด้วยอะแดปเตอร์บลูทูธ OBD2 ค้นหาพอร์ต OBD2 ของรถคุณ มันอาจจะอยู่ที่ไหนสักแห่งใต้พวงมาลัย อาจค้นหาได้ง่ายขึ้นโดยใช้เครื่องมือนี้:

เข้าถึง DragonBoard 410c โดยใช้ SSH จากโน้ตบุ๊กของคุณ (จำไว้ว่าตอนนี้คุณอยู่ในรถ และไม่มีทีวี/จอภาพสำหรับเสียบบอร์ด) ทันทีที่เสียบอุปกรณ์บลูทูธ OBD2 เข้ากับพอร์ตในรถยนต์ ให้ทำตามขั้นตอนด้านล่างเพื่อเข้าถึงการเชื่อมต่อบลูทูธ

sudo bluetoothctl

จับคู่กับเอเจนต์ในการสแกนเอเจนต์เริ่มต้นบนในขั้นตอนนี้เป็นสิ่งสำคัญที่คุณจะต้องคัดลอกที่อยู่ MAC เนื่องจากคุณจะต้องใช้สำหรับขั้นตอนถัดไป

พิมพ์คำสั่งเหล่านี้:

ไว้วางใจ MACADDRESS

คู่ MACADDRESS

คุณควรได้รับแจ้งพร้อมคำขอให้พิมพ์รหัส PIN เพื่อจับคู่ Bluetooth OBD2 กับบอร์ด

โดยปกติรหัส PIN คือ 1234 หรือ 0000 ขึ้นอยู่กับฮาร์ดแวร์ของคุณ

ตอนนี้คุณควรเห็นหน้าจอ "การเชื่อมต่อสำเร็จ" หากต้องการออกจากแอปพลิเคชัน Bluetooth ให้ใช้คำสั่งต่อไปนี้:

ล้มเลิก

ขั้นตอนต่อไปคือการผูกอุปกรณ์ด้วยพอร์ตอนุกรม:

sudo rfcomm ผูก 0 MACADDRESS 1

เพื่อให้แน่ใจว่าการดำเนินการสำเร็จ ให้พิมพ์:

ls /dev

พอร์ต "Rfcomm0" ควรอยู่ในรายการ

ขั้นตอนที่ 7: เชื่อมต่อ DragonBoard 410c กับ OBD ของรถยนต์โดยใช้ Bluetooth - ตอนที่ 2/2

การเชื่อมต่อ DragonBoard 410c กับ OBD ของรถยนต์โดยใช้ Bluetooth - ตอนที่ 2/2
การเชื่อมต่อ DragonBoard 410c กับ OBD ของรถยนต์โดยใช้ Bluetooth - ตอนที่ 2/2
การเชื่อมต่อ DragonBoard 410c กับ OBD ของรถยนต์โดยใช้ Bluetooth - ตอนที่ 2/2
การเชื่อมต่อ DragonBoard 410c กับ OBD ของรถยนต์โดยใช้ Bluetooth - ตอนที่ 2/2

วัตถุประสงค์หลักของขั้นตอนนี้คือการรับประกันว่าการสื่อสารระหว่างอุปกรณ์ทั้ง 3 เครื่องทำงาน:

ELM327, DragonBoard 410c และรถยนต์

ดาวน์โหลดแอป “หน้าจอ” เพื่อส่งข้อความซีเรียลผ่านพอร์ตอนุกรม

หน้าจอ sudo apt-get ติดตั้ง

พอร์ตอนุกรมจะใช้เพื่อส่งคำสั่ง AT และรับการตอบสนองระหว่าง DragonBoard 410c และอุปกรณ์ ELM327

เข้าถึงลิงค์ต่อไปนี้สำหรับข้อมูลเพิ่มเติมเกี่ยวกับคำสั่ง AT:

elmelectronics.com/ELM327/AT_Commands.pdf

คำเตือน:

ระวังให้มากด้วยขั้นตอนนี้! ข้อมูลทั้งหมดที่คุณส่งไปยังอุปกรณ์จะถูกตีความและส่งไปที่รถ หากมีการส่งข้อความที่ไม่ถูกต้อง รถอาจถูกตีความผิดและทำให้เกิดปัญหาได้ ให้ความสนใจกับคำสั่งและศึกษามันก่อนที่คุณจะลองใช้โค้ดของคุณเอง เราขอแนะนำอย่างยิ่งให้ทำตามคำแนะนำด้านล่างของจดหมาย

ทำตามขั้นตอนคำสั่งด้านล่างเพื่อเริ่มการสื่อสาร:

  • ฟังก์ชันนี้จะเริ่มต้นการสื่อสารแบบอนุกรมโดยใช้หน้าจอ:

    หน้าจอ /dev/rfcomm0

ทันทีที่เทอร์มินัลโหลด ให้พิมพ์คำสั่งต่อไปนี้ตามลำดับนี้:

ATZ

ATL1 ATH1 ATS1 ATSP0

การทดสอบการสื่อสารขั้นสุดท้าย:

พิมพ์ในคอนโซล:

ATI

ควรส่งคืน "ELM327 v1.5" หรือเวอร์ชัน ELM ของอุปกรณ์ของคุณ

นี่เป็นข้อพิสูจน์ว่าการสื่อสารของอุปกรณ์ ELM และ DragonBoard 410c นั้นใช้งานได้

เคล็ดลับด่วน

หากต้องการออกจาก "หน้าจอ" จำเป็นต้องพิมพ์ Ctrl+A ตามด้วย Ctrl+D

ขั้นตอนที่ 8: เชื่อมต่อ DragonBoard 410c กับ OBD ของรถยนต์โดยใช้ PyOBD

เชื่อมต่อ DragonBoard 410c กับ OBD ของรถยนต์โดยใช้PyOBD
เชื่อมต่อ DragonBoard 410c กับ OBD ของรถยนต์โดยใช้PyOBD

PyOBD เป็นไลบรารี Python เพื่อให้สามารถสื่อสารกับอุปกรณ์ OBD2 ที่สามารถเชื่อมต่อกับรถยนต์ได้ ด้วยเหตุนี้ เราจึงสามารถดึงข้อมูลหลายอย่าง รวมทั้งความเร็วของรถและข้อผิดพลาดทางไฟฟ้า

ในขั้นตอนนี้ เราจำเป็นต้องตรวจสอบให้แน่ใจว่ามีการติดตั้งไลบรารี python ต่อไปนี้ใน Linaro ของ DragonBoard 410c ของคุณ:

  • PIP - ตัวจัดการแพ็คเกจของ Python

    sudo apt-get ติดตั้ง python-pip

  • SetupTools - ตัวจัดการการติดตั้งไฟล์

    sudo pip install -U pip setupstools

  • วงล้อ - ติดตั้งตัวจัดรูปแบบแพ็คเกจ

    sudo apt-get ติดตั้ง python-wheel

  • OBD - ไลบรารี Python เพื่อสื่อสารกับอุปกรณ์ OBD

    sudo apt-get ติดตั้ง python-obd

  • GPS - ไลบรารี Python เพื่อรับข้อมูลจาก GPS

    sudo pip ติดตั้ง gps

  • คำขอ - แพ็คเกจ Python สำหรับ RESTful

    คำขอติดตั้ง sudo pip

เพื่อตรวจสอบว่าแพ็คเกจของ OBD ทำงานถูกต้องหรือไม่ ให้ทำตามขั้นตอนเหล่านี้:

sudo python

ตอนนี้เคอร์เซอร์ของเทอร์มินัลจะเปลี่ยนเป็น “>>>” แสดงว่า Python กำลังทำงานอยู่ ตอนนี้คุณสามารถเริ่มพิมพ์คำสั่งด้านล่าง:

  • เริ่มต้นด้วยการนำเข้าไลบรารี OBD:

    นำเข้า obd

  • ในการเชื่อมต่อกับ Serial Port ให้ใช้คำสั่ง:

    การเชื่อมต่อ = old. OBD(“dev/rfcomm0”)

  • เป็นเรื่องปกติที่จะแสดงข้อความแสดงข้อผิดพลาดโดยแจ้งว่าการสื่อสารล้มเหลว ดังนั้นหากเป็นเช่นนั้น ให้ลองอีกครั้ง
  • หากต้องการทราบว่า Python ได้รับข้อมูลจากรถที่ผ่าน ELM327 ผ่านบลูทูธหรือไม่ ให้พิมพ์ดังต่อไปนี้:

    connection.protocol_name()

ขั้นตอนที่ 9: การอ่านข้อมูลจากรถยนต์โดยใช้ Python

การอ่านข้อมูลจากรถยนต์โดยใช้ Python
การอ่านข้อมูลจากรถยนต์โดยใช้ Python

เราจะสร้างไฟล์ชื่อ: OBD.py ตามคำแนะนำด้านล่าง ตามด้วยโค้ด

เริ่มต้นด้วยการนำเข้าไลบรารี OBD ไปยัง Python เพื่อเริ่มการเชื่อมต่อ

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

หลังจากเชื่อมต่อสำเร็จ เราก็เริ่มวนซ้ำแบบไม่สิ้นสุดที่ค้นหาข้อมูล OBD จัดรูปแบบตามพารามิเตอร์ที่ตั้งไว้ล่วงหน้า หลังจากนั้นจะสร้าง URL โดยใช้ Query String เพื่อให้ส่งไปยังเซิร์ฟเวอร์โดยใช้วิธี POST

จากตัวอย่างด้านล่าง เราจัดการเพื่อให้ได้ข้อมูลต่อไปนี้:

  • RPM
  • ความเร็ว

ฟังก์ชั่นในการบันทึกข้อมูลใช้สองพารามิเตอร์ ตัวอย่างเช่น ใช้ [1][12] คุณกำลังค้นหา [โมดูล] [PID] รายการ funcions สามารถพบได้ที่:

ในที่สุด ให้สร้าง URL ที่มีข้อมูลทั้งหมดที่ต่อกันและเพิ่มลงในไฟล์ที่เรียกว่า "obd_data.dat"

รหัสสำหรับ OBD.py อยู่ด้านล่าง

หลังจากเชื่อมต่อและบันทึกข้อมูลแล้ว เราจะสร้างไฟล์ชื่อ:envia_OBD.py

ส่วนนี้ของรหัสจะง่ายขึ้น นำเข้าไลบรารีที่เกี่ยวข้องกับการร้องขอ/ส่งข้อมูล โดยใช้ RESTFUL

สร้าง WHILE เพื่อใช้ POST และส่ง URL ของบรรทัดแรกของไฟล์ ซึ่งสร้างขึ้นก่อนหน้านี้โดย OBD.py หลังจากนั้นเพื่อหลีกเลี่ยงการส่งข้อมูลอีกครั้ง มันจะลบบรรทัดนั้นออกจากไฟล์

รหัสสำหรับไฟล์ OBD.py อยู่ด้านล่าง

ขั้นตอนที่ 10: สคริปต์ที่เกิดซ้ำและขั้นตอนการจัดเก็บข้อมูลสำหรับข้อมูลที่ถูกจับ

สคริปต์ที่เกิดซ้ำและขั้นตอนการจัดเก็บข้อมูลสำหรับข้อมูลที่ถูกจับ
สคริปต์ที่เกิดซ้ำและขั้นตอนการจัดเก็บข้อมูลสำหรับข้อมูลที่ถูกจับ

ทุกสิ่งที่เราทำจนถึงตอนนี้มีจุดมุ่งหมายเพื่อให้แน่ใจว่า DragonBoard สื่อสารกับส่วนประกอบต่างๆ ได้อย่างเหมาะสม เช่น 3G, Wifi, Bluetooth, ข้อมูล GPS และอื่นๆ

ใช้โค้ดด้านล่างเพื่อแก้ไขไฟล์ "rc.local" ซึ่งมีฟังก์ชันและคำสั่งที่กำหนดไว้ล่วงหน้าอยู่แล้ว ซึ่งอยู่ที่ '/ etc' หากต้องการแก้ไข ให้ใช้คำสั่ง:

sudo nano /etc/rc.local

ตอนนี้ เราต้องกำหนดค่าบริการและฟังก์ชันทั้งหมด สร้างกิจวัตรที่เริ่มต้นโดยอัตโนมัติเมื่อ DragonBoard เริ่มทำงาน ลองใช้ BASH เพื่อทำสิ่งนี้ BASH (Bourne-Again-SHell) เป็นแอพล่ามคำสั่ง Linux

รหัสต่อไปนี้มีคำสั่ง BASH และคุณจะต้องใส่ที่อยู่ MAC ของ Bluetooth/OBD โปรดใช้ความระมัดระวังเป็นพิเศษเพื่อให้แน่ใจว่าได้ลงท้ายโค้ดด้วย "exit 0" ซึ่งเป็นการตอบสนองของระบบว่าการดำเนินการสำเร็จ

ถ้า [! -f /etc/ssh/ssh_host_rsa_key]

จากนั้น systemctl หยุด ssh.socket||true dpkg-reconfigure openssh-server fi sudo systemctl start qdsp-start.service rfcomm ผูก 0 MACADDRESS 1 sudo python /home/linaro/Documents/FadaDoCarro/conectaGPS.py & home/sudo python / /Documents/FadaDoCarro/OBD.py & sudo python /home/linaro/Documents/FadaDoCarro/envia_OBD.py & exit 0

จากนี้ไป ทุกครั้งที่คุณเปิด DragonBoard เครื่องจะเชื่อมต่อกับ 3G และส่งข้อมูล GPS และ OBD ไปยังเซิร์ฟเวอร์ที่เลือก

ขั้นตอนที่ 11: ปัญหาระหว่างทาง

ปัญหาระหว่างทาง
ปัญหาระหว่างทาง

เราได้ระบุปัญหาบางส่วนที่เราพบระหว่างทางก่อนที่จะเขียนคำแนะนำนี้ แต่เราคิดว่ามันสามารถช่วยคุณได้หากเกิดขึ้นกับคุณ

  • PyOBD

    คุณต้องระมัดระวังในการส่งข้อมูลขณะสื่อสารกับรถ ในการทดลองครั้งแรกของเรา เมื่อการสื่อสารไม่เสถียร เราส่งคำสั่งผิดซึ่งทำให้ ECU ขัดข้องโดยทั่วไป เกียร์ติดค้างอยู่ในที่จอดรถ และไฟที่แผงหน้าปัดบางดวงยังกะพริบแบบสุ่ม วิธีแก้ไขที่พบคือถอดสายแบตเตอรี่สายใดสายหนึ่งออกเป็นเวลาประมาณ 15 นาที การดำเนินการนี้จะรีเซ็ต ECU เป็นสถานะเริ่มต้นจากโรงงาน ดังนั้นจึงเป็นการยกเลิกคำสั่งหรือการเปลี่ยนแปลงใดๆ ที่เราอาจทำ

  • ลินาโร

    เรามีปัญหากับ DragonBoard ซึ่งรีสตาร์ทเป็นระยะๆ ปัญหาได้รับการแก้ไขโดยทีมของ Linaro ซึ่งเปิดตัวระบบปฏิบัติการเวอร์ชันใหม่กว่า เราเขียนบทช่วยสอนนี้ด้วยเวอร์ชันที่อัปเดต

  • GPS ของ DragonBoard

    DragonBoard 410c ของ Qualcomm ไม่มีเสาอากาศ GPS ภายใน ดังนั้นเพื่อปรับปรุงการรับสัญญาณ GPS เราจำเป็นต้องติดตั้งตัวเชื่อมต่อสำหรับเสาอากาศภายนอก กระบวนการนี้อธิบายได้ดีกว่าในลิงก์ต่อไปนี้:

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

อ้างอิง
อ้างอิง

Bootloader

builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/

ลินาโร

builds.96boards.org/releases/dragonboard410c/linaro/debian/latest/

Como instalar หรือ Linaro กับ DragonBoard 410c

www.embarcados.com.br/linux-linaro-alip-na-qualcomm-dragonboard-410c/

เอกสารเกี่ยวกับ GPS สำหรับ DragonBoard

discuss.96boards.org/t/gps-software/170/16

การสาธิต GPS

gist.github.com/wolfg1969/4653340

งูหลามOBD

github.com/brendan-w/python-OBD

Conectando RaspberryPi à um OBD Bluetooth

gersic.com/connecting-your-raspberry-pi-to-a-bluetooth-obd-ii-adapter/

แนะนำ: