ESP32-CAM ——Blinker平台

这篇具有很好参考价值的文章主要介绍了ESP32-CAM ——Blinker平台。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

ESP32-CAM,点灯云平台Blinker,MQTT协议,APP控制,Wifi视频监控,点灯,控制舵机。

一 环境搭建

两个宝藏网站

 点灯科技 (diandeng.tech)

软件下载 - Arduino中文社区

第一次体验Arduino

按照上面教程安装ESP32固件包

语言改为中文

二 常用基本语法 

学过stm32再看Arduino代码,有种看少儿编程的感觉哈哈哈 

串口println

ESP32-CAM ——Blinker平台,ESP32 / ESP8266,单片机,物联网

用串口连接电脑,5V

RX-UoT

TX-UnR

IO0 需要连接 GND

工具=》选择开发板=》esp32=》AIThinker ESP32-CAM

下面代码为设置波特率

setup 可以理解为 main 函数 while(1) 之前

loop 理解为 while(1) 里

loop内循环打印字符串, 

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
}

void loop() {
  // put your main code here, to run repeatedly:
  Serial.println("hello world");
}

选择端口,点击上传即可

一直显示Connecting就按一下reset 

ESP32-CAM ——Blinker平台,ESP32 / ESP8266,单片机,物联网

上传完毕,IO0 断开 GND,按下RESET,打开串口监视器,可看见循环打印字符串

点个灯

由图可知GPIO4对应LED 

文件=》例程

提供了很多模板,一看就懂

ESP32-CAM ——Blinker平台,ESP32 / ESP8266,单片机,物联网

int led = 4;

// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(led, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(led, HIGH);  // turn the LED on (HIGH is the voltage level)
  delay(1000);                      // wait for a second
  digitalWrite(led, LOW);   // turn the LED off by making the voltage LOW
  delay(1000);                      // wait for a second
}

舵机控制

GPIO12输出PWM

#define ServoPin 12

void Myservo(int angle)
{
  for (int i = 0; i < 5; i++) {
    int pulsewidth = (angle * 11) + 500;        //将角度转化为500-2480的脉宽值
    digitalWrite(ServoPin, HIGH);               //将舵机接口电平至高
    delayMicroseconds(pulsewidth);              //延时脉宽值的微秒数
    digitalWrite(ServoPin, LOW);                //将舵机接口电平至低
    delayMicroseconds(20000 - pulsewidth);      //延时脉宽值的微秒数
  }
  delay(10);
}

// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(ServoPin, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  Myservo(0);
  delay(1000);                      // wait for a second
  Myservo(45);
  delay(1000);                      // wait for a second
  Myservo(90);
  delay(1000);                      // wait for a second
  Myservo(135);
  delay(1000);                      // wait for a second
  Myservo(180);
  delay(1000);                      // wait for a second
}

超声波测距

最后加了个if,软件过滤掉误差

#define Echo 13
#define Trag 15

long gettime()
{
  digitalWrite(Trag,HIGH);
  delayMicroseconds(10);
  digitalWrite(Trag,LOW);

  return pulseIn(Echo,HIGH);
}

// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(Echo, INPUT);
  pinMode(Trag, OUTPUT);
  Serial.begin(115200);
}

// the loop function runs over and over again forever
void loop() {
  long dis = gettime()/58;
  if(dis > 2) Serial.println(dis);
}

三 摄像头使用

前面都是小卡拉米,正戏这里开始。

先嫖个示例 

ESP32-CAM ——Blinker平台,ESP32 / ESP8266,单片机,物联网

改为使用 AI_THINKER ,Wifi名密码改成自己的手机热点

// ===================
// Select camera model
// ===================
//#define CAMERA_MODEL_WROVER_KIT // Has PSRAM
//#define CAMERA_MODEL_ESP_EYE // Has PSRAM
//#define CAMERA_MODEL_ESP32S3_EYE // Has PSRAM
//#define CAMERA_MODEL_M5STACK_PSRAM // Has PSRAM
//#define CAMERA_MODEL_M5STACK_V2_PSRAM // M5Camera version B Has PSRAM
//#define CAMERA_MODEL_M5STACK_WIDE // Has PSRAM
//#define CAMERA_MODEL_M5STACK_ESP32CAM // No PSRAM
//#define CAMERA_MODEL_M5STACK_UNITCAM // No PSRAM
#define CAMERA_MODEL_AI_THINKER // Has PSRAM
//#define CAMERA_MODEL_TTGO_T_JOURNAL // No PSRAM
//#define CAMERA_MODEL_XIAO_ESP32S3 // Has PSRAM
// ** Espressif Internal Boards **
//#define CAMERA_MODEL_ESP32_CAM_BOARD
//#define CAMERA_MODEL_ESP32S2_CAM_BOARD
//#define CAMERA_MODEL_ESP32S3_CAM_LCD

