สารบัญ:

การตรวจสอบ GPS ด้วยโครงการแสดงผล OLED: 5 ขั้นตอน (พร้อมรูปภาพ)
การตรวจสอบ GPS ด้วยโครงการแสดงผล OLED: 5 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: การตรวจสอบ GPS ด้วยโครงการแสดงผล OLED: 5 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: การตรวจสอบ GPS ด้วยโครงการแสดงผล OLED: 5 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: ตอนที่ 5 การใช้งาน OLED(i2c) และ DHT sensor และเริ่ม multi-tasking 2024, กรกฎาคม
Anonim
การตรวจสอบ GPS ด้วยโปรเจ็กต์จอแสดงผล OLED
การตรวจสอบ GPS ด้วยโปรเจ็กต์จอแสดงผล OLED
การตรวจสอบ GPS ด้วย OLED Display Project
การตรวจสอบ GPS ด้วย OLED Display Project
การตรวจสอบ GPS ด้วย OLED Display Project
การตรวจสอบ GPS ด้วย OLED Display Project
การตรวจสอบ GPS ด้วย OLED Display Project
การตรวจสอบ GPS ด้วย OLED Display Project

สวัสดีทุกคน ในบทความสั้น ๆ นี้ ฉันจะแบ่งปันโครงการของฉันกับคุณ: โมดูล ATGM332D GPS พร้อมไมโครคอนโทรลเลอร์ SAMD21J18 และจอแสดงผล SSD1306 OLED 128*64 ฉันสร้าง PCB พิเศษสำหรับมันบน Eagle Autodesk และตั้งโปรแกรมโดยใช้ Atmel studio 7.0 และ ASF4 ดังนั้น ในบทความนี้ฉันจะแบ่งปันการเดินทางนี้กับคุณและไฟล์ที่ฉันใช้หากคุณสนใจที่จะทำด้วยตัวเอง

ตอนนี้ หากคุณกำลังเขียนโปรแกรม MCU/บอร์ดพัฒนาของคุณโดยใช้ Arduino โปรเจ็กต์นี้น่าจะค่อนข้างง่ายสำหรับคุณ แต่ที่นี่ ฉันจะใช้ ASF4 (ซอฟต์แวร์ขั้นสูง framwork 4) จาก Atmel/Microchip ซึ่งใช้ภาษา C และจะให้แนวคิดกับคุณ สำหรับวิธีการอ่านข้อความ GPS NMEA โดยใช้ USART Asynchronous driver (Callback) และให้ไลบรารี่แบบง่ายแก่คุณ ซึ่งคุณสามารถใช้กับไมโครคอนโทรลเลอร์และแพลตฟอร์มต่างๆ ได้ เพียงเพิ่มไดร์เวอร์ที่เหมาะสมที่คุณใช้เพื่อรับข้อความจาก GPS (ข้อความ NMEA)

ฉันจะแบ่งบทความนี้เป็น:

  1. การออกแบบ PCB
  2. BOM คุณต้องประกอบ PCB
  3. ดูซอฟต์แวร์และรหัสอย่างรวดเร็วและทดสอบฮาร์ดแวร์และซอฟต์แวร์
  4. สุดท้ายแต่ไม่ท้ายสุดจุดปรับปรุงสำหรับโครงการนี้

คุณจะพบเนื้อหาทั้งหมดที่เกี่ยวข้องกับโครงการนี้บนGithub (ที่นี่)

ขั้นตอนที่ 1: การออกแบบ PCB โดยใช้ Eagle

การออกแบบ PCB โดยใช้ Eagle
การออกแบบ PCB โดยใช้ Eagle
การออกแบบ PCB โดยใช้ Eagle
การออกแบบ PCB โดยใช้ Eagle
การออกแบบ PCB โดยใช้ Eagle
การออกแบบ PCB โดยใช้ Eagle
การออกแบบ PCB โดยใช้ Eagle
การออกแบบ PCB โดยใช้ Eagle

โปรเจ็กต์นี้ใช้ ATGM332D GPS Module เป็นหลัก ซึ่งเป็น GPS ที่ใช้งานง่าย เนื่องจากต้องการส่วนประกอบแบบพาสซีฟเพียงไม่กี่ตัวจึงจะใช้งานได้ และเราสามารถเพิ่มแบตเตอรี่สำรองเพื่อประหยัดเวลา/วันที่หากเราปิดแหล่งพลังงานหลักจากโมดูล

