嘉楠科技
直播中

乐侨珂

9年用户 1064经验值
擅长:控制/MCU
私信 关注
[问答]

想用K230放在无人机上做图像识别,加装一个4G模块把识别结果和画面同时传输的地面站或者手机上,怎么操作?

我想用K230放在无人机上做图像识别,然后想加装一个4G模块把识别结果和画面同时传输的地面站或者手机上,这个目前可以如何处理?
        你好,目前底层是支持4G模块得驱动,参考https://developer.canaan-creative.com/k230_canmv/zh/main/zh/example/network/modules/ec200m.html,但是现在不支持在micropython中进行拨号得操作,需要将4G模块设置成自动拨号,然后使用network.LAN进行通信即可。

回帖(2)

俞旸

2025-6-16 14:28:53
你好,目前底层是支持4G模块得驱动,参考https://developer.canaan-creative.com/k230_canmv/zh/main/zh/example/network/modules/ec200m.html,但是现在不支持在micropython中进行拨号得操作,需要将4G模块设置成自动拨号,然后使用network.LAN进行通信即可。
举报

尚文清

2025-6-19 18:05:24

要在无人机上使用K230进行图像识别并通过4G模块传输结果和画面,可以按照以下步骤操作:




步骤1:硬件准备




  1. 核心硬件  



    • K230开发板(预装MaixPy3系统)  

    • 4G模块(推荐EC200M,需支持自动拨号+网卡模式)  

    • USB摄像头(兼容K230)  

    • 无人机供电系统(需稳定供电,4G模块功耗较高)




  2. 连接方式  



    • 将4G模块插入K230的USB接口  

    • 摄像头接入K230的USB或MIPI接口  

    • 确保无人机为K230和4G模块提供稳定电源(建议外接电池)






步骤2:配置4G模块




  1. 设置自动拨号(关键步骤)

    通过AT命令配置4G模块为自动拨号模式(需借助串口工具提前配置):  


    AT+QNETDEVCTL=1,1,1  # 开启自动拨号
    AT+CGDCONT=1,"IP","<你的APN>"  # 设置运营商APN(如中国移动CMNET)


    ✅ 验证:插入SIM卡,模块指示灯显示联网成功。





  2. 驱动加载

    K230原生支持EC200M驱动,开机后自动识别为usb0网络设备。






步骤3:K230代码实现


(1) 网络连接代码


import network
import utime

def connect_4g():
    lan = network.LAN(0)  # 0对应usb0接口
    lan.active(True)  # 激活网卡
    utime.sleep(10)  # 等待拨号

    if lan.status() == network.STAT_GOT_IP:
        print("4G Connected! IP:", lan.ifconfig()[0])
        return True
    else:
        print("Connect failed!")
        return False

# 初始化网络
if not connect_4g():
    reset()  # 失败则重启

(2) 图像识别+传输逻辑


import cv2
import socket
import numpy as np

# 初始化摄像头
cap = cv2.VideoCapture(0)
# 加载AI模型(示例用YOLOv5)
model = yolov5.load("path/to/yolov5_model.kmodel")

# 创建Socket连接(传输到云服务器)
server_ip = "云服务器公网IP"
server_port = 9000
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((server_ip, server_port))

while True:
    ret, frame = cap.read()
    if not ret: break

    # 执行图像识别
    detections = model.inference(frame)
    result_img = model.draw_results(frame, detections)

    # 压缩图像(降低带宽)
    _, img_encoded = cv2.imencode(".jpg", result_img, [cv2.IMWRITE_QUALITY, 50])

    # 封装数据(JSON+图片二进制)
    data = {
        "results": detections.tolist(),  # 识别结果
        "image": img_encoded.tobytes()   # 压缩后的图像
    }
    # 发送数据(需自定义编码协议)
    sock.send(json.dumps(data).encode() + b'')

    utime.sleep(0.1)  # 控制传输频率



步骤4:搭建云端接收服务


使用Python搭建简易服务器(部署在公网云服务器):


# server.py
import socket
import json
import cv2
import numpy as np

server = socket.socket()
server.bind(("0.0.0.0", 9000))
server.listen(1)

while True:
    client, addr = server.accept()
    buffer = b''
    while b'' not in buffer:
        buffer += client.recv(1024*1024)

    # 分割JSON和图片数据
    data_parts = buffer.split(b'')[0].split(b'}{')
    for part in data_parts:
        try:
            data = json.loads(part if part.startswith(b'{') else b'{' + part)
            # 解码图片
            img = cv2.imdecode(np.frombuffer(data["image"], np.uint8), 1)
            # 保存或转发到手机APP
            cv2.imwrite(f"results/{time.time()}.jpg", img)
            print("Detected:", data["results"])
        except: pass



步骤5:手机/地面站显示




  1. 方案一:Web浏览器查看  



    • 云服务器部署Web服务(如Flask),实时显示接收到的图片和识别结果  

    • 手机通过浏览器访问 http://<云服务器IP>:5000




  2. 方案二:自定义APP  



    • Android/iOS开发APP,通过Socket连接云服务器  

    • 使用SurfaceView实时渲染图片 + TextView显示识别结果






注意事项




  1. 带宽优化  



    • 降低图像分辨率(建议720p以下)  

    • 增大JPEG压缩比(质量50%以下)  

    • 非必要可仅传输识别结果+关键帧




  2. 稳定性增强  


    # K230代码增加重连机制
    def send_data(data):
       try:
           sock.send(data)
       except:
           connect_4g()  # 断网后重新连接



  3. 供电问题  



    • 4G模块峰值功耗可达2A,建议无人机外挂10000mAh以上电池




  4. 替代方案(无云服务器)  



    • 使用内网穿透工具(如frp)暴露K230到公网  

    • 手机直接连接K230(需4G运营商分配公网IP,不推荐)






效果示意图


无人机端:          
  [Camera] → [K230] → [4G模块] → 互联网
                                ↓
云服务器:接收数据 → 存储结果 → 推送至手机
                                ↓
手机端:实时显示画面 + 识别标签(如:car: 0.95, person: 0.87)

按照此方案,您可实现在移动网络下传输10fps的480p画面+识别结果(平均带宽200KB/s)。若需完整代码模板,建议参考K230官方GitHub中的网络示例。

举报

更多回帖

发帖
×
20
完善资料,
赚取积分