[星瞳科技]OpenMV如何进行wifi通信?

news2024/11/27 2:40:19

OpenMV官方扩展板采用ATWINC1500模组,可以传输图像。

详细资料:http://singtown.cc/product/openmv-wifi扩展板/
如果想使用ESP8266,使用串口通信就可以。

wifi扫描

无线传输图像

无线传输小球坐标

import sensor
import time
import network
import socket
import json

SSID ='OPENMV_AP'    # Network SSID
KEY  ='1234567890'    # Network key (must be 10 chars)
HOST = ''           # Use first available interface
PORT = 8080         # Arbitrary non-privileged port

green_threshold   = (   0,   80,  -70,   -10,   -0,   30)

# Reset sensor
sensor.reset()
sensor.set_framesize(sensor.QQVGA)
sensor.set_pixformat(sensor.GRAYSCALE)

# Init wlan module in AP mode.
wlan = network.WLAN(network.AP_IF)
wlan.config(ssid=SSID, key=KEY, channel=2)
wlan.active(True)


print("AP mode started. SSID: {} IP: {}".format(SSID, wlan.ifconfig()[0]))

# You can block waiting for client to connect
# print(wlan.wait_for_sta(100000))

def response(client):
    # Read request from client
    data = client.recv(1024)
    # Should parse client request here

    # Send multipart header
    client.send("HTTP/1.1 200 OK\r\n" \
                "Server: OpenMV\r\n" \
                "Content-Type: application/json\r\n" \
                "Cache-Control: no-cache\r\n" \
                "Pragma: no-cache\r\n\r\n")

    # FPS clock
    clock = time.clock()

    # Start streaming images
    # NOTE: Disable IDE preview to increase streaming FPS.

    img = sensor.snapshot()
    blobs = img.find_blobs([green_threshold])
    if blobs:
        for b in blobs:
            img.draw_rectangle(b[0:4]) # rect
            img.draw_cross(b[5], b[6]) # cx, cy

    client.send(json.dumps(blobs))
    client.close()

server = None

while True:
    if server is None:
        # Create server socket
        server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
        # Bind and listen
        server.bind([HOST, PORT])
        server.listen(5)
        # Set server socket to blocking
        server.setblocking(True)

    try:
        print("Waiting for connections..")
        client, addr = server.accept()
    except OSError as e:
        server.close()
        server = None
        print("server socket error:", e)
        continue

    try:
        # set client socket timeout to 2s
        client.settimeout(5.0)
        print("Connected to " + addr[0] + ":" + str(addr[1]))
        response(client)
    except OSError as e:
        client.close()
        print("client socket error:", e)
        # sys.print_exception(e)

与传输图像类似,浏览器输入IP:PORT, IP在终端可以看到。 如果是Wi-Fi扩展板:192.168.1.1:8080 如果是OpenMV RT: 192.168.4.1:8080 就可以获得json数据

如果想在自己的代码中获得数据,只需要GET网址, 就会获得JSON。

例如python:

import requests
r = requests.get('192.168.1.1:8080')

只传输一张图片

import sensor
import time
import network
import socket
import json

SSID ='OPENMV_AP'    # Network SSID
KEY  ='1234567890'    # Network key (must be 10 chars)
HOST = ''           # Use first available interface
PORT = 8080         # Arbitrary non-privileged port

green_threshold   = (   0,   80,  -70,   -10,   -0,   30)

# Reset sensor
sensor.reset()
sensor.set_framesize(sensor.QQVGA)
sensor.set_pixformat(sensor.GRAYSCALE)

# Init wlan module in AP mode.
wlan = network.WLAN(network.AP_IF)
wlan.config(ssid=SSID, key=KEY, channel=2)
wlan.active(True)


print("AP mode started. SSID: {} IP: {}".format(SSID, wlan.ifconfig()[0]))

# You can block waiting for client to connect
# print(wlan.wait_for_sta(100000))

def response(client):
    # Read request from client
    data = client.recv(1024)
    # Should parse client request here

    # Send jpeg header
    client.send("HTTP/1.1 200 OK\r\n" \
                    "Server: OpenMV\r\n" \
                    "Content-Type: image/jpeg\r\n\r\n")

    frame = sensor.snapshot()
    cframe = frame.compressed(quality=35)
    client.send(cframe)
    client.close()

server = None

