那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

【DFRobot Beetle ESP32-C3開發(fā)板試用體驗】車載導航天氣掛件?

開發(fā)板試用精選 ? 來源:開發(fā)板試用 ? 作者:電子發(fā)燒友論壇 ? 2022-11-28 11:01 ? 次閱讀

本文來源電子發(fā)燒友社區(qū),作者:ZHOUxxx1121, 帖子地址:https://bbs.elecfans.com/jishu_2291088_1_1.html


車載導航天氣掛件

設備

  • LCD 1602A顯示屏
  • 合宙Air 551G導航模塊
  • DFRobot Beetle ESP32-C3開發(fā)板
  • 杜邦線若干

連接方式

跟之前的連接一樣。

  • ESP32-C3通過自制一分二的線分別給LCD屏幕和Air 551G供電

  • ESP32-C3的Pin 8(SDA)和9(SCL)與LCD屏幕連接。

  • ESP32-C3的Pin 20(RX)和21(TX)與Air 551G連接。

    0.jpg

功能設計

利用ESP32-C3控制GNSS模塊,獲取當前UTC時間和經(jīng)緯度等時間和坐標信息,同時連接WIFI獲取所在位置的天氣信息。

在LCD屏幕上對時間、坐標以及天氣信息等進行顯示。

實現(xiàn)效果

1.jpg

基本上完成了設計功能。
后期升級主要是用更好的屏幕,現(xiàn)在用的LCD1602A顯示太差,不知道為什么顯示很不清晰。
現(xiàn)在時間和坐標信息與天氣信息是切換顯示的,如果屏幕更大一點,可以加入可視化顯示和同屏顯示。
最重要的是,如果把幾個模塊設計到一個模塊中,套個好看的外殼,擺在車里面當掛件,是不是也很不錯?

代碼實現(xiàn)

#include 
#include 
#include 
#include 
#include //修改WIFI名稱以及密碼
const char* ssid = "**";//WIFI名稱
const char* password = "**";//WIFI密碼
String openWeatherMapApiKey = "***";//Open weather app ID
double time_utc=0;
double lat=34;// 默認緯度
double lon=113;//默認經(jīng)度
//設置獲取信息的間隔時間,以下用于測試所以設置為10秒
//您應當根據(jù)你需要獲取數(shù)據(jù)的網(wǎng)站,規(guī)定時間內(nèi)訪問數(shù)據(jù)的次數(shù)上限來限制訪問時間的最小間隔
unsigned long lastTime = 0;
//設置每10分鐘獲得一次天氣數(shù)據(jù)
//unsigned long timerDelay = 600000;
//設置每10秒獲得一次天氣數(shù)據(jù)
unsigned long timerDelay = 10000;

LiquidCrystal_PCF8574 lcd(0x27); // set the LCD address to 0x27 for a 16 chars and 2 line display

