- วัสดุที่จำเป็น
- Arduino LoRa Shield
- ผลิต PCB สำหรับ LoRa Shield
- การประกอบ PCB
- การเชื่อมต่อโมดูล GPS กับ LoRa Transmitter
- การเขียนโปรแกรม Arduino LoRa เป็นเครื่องส่งสัญญาณ GPS
- การเขียนโปรแกรม Arduino LoRa เป็นตัวรับสัญญาณ GPS
- Arduino LoRa GPS Tracker ทำงาน
การรู้ที่อยู่ของวัตถุ / บุคคลนั้นเป็นสิ่งที่ทำให้สบายใจได้เสมอ ปัจจุบัน GPS ถูกนำมาใช้อย่างกว้างขวางในแอปพลิเคชันการจัดการสินทรัพย์เช่นการติดตามยานพาหนะการติดตามยานพาหนะการตรวจสอบทรัพย์สินการติดตามบุคคลการติดตามสัตว์เลี้ยงเป็นต้นสำหรับอุปกรณ์ติดตามใด ๆ การพิจารณาออกแบบหลักจะเกี่ยวกับอายุการใช้งานแบตเตอรี่และช่วงการตรวจสอบ เมื่อพิจารณาทั้งสองอย่างแล้วLoRaดูเหมือนจะเป็นตัวเลือกที่สมบูรณ์แบบเนื่องจากมีการใช้พลังงานต่ำมากและสามารถทำงานได้ในระยะทางไกล ดังนั้นในบทช่วยสอนนี้เราจะสร้างระบบติดตาม GPS โดยใช้ LoRaระบบจะประกอบด้วยเครื่องส่งสัญญาณซึ่งจะอ่านข้อมูลตำแหน่งจากโมดูล GPS NEO-6Mและส่งแบบไร้สายผ่าน Lora ส่วนรับข้อมูลจะรับข้อมูลและแสดงบนจอ LCD 16x2 หากคุณยังใหม่กับ LoRa ให้เรียนรู้เกี่ยวกับเทคโนโลยี LoRa และ LoRaWAN และวิธีเชื่อมต่อกับ Arduino ก่อนดำเนินการต่อ
เพื่อให้โครงการนี้ง่ายและคุ้มค่าเราจะไม่ใช้เกตเวย์ LoRa จะทำการสื่อสารแบบเพียร์ทูเพียร์ระหว่างเครื่องส่งและเครื่องรับแทน อย่างไรก็ตามหากคุณต้องการช่วงทั่วโลกคุณสามารถแทนที่เครื่องรับด้วย LoRa Gateway เนื่องจากฉันมาจากอินเดียเราจะใช้โมดูล LoRa 433MHzซึ่งเป็นแบนด์ ISM ตามกฎหมายที่นี่ดังนั้นคุณอาจต้องเลือกโมดูลตามประเทศของคุณ ตามที่กล่าวมาเริ่มกันเลย…
วัสดุที่จำเป็น
- Arduino Lora Shield - 2Nos (การออกแบบ PCB พร้อมให้ดาวน์โหลด)
- Arduino Uno - 2Nos
- SX1278 433MHz โมดูล LoRa - 2
- เสาอากาศ Lora 433MHz
- โมดูล GPS NEO-6M
- โมดูลแสดงผล LCD
- การเชื่อมต่อสายไฟ
Arduino LoRa Shield
เพื่อให้การสร้างสิ่งต่างๆด้วย LoRa ง่ายขึ้นเราได้ออกแบบ LoRa Arduino Shield สำหรับโครงการนี้ โล่นี้ประกอบด้วย SX1278 433MHz พร้อมตัวควบคุม 3.3V ที่ออกแบบโดยใช้ตัวควบคุมตัวแปร LM317 Shield จะนั่งอยู่ด้านบนของ Arduino โดยตรงซึ่งให้ความสามารถ LoRa LoRa Shield นี้จะมีประโยชน์เมื่อคุณต้องใช้งานโหนดตรวจจับ LoRa หรือสร้างเครือข่าย LoRa mesh แผนภาพวงจรทั้งหมดสำหรับ LoRa Arduino Shield แสดงไว้ด้านล่าง
Shield ประกอบด้วยแจ็ค 12V ซึ่งเมื่อใช้พลังงานจะใช้เพื่อควบคุม 3.3V สำหรับโมดูล LoRa โดยใช้ตัวควบคุม LM317 นอกจากนี้ยังจะใช้เพื่อจ่ายไฟให้ Arduino UNO ผ่านพิน Vin และ 5V ที่ได้รับการควบคุมจาก Arduino จะใช้เพื่อจ่ายไฟให้กับ LCD บนโล่ แรงดันไฟฟ้าขาออกของ LM317 ได้รับการแก้ไขให้เป็น 3.3V โดยใช้ตัวต้านทาน R1 และ R2 ตามลำดับค่าของตัวต้านทานเหล่านี้สามารถคำนวณได้โดยใช้เครื่องคำนวณ LM317
เนื่องจากโมดูล LoRa ใช้พลังงานต่ำมากจึงสามารถใช้พลังงานจากขา 3.3V ของ Arduino ได้โดยตรง แต่เราได้ใช้การออกแบบตัวควบคุมภายนอกเนื่องจาก LM317 มีความน่าเชื่อถือมากกว่าตัวควบคุมแรงดันไฟฟ้าในตัว โล่ยังมีโพเทนชิออมิเตอร์ซึ่งสามารถใช้เพื่อปรับความสว่างของ LCD ได้ การเชื่อมต่อโมดูล LoRa กับ Arduino นั้นคล้ายกับที่เราทำในบทช่วยสอนก่อนหน้านี้เกี่ยวกับการเชื่อมต่อ Arduino กับ Lora
ผลิต PCB สำหรับ LoRa Shield
เมื่อวงจรของเราพร้อมแล้วเราสามารถดำเนินการออกแบบ PCB ของเราได้ ฉันเปิดโดยซอฟต์แวร์ออกแบบ PCB และเริ่มสร้างแทร็กของฉัน เมื่อการออกแบบ PCB เสร็จสมบูรณ์บอร์ดของฉันจะมีลักษณะดังนี้ที่แสดงด้านล่าง
คุณยังสามารถดาวน์โหลดไฟล์การออกแบบในรูปแบบ GERBER และสร้างขึ้นเพื่อรับบอร์ดของคุณ ลิงค์ไฟล์ Gerber มีให้ด้านล่าง
ดาวน์โหลดไฟล์ Gerber สำหรับ Arduino LoRa Shield
ตอนนี้การออกแบบของเราพร้อมแล้วก็ถึงเวลาประดิษฐ์ ในการทำ PCB นั้นค่อนข้างง่ายเพียงทำตามขั้นตอนด้านล่างนี้
ขั้นตอนที่ 1: เข้าสู่ www.pcbgogo.com ลงทะเบียนหากนี่เป็นครั้งแรกของคุณ จากนั้นในแท็บ PCB Prototype ให้ป้อนขนาดของ PCB ของคุณจำนวนเลเยอร์และจำนวน PCB ที่คุณต้องการ สมมติว่า PCB มีขนาด 80 ซม. × 80 ซม. คุณสามารถกำหนดขนาดตามที่แสดงด้านล่าง
ขั้นตอนที่ 2: ดำเนินการต่อโดยคลิกที่ปุ่ม ใบเสนอราคา ทันที คุณจะเข้าสู่หน้าที่ตั้งค่าพารามิเตอร์เพิ่มเติมหากจำเป็นเช่นวัสดุที่ใช้ระยะห่างแทร็กเป็นต้น แต่ส่วนใหญ่แล้วค่าเริ่มต้นจะใช้ได้ดี สิ่งเดียวที่เราต้องพิจารณาที่นี่คือราคาและเวลา ดังที่คุณเห็นเวลาสร้างเพียง 2-3 วันและมีค่าใช้จ่ายเพียง $ 5 สำหรับ PSB ของเรา จากนั้นคุณสามารถเลือกวิธีการจัดส่งที่ต้องการตามความต้องการของคุณ
ขั้นตอนที่ 3: ขั้นตอนสุดท้ายคือการอัปโหลดไฟล์ Gerber และดำเนินการชำระเงิน เพื่อให้แน่ใจว่ากระบวนการนี้ราบรื่นPCBGOGO ตรวจสอบว่าไฟล์ Gerber ของคุณถูกต้องหรือไม่ก่อนดำเนินการชำระเงิน ด้วยวิธีนี้คุณจะมั่นใจได้ว่า PCB ของคุณเป็นมิตรต่อการผลิตและจะไปถึงคุณตามที่มุ่งมั่น
การประกอบ PCB
หลังจากสั่งซื้อบอร์ดแล้วมันก็มาถึงฉันหลังจากผ่านไปหลายวันแม้ว่าผู้ให้บริการจัดส่งจะอยู่ในกล่องบรรจุอย่างดีที่มีฉลากกำกับอย่างดีและเช่นเคยคุณภาพของ PCB นั้นยอดเยี่ยมมาก
ฉันเปิดแกนบัดกรีและเริ่มประกอบบอร์ด เนื่องจาก Footprints แผ่นรองรอยต่อและซิลค์สกรีนนั้นมีรูปร่างและขนาดที่เหมาะสมอย่างสมบูรณ์แบบฉันจึงไม่มีปัญหาในการประกอบบอร์ด เมื่อการบัดกรีเสร็จสมบูรณ์บอร์ดจะมีลักษณะดังนี้ด้านล่างดังที่คุณเห็นว่ามันเข้ากันได้ดีกับ Arduino Uno Board ของฉัน
เนื่องจากโครงการของเรามีเครื่องส่งสัญญาณ Arduino Loraและรับ Arduino Loraเราจะต้องสองโล่หนึ่งสำหรับรับและอื่น ๆ สำหรับการส่งสัญญาณ ดังนั้นฉันจึงดำเนินการบัดกรี PCB อีกแผ่นทั้ง PCB พร้อมโมดูล LoRa และ LCD ดังแสดงด้านล่าง
ดังที่คุณเห็นเฉพาะเครื่องรับ LoRa shied (ด้านซ้าย) เท่านั้นที่เชื่อมต่อกับ LCD ด้านเครื่องส่งสัญญาณประกอบด้วยโมดูล LoRa เท่านั้น เราจะเชื่อมต่อโมดูล GPS กับด้านเครื่องส่งสัญญาณเพิ่มเติมตามที่อธิบายไว้ด้านล่าง
การเชื่อมต่อโมดูล GPS กับ LoRa Transmitter
โมดูล GPS ที่ใช้ที่นี่คือโมดูลจีพีเอส NEO-6M โมดูลสามารถทำงานโดยใช้พลังงานต่ำมากโดยมีฟอร์มแฟคเตอร์ขนาดเล็กทำให้เหมาะสำหรับการติดตามการใช้งาน อย่างไรก็ตามมีโมดูล GPS อื่น ๆ อีกมากมายที่เราเคยใช้ก่อนหน้านี้ในแอปพลิเคชันการติดตามยานพาหนะและการตรวจจับตำแหน่งประเภทต่างๆ
โมดูลทำงานใน 5V และสื่อสารโดยใช้การสื่อสารแบบอนุกรมที่อัตรารับส่งข้อมูล 9600 ดังนั้นเราจึงจ่ายไฟให้โมดูลเป็น + 5V พินของ Arduino และเชื่อมต่อพิน Rx และ Tx เข้ากับพินดิจิทัล D4 และ D3 ตามที่แสดงด้านล่าง
พิน D4 และ D3 จะถูกกำหนดค่าเป็นพินอนุกรมของซอฟต์แวร์ เมื่อขับเคลื่อนโมดูลจีพีเอส NEO-6M จะมองหาการเชื่อมต่อดาวเทียมและข้อมูลจะส่งออกโดยอัตโนมัติตามลำดับ ข้อมูลเอาต์พุตนี้จะอยู่ในรูปแบบประโยค NMEAซึ่งย่อมาจาก National Marine Electronics Association และเป็นรูปแบบมาตรฐานสำหรับอุปกรณ์ GPS ทั้งหมด หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการใช้ GPS กับ Arduino ให้ไปที่ลิงค์ ข้อมูลนี้จะมีขนาดใหญ่และส่วนใหญ่เราต้องใช้วลีด้วยตนเองเพื่อให้ได้ผลลัพธ์ที่ต้องการ โชคดีสำหรับเรามีห้องสมุดชื่อ TinyGPS ++ ซึ่งช่วยยกระดับความหนักให้กับเรา คุณต้องเพิ่มไลบรารี LoRa ด้วยหากคุณยังไม่ได้ทำ ลองดาวน์โหลดทั้งไลบรารีจากลิงค์ด้านล่าง
ดาวน์โหลด TinyGPS ++ Arduino Library
ดาวน์โหลด Arduino LoRa Library
ลิงก์จะดาวน์โหลดไฟล์ ZIP ซึ่งสามารถเพิ่มลงใน Arduino IDE ได้โดยทำตามคำสั่ง Sketch -> Include Library -> Add.ZIP library เมื่อคุณพร้อมกับฮาร์ดแวร์และไลบรารีแล้วเราสามารถดำเนินการเขียนโปรแกรมบอร์ด Arduino ของเราได้
การเขียนโปรแกรม Arduino LoRa เป็นเครื่องส่งสัญญาณ GPS
อย่างที่เราทราบกันดีว่า LoRa เป็นอุปกรณ์ตัวรับส่งสัญญาณซึ่งหมายความว่าสามารถส่งและรับข้อมูลได้ อย่างไรก็ตามในโครงการติดตาม GPSนี้เราจะใช้โมดูลหนึ่งเป็นเครื่องส่งสัญญาณเพื่ออ่านข้อมูลพิกัดจาก GPS และส่งไปในขณะที่โมดูลอื่นเป็นเครื่องรับซึ่งจะรับค่าพิกัด GPS และพิมพ์ลงบน LCD โปรแกรมสำหรับทั้งโมดูลเครื่องส่งและรับสามารถพบได้ที่ด้านล่างของหน้านี้ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งไลบรารีสำหรับโมดูล GPS และโมดูล LoRa ก่อนดำเนินการตามรหัส ในส่วนนี้เราจะดูรหัสเครื่องส่งสัญญาณ
เช่นเดียวกับที่เราเริ่มโปรแกรมโดยการเพิ่มไลบรารีและพินที่จำเป็นเสมอ ที่นี่ห้องสมุด SPI และ LoRa ใช้สำหรับการสื่อสาร LoRa และไลบรารี TinyGPS ++ และ SoftwareSerial ใช้สำหรับการสื่อสารด้วย GPS โมดูล GPS ในฮาร์ดแวร์ของฉันเชื่อมต่อกับพิน 3 และ 4 ดังนั้นเราจึงกำหนดดังต่อไปนี้
# รวม
ภายในฟังก์ชั่น การตั้งค่า เราจะเริ่มการตรวจสอบแบบอนุกรมและเริ่มต้นอนุกรมของซอฟต์แวร์เป็น "gpsSerial " สำหรับการสื่อสารกับโมดูล GPS NEO-6M โปรดทราบว่าฉันใช้ 433E6 (433 MHz) เป็นความถี่ในการทำงาน LoRa ของฉันคุณอาจต้องเปลี่ยนตามประเภทของโมดูลที่คุณใช้
การตั้งค่าเป็นโมฆะ () { Serial.begin (9600); gpsSerial.begin (9600); ในขณะที่ (! Serial); Serial.println ("ผู้ส่ง LoRa"); ถ้า (! LoRa.begin (433E6)) { Serial.println ("เริ่ม LoRa ล้มเหลว!"); ในขณะที่ (1); } LoRa.setTxPower (20); }
ภายในฟังก์ชั่น ลูป เราตรวจสอบว่าโมดูล GPS กำลังวางข้อมูลบางส่วนหรือไม่ถ้าใช่เราจะอ่านข้อมูลทั้งหมดและวลีโดยใช้ฟังก์ชัน gps.encode จากนั้นเราจะตรวจสอบถ้าเราได้รับข้อมูลตำแหน่งที่ถูกต้องโดยใช้ gps.location.isValid () ฟังก์ชั่น
ในขณะที่ (gpsSerial.available ()> 0) ถ้า (gps.encode (gpsSerial.read ())) ถ้า (gps.location.isValid ()) {
หากเราได้รับตำแหน่งที่ถูกต้องเราสามารถเริ่มส่งค่าละติจูดและลองจิจูดได้ ฟังก์ชัน gps.location.lat () ให้พิกัดละติจูดและฟังก์ชัน gps.location.lng () ให้พิกัดลองจิจูด เนื่องจากเราจะพิมพ์ลงบนจอ LCD 16 * 2 เราจึงต้องพูดถึงเมื่อถึงบรรทัดที่สองดังนั้นเราจึงใช้คีย์เวิร์ด“ c” เพื่อให้ผู้รับสามารถพิมพ์ข้อมูลต่อไปนี้ในบรรทัดที่ 2 ได้อย่างใกล้ชิด
LoRa.beginPacket (); LoRa.print ("Lat:"); LoRa.print (gps.location.lat (), 6); LoRa.print ("c"); LoRa.print ("ยาว:"); LoRa.print (gps.location.lng (), 6); Serial.println ("ส่งผ่าน LoRa"); LoRa.endPacket ();
การเขียนโปรแกรม Arduino LoRa เป็นตัวรับสัญญาณ GPS
รหัสเครื่องส่งกำลังส่งค่าพิกัดละติจูดและลองจิจูดแล้วตอนนี้เครื่องรับต้องอ่านค่าเหล่านี้และพิมพ์บนจอ LCD ในทำนองเดียวกันที่นี่เราเพิ่มไลบรารีสำหรับโมดูล LoRa และจอแสดงผล LCD และกำหนดหมุดที่เชื่อมต่อกับ LCD และเริ่มต้นโมดูล LoRa เหมือนก่อนหน้านี้
# รวม
ภายในฟังก์ชัน ลูป เรารับฟังแพ็กเก็ตข้อมูลจากโมดูล LoRa ของเครื่องส่งและขนาดของมันโดยใช้ ฟังก์ชัน LoRa.parsePacket () และเก็บไว้ในตัวแปร“ packetSize ” หากได้รับแพ็คเก็ตเราจะดำเนินการอ่านเป็นตัวอักษรและพิมพ์บนจอ LCD โปรแกรมยังตรวจสอบว่าโมดูล LoRa ส่งคีย์เวิร์ด“ c” หรือไม่ถ้าใช่จากนั้นจะพิมพ์ข้อมูลที่เหลือในบรรทัดที่สอง
if (packetSize) {// หากแพ็กเก็ตได้รับ Serial.print ("แพ็กเก็ตที่ได้รับ '"); lcd.clear (); ในขณะที่ (LoRa.available ()) { ถ่านขาเข้า = (ถ่าน) LoRa.read (); ถ้า (ขาเข้า == 'c') { lcd.setCursor (0, 1); } else { lcd.print (ขาเข้า); } }
Arduino LoRa GPS Tracker ทำงาน
เมื่อฮาร์ดแวร์และโปรแกรมพร้อมแล้วเราสามารถอัปโหลดรหัสทั้งสองในโมดูล Arduino ตามลำดับและจ่ายไฟโดยใช้อะแดปเตอร์ 12V หรือสาย USB เมื่อเครื่องส่งกำลังขับเคลื่อนคุณจะสังเกตเห็นไฟ LED สีน้ำเงินบนโมดูล GPS กะพริบแสดงว่าโมดูลกำลังมองหาการเชื่อมต่อดาวเทียมเพื่อรับพิกัด ในขณะเดียวกันโมดูลตัวรับจะเปิดขึ้นและแสดงข้อความต้อนรับบนหน้าจอ LCD เมื่อเครื่องส่งส่งข้อมูลโมดูลเครื่องรับจะแสดงบน LCD ดังที่แสดงด้านล่าง
ตอนนี้คุณสามารถเคลื่อนที่ไปรอบ ๆ ด้วยโมดูล GPS ของเครื่องส่งสัญญาณและคุณจะสังเกตเห็นว่าเครื่องรับกำลังอัปเดตตำแหน่งของมัน หากต้องการทราบตำแหน่งที่แน่นอนของโมดูลเครื่องส่งคุณสามารถอ่านค่าละติจูดและลองจิจูดที่แสดงบนจอ LCD และป้อนลงในแผนที่ Googleเพื่อรับตำแหน่งบนแผนที่ตามที่แสดงด้านล่าง
การทำงานที่สมบูรณ์ยังสามารถพบได้ในวิดีโอที่ด้านล่างของหน้านี้ หวังว่าคุณจะเข้าใจบทช่วยสอนและสนุกกับการสร้างสิ่งที่เป็นประโยชน์กับมัน หากคุณมีข้อสงสัยใด ๆ คุณสามารถทิ้งไว้ในส่วนความคิดเห็นด้านล่างหรือใช้ฟอรัมของเราสำหรับคำถามทางเทคนิคอื่น ๆ