เซนเซอร์ Arduino LoRa พร้อมวิทยุ InAir9B

เซนเซอร์ Arduino LoRa พร้อมวิทยุ InAir9B

สารบัญ:

Anonim

ที่นี่ฉันจะอธิบายทีละขั้นตอนวิธีการทำเซ็นเซอร์ 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"