Project Description
Simply put, it is a programmable camera that can implement your logic through the MicroPython language. And the camera itself has some built-in image processing algorithms, which is very easy to use.
Open source agreement
CC-BY-NC-SA 3.0, Creative Commons License Agreement - Attribution-NonCommercial Use-ShareAlike
CC: The abbreviation of the Creative Commons License (English: Creative Commons license)
BY: Attribution, you must give appropriate attribution, provide a link to this license agreement, and indicate whether (the original work) has been modified.
SA: Share in the same way, if you remix, convert or create based on this work, you must share and publish your contribution under the same license agreement as the original license agreement.
NC: Non-commercial use, you may not use this work for commercial purposes.
For more information, see:
Creative Commons — Attribution-NonCommercial-ShareAlike 3.0 Unported — CC BY-NC-SA 3.0
Project related functions
Visual recognition, in this project, a program that scans a QR code is used to verify the module function
Project attributes
This project is the first time it is made public and is my original project. The project has not won any other competitions.
Project progress
1. Draw the schematic
2. Draw the PCB
3. Make the board
3. SMT
4. Welding and debugging (you will know why SMT still needs welding later)
Design principle
Based on (defense?) STM32H743IIT6 to design OpenMV4 Pluse, LQFP package is more convenient for welding than BGA.
Note: OV5640 camera is self-provided, I bought it on Taobao for 33 yuan, if you want other cameras, you need to modify the camera PCB
software instructions
firmware please download OpenMV IDE
Download | OpenMV
DFU upgrade first, then follow the steps below



program example:
# QR code recognition example
#
# This example shows the function of OpenMV Cam, which can detect QR code without lens correction.
import sensor, image, time
sensor.reset()
sensor.set_pixformat(sensor.GRAYSCALE)
sensor.set_framesize(sensor.VGA)
sensor.set_windowing((240, 240)) # Look at the 240x240 pixels in the middle of the VGA resolution.
sensor.skip_frames(30)
sensor.set_auto_gain(False) # This feature must be turned off to prevent image washing...
clock = time.clock()
while(True):
clock.tick()
img = sensor.snapshot()
for code in img.find_qrcodes():
print(code)
print(clock.fps())
Physical

displayDesign considerationsThere
are 4-layer and 6-layer designs. If conditions permit, 6-layer is used. The 4-layer is changed after receiving the problematic 6-layer SMT. The signal integrity of the 4-layer is definitely not as good as that of
other
6-layer SMT. After receiving the goods, I tested the power circuit and found a problem. I contacted SMT after-sales and asked them to change the resistor and try the DC-DC chip. Since I didn't have any DC-DC on hand, changing the resistor didn't work. In a hurry, I used AMS1117-3.3 to build a shed for emergency testing. It turned out that there was a problem with the SMT.
After the processing was completed, I modified the
modified
small board stacking game. The copper through-hole was aligned with the lower pad for connection. More tin must be added, otherwise it cannot be soldered, which means sacrificing the appearance.