现在我有maixpy ide代码如下
# generated by maixhub, tested on maixpy v0.6.0_2_g9720594
# copy files to TF card and plug into board and power on
import sensor, image, lcd, time
import KPU as kpu
import gc, sys
from machine import UART
from fpioa_manager import fm
input_size = (224, 224)
labels = ['jinyinhua', 'jianghuang', 'wumei', 'baibu', 'honghua', 'longgu', 'kushen', 'lingzhi', 'lulutong', 'rougui', 'wulingzhi', 'chuanxinlian', 'ejiao', 'baihe', 'taoren', 'zhimu', 'baimaogen', 'chaihu', 'mohanlian', 'banlangen']
def lcd_show_except(e):
import uio
err_str = uio.StringIO()
sys.print_exception(e, err_str)
err_str = err_str.getvalue()
img = image.Image(size=input_size)
img.draw_string(0, 10, err_str, scale=1, color=(0xff,0x00,0x00))
lcd.display(img)
class Comm:
def __init__(self, uart):
self.uart = uart
def send_classify_result(self, pmax, idx, label):
msg = "{}:{:.2f}:{}\n".format(idx, pmax, label)
self.uart.write(msg.encode())
def init_uart():
fm.register(10, fm.fpioa.UART1_TX, force=True)
fm.register(11, fm.fpioa.UART1_RX, force=True)
uart = UART(UART.UART1, 115200, 8, 0, 0, timeout=1000, read_buf_len=256)
return uart
def main(labels = None, model_addr="0x300000", sensor_window=input_size, lcd_rotation=0, sensor_hmirror=False, sensor_vflip=False):
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.set_windowing(sensor_window)
sensor.set_hmirror(sensor_hmirror)
sensor.set_vflip(sensor_vflip)
sensor.run(1)
lcd.init(type=1)
lcd.rotation(lcd_rotation)
lcd.clear(lcd.WHITE)
if not labels:
with open('labels.txt','r') as f:
exec(f.read())
if not labels:
print("no labels.txt")
img = image.Image(size=(320, 240))
img.draw_string(90, 110, "no labels.txt", color=(255, 0, 0), scale=2)
lcd.display(img)
return 1
try:
img = image.Image("startup.jpg")
lcd.display(img)
except Exception:
img = image.Image(size=(320, 240))
img.draw_string(90, 110, "loading model...", color=(255, 255, 255), scale=2)
lcd.display(img)
uart = init_uart()
comm = Comm(uart)
try:
task = None
task = kpu.load(0x300000)
while(True):
img = sensor.snapshot()
t = time.ticks_ms()
fmap = kpu.forward(task, img)
t = time.ticks_ms() - t
plist=fmap[:]
pmax=max(plist)
max_index=plist.index(pmax)
img.draw_string(0,0, "%.2f : %s" %(pmax, labels[max_index].strip()), scale=2, color=(255, 0, 0))
img.draw_string(0, 200, "t:%dms" %(t), scale=2, color=(255, 0, 0))
comm.send_classify_result(pmax, max_index, labels[max_index].strip())
lcd.display(img)
except Exception as e:
raise e
finally:
if not task is None:
kpu.deinit(task)
if __name__ == "__main__":
try:
# main(labels=labels, model_addr=0x300000)
main(labels=labels, model_addr="/sd/model-210801.kmodel")
except Exception as e:
sys.print_exception(e)
lcd_show_except(e)
finally:
gc.collect()
现在有一个STM32F103C8T6(代码在keil5运行/编译/烧录),一个syn6288,我想要实现k210识别中药材后,k210和stm32通信,syn6288播报识别结果。由于识别结果不稳定,需要syn6288当前播报的语音完成后才会播报后边的识别内容。现在给出如下参考连线方式,
K210模块:Type-C接电脑,GND与STM32共地; IO27、IO28连接到STM32的PA10、PA9引脚;
语音模块SY6288:电源引脚VCC接5V;GND与STM32共地;接收脚RX与STM32板的PA2引脚相连,TX与STM32板的PA3相连;
我该如何设计stm32的代码,要求简单,操作步骤少,适合新手。给我连接硬件(一个硬件的哪个引脚连另一个硬件的哪个引脚)最具体的步骤和keil5完整代码(包括.c/,h之类的文件)和keil5创建工程的最详细步骤。
最新发布