Sure, this is running on a M5Paper, though I have had something very similar running on a M5Core, This is the small segment of an app written for long rang tag reading at a workshop to track keys and other equipment. I have kept in the tag reading portion. I hope this helps. Some of it is not needed for the reading, just too lazy to remove from the snippet.
from m5stack import *
from m5ui import *
from uiflow import *
import wifiCfg
import time
import unit
import _thread
import os
import random
import urequests
from m5stack import touch
setScreenColor(15)
buzzer_1 = unit.get(unit.BUZZER, unit.PORTB)
uhf_rfid_0 = unit.get(unit.UHF_RFID, unit.PORTC)
version = 0.89
EPC = None
epc_bool = None
temp = None
tagList = []
TouchCordx = None
TouchCordy = None
rsense = 2
readerKey = None
businessKey = None
uhf_rfid_0.set_region(uhf_rfid_0.REGIN_US)
uhf_rfid_0.automatic_freq_hopping(0xFF)
uhf_rfid_0.set_channel_freq(924.25)
epc_bool = 0
uhf_rfid_0.set_select_mode(0x01)
print("Beapnow Reader : " + str(version))
print("---")
def genKey(length):
letters = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
result_str = ''.join(random.choice(letters) for i in range(length))
return result_str
def SetTouchCordenate():
global TouchCordx, TouchCordy
print("Setting Touch")
TouchCordx, TouchCordy, s, status = touch.read()
print(TouchCordx)
print(TouchCordy)
def uhf_rfid_cb(epc_no, dBm):
global EPC, epc_bool, temp
EPC = epc_no
_ = dBm
# label5.setText(str(EPC))
print("2")
print("---")
pass
# while not epc_bool:
# epc_bool = uhf_rfid_0.multiple_polling_read(uhf_rfid_cb, 100)
# while not (uhf_rfid_0.select_tag_param(EPC)):
# pass
ssid = None
pc = None
keyboard = None
sett = True
sim = True
bz = False
readerBool = True
touchBool = False
bzfreq = 500
la = []
ba = []
alphabet = [
"0",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"a",
"b",
"c",
"d",
"e",
"f",
"g",
"h",
"i",
"j",
"k",
"l",
"m",
"n",
"o",
"p",
"q",
"r",
"s",
"t",
"u",
"v",
"w",
"x",
"y",
"z",
]
tu = False
ltime = 0
dsc = 0
rr0 = None
rr1 = None
rr2 = None
rr3 = None
rr4 = None
rr5 = None
rr6 = None
rr7 = None
label0 = M5TextBox(502, 25, "Beapnow Tag Reader", lcd.FONT_DejaVu40, 0, rotate=90)
labelVersion = M5TextBox(
460, 30, "version: " + str(version), lcd.FONT_Default, 0, rotate=90
)
circle0 = M5Circle(492, 904, 30, 12, 0)
rectangle0 = M5Rect(290, 875, 60, 60, 12, 0)
rectangle1 = M5Rect(380, 875, 60, 60, 12, 0)
label1 = M5TextBox(334, 815, "Wifi", lcd.FONT_DejaVu24, 0, rotate=90)
label2 = M5TextBox(420, 663, "Read Sensitivity", lcd.FONT_DejaVu24, 0, rotate=90)
rs2 = M5TextBox(420, 882, "High", lcd.FONT_DejaVu18, 0, rotate=90)
label3 = M5TextBox(501, 770, "Wifi off", lcd.FONT_DejaVu24, 0, rotate=90)
label9 = M5TextBox(501, 620, "Waiting...", lcd.FONT_DejaVu24, 0, rotate=90)
label7 = M5TextBox(512, 892, "", lcd.FONT_DejaVu40, 0, rotate=90)
rectangle7 = M5Rect(170, 307, 200, 410, 14, 0)
label12 = M5TextBox(334, 322, "Tag #", lcd.FONT_DejaVu40, 0, rotate=90)
label13 = M5TextBox(331, 446, "1234567890", lcd.FONT_DejaVu40, 0, rotate=90)
label14 = M5TextBox(276, 431, "READ Success", lcd.FONT_DejaVu24, 0, rotate=90)
label15 = M5TextBox(227, 461, "Date Time", lcd.FONT_DejaVu24, 0, rotate=90)
def touchScreen():
global touchBool, ssid, pc, tu
print("Waiting for touch")
btty = 6
while True:
if touch.status():
print(str(touch.read()))
wait_ms(5)
def reader():
global bz, dsc, ltime, readerBool,rsense
temp = 0
count = 0
clean = 0
print("Waiting for RFID")
print("sensitivity = "+str(rsense))
while True:
ltime += 1
# while not temp:
temp = uhf_rfid_0.single_polling()
if temp:
label13.setText(str(temp[0]))
print("-----")
print(temp[0])
print(temp[1])
print("-----")
count += 1
lcd.show()
wait_ms(2)
def file_exists(filename):
try:
return (os.stat(filename)[0] & 0x4000) == 0
except OSError:
return False
def readSense():
global rsense
print("changing rsense")
if rsense == 2:
rsense = 5
rs2.setText("Low")
else:
rsense = 2
rs2.setText("High")
lcd.partial_show(370, 875, 60, 60)
def checkConfig():
# some check here
return True
def startTime():
print("START TIME")
# time = 0
# loop = True
# while loop:
# if time > 29:
# logTags()
# loop = False
# time += 1
# print(time)
# wait(.95)
label13.setText("")
ssid = ""
pc = ""
lcd.show()
_thread.start_new_thread(touchScreen, ())
if checkConfig():
_thread.start_new_thread(reader, ())
print("Ready for tags")
else:
print("waiting for register")