T-BEAM LoRaWAN กับ GPS Tracking
หากซื้อ TTGO Tbeam มาใหม่ๆ สามารถดูว่าอุปกรณ์ทำงานได้ปรกติหรือเปล่าโดย ใช้โปรแกรม Arduino IDE ทดสอบ ให้เสียบสาย USB จาก PC เข้ากับ TTGO Tbeam แล้วตั้ง Port ให้ถูกต้อง แล้วเปิด Serial Monitor ตั้ง Port Speed 38400 bps ก็จะเห็นข้อมูลจาก Chip GPS ตามภาพ ไฟ LED สีแดงจะติดและไฟสีน้ำเงินจะกระพริบเป็นระยะๆ
ลองใช้ TTGO Tbeam ซึ่งมี GPS อยู่ในตัว กับ ภาษา MicroPython
ใช้กับ Private Server ซึ่งติดตั้ง
1.ChirpStack LoRaWAN Network Server
2.InfluxDB
3.Grafana
ติดตั้ง MicroPython ลงใน Tbeam เช่นเดียวกับ ESP32 ทั่วไป อ่านวิธีได้จาก ลิ้งค์
ไฟล์ที่ต้องมีทั้งหมดที่ต้อง Upload ขึ้นไว้ใน Tbeam คือ
- File 00 GPS.py
กำหนด Temp, humid , pa, Altitude เป็นค่า สมมุติไว้
from cayennelpp import CayenneLPP
#from machine import Pin, I2C
from micropyGPS import MicropyGPS
import utime, time
from ulora import TTN, uLoRa
import machine
#heltec Tbeam
#TBEAM
LORA_CS = const(18)
LORA_SCK = const(5)
LORA_MOSI = const(27)
LORA_MISO = const(19)
LORA_IRQ = const(23)
LORA_RST = const(26)
LORA_DATARATE = "SF12BW125" # Choose from several available
DEVADDR = bytearray([0x26, 0x01, 0x15, 0xBB])
NWKEY = bytearray([0xA6, 0xC3, 0x0F, 0xB2, 0x91, 0xDB, 0x55, 0xC5,
0x31, 0x82, 0x53, 0xD4, 0x08, 0x08, 0x7A, 0x4A])
APP = bytearray([0x54, 0xBE, 0x2D, 0xE6, 0xB6, 0xB3, 0xF7, 0xC2,
0xD0, 0x33, 0x72, 0xB5, 0x27, 0x20, 0xD6, 0x2A ])
TTN_CONFIG = TTN(DEVADDR, NWKEY, APP, country="AS")
FPORT = 1
lora = uLoRa(
cs=LORA_CS,
sck=LORA_SCK,
mosi=LORA_MOSI,
miso=LORA_MISO,
irq=LORA_IRQ,
rst=LORA_RST,
ttn_config=TTN_CONFIG,
datarate=LORA_DATARATE,
fport=FPORT
)
temp = 30
pa = 1000.1
hum = 50
i2c = machine.I2C(scl=machine.Pin(22), sda=machine.Pin(21)) #ESP32 Dev Board /myown
com = machine.UART(2,baudrate=9600,rx=34,tx=12,timeout=10)
my_gps = MicropyGPS(7)
my_gps.local_offset
def get_GPS_values():
global gps_values,rtc
time.sleep(2)
cc = com.readline()
print (cc)
for x in cc:
my_gps.update(chr(x))
gps_values = str(my_gps.latitude[0] + (my_gps.latitude[1] / 60)) + ',' + str(my_gps.longitude[0] + (my_gps.longitude[1] / 60))
date = my_gps.date
timestamp = my_gps.timestamp
hour = timestamp[0]
rtc = str(int(timestamp[0]))+":"+str(int(timestamp[1]))+":"+str(int(timestamp[2]))
return gps_values,rtc
counter = 0
while True:
get_GPS_values()
print("LAT,LONG",gps_values)
lat,long=gps_values.split(",")
print (float(lat))
print (float(long))
c = CayenneLPP()
c.addTemperature(1, float(temp))
c.addRelativeHumidity(2, float(hum))
c.addBarometricPressure(3, float(pa))
c.addGPS(7, float(lat), float(long),2.0 )
data = c.getBuffer() # Get bytes
lora.frame_counter=counter
lora.send_data(data, len(data), lora.frame_counter)
time.sleep(2)
counter += 1
หากเป็น Tbeam 1.1 XY2202 CH9102F QFN24 ต้องกำหนดขา
LORA_CS = const(18)
LORA_SCK = const(5)
LORA_MOSI = const(27)
LORA_MISO = const(19)
LORA_IRQ = const(23)
LORA_RST = const(26)
อีก 3 ไฟล์จะได้จาก Lib ulora (ไม่ Compliant กับ LoRaWAN 100% ) คือ
ulora.py คลิก
ulora_encryption.py คลิก
ส่วน ttn_as.py จะให้ไว้ไม่ถูกต้อง ให้ใช้จากในบทความนี้แทน ซึ่งสามารถเลือก AS1, AS2 และ AS single Channel ได้ โดยเลือกเปิด Comment ตรงความถี่ที่ต้องการใช้
#AS1
#TTN_FREQS = {0: (0xe6, 0xCC, 0xF4), # 868.1 MHz (923.2 Mhz)
# 1: (0xe6, 0xCC, 0xF4), # 868.3 MHz (923.4 Mhz)
# 2: (0xe6, 0xCC, 0xF4), # 863.5 MHz (922.2 Mhz)
# 3: (0xe6, 0xCC, 0xF4), # 867.1 MHz (922.4 Mhz)
# 4: (0xe6, 0xCC, 0xF4), # 867.3 MHz (922.6 Mhz)
# 5: (0xe6, 0xCC, 0xF4), # 867.5 MHz (922.8 Mhz)
# 6: (0xe6, 0xCC, 0xF4), # 867.7 MHz (923.0 Mhz)
# 7: (0xe6, 0xCC, 0xF4)} # 867.9 MHz (922.0 Mhz)
#
#AS2
TTN_FREQS = {0: (0xe6, 0xCC, 0xF4), # 923.2 Mhz
1: (0xe6, 0xD9, 0xC0), # 923.4 Mhz
2: (0xe6, 0xe6, 0x66), # 923.6 Mhz
3: (0xe6, 0xf3, 0x33), # 923.8 Mhz
4: (0xe7, 0x00, 0x00), # 924.0 Mhz
5: (0xe7, 0x0C, 0xCC), # 924.2 Mhz
6: (0xe7, 0x19, 0x99), # 924.4 Mhz
7: (0xe7, 0x26, 0x66)} # 924.6 Mhz
อีกไฟล์คือ cayennelpp.py คลิก
และ micropyGPS.py คลิก
Tip! สามารถ Download ไฟล์ทุกไฟล์ทั้งหมดได้จาก คลิก
Tip! กรณีเจอ Error “host cluster failed to handle message : device not found” บนหน้า Live Data ของ Gateway TTN Stack V.3 ต้องแก้ไขดังนี้
โดยจะต้องตั้งค่าเพิ่มเติมตรง
General Setting/ Expand หลัง Network Layer/ Advance Settings
ให้เพิ่ม Factory Preset Frequesncies ดังต่อไปนี้
923200000
923400000
923600000
923800000
924000000
924200000
924400000
924600000
ติดตั้ง TrackMap plugin ลงเพิ่มใน Grafana Server ด้วยคำสั่ง
sudo grafana-cli plugins install pr0ps-trackmap-panel
Reboot Server ใหม่
Add New Panel ใหม่โดยเลือก Trackmap ตามรูปด้านล่างขวา
เลือก DataSource ที่เราสร้างไว้
แก้ Query เป็นตามภาพ
หรือ
SELECT mean(“latitude”), mean(“longitude”) FROM “device_frmpayload_data_gpsLocation_7_location” WHERE $timeFilter GROUP BY time($__interval) fill(none)
จะเห็นแผนที่เปลี่ยนเป็นแสดงคล้ายภาพตัวอย่าง
หมายเหตุ
ลิ้งค์ บทความนี้ คลิก
Reference กรณีต้องการใช้ภาษา C
https://github.com/palbeda/Lora-TTNMapper-T-Beam
https://github.com/hottimuc/Lora-TTNMapper-T-Beam
https://github.com/MichaelEFlip/Lora-TTNMapper-T-Beam
https://github.com/radforschung/Lora-TTNMapper-T-Beam
https://github.com/PA4WD/Lora-TTNMapper-T-Beam
https://github.com/r8420/Lora-TTNMapper-T-Beam
https://github.com/pulento/Lora-TTNMapper-T-Beam
https://github.com/DeuxVis/Lora-TTNMapper-T-Beam
https://github.com/sbiermann/Lora-TTNMapper-ESP32
https://github.com/pamribeirox/Lora-TTNMapper-T-Beam
https://github.com/noppingen/Lora-TTNMapper-T-Beam-v10
https://github.com/Edzelf/LoRa
https://github.com/FabTangi/ttgo-ttn-ds18b20
https://github.com/tekk/TTGO-T-Beam-Car-Tracker
https://codeberg.org/Gruenstreifen-eV/ttgo-tbeam-ttn-Sensor
https://github.com/hereismeaw/ttgo-tbeam-ttn-tracker
https://github.com/dermatthias/Lora-TTNMapper-T-Beam
https://github.com/xoseperez/ttgo-beam-tracker
https://github.com/kizniche/ttgo-tbeam-sensor-node-bme280
https://github.com/FrankUlbrich/Lora-TTNMapper-T-Beam
https://github.com/Bjoerns-TB/Lora-TTNMapper-T-Beam
https://github.com/hottimuc/Lora-TTNMapper-T-Beam
https://tz.liuqiufeng.com/kizniche/ttgo-tbeam-ttn-tracker
https://githubplus.com/kizniche/ttgo-tbeam-sensor-node-bme280