CAT LoRa Starter Kit ตอนที่ 2 การรับและส่งข้อมูลไปยัง LoRa IoT by CAT (with AcSIP S76S Commands)

Image for post
Image for post

ในบทความนี้เราจะมาดูวิธีการส่งข้อมูลขึ้นไปยัง CAT LoRaWAN กันครับ โดยบอร์ดตัวนี้จะใช้ชิป AcSIP S76S เราสามารถควบคุมได้โดยการส่งคำสั่งผ่าน UART (Universal Asynchronous Receiver Transmitter) ที่เป็นการสื่อสารอนุกรมแบบ Asynchronous ทำให้สามารถรับและส่งข้อมูลได้ในเวลาเดียวกันแบบ Full Duplex โดยที่คำสั่งทั้งหมดที่เราสามารถใช้งานได้สามารถดาวน์โหลดได้ตามลิ้งด้านล่างนี้เลยครับ

จะเห็นได้ว่ามีคำสั่งมากมายให้เราเลือกใช้งาน แต่ในที่นี้เราจะใช้คำสั่งที่จำเป็นต้องใช้เท่านั้นนะครับ โดยคำสั่งที่ใช้งานมีดังนี้

  1. mac set_ch_freq
  2. mac set_rx2
  3. mac save
  4. mac set_class
  5. mac join abp
  6. mac set_deveui
  7. mac set_devaddr
  8. mac set_nwkskey
  9. mac set_appskey

ในที่นี้เราจะเขียนโปรแกรมส่งข้อมูลขึ้น CAT LoRaWAN โดยส่ง “0123456789ABCDEF” ขึ้นสู่ Network Server โดยโค๊ดทั้งหมดมีดังนี้

อธิบายโค๊ด

เปิดการใช้งาน Uart เพื่อเชื่อมต่อกับชิป AcSIP S76S

ตั้งค่าความถึ่และ Chanel ที่ใช้สำหรับการเชื่อมต่อกับ CAT LoRaWAN

กำหนดวิธีเชื่อมต่อเป็น ABP แบบ Class A โดยระบุข้อมูลที่ CAT ออกให้เพื่อใช้ในการเชื่อมต่อมี 4 อย่างดังนี้
3.1 Device EUI (deveui)
3.2 Device Address (devaddr)
3.3 Network Security Key (nwkskey)
3.4 Application Security Key (appskey)

ถ้าไม่มีอะไรผิดพลาด เมื่อเรา upload และ run โปรแกรม เราจะพบข้อความใน Terminal แสดงดังนี้

  1. ในตอน Setup function จะปรากฏข้อความดังภาพ
Image for post
Image for post

2. ในตอน Loop Function จะแสดงข้อความดังภาพ เนื่องจากเราวนลูปให้ส่งข้อความไป LoraWAN ทุก ๆ 20 วินาที

Image for post
Image for post

3. ทดลองส่งข้อมูลมายัง Node ผ่านเว็บของ CATTELECOM

  • port = 9
  • payload = 090807060504030201
Image for post
Image for post
Image for post
Image for post

จากผลของ Terminal จะเห็นข้อความ

>> Ok คือการตอบกลับเมื่อส่งคำสั่งไปยัง AcSIP S76S สำเร็จ

>> tx_ok คือการตอบกลับเมื่อส่งคำสั่ง mac tx ucnf FFFF ไปยัง AcSIP S76S

>> mac rx คือการรับข้อมูลที่ส่งมาจาก Network Server

จากที่กล่าวมาข้อมูลอยู่ในรูปที่เราไม่สามารถนำมาใช้ได้เลยทันที เราจำเป็นต้องทำการตัดเอาเฉพาะข้อมูลที่ต้องการมาใช้เท่านั้นก่อน

ในการส่งข้อมูลนั้นเราต้องการ 2 สิ่งคือ

  1. Port ที่จะส่ง — เลขจำนวนเต็มแบบไม่มีเครื่องหมาย
  2. ข้อมูลที่จะส่ง — โดยข้อมูลที่จะส่งต้องอยู่ในรูปแบบของเลขฐาน 16 (0–9,A-F) และเป็นจำนวนคู่ เท่านั้น

โดยการส่งข้อมูลจะทำการส่งแบบอนุกรม เขียนไปยัง Serial2 ในรูปแบบคำสั่งของชิบ AcSIP S76S

และใน LoraWAN มีกฏห้ามส่งข้อมูลต่อเนื่องติด ๆ กัน ต้องส่งห่างกันอย่างน้อย 20 วินาที เราจึงต้องเขียนควบคุมเวลาการส่งให้ส่งออกทุก ๆ 20 วินาทีด้วย

เราจะเขียนรับข้อมูลไว้ในฟังก์ชั่น loop() โดยจะหน่วงเวลาไว้ที่ 1 วินาที ใช้ฟังก์ชั่น readString() ของ Serial2 แล้วแสดงออกมาทาง Terminal

ในบทความนี้ก็ขอจบไว้เพียงเท่านี้ครับ บทความหน้าเราจะมาเปลี่ยนให้มันเป็น Library พร้อมใช้งานกัน ชีวิตจะง่ายขึ้นเยอะ สวัสดีครับ

Written by

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store