String jsonBuffer;
String lineData="";
int show = -1;
String comdata="";
void setup()
{
  
  
  int error;

  Serial.begin(115200);
  Serial.println("LCD...");
  Serial1.begin(115200,SERIAL_8N1,/*rx =*/20,/*Tx =*/21);  

  // wait on Serial to be available on Leonardo
  while (!Serial&&!Serial1)
    ;
  
  WiFi.begin(ssid, password);
  Serial.println("Connecting WIFI...");
  //判斷WIFI是否連接
  while(WiFi.status() != WL_CONNECTED)
  {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.print("Connected to WiFi network with IP Address: ");
  Serial.println(WiFi.localIP());
  Serial.println("Timer set to 10 seconds (timerDelay variable), it will take 10 seconds before publishing the first reading.");


  Serial.println("Dose: check for LCD");

  Wire.begin();
  Wire.beginTransmission(0x27);
  error = Wire.endTransmission();
  Serial.print("Error: ");
  Serial.print(error);

  if (error == 0) {
    Serial.println(": LCD found.");
    show = 0;
    lcd.begin(16, 2); // initialize the lcd

  } else {
    Serial.println(": LCD not found.");
  } // if
  //lcd.print("WIFI&I2C&SERIAL OK");
  lcd.setBacklight(0);
  delay(400);
  lcd.setBacklight(255);
  lcd.home();
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("WIFI&SCREEN&GNSS");
  lcd.setCursor(0, 1);
  lcd.print("IS READY!");
  lcd.noBlink();
  lcd.noCursor();
  delay(1000);

} // setup()

void loop()
{
  while(Serial1.available()>0)
  {
    lineData=char(Serial1.read());
    comdata+=lineData;
    delay(2);
  }
  if (comdata.length()>0)
  {
    Serial.println(comdata);
    int ic=comdata.indexOf('*');
    
    String tmp=comdata.substring(1,ic);
    if(tmp.substring(0,5)==("GNGGA"))
    {
      lcd.home();
      lcd.clear();
      lcd.setCursor(0, 0);

      time_utc=tmp.substring(6,16).toDouble()+80000;
      if (time_utc>240000)
        time_utc-=240000;
      Serial.println("T="+String(time_utc));  
      lcd.print("T="+String(time_utc)); 
      
      lat=tmp.substring(17,19).toDouble()+tmp.substring(19,27).toDouble()/60;
      lon=tmp.substring(30,33).toDouble()+tmp.substring(33,41).toDouble()/60;
      
      Serial.println("Lat="+String(lat));
      Serial.println("Lon="+String(lon));
      
      lcd.setCursor(0, 1);
      lcd.print("B="+String(lat).substring(0,6)+" L="+String(lon).substring(0,7));
      //Serial.println("$GNGGA detected..");
    }
      
    
    comdata="";
  }
   //發(fā)送HTTP獲取請求
  if ((millis() - lastTime) > timerDelay) {
    //檢測WIFI是否已經(jīng)連接
    if(WiFi.status()== WL_CONNECTED){
      //String serverPath = "http://api.openweathermap.org/data/2.5/weather?q=" + city + "," + countryCode + "&appid=" + openWeatherMapApiKey;
      String serverPath = "http://api.openweathermap.org/data/2.5/weather?lat=" + String(lat) + "&lon=" + String(lon) + "&appid=" + openWeatherMapApiKey;      //將組合好的URL放入httpGETRequest函數(shù)中通過HTTP獲取請求以獲得文本
      jsonBuffer = httpGETRequest(serverPath.c_str());
      Serial.println(jsonBuffer);

      //將解析的Json對象值儲存在Jsonu緩沖區(qū)中
      JSONVar myObject = JSON.parse(jsonBuffer);

      //判斷解析是否成功
      if (JSON.typeof(myObject) == "undefined") {
        Serial.println("Parsing input failed!");
        return;
      }

      Serial.print("JSON object = ");
      Serial.println(myObject);
      Serial.print("Temperature: ");
      //獲取到的溫度其實是開氏度。
      //開氏度 = 攝氏度+273.15
      double c = myObject["main"]["temp"];
      c = c-273.15;
      Serial.println(c);
      
      lcd.home();
      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print("T="+String(c)+" ");
      
      Serial.print("Pressure: ");
      //myObject["main"]["pressure"]前為{}前的引號內(nèi)容,后為讀取哪一個引號后數(shù)據(jù)
      Serial.println(myObject["main"]["pressure"]);
      Serial.print("Humidity: ");
      Serial.println(myObject["main"]["humidity"]);

      double pres=myObject["main"]["pressure"];
      lcd.print("P="+String(pres));
      
      Serial.print("Wind Speed: ");
      Serial.println(myObject["wind"]["speed"]);

      lcd.setCursor(0, 1);
      double wind=myObject["wind"]["speed"];
      lcd.print("Wind="+String(wind)+" ");

      double Hu=myObject["main"]["humidity"];
      lcd.print("H="+String(Hu));
    }
    else {
      Serial.println("WiFi Disconnected");
    }
    lastTime = millis();
  }
} // loop()

String httpGETRequest(const char* serverName) {
  WiFiClient client;
  HTTPClient http;

  //連接網(wǎng)址
  http.begin(client, serverName);

  //發(fā)送HTTP站點請求
  int httpResponseCode = http.GET();

  //該數(shù)組用于儲存獲得的數(shù)據(jù)
  String payload = "{}";

  //將獲得的數(shù)據(jù)放入數(shù)組
  if (httpResponseCode>0) {
    Serial.print("HTTP Response code: ");
    Serial.println(httpResponseCode);
    payload = http.getString();
  }
  else {
    Serial.print("Error code: ");
    Serial.println(httpResponseCode);
  }

  //釋放資源
  http.end();

  //返回獲得的數(shù)據(jù)用于Json處理
  return payload;
}

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • ESP32
    +關注

    關注

    18

    文章

    978

    瀏覽量

    17523
  • DFRobot
    +關注

    關注

    4

    文章

    1159

    瀏覽量

    9714
收藏 人收藏

    評論

    相關推薦

    ESP32-C3開發(fā)板ROM里預燒錄的數(shù)據(jù)有沒有辦法讀出來?

    請問ESP32-C3開發(fā)板ROM里預燒錄的數(shù)據(jù)有沒有辦法讀出來
    發(fā)表于 07-23 07:54

    esp32-c3燒錄代碼的時候提示Failed to connect to ESP32-C3: No serial data received,問題出在哪里?

    畫了一塊esp32-c3但是燒錄代碼的時候提示Failed to connect to ESP32-C3: No serial data received,問題可能出現(xiàn)在什么地方,使用的是ch340模塊下載程序。
    發(fā)表于 07-01 07:48

    ESP32-C3開發(fā)板用數(shù)據(jù)線連接在電腦USB口上,無法識別出端口,為什么?

    各位好,我的ESP32-C3開發(fā)板用數(shù)據(jù)線連接在電腦USB口上,電腦上事先安裝了CP210x驅動程序,發(fā)現(xiàn)只是開發(fā)板上的紅燈亮了,win11系統(tǒng)的設備管理器卻沒有檢測出端口。ESP-I
    發(fā)表于 07-01 07:25

    esp32-c3工程中怎么創(chuàng)建多個freertos任務?

    ESP-IDF中給出的ESP32-C3的例程都只有一個任務。即void app_main() 而且沒看見這個app_main任務是在哪里被創(chuàng)建的??? 如果我想建一個ESP32-C3的多任務的工程該
    發(fā)表于 06-27 06:37

    ESP32-C3使用SPI通信緩存有多少?

    我們計劃用ESP32-AT功能,看到資料上ESP32-C3僅支持SPI通信,請問: ①ESP32-C3使用SPI通信緩存有多少? ②ESP32-C3使用SPI通信接收到數(shù)據(jù)以后空中速率
    發(fā)表于 06-26 07:58

    請問ESP32-C3ESP32-S2或WROOM系列是否支持單步調(diào)試?

    /index.html#introduction 中文版描述只有ESP-S2-Kaluga-1板載了JTAG調(diào)試接口,而英文版說ESP32-C3可以直接用USB進行調(diào)試:“This is made
    發(fā)表于 06-21 07:32

    ESP32-C3的USB在計算機上識別的COM口能夠干什么用?

    我想選用ESP32-C3 開發(fā)產(chǎn)品,其價格和藍牙@WIFI的功能是最吸引我的,但令人頭疼的是其開發(fā)環(huán)境,在WIN10下試用了VSCODE+PLATFORMIO和ECLIPCE兩個IDE
    發(fā)表于 06-21 06:41

    請問esp32-c3不支持pcnt嗎?

    我在esp32-c3開發(fā)板上測試pcnt,編譯報錯找不到相關的函數(shù),查看sdk源碼發(fā)現(xiàn)要配置CONFIG_SOC_PCNT_SUPPORTED才會編譯pcnt.c,查看examples里面的項目也說了只支持
    發(fā)表于 06-18 07:27

    請問ESP32-C3藍牙如何獲取RSSI的值?

    各位大佬,小弟剛接觸ESP-IDF不久,摸索了一段時間,物聯(lián)網(wǎng)的基本流程已經(jīng)摸索的差不多了。 現(xiàn)在想知道ESP32-C3通過藍牙與手機建立連接后,怎么才能獲取當前手機端到開發(fā)板的RSSI值,我應該去參考哪些例程? 本人英語實在是
    發(fā)表于 06-13 07:47

    使用ESP32-C3的SoftAP模式創(chuàng)建Wi-Fi熱點,ESP32-C3不輸出任何日志,并且無法響應,為什么?

    問題描述: 我正在使用ESP32-C3的SoftAP模式創(chuàng)建Wi-Fi熱點,并使用手機連接到該熱點。當手機連接成功并熄屏一段時間后,我發(fā)現(xiàn)手機無法獲取熱點的信息。在此期間,ESP32-C3不輸
    發(fā)表于 06-07 08:26

    畫了一塊esp32-c3開發(fā)板,燒錄代碼時提示Failed to connect to ESP32-C3: No serial data received為什么?

    我自己畫了一塊esp32-c3開發(fā)板但是燒錄代碼的時候就提示Failed to connect to ESP32-C3: No serial data received,用的是ch340,可能是哪里出錯了呢。
    發(fā)表于 06-05 07:42

    啟明云端WT32C3系列模組/開發(fā)板連接AWS亞馬遜云方法

    ESP32-C3因為其性價比高,價格便宜性能又好一直是量產(chǎn)的首選芯片,隨著量產(chǎn)項目擴大,對接云服務器的情況也增加了,接下來小啟給大家分享下啟明云端ESP32-C3模組——WT32C3系列模組/
    的頭像 發(fā)表于 05-12 08:04 ?508次閱讀
    啟明云端WT32<b class='flag-5'>C3</b>系列模組/<b class='flag-5'>開發(fā)板</b>連接AWS亞馬遜云方法

    充電樁選型對比:ESP32-S3模組和ESP32-C3模組誰更合適

    和整體解決方案供應商,有非常豐富的充電樁物聯(lián)網(wǎng)項目經(jīng)驗,充電樁物聯(lián)網(wǎng)選型中經(jīng)常會用到ESP32-C3ESP32-S3模組,那么今天小啟就對這幾種方案做個對比,看
    的頭像 發(fā)表于 04-30 08:04 ?7068次閱讀
    充電樁選型對比:<b class='flag-5'>ESP32-S3</b>模組和<b class='flag-5'>ESP32-C3</b>模組誰更合適

    技術分享|Model 3C芯片86盒彩屏開發(fā)板ESP32-C3助力,3MB波特率OTA升級更便捷!

    在物聯(lián)網(wǎng)快速發(fā)展的今天,彩屏顯示作為人機交互的重要一環(huán),其顯示效果和升級便利性成為了衡量產(chǎn)品競爭力的關鍵指標。而Model 3C(以下簡稱M3C芯片)與ESP32-C3的結合,無疑為物聯(lián)網(wǎng)彩屏領域應用奠定了堅實的基石。
    的頭像 發(fā)表于 04-12 10:11 ?922次閱讀

    ESP32-P4首秀|啟明云端帶你解讀樂鑫P4多媒體開發(fā)板

    此前,樂鑫發(fā)布了新一代MCU芯片ESP32-P4的消息,今天ESP32-P4開發(fā)板終于登場亮相了,快來一睹真容吧。一、ESP32-P4開發(fā)板
    的頭像 發(fā)表于 02-19 12:30 ?4139次閱讀
    <b class='flag-5'>ESP32</b>-P4首秀|啟明云端帶你解讀樂鑫P4多媒體<b class='flag-5'>開發(fā)板</b>
    516棋牌游戏加速器| 大发888下载免费游戏| 威尼斯人娱乐城网络博彩| 大发888全球顶级游戏平台| 真人888| 百家乐官网平注法口诀| 百家乐官网tt娱乐平台| 百家乐官网群到shozo网| 鑫鼎百家乐娱乐城| 全讯网网站xb112| 现金棋牌| 百家乐官网磁力录| 菲律宾百家乐官网娱乐平台| 百家乐所有技巧| 威尼斯人娱乐城惊喜| 凯斯网娱乐城| 百家乐官网的路子怎么| 百家乐投注平台信誉排名| 大发888城亚洲游戏| 博彩乐百家乐官网平台| 迪士尼百家乐官网的玩法技巧和规则| 百家乐出千方法技巧| 香港六合彩结果| 百家乐官网代理荐| 菲利宾百家乐现场| 大发扑克| 百家乐官网号解码器| 百家乐是否有路子| 大发888娱乐真钱游戏 下载| 百家乐官网娱乐城返水| 百家乐官网7人桌布| 大发888娱乐官方下载| 百家乐官网现金平台排名| 24山方位| 大发888娱乐场下| 澳门百家乐官网现场游戏| 网上百家乐如何作假| 大西洋娱乐城开户地址| 乐天堂百家乐官网娱乐网| 百家乐破解秘| 百家乐官网赌具哪里最好|