และเพื่อควบคุมสัญญาณทั้งหมดในวงจรฉันใช้ไมโครคอนโทรลเลอร์ ATSAMD21J18B แพ็คเกจ TQFP64 เนื่องจากมีหน่วยความจำโปรแกรม 128KByte และหน่วยความจำข้อมูล 32KByte (และฉันมีจำนวนมากที่วางอยู่รอบโต๊ะทำงานของฉัน)

วงจรจะต้องใช้พลังงานจากแหล่ง USB 5V นอกจากนี้ USB สามารถทำหน้าที่เป็นพอร์ต COM เสมือน (CDC USB) และคุณสามารถเพิ่มรหัสได้หากต้องการสื่อสารกับอุปกรณ์ผ่าน USB

สำหรับจอแสดงผล ฉันเลือก SSD1306 0.96' OLED display with SPI bus มันเล็ก แต่ก็เหมาะสมกับขนาด PCB ที่ฉันต้องการ ขนาดบอร์ด 100x31 มม.

การเขียนโปรแกรมไมโครคอนโทรลเลอร์จะผ่านโปรแกรมเมอร์ SWD (ฉันใช้ Atmel ICE) และจะเชื่อมต่อผ่านส่วนหัวพิน 10p ขนาด 1.27 มม.

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

ขั้นตอนที่ 2: การบัดกรี PCB

การบัดกรี PCB
การบัดกรี PCB
การบัดกรี PCB
การบัดกรี PCB
การบัดกรี PCB
การบัดกรี PCB

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

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

ก่อนที่คุณจะเชื่อมต่อวงจรกับแหล่งพลังงาน USB ให้ตรวจสอบการลัดวงจร

เชื่อมต่อเสาอากาศ GPS ของคุณและตรวจดูให้แน่ใจว่าคุณต่อขั้วต่ออย่างถูกต้อง ฉันแก้ไขเสาอากาศที่ด้านล่างของบอร์ดแล้ว

ขั้นตอนที่ 3: ซอฟต์แวร์ … ฟังก์ชัน…ผลลัพธ์

Image
Image
ซอฟต์แวร์ … ฟังก์ชัน…ผลลัพธ์
ซอฟต์แวร์ … ฟังก์ชัน…ผลลัพธ์
ซอฟต์แวร์ … ฟังก์ชัน…ผลลัพธ์
ซอฟต์แวร์ … ฟังก์ชัน…ผลลัพธ์

ซอฟต์แวร์จะแบ่งออกเป็น 4 ส่วน:

  1. USART เพื่อสื่อสารกับโมดูล GPS ATGM332
  2. SPI เพื่อสื่อสารกับ OLED
  3. ยูเอสบี ซีดีซี
  4. GPIO เพื่อควบคุม LEDs

ขั้นแรกให้เชื่อมต่อขั้วต่อ USB เพื่อเปิดวงจร จากนั้นต่อสายแพด้วยขั้วต่อ SWD

ดาวน์โหลดรหัสจาก github (ลิงค์ที่นี่)

ในการรับตำแหน่งทางภูมิศาสตร์ คุณมีตัวเลือกข้อความ NMEA ที่แตกต่างกัน 3 แบบ:

  1. GPGGA
  2. GPRMC
  3. GPGLL

ฉันใช้ประโยค GPRMC เพื่อรับตำแหน่ง เวลาและวันที่ (เวลา 0.0 GMT) ดังนั้นในรหัสคุณจะพบ:

GPRMC. Enable=1;/*0 หากไม่ต้องการข้อความนี้*/

GPGGA. Enable=0;/*0 ถ้าไม่ต้องการข้อความนี้*/

GPGLL. Enable=0;/*0 ถ้าไม่ต้องการข้อความนี้*/

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

เมื่อมีประโยค GPRMC ที่ถูกต้อง GPRMC. Ready จะกลายเป็น 1 และคุณสามารถรับข้อมูลทั้งหมดที่มีในประโยคนี้ ให้ตรวจสอบลิงก์นี้เพื่อดูข้อมูลที่มีอยู่ในประโยคนี้

ง่ายๆ ถ้า Fix เป็น 'A' แสดงว่า Location พร้อมใช้งาน ถ้า Fix เป็น 'V' แสดงว่าไม่มีตำแหน่ง

สังเกตว่า ATSAMD21 มี RTC ภายใน แต่ที่นี่ฉันไม่ได้ใช้งานและฉันใช้เวลาและวันที่โดยตรงจาก GPS แทน ดังนั้นหากคุณไม่ต้องการใช้แบตเตอรี่สำรอง CR1220 เมื่อคุณถอดแหล่งพลังงาน USB คุณจะ สูญเสียเวลา/วันที่และในครั้งต่อไปที่คุณเปิดวงจร พื้นที่เวลา/วันที่บนจอแสดงผลจะว่างเปล่าจนกว่า GPS จะมีค่าเวลา/วันที่ที่ถูกต้อง

