![เซนเซอร์ Arduino LoRa พร้อมวิทยุ InAir9B เซนเซอร์ Arduino LoRa พร้อมวิทยุ InAir9B](https://img.gwsigeps.com/img/circuits/arduino-lora-sensor-with-inair9b-radio-3.jpg)
สารบัญ:
ที่นี่ฉันจะอธิบายทีละขั้นตอนวิธีการทำเซ็นเซอร์ LoRa ทำงานกับสแต็ค LoRaWAN ตามโมดูล inAir9B และ Arduino UNO (เหมือนกันอาจนำไปใช้กับเมกะ)
ไม่พบบทแนะนำแบบสมบูรณ์ที่ใดก็ได้บนเว็บและตัดสินใจที่จะทำ
ในที่สุดคุณก็พร้อมที่จะใช้โหนดปลายทางของ LoRa ที่ส่งข้อความ 'Hello World' ทุกนาที
มันเป็นตัวอย่างของ LoRaWAN ฉันคิดว่าคุณมีเกตเวย์ของ LoRa อยู่แล้ว
สิ่งที่คุณต้องการ:
1. Arduino UNO (Mega หรืออื่น ๆ)
2. โมดูล inAir9B (สาเหตุอาจทำให้คุณลองเหมือนกันกับโมดูลอื่น แต่อยู่นอกขอบเขตของคู่มือนี้)
3. สายไฟและเบรกเกอร์
4. เกตเวย์ LoRa
5. พีซีหรือแล็ปท็อปที่มี Arduino IDE
6. เซิร์ฟเวอร์เครือข่าย LoRa เพื่อดูข้อมูลของคุณที่กำลังจะมาถึง (ฉันใช้ loriot.io ที่นี่)
เตรียม:
เชื่อมต่อเกตเวย์กับเซิร์ฟเวอร์เครือข่ายของคุณ:
1) วิธีที่ง่ายที่สุดคือการใช้บัญชีฟรีบน loriot.io ลงทะเบียนที่นั่นและเพิ่มเกตเวย์ของคุณ ให้คำแนะนำทั้งหมดเพื่อตั้งค่าเกตเวย์ของคุณและดาวน์โหลดซอฟต์แวร์ที่ปรับแต่งตามต้องการ เมื่อเสร็จแล้วคุณจะเห็นเกตเวย์ของคุณเป็น 'ออนไลน์' และ 'เชื่อมต่อ'
2) สร้างแอปพลิเคชันเครือข่ายในเซิร์ฟเวอร์ของคุณ
3) สร้างอุปกรณ์ใหม่ในแอปพลิเคชันของคุณ สิ่งนี้จะให้การตั้งค่าเช่น 'Device EUI', DevADDR, NWKSKEY, APPSKEY และอื่น ๆ ที่เราไม่ต้องการในตอนนี้
วัสดุ:
ขั้นตอนที่ 1: โมดูลการเดินสายไฟ
โมดูลของฉันใน Air9B บางตัวมีขาบัดกรี (ขวาบนภาพ) และบางตัวบัดกรีด้วยตัวเอง (เหลืออยู่บนรูปภาพ) โมดูลที่มีการอัดไว้ล่วงหน้ามีขาอยู่เหนือป้ายกำกับซึ่งไม่สะดวกในการใช้ POV ของฉันเพราะถ้าคุณใช้เขียงหั่นขนมคุณจะไม่เห็นสิ่งที่เขียนอยู่ ดังนั้นโมดูลของฉันฉันบัดกรีด้วยขาลง แต่มันก็ขึ้นอยู่กับคุณว่าจะเลือกอะไร
เชื่อมต่อ inAir9B กับ Arduino ดังนี้:
inAir9B - Arduino
D0 - 2
D1 - 5
D2 - 6
CS - 10
0V -GND
3V3 - 3.3V
SI - MOSI (บนส่วนหัว ICSP)
SO - MISO (บนส่วนหัว ICSP)
CK - SCK (บนส่วนหัว ICSP)
สำหรับหมุดบนหัว ICSP ดูรูป
ขั้นตอนที่ 2: การเขียนโปรแกรม
ขณะนี้มีห้องสมุด LoRaWAN 2 รุ่นสำหรับ Arduino:
1. http://github.com/matthijskooijman/arduino-lmic - ไลบรารีนี้ถูกพอร์ตจาก IBM LoRaWAN ในไลบรารี C ปัญหาที่เกิดขึ้นคือมันใช้หน่วยความจำจำนวนมาก (ส่วนใหญ่เป็นเพราะส่วนที่บังคับใช้ AES) และไม่สามารถใช้งานได้ใน Arduino UNO เพราะสิ่งนั้น แต่สามารถใช้งานได้หลังจากปิดใช้งานคุณสมบัติบางอย่าง (ซึ่งทำให้โค้ดมีขนาดเล็กลง)
2. http://github.com/things4u/LoRa-LMIC-1.51 - นี่คือพอร์ตเดียวกันจากไลบรารี IBM แต่มี lib ที่แตกต่างกันสำหรับการสมัครสมาชิก AES (รุ่นที่เล็กกว่า)
ฉันมีปัญหากับการเรียกใช้ร่างจากตัวเลือกที่สองและตัดสินใจที่จะหยุดกับร่างแรก
ในการทำเช่นเดียวกันคุณควรดาวน์โหลดไลบรารี่จากลิงค์ด้านบน (เวอร์ชั่น Matthijs Kooijman) และใส่ไว้ในโฟลเดอร์ 'libraries' Arduino ของคุณ (unzipped) จากนั้นรีสตาร์ท Arduino IDE จากนั้นคุณจะเห็นมันในไลบรารีและตัวอย่าง
ก่อนอื่นให้ไปที่โฟลเดอร์ที่มีไลบรารีและเปิดไฟล์ 'config.h' ตรวจสอบบรรทัดนั้น
'#define CFG_sx1276_radio 1' ไม่มีเครื่องหมายข้อคิดเห็นและ '// # define CFG_sx1272_radio 1' ถูกใส่เครื่องหมาย
บรรทัดที่ไม่มีเครื่องหมาย '#define DISABLE_PING' และ '#define DISABLE_BEACONS' เพื่อประหยัดพื้นที่สำหรับ Arduino UNO (สำหรับเมกะคุณสามารถข้ามสิ่งนี้ได้)
จากนั้นเปิดใน Arduino IDE: ไฟล์ -> ตัวอย่าง -> กรอบงาน IBM LMIC -> ttn
ตรวจสอบหมุดควรเป็นเช่นนี้:
// การทำแผนที่ Pin
const lmic_pinmap lmic_pins = {.nss = 10,.rxtx = LMIC_UNUSED_PIN,.rst = 5,.dio = {2, 5, 6},};
ตั้งค่า NWKSKEY, APPSKEY, DEVADDR ตามที่คุณจัดการไว้ในเซิร์ฟเวอร์เครือข่ายของคุณ
ดูไฟล์ที่แนบมาเป็นตัวอย่าง
อัพโหลดภาพร่างของคุณไปยัง Arduino ทำ!
มันจะเริ่มส่งแพคเกจไปยังเกตเวย์ของคุณแล้วส่งต่อไปยังเซิร์ฟเวอร์เครือข่าย
หากคุณใช้ 'loriot' คุณอาจเห็นแพ็คเก็ตไปที่เซิร์ฟเวอร์ของคุณในหน้า: http: //www.loriot.io/apps/gwtap.html? gw = B8-27-EB -… (วาง MAC ของ GW ของคุณ ที่นี่)
และคุณอาจตรวจสอบข้อความที่เข้ามาในเซิร์ฟเวอร์ของคุณ (ดูรูปภาพ)
คุณสามารถแปลงข้อมูล HEX เป็น ASCII ได้ที่นี่: http: //www.rapidtables.com/convert/number/hex-to-a …
ในกรณีของฉัน '48 65 6c 6c 6f 2c 20 77 6f 72 6c 64 21 'หมายถึง' สวัสดีโลก! '
ขั้นตอนถัดไป:
เชื่อมต่อเซ็นเซอร์ที่แท้จริงของคุณกับ arduino และตั้งโปรแกรมให้ส่งข้อมูลแทน "Hello World"