while True:
    if server is None:
        # Create server socket
        server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
        # Bind and listen
        server.bind([HOST, PORT])
        server.listen(5)
        # Set server socket to blocking
        server.setblocking(True)

    try:
        print("Waiting for connections..")
        client, addr = server.accept()
    except OSError as e:
        server.close()
        server = None
        print("server socket error:", e)
        continue

    try:
        # set client socket timeout to 2s
        client.settimeout(5.0)
        print("Connected to " + addr[0] + ":" + str(addr[1]))
        response(client)
    except OSError as e:
        client.close()
        print("client socket error:", e)
        # sys.print_exception(e)

如果是Wi-Fi扩展板:浏览器输入192.168.1.1:8080 如果是OpenMV RT:浏览器输入192.168.4.1:8080 ,即可查看一张图片。

视频教程12 - WIFI无线图传:OpenMV Wi-Fi图传 | 星瞳科技
视频教程39 - WIFI编程对OpenMV远程调试:WIFI编程对OpenMV远程调试 | 星瞳科技
视频教程30 - 有线图传扩展板:OpenMV 有线图传扩展板 | 星瞳科技
视频教程31 - 无线图传扩展板:OpenMV无线图传扩展板 | 星瞳科技

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2063015.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于PHP+MySQL组合开发的DIY分销商城小程序源码系统 附带源代码包以及搭建部署教程

系统概述 随着消费者对购物便捷性、个性化需求的不断增长,传统的电商模式已难以满足市场多样化需求。分销商城小程序以其低门槛、易传播、高粘性等特点,成为众多商家转型升级的首选。本源码系统正是基于这一市场需求,利用PHP这一成熟稳定的后…

【C++】深度解析:用 C++ 模拟实现 priority_queue类,探索其底层实现细节(仿函数、容器适配器)

目录 ⭐前言 ✨堆 ✨容器适配器 ✨仿函数 ⭐priority_queue介绍 ⭐priority_queue参数介绍 ⭐priority_queue使用 ⭐priority_queue实现 ✨仿函数实现 ✨堆的向上调整和向下调整 ✨完整代码 ⭐前言 ✨堆 堆是一种特殊的树形数据结构,通常以二叉树的…

AVI视频损坏了怎么修复?轻松几步解决你的困扰

在数字化时代,视频已成为我们记录生活、分享经验和传递信息的重要方式。AVI作为一种常见的视频格式,因其无损质量的特点而受到广泛欢迎。然而,有时候我们可能会遇到AVI视频文件损坏的情况,导致无法正常播放。别担心,本…

探索paho-mqtt:Python世界的物联网通信桥梁

文章目录 **探索paho-mqtt:Python世界的物联网通信桥梁**第一部分:背景介绍第二部分:paho-mqtt概览第三部分:安装指南第四部分:基础函数使用第五部分:实际应用场景第六部分:常见问题与解决方案第…

VMware vSphere Replication 虚拟机备份及迁移实践

vSphere Replication 介绍 vSphere Replication 是适用于 vSphere 的基于 Hypervisor 管理程序的异步复制解决方案,是 VMware vCenter Server 的扩展,包含在vCenter Server Standard中,可为环境中的所有虚拟机提供灾难恢复和数据保护。 vSph…

上午 2019

信息系统规划方法_信息系统规划有哪些方法-CSDN博客 1. 关键成功因素法(CSF) 在现行系统中,总存在着多个变量影响系统目标的实现,其中若干个因素是关键的和主要的(即关键成功因素)。通过对关键成功因素的识…

SpingBoot 两种方式配置多数据源

第一种&#xff1a;使用与MyBaits-Plus师出同门的“dynamic-datasource-spring-boot-starter” 官网地址&#xff1a; 基础必读&#xff08;免费&#xff09; dynamic-datasource 看云 1&#xff1a;引入依赖 <!-- 苞米豆多数据源 --> <dependency><group…

DID测试套件

DID测试套件 介绍 名称 DID Test Suite 网址 https://github.com/w3c/did-test-suite 功能 用于验证DID实现是否符合W3C DID Core规范的一系列测试反映各DID方法&#xff08;如did:orb、did:key、did:web等&#xff09;的实现对DID Core规范的遵从程度确保不同DID方法、…

揭示 Vue 3 setup 函数的奥秘

setup 是 Vue 3 的新特性&#xff0c;也是组合式 API&#xff08;Composition API&#xff09;的核心。它提供了一种全新的方式设计组件的逻辑&#xff0c;便于复用同时也增加代码可读性。 1. 理解 setup 1、组合式 API 的入口 setup 是在组件实例创建之前执行的&#xff0c…