จอแสดงผลจะแสดงสถานะปัจจุบันของ GPS และจะแสดงตำแหน่งทางภูมิศาสตร์เมื่อพร้อมใช้งาน อย่างไรก็ตาม มี LED 3 ดวงบนบอร์ด:

  1. ไฟ LED สีเขียวเชื่อมต่อกับ PA06 และจะกะพริบหากมีค่าตำแหน่งทางภูมิศาสตร์ที่ถูกต้อง
  2. ไฟ LED สีส้มเชื่อมต่อกับ PA07 และจะกะพริบหนึ่งครั้งหากไม่มีตำแหน่งทางภูมิศาสตร์ที่ถูกต้อง
  3. ไฟ LED สีแดงเชื่อมต่อกับพิน PPS ของโมดูล GPS และจะกะพริบเมื่อมีสัญญาณที่ถูกต้องเกี่ยวกับตำแหน่งเท่านั้น

ผลลัพธ์

วงจรทำงานได้ดีมากกับฉัน รับตำแหน่งทางภูมิศาสตร์จาก GPS ใช้เวลา 20-30 วินาทีกลางแจ้งโดยมีท้องฟ้าแจ่มใสและระหว่างอาคารโดยไม่มีปัญหาแม้จะมีเสาอากาศที่ด้านล่างของกระดาน

ขั้นตอนที่ 4: เคสที่พิมพ์ 3 มิติ… เรียงจาก

เคสพิมพ์ 3 มิติ… เรียงจาก
เคสพิมพ์ 3 มิติ… เรียงจาก

ฉันเตรียมเคสง่ายๆ (ตัวยึดที่แม่นยำกว่านี้) สำหรับวงจรนี้ แต่เนื่องจากการระบาดของ COVID-19 และการล็อคที่ฉันอยู่ตอนนี้ ฉันไม่สามารถเข้าถึงเครื่องพิมพ์ 3d ของฉันเพื่อพิมพ์ได้ ดังนั้นฉันจะอัปเดตส่วนนี้ด้วย stl ไฟล์และรูปถ่ายสำหรับผู้ถือเมื่อมีให้

ขั้นตอนที่ 5: สิ่งที่ต้องปรับปรุง…

สิ่งที่ต้องปรับปรุง…
สิ่งที่ต้องปรับปรุง…
สิ่งที่ต้องปรับปรุง…
สิ่งที่ต้องปรับปรุง…
สิ่งที่ต้องปรับปรุง…
สิ่งที่ต้องปรับปรุง…
  1. การย้ายตัวเชื่อมต่อ SWD ไปด้านบน เนื่องจากง่ายต่อการเชื่อมต่อกับโปรแกรมเมอร์ของคุณ
  2. ในการจ่ายไฟให้กับวงจรจากแบตเตอรี่ลิเธียม ฉันทำได้โดยการบัดกรีจัมเปอร์และมันใช้งานได้ดี จำไว้ว่าตัวควบคุม Linear (LDO) มีแรงดันตก V ถ้า (Vbat - Vout) น้อยกว่าขีด จำกัด Vdrop วงจรอาจไม่ทำงาน อย่างถูกต้อง.
  3. ทำให้ปุ่มผู้ใช้ใหญ่ขึ้นเล็กน้อยเพื่อให้กดง่ายขึ้น
  4. เพิ่มรหัส USB CDC เพื่อให้คุณสามารถสื่อสาร/ออกแบบโปรแกรมพิเศษสำหรับ MAC/PC/linux
  5. สำหรับเสาอากาศ GPS ฉันใช้เสาอากาศแบบแอ็คทีฟสำหรับโครงการนี้ การใช้เสาอากาศแบบพาสซีฟเป็นไปได้ โดยการเพิ่ม op-Amp เสียงรบกวนต่ำ เช่น AT2659 (ตรวจสอบแผนผังในเอกสารข้อมูล ATGM332 หน้า 14 ด้วย)
  6. สำหรับ OLED 0.96' SSD1306 ไลบรารีอย่างเป็นทางการจากไมโครชิปแต่เดิมสำหรับจอแสดงผล 128*32 หากต้องการแก้ไขโค้ดให้ทำงานกับ 128*64 คุณต้องไปที่ ssd1306.c และแก้ไขโค้ด (ตรวจสอบภาพ)

แนะนำ: