สารบัญ:
- ขั้นตอนที่ 1: ดำเนินการตั้งค่าเริ่มต้น DragonBoard 410c**
- ขั้นตอนที่ 2: ค้นหา DragonBoard 410c ของคุณโดยใช้เสาอากาศ GPS
- ขั้นตอนที่ 3: ติดตั้ง 3G/4G USB Dongle
- ขั้นตอนที่ 4: เปลี่ยน DragonBoard 410c ให้เป็น Wifi Hotspot / Access Point
- ขั้นตอนที่ 5: การเข้าถึง DragonBoard 410c แบบไร้สายโดยใช้ SSH ผ่านการเชื่อมต่อ Hotspot
- ขั้นตอนที่ 6: เชื่อมต่อ DragonBoard 410c กับ OBD ของรถยนต์โดยใช้ Bluetooth - ตอนที่ 1/2
- ขั้นตอนที่ 7: เชื่อมต่อ DragonBoard 410c กับ OBD ของรถยนต์โดยใช้ Bluetooth - ตอนที่ 2/2
- ขั้นตอนที่ 8: เชื่อมต่อ DragonBoard 410c กับ OBD ของรถยนต์โดยใช้ PyOBD
- ขั้นตอนที่ 9: การอ่านข้อมูลจากรถยนต์โดยใช้ Python
- ขั้นตอนที่ 10: สคริปต์ที่เกิดซ้ำและขั้นตอนการจัดเก็บข้อมูลสำหรับข้อมูลที่ถูกจับ
- ขั้นตอนที่ 11: ปัญหาระหว่างทาง
- ขั้นตอนที่ 12: การอ้างอิง
วีดีโอ: DragonBoard และ OBD2: 12 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:04
การอ่านข้อมูลที่ออกมาจากพอร์ต OBD2 ในรถของคุณ เป็นไปได้ที่จะรวบรวมข้อมูลที่น่าทึ่งจากมัน เราใช้ DragonBoard 410c ในโครงการนี้และให้รายละเอียดที่นี่ เพื่อให้คุณทำเองได้
โครงการนี้เกิดขึ้นได้เพราะความร่วมมือกับ #Qualcomm #Embarcados #Linaro #Arrow #BaitaAceleradora ที่ทำให้เราสามารถเข้าถึงฮาร์ดแวร์ที่ดีที่สุดในตลาด รวมถึงการติดต่อกับผู้เชี่ยวชาญที่ดีที่สุดเพื่อสนับสนุนการพัฒนา
ทีมงานแต่งโดยคนเหล่านี้:
- Marcel Ogando - แฮ็กเกอร์ - [email protected]
- Leandro Alvernaz - แฮ็กเกอร์ - [email protected]
- Thiago Paulino Rodrigues - การตลาด - [email protected]
เรายินดีเป็นอย่างยิ่งที่จะช่วยให้คุณบรรลุเป้าหมาย และตรวจสอบให้แน่ใจว่าคุณทำโครงการของคุณเสร็จสิ้น ดังนั้น แจ้งให้เราทราบหากคุณต้องการความช่วยเหลือเพิ่มเติมนอกเหนือจากคำแนะนำด้านล่าง
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**
ด้วยการใช้ 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
เริ่มต้นด้วยการติดตั้งแอพที่จำเป็นซึ่งจะเป็นไคลเอนต์ไปยังโมดูล 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
มีสองสามวิธีในการเชื่อมต่อ 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 เป็นเราเตอร์ไร้สายหรือฮอตสปอต (เมื่อคุณกำหนดค่าการเชื่อมต่ออินเทอร์เน็ตแล้ว) คือการใช้ GUI ของระบบ โดยทำตามขั้นตอนด้านล่าง:
- คลิกขวาที่ไอคอนเครือข่ายที่มุมล่างขวา
- เลือก "แก้ไขการเชื่อมต่อแล้วเลือก" เพิ่ม
- เลือก "Wi-Fi"
- คลิกสร้าง
เปลี่ยนชื่อเครือข่ายที่คุณต้องการสร้างในฟิลด์ "SSID" และเปลี่ยนฟิลด์ "Mode" เป็น "Hotspot"
เพื่อให้แน่ใจว่าจะใช้งานได้ ให้ตรวจสอบสิ่งต่อไปนี้:
- ไปที่แท็บ “การตั้งค่า IPv4”
- ตรวจสอบว่า "วิธีการ"
ขั้นตอนที่ 5: การเข้าถึง 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
อินเทอร์เฟซการสื่อสารของรถยนต์ทำผ่านพอร์ต 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
วัตถุประสงค์หลักของขั้นตอนนี้คือการรับประกันว่าการสื่อสารระหว่างอุปกรณ์ทั้ง 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
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
เราจะสร้างไฟล์ชื่อ: 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/
แนะนำ:
มาตรวัดรอบ/สแกนด้วย Arduino, OBD2 และ CAN Bus: 8 ขั้นตอน
มาตรวัดรอบ/การสแกนโดยใช้ Arduino, OBD2 และ CAN Bus: เจ้าของ Toyota Prius (หรือรถยนต์ไฮบริด/รุ่นพิเศษอื่นๆ) จะรู้ว่าแผงหน้าปัดของพวกเขาอาจไม่มีแป้นหมุนสองสามหน้าปัด! prius ของฉันไม่มีรอบเครื่องยนต์หรือมาตรวัดอุณหภูมิ หากคุณเป็นคนที่ชอบแสดง คุณอาจต้องการทราบสิ่งต่าง ๆ เช่น การกำหนดเวลาล่วงหน้าและ
ติดตาม: ศูนย์สื่อขั้นสูงพร้อม 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.หรือเรียกสั้นๆ ว่า จะสร้างสถานะอย่างไร