Windows单机安装配置mongodb+hadoop+spark+pyspark用于大数据分析

目录 版本选择安装配置Java环境配置Hadoop配置Spark配置 安装pyspark使用Jupyter Notebook进行Spark MongoDB测试参考 版本选择 根据Spark Connector&#xff1a;org.mongodb.spark:mongo-spark-connector_2.13:10.3.0 的前提要求 这里选择使用最新的MongoDB 7.0.12社区版 ht…

Qt-frameGeometry介绍使用(12)

描述 这个和上一篇讲的geometry很像&#xff0c;但是又有点不一样&#xff0c;而且还挺容易出问题的&#xff0c;所以这里要专门提一下&#xff0c;首先我们要明白Window frame窗口坐标是有点区别的&#xff0c;如图就像这样的&#xff0c;左上角是有两个需要注意的位置&#…

百元蓝牙耳机买哪一款的好?四款年度平价好用耳机推荐!

蓝牙耳机大家都再熟悉不过了&#xff0c;作为现代人最常用的智能配件之一&#xff0c;谁还没有用过蓝牙耳机呢&#xff0c;但是现在蓝牙耳机的牌子真的是遍地开花&#xff0c;让人眼花缭乱的&#xff0c;这让大众选择起来却更加麻烦了&#xff0c;每个牌子的蓝牙耳机都有各自的…

西门子触摸屏维修KTP400 6AV2123-2DB03-0AX0

西门子KTP400面板触摸屏维修&#xff1a;DP协议 PN协议两款。DP SIMATIC HMI&#xff0c;KTP400 Basic DP&#xff0c; 精简面板&#xff0c; 按键式/触摸式操作&#xff0c; 12" TFT 显示屏&#xff0c;65536 颜色&#xff0c; PROFIBUS 接口&#xff0c; 可用项目组态的…

TL431的稳压原理和用法,仿真验证

概述 TL431是三端可调节并联稳压器&#xff0c;可以通过两个外部电阻器将输出电压设置为介于VREF&#xff08;约为2.5V&#xff09;和36V之间的任意值。其输出阻抗典型值均为0.2欧姆&#xff0c;此类器件的有源输出电路具有非常明显的导通特性&#xff0c;因此非常适合用于替代…

基于vue框架的包装加工工业自动化管理系统05880(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;仓管员,维修员,产品信息,产品入库,产品出库,机器信息,机器维修 开题报告内容 基于Vue框架的包装加工工业自动化管理系统开题报告 一、引言 随着工业4.0时代的到来&#xff0c;包装加工行业正经历着前所未有的变革。传统的手工与半自动…

聊聊sessionStorag,以及什么情况下能够共享/复制sessionStroage

之前对sessionStorage的了解很表面&#xff0c;粗略的理解为在各标签页/窗口下独立&#xff0c;生命周期和标签页/窗口关联&#xff0c;标签页/窗口未关闭就存在&#xff08;除人为清除或者调用相关api删除&#xff09;。但是这种粗略的理解对于下面的场景似乎就有点不明确了。…

【SQL】直属部门

目录 题目 分析 代码 题目 表&#xff1a;Employee ------------------------ | Column Name | Type | ------------------------ | employee_id | int | | department_id | int | | primary_flag | varchar | ------------------------ 这张表的主键为 e…

【pyside6】添加应用图标

文章目录 什么是应用图标指定图标样式 什么是应用图标 这个图标就是应用图标&#xff1a; 默认图标是这样&#xff1a; 指定图标样式 app.setWindowIcon(QIcon("logo.png"))

深信服超融合平台Windows虚拟机磁盘在线扩容

深信服超融合版本&#xff1a; 该版本支持磁盘在线扩容&#xff0c;虚拟机无需重启&#xff0c;不影响业务。 本次扩容是为现有磁盘扩容&#xff0c;如果是新增磁盘也是一样的步骤&#xff0c;单独添加一块磁盘即可。 1、点击需要进行扩容的虚拟机名称 2、在控制台可以看到当…

Android经典实战之简化 Android 相机开发:CameraX 库的全面解析

本文首发于公众号“AntDream”&#xff0c;欢迎微信搜索“AntDream”或扫描文章底部二维码关注&#xff0c;和我一起每天进步一点点 CameraX 是 Android Jetpack 的一个组件库&#xff0c;旨在简化 Android 相机应用的开发。它提供了一系列易于使用的 API&#xff0c;支持从 An…