#include "camera_pins.h"

// ===========================
// Enter your WiFi credentials
// ===========================
const char* ssid = "IQOO 5";
const char* password = "88888888";
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0018,len:4
load:0x3fff001c,len:1216
ho 0 tail 12 room 4
load:0x40078000,len:10944
load:0x40080400,len:6388
entry 0x400806b4
E (79) psram: PSRAM ID read error: 0xffffffff

.......
WiFi connected
Starting web server on port: '80'
Starting stream server on port: '81'
Camera Ready! Use 'http://192.168.100.9' to connect

电脑和cam都连接上手机热点,烧录完成后,访问串口提供的网址 

ESP32-CAM ——Blinker平台,ESP32 / ESP8266,单片机,物联网

四 使用Blinker云平台

监控视频传输

下载点灯科技云平台APP,注册,添加设备,选择网络设备,可以得到一个“密钥”

例程选择最下面的 Blinker 里的 Blinker_ESP32_CAM。

“密钥”、Wifi和密码,填入程序, Blinker.begin()入参“密钥”、Wifi和密码

#define BLINKER_WIFI
//#define BLINKER_ESP_SMARTCONFIG

#include <Blinker.h>
#include "ESP32_CAM_SERVER.h"

//blinker提供的密钥,WiFi名密码
char auth[] = "8578f8f1626f";
char ssid[] = "iQOO 5";
char pswd[] = "88888888";
//默认摄像头不开启
bool setup_camera = false;
//反馈设备状态
void dataRead(const String & data)
{
    BLINKER_LOG("Blinker readString: ", data);

    Blinker.vibrate();//按下APP按键产生震动
    
    uint32_t BlinkerTime = millis();
    
    Blinker.print("millis", BlinkerTime);
}

void setup()
{
    Serial.begin(115200);//串口使得能
    BLINKER_DEBUG.stream(Serial);//blinker串口debug

    pinMode(LED_BUILTIN, OUTPUT);
    digitalWrite(LED_BUILTIN, LOW);
    
    Blinker.begin(auth,ssid,pswd);//通过WiFi账号密码连接平台
    Blinker.attachData(dataRead);//反馈设备状态
}

void loop()
{
    Blinker.run();//blinker运行 包括连接blinker云 MQTT协议
    //判断设备是否正常执行 正常就输入ip地址
    if (Blinker.connected() && !setup_camera)
    {
        setupCamera();
        setup_camera = true;

        Blinker.printObject("video", "{\"str\":\"mjpg\",\"url\":\"http://"+ WiFi.localIP().toString() + "\"}");
    }
}

编译出错         exit status 1        就把Blinker库卸载重新导入,去除原zip名里的防重“(1)”这种

APP添加一个“视频”,mjpg,输入获得的网址

[2786] WiFi Connected.
[2786] IP Address: 
[2786] 192.168.100.9
[4410] Freeheap: 177596
[4414] mDNS responder started
[4417] webSocket_MQTT server started
[4417] ws://DAFE7962GYXI01DUHFFY724S.local:81

ESP32-CAM ——Blinker平台,ESP32 / ESP8266,单片机,物联网ESP32-CAM ——Blinker平台,ESP32 / ESP8266,单片机,物联网

MQTT控灯

官网找到按钮示例 

 点灯科技 (diandeng.tech)

 添加一个按钮控制GPIO输出,实现开灯关灯


#define BLINKER_WIFI
//#define BLINKER_ESP_SMARTCONFIG

#define led 4

#include <Blinker.h>
#include "ESP32_CAM_SERVER.h"

// 新建组件对象
BlinkerButton Button1("led");

// 按下按键即会执行该函数
void button1_callback(const String & state) {
    BLINKER_LOG("get button state: ", state);
    digitalWrite(led, !digitalRead(led));
}

