設備
-
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連接。
功能設計
利用ESP32-C3控制GNSS模塊,獲取當前UTC時間和經(jīng)緯度等時間和坐標信息,同時連接WIFI獲取所在位置的天氣信息。
在LCD屏幕上對時間、坐標以及天氣信息等進行顯示。
實現(xiàn)效果
基本上完成了設計功能。
后期升級主要是用更好的屏幕,現(xiàn)在用的LCD1602A顯示太差,不知道為什么顯示很不清晰。
現(xiàn)在時間和坐標信息與天氣信息是切換顯示的,如果屏幕更大一點,可以加入可視化顯示和同屏顯示。
最重要的是,如果把幾個模塊設計到一個模塊中,套個好看的外殼,擺在車里面當掛件,是不是也很不錯?
代碼實現(xiàn)
#include
#include
#include
#include
#include
const char* ssid = "**";
const char* password = "**";
String openWeatherMapApiKey = "***";
double time_utc=0;
double lat=34;
double lon=113;
unsigned long lastTime = 0;
unsigned long timerDelay = 10000;
LiquidCrystal_PCF8574 lcd(0x27);
String jsonBuffer;
String lineData="";
int show = -1;
String comdata="";
void setup()
{
int error;
Serial.begin(115200);
Serial.println("LCD...");
Serial1.begin(115200,SERIAL_8N1,20,21);
while (!Serial&&!Serial1)
;
WiFi.begin(ssid, password);
Serial.println("Connecting 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);
} else {
Serial.println(": LCD not found.");
}
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);
}
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));
}
comdata="";
}
if ((millis() - lastTime) > timerDelay) {
if(WiFi.status()== WL_CONNECTED){
String serverPath = "http://api.openweathermap.org/data/2.5/weather?lat=" + String(lat) + "&lon=" + String(lon) + "&appid=" + openWeatherMapApiKey;
jsonBuffer = httpGETRequest(serverPath.c_str());
Serial.println(jsonBuffer);
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: ");
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: ");
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();
}
}
String httpGETRequest(const char* serverName) {
WiFiClient client;
HTTPClient http;
http.begin(client, serverName);
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();
return payload;
}
|
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
相關推薦
請問ESP32-C3開發(fā)板ROM里預燒錄的數(shù)據(jù)有沒有辦法讀出來
發(fā)表于 07-23 07:54
畫了一塊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口上,電腦上事先安裝了CP210x驅動程序,發(fā)現(xiàn)只是開發(fā)板上的紅燈亮了,win11系統(tǒng)的設備管理器卻沒有檢測出端口。ESP-I
發(fā)表于 07-01 07:25
ESP-IDF中給出的ESP32-C3的例程都只有一個任務。即void app_main()
而且沒看見這個app_main任務是在哪里被創(chuàng)建的???
如果我想建一個ESP32-C3的多任務的工程該
發(fā)表于 06-27 06:37
我們計劃用ESP32-AT功能,看到資料上ESP32-C3僅支持SPI通信,請問:
①ESP32-C3使用SPI通信緩存有多少?
②ESP32-C3使用SPI通信接收到數(shù)據(jù)以后空中速率
發(fā)表于 06-26 07:58
/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 開發(fā)產(chǎn)品,其價格和藍牙@WIFI的功能是最吸引我的,但令人頭疼的是其開發(fā)環(huán)境,在WIN10下試用了VSCODE+PLATFORMIO和ECLIPCE兩個IDE
發(fā)表于 06-21 06:41
我在esp32-c3開發(fā)板上測試pcnt,編譯報錯找不到相關的函數(shù),查看sdk源碼發(fā)現(xiàn)要配置CONFIG_SOC_PCNT_SUPPORTED才會編譯pcnt.c,查看examples里面的項目也說了只支持
發(fā)表于 06-18 07:27
各位大佬,小弟剛接觸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熱點,并使用手機連接到該熱點。當手機連接成功并熄屏一段時間后,我發(fā)現(xiàn)手機無法獲取熱點的信息。在此期間,ESP32-C3不輸
發(fā)表于 06-07 08:26
我自己畫了一塊esp32-c3開發(fā)板但是燒錄代碼的時候就提示Failed to connect to ESP32-C3: No serial data received,用的是ch340,可能是哪里出錯了呢。
發(fā)表于 06-05 07:42
ESP32-C3因為其性價比高,價格便宜性能又好一直是量產(chǎn)的首選芯片,隨著量產(chǎn)項目擴大,對接云服務器的情況也增加了,接下來小啟給大家分享下啟明云端ESP32-C3模組——WT32C3系列模組/
發(fā)表于 05-12 08:04
?508次閱讀
和整體解決方案供應商,有非常豐富的充電樁物聯(lián)網(wǎng)項目經(jīng)驗,充電樁物聯(lián)網(wǎng)選型中經(jīng)常會用到ESP32-C3、ESP32-S3模組,那么今天小啟就對這幾種方案做個對比,看
發(fā)表于 04-30 08:04
?7068次閱讀
在物聯(lián)網(wǎng)快速發(fā)展的今天,彩屏顯示作為人機交互的重要一環(huán),其顯示效果和升級便利性成為了衡量產(chǎn)品競爭力的關鍵指標。而Model 3C(以下簡稱M3C芯片)與ESP32-C3的結合,無疑為物聯(lián)網(wǎng)彩屏領域應用奠定了堅實的基石。
發(fā)表于 04-12 10:11
?922次閱讀
此前,樂鑫發(fā)布了新一代MCU芯片ESP32-P4的消息,今天ESP32-P4開發(fā)板終于登場亮相了,快來一睹真容吧。一、ESP32-P4開發(fā)板
發(fā)表于 02-19 12:30
?4139次閱讀
評論