那曲檬骨新材料有限公司

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

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

3天內不再提示

ESP32+LED點陣DIY透明面板的數字時鐘

jf_zGNBEhbi ? 來源:趣無盡 ? 2023-04-27 10:42 ? 次閱讀

這是一款類似 HUD(抬頭顯示器,又稱平視顯示器)的時鐘,通過 WiFi 獲取當前時間。它基于 ESP32 控制器,使用四個常見的 8×8 點陣顯示單元,由 MAX7219 芯片驅動。

組件清單
8×8 點陣顯示單元(MAX7219)× 4
ESP32 微控制器 × 1
1mm 厚,165 x 75mm 亞克力板 × 1

3D 打印外殼

24379a26-e465-11ed-ab56-dac502259ad0.jpg

外殼打印沒有支撐,采用丙烯酸板。
具體數值為:W=165mm,H=75mm。

24406098-e465-11ed-ab56-dac502259ad0.jpg

最后可使用啞光黑色油漆涂抹外殼。我使用了極低反射率的油漆(MUSOU BLACK),涂滿裝置和機身的上。

3D 打印文件,在項目文件庫中下載
https://make.quwj.com/project/458

安裝 ESP32 微控制器

24470880-e465-11ed-ab56-dac502259ad0.jpg

將 ESP32 微控制器連接到點陣顯示單元。將 MAX72XX 庫安裝到 Arduino IDE 中。

以我的項目為例,連接了 DIN-16、CS-17、CLK-21。源代碼中的連接是可變的。可見下文第115-117行。

#define CLK_PIN   21  // or SCK
#define DATA_PIN  16  // or MOSI
#define CS_PIN    17  // or SS

在源代碼中配置 WiFi。你也可以使用 SmartConfig 智能手機應用程序來執行此操作。

#define WIFI_SSID "SSID" // your WiFi's SSID
#define WIFI_PASS "PASS" // your WiFi's password

將微控制器安裝到外殼的外部。當然,你也可以使用任何其他的微控制器。

時鐘文件,在項目文件庫中下載。
https://make.quwj.com/project/458

#include 
#include 
#include 


//////////////////////////////
// MAX7219 hardware configuration
//////////////////////////////


#define BRIGHTNESS MAX_INTENSITY/2


#define HARDWARE_TYPE MD_MAX72XX::FC16_HW
#define MAX_DEVICES 4
#define CLK_PIN   21  // or SCK
#define DATA_PIN  16  // or MOSI
#define CS_PIN    17  // or SS


MD_MAX72XX mx = MD_MAX72XX(HARDWARE_TYPE, DATA_PIN, CLK_PIN, CS_PIN, MAX_DEVICES); // Arbitrary pins


//////////////////////////////
// WiFi and NTP section
//////////////////////////////


// switch between 24H (12 rotors) / 12H (10 rotors)
#define HOUR12 false


// NTP settings
#define TIMEZONE 9 // timezone (GMT = 0, Japan = 9)
#define NTP_SERVER "pool.ntp.org"


#define WIFI_SMARTCONFIG false


#if !WIFI_SMARTCONFIG
// if you do not use smartConfifg, please specify SSID and password here
#define WIFI_SSID "SSID_HERE" // your WiFi's SSID
#define WIFI_PASS "PASS_HERE" // your WiFi's password
#endif


void getNTP(void) {
  for(int i = 0; WiFi.status() != WL_CONNECTED; i++) {
    if(i > 30) {
      ESP.restart();
    }
    Serial.println("Waiting for WiFi connection..");
    delay(1000);
  }


  configTime(TIMEZONE * 3600L, 0, NTP_SERVER);
  printLocalTime();
}


void printLocalTime() {
  struct tm timeinfo;
  if (!getLocalTime(&timeinfo)) {
    Serial.println("Failed to obtain time");
    return;
  }
  Serial.println(&timeinfo, "%A, %Y-%m-%d %H:%M:%S");
}


