一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

3天內不再提示

【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時間和經緯度等時間和坐標信息,同時連接WIFI獲取所在位置的天氣信息。

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

實現效果

1.jpg

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

代碼實現

#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;//默認經度
//設置獲取信息的間隔時間,以下用于測試所以設置為10秒
//您應當根據你需要獲取數據的網站,規(guī)定時間內訪問數據的次數上限來限制訪問時間的最小間隔
unsigned long lastTime = 0;
//設置每10分鐘獲得一次天氣數據
//unsigned long timerDelay = 600000;
//設置每10秒獲得一次天氣數據
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是否已經連接
    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函數中通過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"]前為{}前的引號內容,后為讀取哪一個引號后數據
      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;

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

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

  //該數組用于儲存獲得的數據
  String payload = "{}";

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

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

  //返回獲得的數據用于Json處理
  return payload;
}

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

    關注

    21

    文章

    1017

    瀏覽量

    19282
  • DFRobot
    +關注

    關注

    4

    文章

    1161

    瀏覽量

    10830
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    ESP32-P4 C5開發(fā)板燒錄小智全流程!速看!

    沒錯,你沒有看錯!我們帶著WT99P4C5-S1開發(fā)板燒錄小智全流程走來了!開發(fā)板搭載樂鑫科技ESP32-P4和ESP32-C5芯片,代碼完
    的頭像 發(fā)表于 07-04 18:03 ?353次閱讀
    <b class='flag-5'>ESP32</b>-P4 <b class='flag-5'>C</b>5<b class='flag-5'>開發(fā)板</b>燒錄小智全流程!速看!

    ESP32-S3開發(fā)板燒錄小智AI系統(tǒng)全流程指南

    在AI語音交互領域不斷發(fā)展的今天,開發(fā)者們對于功能強大、開源靈活的開發(fā)板需求日益增長。今天,我們就來詳細了解一下ESP32AgentDevKit燒錄小智的全流程,這款搭載樂鑫科技ESP32-S
    的頭像 發(fā)表于 06-16 18:01 ?1499次閱讀
    <b class='flag-5'>ESP32-S3</b><b class='flag-5'>開發(fā)板</b>燒錄小智AI系統(tǒng)全流程指南

    ESP32-C3開發(fā)板全面支持小智AI!燒錄實戰(zhàn)指南來了!

    本文將詳細解析基于樂鑫ESP32-C3芯片的ZXAIEC43開發(fā)板燒錄“小智”AI語音系統(tǒng)的全流程。該方案代碼完全開源,支持深度定制開發(fā),適用于智能玩具、潮玩手辦及智能家居控制等多元場景。開發(fā)
    的頭像 發(fā)表于 06-13 18:01 ?954次閱讀
    <b class='flag-5'>ESP32-C3</b><b class='flag-5'>開發(fā)板</b>全面支持小智AI!燒錄實戰(zhàn)指南來了!

    【評測試用】合眾HZ-T536開發(fā)板免費試用體驗

    【評測試用】合眾HZ-T536開發(fā)板免費試用體驗
    的頭像 發(fā)表于 05-27 08:05 ?234次閱讀
    【評測<b class='flag-5'>試用</b>】合眾HZ-T536<b class='flag-5'>開發(fā)板</b>免費<b class='flag-5'>試用</b>體驗

    ESP32-C3:革新物聯網應用的超高效能芯片,家電遠程控制應用等

    加密引擎,支持安全啟動 生態(tài)完善 - 與樂鑫其他產品線完美兼容 ESP32-C3以其出色的性價比、低功耗特性和完善的開發(fā)支持,成為物聯網項目開發(fā)的理想選擇。無論是初創(chuàng)企業(yè)還是大型制造商,都能通過
    發(fā)表于 04-03 16:47

    【新品】ESP32-P4全功能開發(fā)板,啟明云端WT99P4C5-S1多媒體開發(fā)板強勢來襲!

    為了滿足廣大開發(fā)者對于高性能、多功能開發(fā)平臺的需求,深圳市啟明云端有限公司重磅推出了基于WT0132P4-A1核心設計的多媒體開發(fā)板——WT99P4
    的頭像 發(fā)表于 03-18 18:06 ?969次閱讀
    【新品】<b class='flag-5'>ESP32</b>-P4全功能<b class='flag-5'>開發(fā)板</b>,啟明云端WT99P4<b class='flag-5'>C</b>5-S1多媒體<b class='flag-5'>開發(fā)板</b>強勢來襲!

    正點原子ESP32S3系列開發(fā)板全面支持小智AI

    可能大家覺得AI離我們很遠,但是小智AI可以把這個距離拉得很近。正點原子ESP32S3系列開發(fā)板全面支持小智AI,助力AI硬件發(fā)展。 ESP32S3開發(fā)板
    發(fā)表于 02-14 17:01

    帶USB接口的基于ESP32-C3的加熱溫控,附帶原理圖加PCB

    Part 01 前言 國外大神用ESP32-C3做了一個加熱溫控,附帶原理圖加PCB,有興趣的可以學習一下。原理圖包含了最小系統(tǒng)電路,USB typeC接口電路,3.3V電壓轉換電路,加熱控制電路
    的頭像 發(fā)表于 12-15 13:24 ?2634次閱讀
    帶USB接口的基于<b class='flag-5'>ESP32-C3</b>的加熱溫控<b class='flag-5'>板</b>,附帶原理圖加PCB

    【AI技術支持】ESP32-C3芯片/模組SPI-AT問題處理

    描述在使用ESP32-C3芯片/模組,AT版本為Release/v3.0.0.0時,客戶在使用常規(guī)AT通信時,速率達不到需求,需要換成SPI-AT,測試中遇到問題,這是為什么呢?啟明云端/02
    的頭像 發(fā)表于 11-27 01:00 ?1726次閱讀
    【AI技術支持】<b class='flag-5'>ESP32-C3</b>芯片/模組SPI-AT問題處理

    【AI技術支持】ESP32C3 開發(fā)板在Linux環(huán)境下,進行JTAG 調試演示

    啟明云端/01JTAG調試工具本教程主要演示ESP32C3開發(fā)板在linux環(huán)境下,通過vscode的ESP-IDF插件使用JTAG調試工具。ESP32C3不但內置了USB-JTAG,
    的頭像 發(fā)表于 10-17 08:01 ?3418次閱讀
    【AI技術支持】<b class='flag-5'>ESP32C3</b> <b class='flag-5'>開發(fā)板</b>在Linux環(huán)境下,進行JTAG 調試演示

    使用ESP32開發(fā)板點亮LED燈

    ESP32是一款由Espressif Systems開發(fā)的高性能、低功耗的Wi-Fi+藍牙雙模微控制器芯片。它集成了天線開關、RF balun、功率放大器、低噪聲接收放大器、濾波器以及電源管理模塊
    的頭像 發(fā)表于 10-05 11:44 ?5051次閱讀

    在rt-thread bsp里esp32c3里編譯出的bin文件燒到esp32開發(fā)板上運行提示chipid不對,為什么?

    在rt-thread bsp里esp32c3里編譯出的bin文件燒到esp32開發(fā)板上 運行提示chipid不對,是否有方法修改能支持esp32 系列的
    發(fā)表于 09-27 10:01

    啟明云端WT32C3-S6模塊,樂鑫ESP32-C3低功耗高性能方案,高效無線連接通信

    的WT32C3-S6WiFi模塊,一款在物聯網領域中以其低功耗、高性價比而備受矚目的產品。強大的內核,高效的性能WT32C3-S6模塊搭載了樂鑫ESP32-C3處理器,這款
    的頭像 發(fā)表于 08-30 11:54 ?863次閱讀
    啟明云端WT32<b class='flag-5'>C3</b>-S6模塊,樂鑫<b class='flag-5'>ESP32-C3</b>低功耗高性能方案,高效無線連接通信

    esp32c3內置USB-Serial-JTAG的使用

    1、介紹一句話:esp32-c3內置了兩個開發(fā)利器usb-serial和usb-jtag,只需要一條數據線即可進行程序燒錄、在線調試、日志輸出,大大方便了開發(fā)者;以下來自官方數據手冊介紹2
    的頭像 發(fā)表于 08-08 08:11 ?6229次閱讀
    <b class='flag-5'>esp32c3</b>內置USB-Serial-JTAG的使用

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

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