前言


在之前的第一篇中,我已经确定了项目的方案,但是对于摄像头、随身WIFI以及如何使用ESP32开发板去实现小车远程控制,心里还是没有低。
不过现在已经调通了,来汇报一下情况。


小车远程控制


使用ESP32S3开发板,通过arduino的blinker库实现通过WIFI去远程操控小车。目前小车的PCB还没有开始设计,所以在代码中没有加入电机控制方面。
blinker库的官方说明资料:点灯科技 (diandeng.tech)

  • APP下载以及界面设计
    app下载
    首先是APP的下载:https://diandeng.tech/doc/app-download
    也可以在手机的应用商城中搜索:点灯·blinker   (我的手机是小米,小米的手机应用商城中已经有该APP)
    img_v3_025m_262f9c01-3867-425a-8299-75fe767e49eg.jpg
    界面设计
    打开APP,点击右上角的+号,添加设备。
    img_v3_025m_48745b6c-8060-4670-a975-0fcdd98e2edg.jpg
    选择独立设备。
    img_v3_025m_7cba1f02-bb5d-4349-8713-770019fea98g.jpg
    选择网络接入。
    img_v3_025m_1ff39be1-37ca-4663-b7f5-7381ac5fdebg.jpg

记录设备密钥(在后期的代码调试中,需要使用到该密钥)(请使用自己生成的密钥)
image.png
,进入刚才新建的设备中进行界面设计。我的界面设计如下:
img_v3_025m_6a034e8e-5cfc-4a2c-92c4-84603fd40ffg.jpg
注意!每一个控件的名称都要清楚,因为在后面的代码设计中,需要通过控件名称确定是要操控哪个控件。

  • 代码编程设计

如果是没有任何使用基础的,请参考点灯科技官网的入门说明,去安装对应的编程环境。
官方入门指导:https://diandeng.tech/doc/getting-start-esp32-wifi


使用arduino新建一个工程,接入开发板。
我的开发板参数如下:
image.png
写入以下代码,点击左上角的√键(验证),编译测试是否通过。
#define BLINKER_WIFI

  • #include <Blinker.h>

  • char auth[] = "08eec437a3de";     //设备秘钥
  • char ssid[] = "4G-UFI-7787";      //WIFI名称
  • char pswd[] = "1234567890";       //WIFI密码

  • // //初始创建化数据对象
  • BlinkerNumber num_temp("num-temp");        //温度数据
  • BlinkerNumber num_electric("num-electric");  //电量数据

  • // 如果未绑定的组件被触发,则会执行其中内容
  • void dataRead(const String & data)
  • {
  •     int startPos = data.indexOf(""") + 1;
  •     int endPos = data.indexOf(""", startPos);
  •     // 提取双引号内的内容,获取键名
  •     String KeyName = data.substring(startPos, endPos);
  •     //暂时通过串口输出查看是否提取正确
  •     //后期通过键名确定是控制哪一个按钮
  •     Serial.println(KeyName);

  •     startPos = data.indexOf(""", endPos+1) + 1;
  •     endPos = data.indexOf(""", startPos);
  •     // 提取双引号内的内容,获取键值
  •     String KeyValue = data.substring(startPos, endPos);
  •     //暂时通过串口输出查看是否提取正确
  •     //后期通过键值确定是按钮是按下还是松开
  •     Serial.println(KeyValue);

  •      //板载LED状态翻转,说明能够远程控制
  •     digitalWrite(48, !digitalRead(48));

  •     //将值上传到温度的数据对象
  •     num_temp.print(12);
  • }

  • void setup()
  • {
  •     // 初始化串口
  •     Serial.begin(115200);
  •     // 初始化blinker
  •     Blinker.begin(auth, ssid, pswd);
  •     //注册回调函数,当设备收到APP发来的数据时会调用设置的dataRead回调函数
  •     Blinker.attachData(dataRead);

  •     // 初始化有LED的IO
  •     pinMode(48, OUTPUT);
  •     // 点亮LED
  •     digitalWrite(48, LOW);

  •     //设置电机的PWM
  •     ledcSetup(0, 2000, 8); // 设置通道0的频率为2000,分辨率8位
  •     ledcAttachPin(1, 0);          // 将通道0与引脚1连接
  • }

  • void loop() {
  •     Blinker.run();
  •     //设备延时
  •     //Blinker.delay(500);
  • }
  • 复制代码
    如果不通过,请跟我的blinker版本一样。还有esp32包的版本。
    image.png image.png


    • 下载验证

    将开发板接入电脑,在arduino中设置好ESP32开发板的参数,点击左上角的→键(上传),将代码烧录到开发板中。
    image.png

    在arduino下面的输出窗口中,等待下载完成。下图为下载完成指示图。
    image.png

    下载完成之后,保持ESP32开发板处于上电状态,等待开发板连接上服务器。我们可以去手机APP端查看ESP32开发板是否连接成功。
    当APP界面显示设备在线时,说明连接成功。
    img_v3_025m_9a678935-bae6-45ea-bf20-1a39124dad6g.jpg

    打开设备,进行数据传输测试。随便点击几个按钮。
    电脑端的串口调试助手输出显示在APP上按下的按键名,以及按下的状态:top表示按下一次
    image.png


    手机端显示ESP32开发板上传过来的数据:
    img_v3_025m_b612ab1a-995f-470c-940f-7c640a25718g.jpg
    验证成功。

    无线随身WIFI调试


    根据购买的随身WIFI上的说明书进行激活即可。需要注意的是,使用随身WIFI需要实名认证才能够使用。
    我购买的设备链接:
    https://detail.tmall.com/item.htm?_u=u2t4uge500f1&id=723126849433&spm=a1z09.2.0.0.336c2e8d3ccgnA
    套餐参数:
    image.png
    这个随身WIFI没有什么好调试的,只是需要注意的是,随身WIFI使用的是5V供电,我们要在后面的PCB设计中加入USB供电接口。


    语音对话摄像头调试


    根据购买的摄像头上的说明书进行激活即可。需要注意的是,摄像头的APP和手机控制的APP是不一样的,到时候需要在手机上将摄像头APP的界面缩小,形成两个APP在一个界面的样子,这样才好操控。


    最终的测试结果


    实现的摄像头的视频与语言的对话,并且可以通过手机APP控制开发板





    下一篇预告:电路设计