void wifiSetup() {
  int wifiMotion = 400; // while wainting for wifi, large motion
  int smatconfigMotion = 100; // while wainting for smartConfig, small motion


  WiFi.mode(WIFI_STA);
#if WIFI_SMARTCONFIG
  WiFi.begin();
#else
  WiFi.begin(WIFI_SSID, WIFI_PASS);
#endif


  showText("WiFi..");
  for (int i = 0; ; i++) {
    Serial.println("Connecting to WiFi...");
    delay(1000);
    if (WiFi.status() == WL_CONNECTED) {
      break;
    }
#if WIFI_SMARTCONFIG
  if(i > 6)
    break;
#endif    
  }


#if WIFI_SMARTCONFIG
  if (WiFi.status() != WL_CONNECTED) {
    WiFi.mode(WIFI_AP_STA);
    WiFi.beginSmartConfig();


    //Wait for SmartConfig packet from mobile
    Serial.println("Waiting for SmartConfig.");
    while (!WiFi.smartConfigDone()) {
      Serial.print(".");
      showText("SmCfg");
      delay(1000);
      mx.clear();
      delay(500);
    }


    Serial.println("");
    Serial.println("SmartConfig received.");


    //Wait for WiFi to connect to AP
    Serial.println("Waiting for WiFi");
    showText("WiFi");
    while (WiFi.status() != WL_CONNECTED) {
      delay(1000);
      Serial.print(",");
    }
    mx.clear();
    delay(500);
  }
  Serial.println("WiFi Connected.");
#endif


  Serial.print("SSID: ");
  Serial.println(WiFi.SSID());
  Serial.print("IP Address: ");
  Serial.println(WiFi.localIP());
}


void setup()
{
  Serial.begin(115200);
  Serial.println("start");


  mx.begin();
  mx.control(MD_MAX72XX::INTENSITY, BRIGHTNESS);
  mx.control(MD_MAX72XX::UPDATE, MD_MAX72XX::ON);
  mx.clear();


  wifiSetup();
  getNTP(); // get current time
}


