手把手保姆级教程:利用esp32-cam,轻松识别二维码

项目需求

最近一个项目,客户的其中一个要求是:他的客户用打印出来的小票,在检测机前可以通过摄像头识别二维码。由于成本的要求,我选择的是eps32-cam,摄像头为ov2640,200万像素。

硬件配置

esp32-cam

低功耗双核32位CPU,主频高达240MHz,运算能力高达 600 DMIPS,内置 520 KB SRAM,外置8MB PSRAM,支持OV2640和OV7670摄像头,内置闪光灯……

成本上完成可以满足客户的需求

软件配置

vscode + platform + ESP32QRCodeReader

开发过程

上图,我选择了D盘,让它自己创建一个项目目录。

上图,安装所需要的库,ESP32QRCodeReader

代码如下:

#include <Arduino.h>
#include <WiFi.h>
#include <HTTPClient.h>
#include <ESP32QRCodeReader.h>
#include <ESP32CameraPins.h>

#define WIFI_SSID "yanfa"
#define WIFI_PASSWORD "12345abc"
#define CHECK_STATUS "https://YOUR_URL.com/api/check.php"
#define CHANGE_STATUS "https://YOUR_URL.com/api/statutchange.php"

ESP32QRCodeReader reader(CAMERA_MODEL_AI_THINKER);

struct QRCodeData qrCodeData;
bool isConnected = false;

bool connectWifi() {
  if (WiFi.status() == WL_CONNECTED) {
    return true;
  }

  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  int maxRetries = 10;
  while (WiFi.status() != WL_CONNECTED) {

    delay(500);
    Serial.print(".");
    maxRetries--;
    if (maxRetries <= 0) {
      return false;
    }
  }
  Serial.println("");
  Serial.println("WiFi connected");
  return true;
}

void callWebhook(String code) {
  HTTPClient http;
  http.begin(String(CHECK_STATUS) + "?id=" + code);
  int httpCode = http.GET();
  String statut = http.getString();
  if (statut == "true") 
  {
    Serial.println("OK");

    http.begin(String(CHANGE_STATUS) + "?id=" + code);
    int httpCode = http.GET();
  } 
  else if (statut == "false") {
    Serial.println("Utilisé");
  }
}

void setup() {
  Serial.begin(115200);
  Serial.println();
  reader.setup();
  Serial.println("Setup QRCode Reader");

  reader.begin();
  Serial.println("Begin QR Code reader");

  delay(1000);
}

void loop() {

  bool connected = connectWifi();
  if (isConnected != connected) {
    isConnected = connected;
  }
  if (reader.receiveQrCode( & qrCodeData, 100)) {
    Serial.println("Found QRCode");
    if (qrCodeData.valid) {
      Serial.print("Payload: ");
      Serial.println((const char * ) qrCodeData.payload);
      //callWebhook(String((const char * ) qrCodeData.payload));
      Serial.println(String((const char * ) qrCodeData.payload));

    } else {

      Serial.print("Invalid: ");
      Serial.println((const char * ) qrCodeData.payload);
    }
  }
  delay(300);
}

上图开始创建项目。

上图,项目创建成功!

如图,把esp32-cam连接好,准备刷写程序!

烧录完成!

串口调试开始!

打开一张要识别的二维码!

哈哈,识别完成!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东成2022

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值