Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于Arduino IDE的ESP8266编程问题_Arduino_Esp8266_Arduino Esp8266 - Fatal编程技术网

基于Arduino IDE的ESP8266编程问题

基于Arduino IDE的ESP8266编程问题,arduino,esp8266,arduino-esp8266,Arduino,Esp8266,Arduino Esp8266,我决定使用Arduino IDE for ESP8266在我的ESP8266上编程,目标是读取数据(从TTL摄像机读取字节数组)。ESP8266-01(8Mbits闪存ROM)有8个引脚,所以我决定使用GPIO16(TXD)和GPIO2(RXD)作为软件串行引脚来实现这一点。但是ESP8266打印了一个异常,我不确定它发生了什么 所以我对这次事故有几个问题 我想知道我是否可以在ESP8266上运行SoftwareSerial(ESP8266有2个UART,Serial0用于串行打印,我们无法通

我决定使用Arduino IDE for ESP8266在我的ESP8266上编程,目标是读取数据(从TTL摄像机读取字节数组)。ESP8266-01(8Mbits闪存ROM)有8个引脚,所以我决定使用GPIO16(TXD)和GPIO2(RXD)作为软件串行引脚来实现这一点。但是ESP8266打印了一个异常,我不确定它发生了什么

所以我对这次事故有几个问题

  • 我想知道我是否可以在ESP8266上运行SoftwareSerial(ESP8266有2个UART,Serial0用于串行打印,我们无法通过Serial1发送数据),所以我决定使用SoftwareSerial

  • 我不知道异常信息是什么意思,因为我不懂汇编语言

  • 我在Github上阅读了Arduino IDE for ESP8266的文档,但在使用Arduino IDE编程时,我不太了解ESP8266上的pin定义。例如,当使用GPIO16(TXD)和GPIO2(RXD)作为SoftwareSerial时,我们可能会使用构造函数
    SoftwareSerialCamera(int Pin1,int Pin2)
    。我想知道GPIO2和GPIO16对应的Pin1和Pin2是什么。这份文件真把我弄糊涂了

  • 这是我的密码

    #include <Arduino.h>
    #include "camera_VC0706.h"
    #include <SoftwareSerial.h>
    HTTPClient httpClient;
    //define camera and bytes array, I am not sure whether the pins are correct or not
    int rxPin=2;
    int txPin=16;
    SoftwareSerial cameraSerial(rxPin,txPin); //RX,TX
    camera_VC0706 Camera = camera_VC0706(&cameraSerial);
    //take photo
    bool takePhoto() {
      byte time=0;
      writeRawSerial(F("<STATUS>WAITING</STATUS>"),true);
      while(!Camera.begin(115200)) {
        if(+time<=5){//try 5 times
          writeRawSerial(F("."),false);
        } else {
          writeRawSerial("",true);
          writeSerial(F("<STATUS>NO_CAMERA</STATUS>"));
          return false;
        }
      }
      writeRawSerial(F("<STATUS>CAMERA_ON</STATUS>"), false);
      writeRawSerial(F("<VERSION>"), false);
      writeRawSerial(Camera.getVersion(), false);
      writeSerial(F("</VERSION>"));
      Camera.setImageSize(VC0706_320x240);
      if (!Camera.takePicture()) {
        writeSerial(F("<STATUS>TAKE_PHOTO_FAIL</STATUS>"));
        return false;
      } else {
        byte imgSize = Camera.frameLength();
        writeSerial(F("<STATUS>TAKE_PHOTO_SUCCESS</STATUS>"));
        writeRawSerial(F("<IMAGE_SIZE>"),false);
        writeRawSerial(String(imgSize,DEC),false);
        writeSerial(F("</IMAGE_SIZE>"));
        freeHeap();//It was defined, but not key function, only for showing free heap of esp8266
        imgBuffer=Camera.readPicture(imgSize);
        freeHeap();
        Camera.resumeVideo();
        writeSerial(F("<STATUS>SAVE_PHOTO_SUCCESS</STATUS>"));
        return true;
      }
    }
    
    #包括
    #包括“camera_VC0706.h”
    #包括
    HTTPClient-HTTPClient;
    //定义摄像头和字节数组,我不确定管脚是否正确
    int rxPin=2;
    int-txPin=16;
    软件系列摄像机系列(rxPin、txPin)//接收,发送
    摄像头\u VC0706摄像头=摄像头\u VC0706(&cameraSerial);
    //拍照
    bool takePhoto(){
    字节时间=0;
    writeRawSerial(F(“等待”),true;
    而(!摄影机开始(115200)){
    
    如果(+time是这样,那么所显示的堆栈跟踪对于任何系统来说都是非常标准的,它为您提供了跟踪它所需的几乎所有信息—它不是汇编代码,而是二进制文件的十六进制地址

    首先,您有一个异常28-如果我们查看,您可以看到28表示您的指针不正确,或者您试图从中断/缓存访问未缓存的数据被关闭

    接下来,您有一个地址epc1。这是代码崩溃的地方,它是您上载的二进制文件的十六进制地址。此外,ctx:cont也很有用,因为它表示程序在您的代码中崩溃,而不是系统代码

    您还有EXCVADR,它是您试图访问的地址0x10

    考虑到这一点,几乎可以肯定的是,您要取消引用的代码中的某个地方有一个空指针。您应该使用ESP异常解码器来确定哪一行出现了令人不快的崩溃和错误的指针用法


    关于使用软件序列-您只需使用数据表上的pin码。GPIO 14将是构造函数中的14号。我发现它可以工作,但在使用1天以上后,在我使用的生产产品中造成了非常奇怪的崩溃,所以根本不推荐它。我们最终使用Serial1进行调试打印,并释放了Serial0用于通用UART通信-更加可靠。

    您需要添加setup()和loop()的标准Arduino函数,否则它将不知道从何处开始

    如果你看了示例草图,你应该能够运行一些东西,然后你就可以开始添加你的拍照代码。

    同时询问:如果你要这样做,请考虑添加到你交叉发布的其他位置的链接。这将使我们避免因重复工作而浪费时间,并有助于我们的工作她有同样的问题,并找到你的帖子来发现所有相关信息。