//blinker提供的密钥,WiFi名密码
char auth[] = "8578f8f1626f";
char ssid[] = "iQOO 5";
char pswd[] = "88888888";
//默认摄像头不开启
bool setup_camera = false;
//反馈设备状态
void dataRead(const String & data)
{
    BLINKER_LOG("Blinker readString: ", data);

    Blinker.vibrate();//按下APP按键产生震动
    
    uint32_t BlinkerTime = millis();
    
    Blinker.print("millis", BlinkerTime);
}

void setup()
{
    Serial.begin(115200);//串口使得能
    BLINKER_DEBUG.stream(Serial);//blinker串口debug
    
    pinMode(led, OUTPUT);
    digitalWrite(led, LOW);
    
    Blinker.begin(auth,ssid,pswd);//通过WiFi账号密码连接平台
    Blinker.attachData(dataRead);//反馈设备状态
    Button1.attach(button1_callback);//关联处理按钮函数
}

添加按钮和监视器,按钮内容改为led与代码一致 

 ESP32-CAM ——Blinker平台,ESP32 / ESP8266,单片机,物联网

MQTT控制舵机

一个最大值为180的滑块。 

 ESP32-CAM ——Blinker平台,ESP32 / ESP8266,单片机,物联网

 完整代码文章来源地址https://www.toymoban.com/news/detail-632173.html

#define BLINKER_WIFI
//#define BLINKER_ESP_SMARTCONFIG

#define led 4
#define ServoPin 12          //控制舵机

#include <Blinker.h>
#include "ESP32_CAM_SERVER.h"

// 新建组件对象
BlinkerButton Button1("led");
// 新建组件对象
BlinkerSlider Slider0("duoji");   //位置0-3 滑块 数据键名  舵机范围0-180

//舵机控制代码
void Myservo(int angle)
{
  for (int i = 0; i < 5; i++) {
    int pulsewidth = (angle * 11) + 500;        //将角度转化为500-2480的脉宽值
    digitalWrite(ServoPin, HIGH);               //将舵机接口电平至高
    delayMicroseconds(pulsewidth);              //延时脉宽值的微秒数
    digitalWrite(ServoPin, LOW);                //将舵机接口电平至低
    delayMicroseconds(20000 - pulsewidth);      //延时脉宽值的微秒数
  }
  delay(10);
}

//滑块任务函数
void slider0_callback(int32_t value) //滑块0
{
    int servo=value;
    Myservo(servo);//转动角度}
}

// 按下按键即会执行该函数
void button1_callback(const String & state) {
    BLINKER_LOG("get button state: ", state);
    digitalWrite(led, !digitalRead(led));
}

//blinker提供的密钥,WiFi名密码
char auth[] = "8578f8f1626f";
char ssid[] = "iQOO 5";
char pswd[] = "88888888";
//默认摄像头不开启
bool setup_camera = false;
//反馈设备状态
void dataRead(const String & data)
{
    BLINKER_LOG("Blinker readString: ", data);

    Blinker.vibrate();//按下APP按键产生震动
    
    uint32_t BlinkerTime = millis();
    
    Blinker.print("millis", BlinkerTime);
}


void setup()
{
    Serial.begin(115200);//串口使得能
    BLINKER_DEBUG.stream(Serial);//blinker串口debug
    
    pinMode(led, OUTPUT);
    digitalWrite(led, LOW);

    pinMode(ServoPin, OUTPUT);
    digitalWrite(ServoPin, LOW);

    Blinker.begin(auth,ssid,pswd);//通过WiFi账号密码连接平台
    Blinker.attachData(dataRead);//反馈设备状态
    Button1.attach(button1_callback);//关联处理按钮函数
    Slider0.attach(slider0_callback);//关联滑动开关

}

void loop()
{
    Blinker.run();//blinker运行 包括连接blinker云 MQTT协议
    //判断设备是否正常执行 正常就输入ip地址
    if (Blinker.connected() && !setup_camera)
    {
        setupCamera();
        setup_camera = true;

        Blinker.printObject("video", "{\"str\":\"mjpg\",\"url\":\"http://"+ WiFi.localIP().toString() + "\"}");
    }
}

