使用ESP32CAM測試串口發數據


 

 

 

 

 

HardwareSerial庫實現了對串口1的使用,HardwareSerial類在聲明對象時接收一個輸入參數(0、1、2),分別代表Serial、Serial1、Serial2;

如上圖: 

ESP32CAM的TX也就是U0TXD對應引腳1。

ESP32CAM的RX也就是U0RXD對應引腳3。

所以MySerial_stm32.begin初始化時,第三個、第四個參數是3和1。

 

參考:

#include <HardwareSerial.h>    //導入ESP32串口操作庫,使用這個庫我們可以把串口映射到其他的引腳上使用

//我們測試需要用到的串口,ESP32一共有3個串口,串口0應該是用於程序燒寫和打印輸出調試用的,所以我們只用1和2
HardwareSerial MySerial_stm32(1);  

void setup() {
  Serial.begin(115200);
  //串口的開啟,這里還可以傳一些別的參數,但是我們只傳入下面四個最重要的:波特率,默認SERIAL_8N1為8位數據位、無校驗、1位停止位,后面兩個分別為 RXD,TXD 引腳
  MySerial_stm32.begin(115200, SERIAL_8N1, 3, 1);

  //MySerial_stm32.updateBaudRate(9600);  //重新設置波特率;  
  //MySerial_stm32.end();  //失能串口,釋放占用的資源
}

void loop() {
  MySerial_stm32.println("usart test!!!");
  delay(1000);
}

  

 

 

 

軟串口

#include<SoftwareSerial.h>
  
#define phonenum_call "15529672865"  // 最好移動卡  聯通卡支持度不是很好
   
 
//單片機軟串口RX D4->短信 TX
//單片機軟串口TX D5->短信 RX
SoftwareSerial softSerial1(12,13);//,與短信模塊通信
 int sendMeg(String phonenum,String text)//發送信息的函數,直接調用即可,無需修改
  {
  
        softSerial1.println("AT");//對GSM發送AT,看響應
        char comdata=0;//判斷接收到的最后一位是否對
        String phone="";//電話號碼存儲
        phone="AT+CMGS=\""+phonenum+'\"'; 
         while (softSerial1.available() > 0){
        comdata = softSerial1.read();  //每次讀一個char字符,並相加
        delay(2);
        }  
        softSerial1.println("AT");//對GSM發送AT,看響應
        delay(1000);
        while (softSerial1.available() > 2){
        comdata = softSerial1.read();  //每次讀一個char字符,並相加
        Serial.print(comdata);//錯誤
        delay(2);
        }
        if(comdata!='K')//判斷沒有收到OK
        {
        Serial.println("error1");//錯誤
//        return  0;
        }
        comdata=0;   
        softSerial1.println("AT+CMGF=1");//設置GSM文本模式
        delay(500);
        while (softSerial1.available() > 2){
        comdata = softSerial1.read();  //每次讀一個char字符,並相加
        delay(2);
        }
          
        if(comdata!='K')//沒有收到OK
        {
        Serial.println("error2");
//        return  0;
        }
        comdata=0;
        softSerial1.println(phone);//發送的目標號碼
        delay(1000);
        while (softSerial1.available() > 1){
        comdata = softSerial1.read();  //每次讀一個char字符,並相加
        delay(2);
        }
          
        if(comdata!='>')//沒有收到>
        {
        Serial.println("error3");
//        return  0;
        }
        comdata=0;
        softSerial1.print(text);//發送所寫內容
        delay(500);
        softSerial1.write(0x1A); //結束輸入文本,並發送
        Serial.println("success");  //成功 
      
 }
  
  
   
void setup(){
//硬串口
Serial.begin(9600);
//監聽軟串口通信
softSerial1.begin(9600);
softSerial1.listen();
delay(5000);
}
 
String  comdata;
 
void loop(){
      
    if(Serial.available()>0){
      delay(1);//影響讀取速度
      comdata = Serial.readString();
      //String comdata="dasdas";
      sendMeg("15529672865","msg to send");//給15147300333  發送信息
      comdata="";
      delay(1000);    
      }
      
}

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM