STM32+GM65二维码识别模块
前言
朋友毕设需要用到扫码模块,但是网上这方面的资源比较少,下载源码还需要收费。所以自己写了一个简单实用的,大家可以来我这下载源码。
功能介绍
本案例主要实现的功能是,GM65扫描到二维码包含的信息后,将信息通过串口传输给32单片机,32单片机再将信息使用OLED显示屏显示出来,同时可以实现扫码开灯、关灯等功能。
主要硬件
STM32F103C8T6最小系统板、GM65二维码识别模块、0.96寸4针OLED显示屏
模块接线
GM65二维码识别模块—接32的串口3
TX—PB11 RX—PB10 VCC—5V GND—GND
4针OLED显示屏
SCL—PA5 SDA–PA7 VCC—3V3 GND—GND
实验效果
当二维码的内容是字符串D1时灯亮,是D0时灯灭。OLED显示屏的第2行显示了二维码的内容。第3行显示灯的开关。
当二维码的内容是字符串xixihaha时,不会执行开关灯的操作,但也会显示内容在显示屏上。
程序中,串口3收到二维码信息后会通过串口1返发给PC,故除了可以用显示屏看到效果外,也可以用串口助手看到二维码的内容。
二维码及模块的一些配置
1、二维码的生成是在微信小程序的草料二维码。
2、GM65模块设置成串行通讯模式,同时设置波特率为9600
当模块发出嘀嘀嘀声响时,说明设置成功。
3、如果觉得模块的灯太亮,声音太大可以按下面扫码设置
代码实现
main.c文件
/*=======================main.c======================*/
#include "stm32f10x.h"
#include "usart.h"
#include "led.h"
#include "oled.h"
#include "string.h"u8 recv_ok = 0; //接收完成标志
u8 uart_buf[32]={0}; //用于保存串口数据
u8 uart_cnt=0; //用于定位串口数据的位置int main()
{Init_Usart(); //初始化3个串口led_init(); //初始化LEDOLED_Init(); //初始化OLEDOLED_Clear(); //OLED清屏printf("================GM65二维码模块测试=================\r\n"); OLED_ShowString(30,0,(u8*)"GM65 TEST!",16);OLED_Refresh();while(1){if(recv_ok==1) //接收完成{OLED_Clear(); //OLED清屏OLED_ShowString(30,0,(u8*)"GM65 TEST!",16); //命令判断,当收到D0关灯,D1开灯 if(strstr((char*)uart_buf,"D0")) {GPIO_SetBits(GPIOC,GPIO_Pin_13); //关灯OLED_ShowString(0,32,(u8*)"LED OFF",16); }else if(strstr((char*)uart_buf,"D1")){GPIO_ResetBits(GPIOC,GPIO_Pin_13); //开灯OLED_ShowString(0,32,(u8*)"LED ON",16); }OLED_ShowString(0,16,(u8*)"QRCode:",16); OLED_ShowString(8*7,16,(u8*)uart_buf,16); //显示二维码内容OLED_Refresh(); //刷新OLEDuart_cnt = 0; //最后清零,重新计数recv_ok = 0; //接收完成标志置0}}
}//串口3中断
void USART3_IRQHandler(void) //串口3中断服务程序
{uint8_t d;//检测标志位if(USART_GetITStatus(USART3, USART_IT_RXNE)==SET){//接收数据d = USART_ReceiveData(USART3);//将接收到的数据依次保存到数组里uart_buf[uart_cnt++] = d; //GM65模块发完一组数据后会自动发送一个回车符,所以通过检测是否接受到回车来判断数据是否接收完成if(d == 0x0D) {recv_ok = 1; //接收完成}//将接收到的数据,通过串口1返发给PCUSART_SendData(USART1, d);while( USART_GetFlagStatus(USART1, USART_FLAG_TXE)==RESET); //等待发送完成USART_ClearFlag(USART1,USART_FLAG_TXE); //清空标志位USART_ClearITPendingBit(USART3,USART_IT_RXNE); //清空标志位}
}
资源下载
需要源码的可以自行下载。https://github.com/J-CHUN/STM32-GM65.git
下载操作:
STM32+GM65二维码识别模块相关推荐
- 二维码识别模块在物流仓储、通道闸机的嵌入式应用
随着物联网自动识别技术的广泛应用,采用二维码识别模块的设备,在零售.交通.物流.工业等各个行业上都有它的身影.那么他们都在哪些场景应用到?给我们的工作生活带来哪些便利呢?下面远景达(RAKINDA)通 ...
- Quirc二维码识别模块
背景 师兄要用这个参加集赛,但是说自己C语言不太行,花了一个多小时帮他分析了一下(虽然自己也不太行). 对应模块的GitHub地址:https://github.com/dlbeer/quirc. 记 ...
- 二维码识别 基于stm32 ov7725
二维码识别 基于stm32 ov7725 二维码识别技术在我们的生活中应用的很方便了,但基本都是基于手机的,目前在公交车上也存在了扫描二维码的机器,上次坏了之后,发现一只小企鹅,原来是基于linux的 ...
- 前端学习--实现二维码识别功能
概述: 最近所做的毕设项目正好与之前很火的共享单车相关,共享单车应用中很关键的一个部分就是扫码用车,但我之前没有做过相关的模块,在参考网上相关实现的教程时发现,基本上所有的二维码识别模块都是通过客户端 ...
- 海康visionMaster4.1二维码识别/检测之脚本文件的调试
关键词:脚本文件调试:海康visionMaster4.1:二维码识别 介绍脚本文件调试之前,先说一个"二维码识别"模块的有趣的点. Tips:"二维码识别"模块 ...
- openmv和stm32串口通信完成二维码识别
openmv和stm32串口通信完成二维码识别 文章目录 前言 一.所用的硬件: 二.openmv端 2.stm32端 总结 前言 注:我只是个大一的小白,本文只完成基本功能,希望能帮助有困惑的人(我 ...
- python实现二维码识别软件_OpenCV和Zbar两个Python模块实现二维码和条形码识别
在我们的日常生活中,处处可见条形码和二维码. 在以前,我们去逛书店时,或者你现在随手拿起你身边的一本书,你肯定能看到书本的封页后面印有一排黑色线条组成的标签,也就是条形码:你去你们学校的自助机上借书还 ...
- K210学习笔记(十)——二维码识别
前言 MAIX BIT(K210)和openmv在传统视觉处理这个方面代码是通用的,掌握K210的色块识别和二维码识别其实也掌握了openmv对应的用法. 一.二维码是什么? 二维码 (2-dimen ...
- Atitit java 二维码识别 图片识别
Atitit java 二维码识别 图片识别 1.1. 解码1 1.2. 首先,我们先说一下二维码一共有40个尺寸.官方叫版本Version.1 1.3. 二维码的样例:2 1.4. 定位图案2 1. ...
- iOS 花式二维码生成和二维码识别
iOS 原生的二维码识别非常之棒,反正比 ZXing 和 ZBar 效果都好些,所以以后打算尽量用原生的二维码识别,然后最近把原生的二维码生成也顺便做了一遍,并且在原有基础上加了一些样式参数,封了一个 ...
最新文章
- 元气骑士机器人修好后怎么用_《元气骑士》五大“难度”挑战,从手速到恶搞很嗨,还能解锁皮肤...
- angular学习笔记(三十)-指令(4)-transclude
- 一个简单的mysql存储过程
- USB port 如何识别不同的Charger类型
- C++改变基类成员在派生类中的访问属性
- 绘制HTML5的Logo
- 设计模式(二) 工厂模式
- oracle for dotnet
- 三次握手和四次挥手图解_图解TCP三次握手和四次挥手
- IIS7.5配置对PHP的支持
- 应用Strong Name保存.NET应用程序集
- java上传和下载文件代码_JavaWeb中上传和下载文件实例代码
- 树形dp小胖守皇宫(vijosP1144)
- vimpython配色_超漂亮 vim 配置:space-vim
- Java-JUC(六):创建线程的4种方式
- Network | parity bit
- 反编译与计算机软件的知识产权保护
- 利用google工具进行关键词研究
- 新升级带特效喝酒神器小程序源码-多种游戏支持流量主
- win7台式机解决插入耳机没有声音以及显示麦克风未插入的解决方法