stm32调用OV7670获取图像并通过蓝牙传输至PC

问题分析

首先明确需求。用stm32调用OV7670获取图像,并且通过蓝牙传递至PC端。由此我们可以整理到以下几个模块。

  1. 调用OV7670得到图像数据
  2. 将数据通过串口传输到蓝牙
  3. PC端调用蓝牙接收数据并储存

开始调试

1.stm32调用OV7670

这里我主要目的是实现功能,因此程序主要用的是开发板附带的例程,在其基础上做了一些小修改而已。修改部分会在下面提到。

1.1在开发板例程上修改有如下好处:

  1. 开发板的例程可以将图像显示在液晶屏上,便于调试。否则在看不到结果的情况下,调试也无从谈起。
  2. 不需要自己去了解液晶屏的使用,这个和需要的功能并不相关。
  3. 方便。毕竟例程已经是可以直接使用的程序,避免了自己调试移植程序时可能出现的更多bug。

1.2遇到的问题

买到的ov7670引脚与开发板不匹配,不能直接接入开发板带有的camera模块使用。因此得自己连线。此处没有太大问题,对照原理图用杜邦线接好就行了。这是我的连线。在这里插入图片描述
然后用例程之后可以正常从液晶屏看到图像,如图在这里插入图片描述
至于代码的话,毕竟是例程的代码,有stm32的话去对应的论坛上或者找淘宝都能找到。

2.PC端蓝牙接收

问题是需要一步步地去解决的。
首先,先实验电脑端的蓝牙接收功能,这里我们先不采用stm32调用的蓝牙和电脑端的通信。而采用手机蓝牙与电脑蓝牙进行通信测试。我这里采用的python语言。

2.1添加蓝牙虚拟串口

步骤我是参考另外一位博主的设置,这里附上原文链接:
https://blog.youkuaiyun.com/px_528/article/details/70782059

2.2使用python的serial库

python关于serial有两个库,一个是serial另一个是pyserial,两者的使用都是import serial。两个都有的话可能会出现错误AttributeError: module ‘serial’ has no attribute ‘Serial’。我的解决办法是卸载了serial库,只安装pyserial库。但是在程序中的使用还是import serial。

2.3运行程序

我的测试程序如下:

import serial
ser = serial.Serial("com3", 9600, timeout=0.5)
f = open("F:/python/test.txt", "w+b")

while True:
    data = ser.read()
    if data == b'':
        continue
    elif data == b'i':
        break
    else:
        f.write(data)

f.close()
ser.close()

从蓝牙获取输入,然后保存为一个txt文件。输入终止符号是"i"。

2.4手机输入

使用一款蓝牙调试APP,不知道怎么放下载包,名字是MiniBalance。等程序运行之后,再打开APP,与电脑蓝牙连接。

评论 27
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值