基于STM32的二维码识别物联网OneNet云仓库系统
1、系统功能介绍
2、系统电路介绍
2.1、STM32单片机最小系统
2.2、ESP8266 WIFI电路
2.2.1 ESP8266介绍
2.3、二维码识别电路
3、程序设计
3.1、系统初始化函数
3.2、系统运行函数
1、系统功能介绍
1.通过二维码识别模块,扫描二维码,与系统中存储的信息对比,将对比成功的商品数量 加 1
2.使用oled屏幕实时显示商品数目
3.使用esp8266连接onenet云平台,实时的将数据上传至云平台
4.为避免单次扫描,系统进行多次增加的情况,在定时器中设置的时间,在次时间内识别到的只累加1次
演示视频:https://www.bilibili.com/video/BV1xx4y127xw
2、系统电路介绍
2.1、STM32单片机最小系统
STM32单片机最小系统是一个基础的、精简的电路系统,它包含了运行STM32单片机所需的最基本组件。这个系统通常包括以下部分:
STM32芯片:这是整个系统的核心,负责执行程序和控制外围设备。STM32系列单片机采用了ARM Cortex®-M0,M0+,M3,M4和M7内核,专为高性能、低成本、低功耗的嵌入式应用设计。
电源电路:电源电路为STM32芯片提供稳定的电压,以确保其正常工作。电源电路通常包括数字电源正极(VDD)和负极(VSS),以及模拟电源正极(VDDA)和负极(VSSA)。对于ADC(模数转换器)和DAC(数模转换器)等特定模块,还需要提供参考电压输入引脚(VREF+和VREF-)。
时钟电路:时钟电路为STM32芯片提供时钟信号,以控制其工作节奏。时钟之于系统,就像心脏之于人体,是系统运行的基础。
复位电路:复位电路用于将STM32芯片重置到初始状态,通常在系统启动或出错时使用。
调试下载电路:调试下载电路用于将程序下载到STM32芯片中,并进行调试。它使得开发者能够方便地对程序进行开发和修改。
此外,STM32单片机还具有较大的Flash存储器和SRAM存储器,可以轻松处理复杂的应用程序。其丰富的外设,包括多个定时器、计数器、PWM输出、ADC、DAC、通信接口等,可以帮助开发人员实现各种不同的应用需求。同时,STM32单片机采用了先进的低功耗技术,可以在不降低性能的情况下降低功耗,非常适合需要长时间运行或在电池供电的设备中使用。
总的来说,STM32单片机最小系统是一个精简但功能完备的系统,它为STM32单片机的运行提供了必要的硬件支持,是嵌入式应用开发的基础。
STM32单片机最小系统如下图所示:
2.2、ESP8266 WIFI电路
系统连接云平台使用esp8266,电路如下图所示:

2.2.1 ESP8266介绍
ESP8266是一款高度集成、低功耗、低成本的Wi-Fi芯片,由Espressif Systems公司开发并广泛应用于物联网(IoT)产品中。它采用片上系统(SoC)设计,将32位Tensilica微控制器、标准数字外设接口、天线开关、RF巴伦、功率放大器、低噪声接收放大器、滤波器和电源管理模块等关键组件集成在一个小的封装内。
ESP8266的主要特点包括:
高度集成:它集成了TCP/IP协议栈,可以直接连接到Wi-Fi网络,无需额外的外部芯片。这使得它成为开发物联网应用的理想选择,因为开发者可以迅速将设备连接到互联网,实现远程控制和数据传输。
低功耗:ESP8266的功耗非常低,特别适合电池供电的应用场景。在待机模式下,它的耗电量仅为20uA,这有助于延长设备的使用寿命。
易于编程:开发者可以通过AT指令和Lua脚本对ESP8266进行编程,这使得编程过程变得简单直观。此外,它还支持多种开发环境,如Arduino IDE、NodeMCU等,为开发者提供了更多的选择。
低成本:ESP8266的价格非常实惠,这使得大规模应用于物联网产品成为可能。
在参数方面,ESP8266的主频为80MHz,具有80KB RAM和4MB Flash存储空间。它支持802.11 b/g/n Wi-Fi标准,工作电压范围为3.0V到3.6V,工作温度范围从-40℃到125℃。此外,它还支持STA/AP/AP+STA模式,允许设备作为客户端连接到Wi-Fi网络,或作为接入点创建Wi-Fi网络。
在应用方面,ESP8266广泛用于智能家居、智能车辆、工业自动化、智能农业等领域。例如,它可以用于控制智能灯光、智能窗帘、智能门锁等家居设备;也可以用于智能小车、智能飞行器等控制设备;还可以用于远程监控、数据采集等工业自动化应用;在智能农业方面,它可以用于智能灌溉、环境监测等应用。
总的来说,ESP8266是一款功能强大、易于使用且成本效益高的Wi-Fi芯片,为物联网应用提供了强大的支持。
2.3、二维码识别电路
二维码识别电路如下图所示
3、程序设计
3.1、系统初始化函数
void DeviceInit(void) {
Usart1_Init(115200); //串口调试使用
Usart2_Init(115200); //串口2,驱动ESP8266用
//二维码使用到的功能模块
usart3_init(9600); //初始化串口2为:15200,波特率.
//定时播种使用
TIM2_Int_Init(4999,7199);//10Khz的计数频率,计数到5000为500ms
OneNetInit(&device);
//OLED初始化
I2C_Configuration();
OLED_Init();
OLED_Fill(0x00);//全屏灭
OLED_ShowStr(0,0,"book num: ",2);
OLED_ShowStr(0,2,"pen num: ",2);
OLED_ShowStr(0,4,"pencil num: ",2);
OLED_ShowStr(0,6,"rubber num: ",2);
}
3.2、系统运行函数
void DeviceRun(void) {
DeviceRecvData(&device);//获取摄像头数据
DeviceShowNum(&device);//OLED显示数据
OneNetSend(&device);//向OneNET云平台发送数据
}
作者:点灯师