void showText(char *message) {
  char *p = message;
  uint8_t charWidth;
  uint8_t cBuf[8];  // this should be ok for all built-in fonts
  int sum = -2;


  mx.clear();


  while (*p != '?') {
    charWidth = mx.getChar(*p++, sizeof(cBuf) / sizeof(cBuf[0]), cBuf);


    mx.transform(MD_MAX72XX::TSL);
    mx.transform(MD_MAX72XX::TSL); // double column space
    for (uint8_t i=0; i= 0; i--) {
    mx.control(MD_MAX72XX::INTENSITY, i);
    delay(50);
  }


  showText(txt);


  for(int i = 0; i <= BRIGHTNESS; i++) {
    mx.control(MD_MAX72XX::INTENSITY, i);
    delay(50);
  }


  if(tmtime.tm_hour != prevhour) { // get current time via NTP every 6 hours
    if(tmtime.tm_hour % 6 == 0)
      getNTP();
    prevhour = tmtime.tm_hour;
  }
}

完成

2452d32c-e465-11ed-ab56-dac502259ad0.jpg

將顯示單元安裝到位并插入亞克力板,整個項目就完成了。

via instructables.com/HUD-like-WiFi-Sync-Clock-Transparent-Dot-Matrix-Di/

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

    關注

    48

    文章

    7651

    瀏覽量

    152114
  • led
    led
    +關注

    關注

    242

    文章

    23356

    瀏覽量

    663208
  • 顯示器
    +關注

    關注

    21

    文章

    5010

    瀏覽量

    140408
  • 數字時鐘
    +關注

    關注

    2

    文章

    151

    瀏覽量

    20447
  • ESP32
    +關注

    關注

    18

    文章

    978

    瀏覽量

    17529

原文標題:ESP32 + LED 點陣 DIY 透明面板的數字時鐘

文章出處:【微信號:趣無盡,微信公眾號:趣無盡】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    基于ESP32制造有趣的超級馬里奧主題時鐘

    這是一款超級馬里奧主題的時鐘,基于 ESP32 和彩色點陣制造,非常生動有趣。使用 ESP32 來控制 LED 矩陣。對于沒法自制 PCB
    的頭像 發表于 10-28 11:54 ?4853次閱讀
    基于<b class='flag-5'>ESP32</b>制造有趣的超級馬里奧主題<b class='flag-5'>時鐘</b>

    DIY設計ESP32盾牌

    描述Otto DIY ESP32 盾牌專為 Otto DIY 設計,但可用作任何 ESP32 項目或伺服板PCB
    發表于 08-09 07:37

    LED點陣多功能數字時鐘V2.1版

    0 0730LED點陣多功能數字時鐘V2.1版 20140314.zip
    發表于 12-30 14:03 ?0次下載

    如何使用ESP32和Bluetooth模塊閃爍LED

    在本教程中,將LED的陽極連接到ESP32的p21,LED的陰極連接到ESP32的GND
    的頭像 發表于 10-05 17:50 ?9019次閱讀
    如何使用<b class='flag-5'>ESP32</b>和Bluetooth模塊閃爍<b class='flag-5'>LED</b>

    基于linkboy+ESP32的創意DIY時鐘設計

    以linkboy為編程平臺,創意DIY時鐘數字時鐘、電子日歷、指針式時鐘,想要哪種做哪種!linkboy支持程序仿真,助你無實物也能驗證
    的頭像 發表于 03-14 08:56 ?8179次閱讀
    基于linkboy+<b class='flag-5'>ESP32</b>的創意<b class='flag-5'>DIY</b><b class='flag-5'>時鐘</b>設計

    基于Esp8266的多功能點陣時鐘

    至于我個人的理念就是做一個極簡的點陣時鐘出來, 在擁有更多其他的功能之外,要滿足它最最核心的功能(時鐘,誤差低),其次就是擁有更多的功能,更簡單的交互,再者就是成本要低,希望想自己diy
    的頭像 發表于 05-13 14:38 ?2370次閱讀

    Diy Esp32 Adafruit羽毛Pcb

    電子發燒友網站提供《Diy Esp32 Adafruit羽毛Pcb.zip》資料免費下載
    發表于 07-04 14:37 ?4次下載
    <b class='flag-5'>Diy</b> <b class='flag-5'>Esp32</b> Adafruit羽毛Pcb

    DIY ESP32模塊

    電子發燒友網站提供《DIY ESP32模塊.zip》資料免費下載
    發表于 07-04 14:22 ?8次下載
    <b class='flag-5'>DIY</b> <b class='flag-5'>ESP32</b>模塊

    Diy Esp32 Youtube訂閱者計數器

    電子發燒友網站提供《Diy Esp32 Youtube訂閱者計數器.zip》資料免費下載
    發表于 07-04 14:19 ?4次下載
    <b class='flag-5'>Diy</b> <b class='flag-5'>Esp32</b> Youtube訂閱者計數器

    Diy ESP32智能手表

    電子發燒友網站提供《Diy ESP32智能手表.zip》資料免費下載
    發表于 07-04 11:26 ?5次下載
    <b class='flag-5'>Diy</b> <b class='flag-5'>ESP32</b>智能手表

    DIY ESP32 SPI TFT屏蔽

    電子發燒友網站提供《DIY ESP32 SPI TFT屏蔽.zip》資料免費下載
    發表于 07-12 10:14 ?1次下載
    <b class='flag-5'>DIY</b> <b class='flag-5'>ESP32</b> SPI TFT屏蔽

    Otto DIY ESP32盾牌

    電子發燒友網站提供《Otto DIY ESP32盾牌.zip》資料免費下載
    發表于 07-26 15:04 ?3次下載
    Otto <b class='flag-5'>DIY</b> <b class='flag-5'>ESP32</b>盾牌

    ESP32 Feather實時時鐘開源分享

    電子發燒友網站提供《ESP32 Feather實時時鐘開源分享.zip》資料免費下載
    發表于 12-09 10:05 ?1次下載
    <b class='flag-5'>ESP32</b> Feather實時<b class='flag-5'>時鐘</b>開源分享

    DFRobot Beetle ESP32-C3 DIY運動按鈕 讓你隨時隨地動起來

    鋰離子電池的充電,無需外圍模塊。與其配套的Beetle ESP32-C3擴展板板載DFRobot Gravity接口,可以方便連接蜂鳴器、DFRobot Gravity:數字RGB全彩LED模塊等。 項目
    發表于 12-15 15:16 ?442次閱讀
    DFRobot Beetle <b class='flag-5'>ESP32</b>-C3 <b class='flag-5'>DIY</b>運動按鈕 讓你隨時隨地動起來

    基于Arduino/ESP8266的物聯網點陣時鐘

    時鐘設計了 0-9 的數字,每個數字使用了十個片段,最后通過 WiFi 連接到網絡,實現當前時間顯示的功能。注意:如果使用 Arduino 開發板,則只能顯示動畫,不能顯示時間。如果使用 E
    發表于 12-27 16:39 ?1次下載
    乐九百家乐娱乐城| 百家乐无损打法| 大发888娱乐场怎样下载| 百家乐官网经典路单| 沙龙百家乐官网代理| 百家乐博弈指| 包头市| 百家乐什么叫缆| 棋牌游戏注册送6元| 百家乐官网单机版的| 澳门赌百家乐打法| 湄潭县| 川宜百家乐破解版| 亿博国际| 百家乐稳赢赌法| 百家乐游戏机压法| 六合彩现场报码| 百家乐官网破解秘| 德州扑克中文版| 百家乐官网有多少局| 百家乐打立了| 百家乐官网平玩法lm0| 百家乐看盘技巧| 贵溪市| 百家乐翻天粤qvod| 视频百家乐赌法| 西畴县| 现金百家乐攻略| 宝格丽百家乐官网娱乐城| 迪威百家乐娱乐平台| 网络百家乐官网最安全| 香港百家乐的玩法技巧和规则 | 最好的百家乐官网游戏平台1| 全讯网| 大丰收百家乐官网的玩法技巧和规则| 大发888作弊| 红宝石百家乐官网的玩法技巧和规则 | 百家乐官网风云论坛| 皇家百家乐出租平台| 澳门百家乐官网小游戏| 新大发888娱乐城|