到了这里,关于ESP32-CAM ——Blinker平台的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 单片机设计_语音识别分类智能垃圾桶(STM32 ESP8266 LD3320)

    想要更多项目私wo!!!         离线语音识别识别垃圾种类并且垃圾桶自动翻盖: 说出唤醒词“垃圾桶”后,再说一句垃圾名称,语音识别模块端识别到相应,便会将结果通过串口发送到STM32端,STM32端接着会发送打开相应垃圾桶盖的指令,6s后,垃圾桶盖自动关闭。

    2024年02月06日
    浏览(34)
  • 毕业设计 单片机语音识别分类智能垃圾桶(STM32 ESP8266 LD3320)

    离线语音识别识别垃圾种类并且垃圾桶自动翻盖: 说出唤醒词“垃圾桶”后,再说一句垃圾名称,语音识别模块端识别到相应,便会将结果通过串口发送到STM32端,STM32端接着会发送打开相应垃圾桶盖的指令,6s后,垃圾桶盖自动关闭。其中翻盖功能是通过STM32端控制舵

    2024年04月26日
    浏览(39)
  • esp32单片机在arduino环境下,WIF联网

    文章目录 系列文章目录 前言 一、WIFI是什么? 二、使用步骤 1.引入库 2.读入数据 总结 随着人工智能的不断发展,物联网这门技术也越来越重要,很多人都开启了物联网学习,本文就介绍了物联网WIFI模块的基础内容。 WIFI在中文里又称作\\\"行动热点\\\",是 Wi-Fi联盟 制造商的商标

    2024年02月15日
    浏览(34)
  • 物联网项目分享 基于ESP32的在线墨水屏桌面摆件 -物联网 单片机 嵌入式

    hr style=\\\" border:solid; width:100px; height:1px;\\\" color=#000000 size=1\\\" 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最

    2024年02月21日
    浏览(40)
  • 单片机设计_室内环境智能监测系统(STM32 OLED ESP8266 DHT11 MQ-2 加湿器)

    想要更多项目私wo!!! 室内环境智能监测系统 主要功能:         1.检测空气温湿度         2.检测光照强度         3.检测烟雾浓度         4.数据显示在手机端和设备OLED屏幕上         5.当空气温度高于设定的阈值时,风扇开启         6.当空气湿度低于

    2024年02月09日
    浏览(49)
  • 51单片机ESP8266

    安信可提供的烧录WiFi固件工具: 链接: https://docs.ai-thinker.com/%E5%BC%80%E5%8F%91%E5%B7%A5%E5%85%B72 安信可提供的固件库链接: https://docs.ai-thinker.com/%E5%9B%BA%E4%BB%B6%E6%B1%87%E6%80%BB 经过测试,选择这个不可以,因为是4MB 的,上述用到的两款 ESP8266 是 1MB(8Mbit)flash的模组,应该使用 手头有

    2024年01月25日
    浏览(28)
  • 51单片机(ESP8266模块)

    蓝牙,ESP-01s,Zigbee, NB-Iot等通信模块都是基于AT指令的设计 AT指令集是从终端设备(Terminal Equipment,TE)或数据终端设备(Data Terminal Equipment,DTE)向终端适配器(Terminal Adapter,TA)或数据电路终端设备(Data Circuit Terminal Equipment,DCE)发送的。 其对所传输的数据包大小有定义:即对于

    2024年02月06日
    浏览(21)
  • 通信工程毕设 基于ESP32的在线墨水屏桌面摆件 -物联网 单片机 嵌入式

    hr style=\\\" border:solid; width:100px; height:1px;\\\" color=#000000 size=1\\\" 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最

    2024年02月19日
    浏览(36)
  • (pc端)/单片机连接ESP8266

    硬件:ESP8266模块,USB转TTL 连接方式 : esp8266的TX接转串口的RX,RX接TX 安装阿信可的esp8266调试工具 [ESP8266网络调试工具]ESP8266网络调试工具 提取码:djsz AT指令集是从终端设备(Terminal Equipment,TE)或数据终端设备(Data Terminal Equipment,DTE)向终端适配器(Terminal Adapter,TA)或数据电

    2024年02月09日
    浏览(32)
  • 基于51单片机的esp8266使用(Labview上位机)

    说明:本人写博客只是为了做笔记,参考了各位大佬的文章,参考的比较多,有一些并没有贴出连接,请各位大佬见谅,真的没有恶意,只是用来学习!! 这篇是自己根据各种方法自己总结并且亲身试用可行性做出的笔记 1.ESP8266模块 2.USB-TTL(下载器) VCC、GND对应连接,TX、

    2024年02月02日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包