数码之家

标题: 我也来玩网上爆火的9.9包邮合宙luatOS ESP32-C3开发板,做了一个网络时钟 [打印本页]

作者: hzy3774    时间: 2022-5-19 17:08
标题: 我也来玩网上爆火的9.9包邮合宙luatOS ESP32-C3开发板,做了一个网络时钟
本帖最后由 hzy3774 于 2022-5-19 17:08 编辑

斥资9.9,买了一块开发板来做个实时时钟:
[attach]1494756[/attach]

1. 现在玩Arduino成本越低了,特别是乐鑫推出了ESP32-C3芯片,价格比原来的ESP32便宜,
但是保留了有用的2.4G WiFi和低功耗蓝牙功能,可谓简单实用


2. 基于此芯片,合宙推出了现在爆火的LuatOS 核心板,投资9.9元,再找一根typec线,就可以开始开发了

3. 板载外设有2颗LED灯珠,可以用来验证单片机是否正常运行,其他IO可以通过焊接排针引出。
当然,如果嫌这样的外设太过简陋,可以再投资9.9,就可以加一块豪华LCD+摇杆外设扩展板



[attach]1494776[/attach]
4. 开发板相关详细资料在这里有介绍:
https://wiki.luatos.com/chips/esp32c3/board.html

5. 再来张合照,板子做工不错,结构也合理
[attach]1494654[/attach]

6. 接下来就进入了激动人心的写代码环节,
合宙他们自己搞了个Lua的开发环境,可以参考他们的文档
https://wiki.luatos.com/index.html
比如他们的点灯 Demo
  1. PROJECT = "gpiodemo"
  2. VERSION = "1.0.0"

  3. -- 一定要添加sys.lua !!!!
  4. local sys = require "sys"

  5. sys.taskInit(
  6.     function()
  7.         -- 开发板上的2个LED
  8.         local LED_D4 = gpio.setup(12, 0)
  9.         local LED_D5 = gpio.setup(13, 0)
  10.         while 1 do
  11.             LED_D4(0)
  12.             LED_D5(1)
  13.             sys.wait(500)
  14.             LED_D4(1)
  15.             LED_D5(0)
  16.             sys.wait(500)
  17.             log.info("main", "code", "https://gitee.com/dreamcmi/LuatOS-ESP32")
  18.             log.info("main", "wiki", "https://wiki.luatos.com")
  19.         end
  20.     end
  21. )

  22. -- 用户代码已结束---------------------------------------------
  23. -- 结尾总是这一句
  24. sys.run()
  25. -- sys.run()之后后面不要加任何语句!!!!!
复制代码


7. 然而对于熟悉了ESP32 Arduino开发的用户来说,用C++代码开发也是可以的
比如使用Arduino IDE,或者PlatformIO,我比较习惯Platform IO,因为操作简单,

只需要下载个VSCode,右键打开工程,刷新之后,就可以自动装好各种编译器插件和下载工具。
VSCode下载地址:https://code.visualstudio.com/

先来个点灯程序吧(下载个VSCode打开即可)

[attach]1494678[/attach]
[attach]1494672[/attach]

8. 接下来就搞个时钟程序,首先要配个WiFi网,然后从网络上获取时间
配网就简单点吧,用SDK自带的SmartConfig来配置:

  1. WiFi.beginSmartConfig();
复制代码
[attach]1494751[/attach]

9. SmartConfig配网使用很简单,手机上下载个ESPTouch就可以玩了。
连上WiFi网络,就可以玩其他网络功能了,比如实时显示时间。
附上代码(VSCode打开即可)
[attach]1494749[/attach]
关键代码:
  1. struct tm info;
  2.   getLocalTime(&info);
  3.   strftime(buf, 32, "%T", &info);
  4.   tft.fillScreen(TFT_BLACK);
  5.   tft.setTextColor(TFT_CYAN);
  6.   tft.drawCentreString(buf, 80, 10, 4);
  7.   strftime(buf, 32, "%F", &info);
  8.   tft.setTextColor(TFT_PINK);
  9.   digitalWrite(PIN_LED1, HIGH);
  10.   tft.drawCentreString(buf, 80, 50, 2);
  11.   digitalWrite(PIN_LED1, LOW);
复制代码
10. 这样子,我们要的网络实时时钟就显示出来了,然而,LCD显示驱动,我还没说,因为我直接用的TFT_eSPI库。[attach]1494778[/attach]
这个LCD是80x160的全彩屏,驱动为ST7735,Arduino下多亏
TFT_eSPI的加持,我们就不需要去研究驱动了,把端口和相关参数配置好,
就可以开始显示了,引脚定义如下:
  1. #define TFT_MISO -1
  2. #define TFT_MOSI 3
  3. #define TFT_SCLK 2
  4. #define TFT_CS    7  // Chip select control pin
  5. #define TFT_DC    6  // Data Command control pin
  6. #define TFT_RST   10  // Reset pin (could connect to RST pin)
  7. #define TFT_BL   11  // LED back-light
复制代码

至此,我相信坛友们已默默打开PDD下了一单,毕竟这点私房钱还是有的





作者: hzy3774    时间: 2022-5-19 17:14
本帖最后由 hzy3774 于 2022-5-19 17:23 编辑

用ESP IDF开发也是可以的,加个IDF点灯程序
全部代码也可从GitHub下载吧,附件好像没法弄成免费
https://github.com/zhuhai-esp/ESP32-C3-LuatOS

作者: jpdd521    时间: 2022-5-19 17:19
hzy3774 发表于 2022-5-19 17:14
用ESP IDF开发也是可以的,加个IDF点灯程序

好评,吃灰的C3已点亮。。。
作者: jpdd521    时间: 2022-5-19 17:24

期待大佬带着一起玩
[attach]1494822[/attach]


激光定制亚克力面板带金属外壳,10元包邮山东省内及周边非偏远 - 积分商城 数码之家 (mydigit.cn)

作者: oliveren    时间: 2022-5-19 18:58
不错,标记。
作者: ww5223017240    时间: 2022-5-19 19:11
最近准备返祖做GPS时钟,骑车用,WIFI的晚点再搞,毕竟WIFI环境下不缺正经时钟
作者: 触景情伤    时间: 2022-5-19 23:10
ww5223017240 发表于 2022-5-19 19:11
最近准备返祖做GPS时钟,骑车用,WIFI的晚点再搞,毕竟WIFI环境下不缺正经时钟 ...

大佬研究一下GPS定位器里面的GPS模块怎么玩…
作者: 触景情伤    时间: 2022-5-19 23:11
这个C3资料太少了……
作者: ww5223017240    时间: 2022-5-20 00:03
触景情伤 发表于 2022-5-19 23:10
大佬研究一下GPS定位器里面的GPS模块怎么玩…

很多都是直接串口通信的啊,我拆的两个就是,正准备拿来做时钟呢
作者: 触景情伤    时间: 2022-5-20 01:04
ww5223017240 发表于 2022-5-20 00:03
很多都是直接串口通信的啊,我拆的两个就是,正准备拿来做时钟呢

你试一下,我用串口接收数据出来的都是乱码…
作者: ww5223017240    时间: 2022-5-20 03:22
触景情伤 发表于 2022-5-20 01:04
你试一下,我用串口接收数据出来的都是乱码…

码率没选对?这两天有空试试
作者: qrut    时间: 2022-5-20 06:56
这个9块9比平头哥806可玩性都高,早前7块多撸了w806,现在竟然无耻的涨价了~

[attach]1495311[/attach]

作者: mengfc    时间: 2022-5-20 08:23
这个ESP32确实很便宜,做工看起来还很好,就是手头已经有多个ESP8266和ESP32在吃灰呢,一直犹豫是否再买一个,或许会继续吃灰。感觉买电子器件有点像女人买衣服,经常是买来就闲置吃灰!
作者: plmm8318    时间: 2022-5-20 10:21
确实便宜,很有买来玩的冲动,但一想到没时间折腾,想想还是算了
作者: 网络孤客    时间: 2022-5-20 10:40
支持,希望大佬带我玩。
这板这屏的确好玩好用
而且带5维按键
作者: by64214    时间: 2022-5-20 10:53
确实便宜,买来玩  谢谢分享 学习一下
作者: ckvlhf    时间: 2022-5-20 14:40
撸了一套,不为别的,便宜。
作者: 触景情伤    时间: 2022-5-20 17:25
ww5223017240 发表于 2022-5-20 03:22
码率没选对?这两天有空试试

9600-115200这些都试一遍了,不知道是不是特殊的波特率…开机只发送一次乱码…
作者: liebedemi    时间: 2022-5-20 19:16
先加购了,解封了就买
作者: ww5223017240    时间: 2022-5-20 19:29
触景情伤 发表于 2022-5-20 17:25
9600-115200这些都试一遍了,不知道是不是特殊的波特率…开机只发送一次乱码… ...

是不是没开啊?有些模块带软开关的。RX,TX交换试过吗?
作者: 桃源客    时间: 2022-5-20 20:21
多谢分享。终于把不多的私房钱。掏了19.8元大洋,买了一块开发核心板和一块屏幕扩展板。跟着资料玩一下。
作者: 触景情伤    时间: 2022-5-20 20:40
ww5223017240 发表于 2022-5-20 19:29
是不是没开啊?有些模块带软开关的。RX,TX交换试过吗?

试过了,就是复位上电开机后只发送一次数据…
作者: wpll    时间: 2022-5-21 01:06
mengfc 发表于 2022-5-20 08:23
这个ESP32确实很便宜,做工看起来还很好,就是手头已经有多个ESP8266和ESP32在吃灰呢,一直犹豫是否再买一 ...

不许说实话 我买的东西基本没有用上的 都吃灰呢

作者: njchenmin    时间: 2022-5-21 06:05
有时间整一块玩玩
作者: yang_alex    时间: 2022-5-21 22:29
想到没时间折腾,还是算了。
作者: 桃源客    时间: 2022-5-23 06:59
本帖最后由 桃源客 于 2022-5-23 07:02 编辑

也入手了一个,到货后抄下楼主代码
作者: junyee    时间: 2022-5-23 09:05
触景情伤 发表于 2022-5-19 23:11
这个C3资料太少了……

ESP 其实资料不算少的。

用了idf 不用太多考虑硬件。
不过遇到坑还是要拉官方的 参考、数据手册的。

从手册的用心程度来说我认为是国产第一了。

作者: 网络孤客    时间: 2022-5-23 12:55
半夜,突然听见一声怪异的声音
我从床上小心的滚到地上,
慢慢的爬到杂物间
在一堆灰中扒了几下
找到了合宙luatOS ESP32-C3开发板
轻轻的吹了一下,灰尘扬满屋子
打开手提,幽幽的蓝光闪了片刻
进入了大名鼎鼎的windows操作系统
用Google Chrome打开数码之家
找到“[Arduino] 我也来玩网上爆火的9.9包邮合宙luatOS ESP32-C3开发板,做了一个网络时钟”帖子
下载了原代码,打开vscode
一段段信息迅速滚动后,编译成功了
把固件烧录进luatOS ESP32-C3
连上电源
上面显示
02:34:12
2022-05-23

减去前面用时,估计怪声发出的时间是
02:14

作者: sunbester    时间: 2022-5-27 17:49
9.9+9.9才能玩起来?
作者: apnic    时间: 2022-5-28 18:06
请教一下这是怎么回事?
  1. ESP-ROM:esp32c3-api1-20210207
  2. Build:Feb  7 2021
  3. rst:0x1 (POWERON),boot:0xf (SPI_FAST_FLASH_BOOT)
  4. SPIWP:0xee
  5. mode:DIO, clock div:2
  6. load:0x3fcd6100,len:0x38c
  7. load:0x403ce000,len:0x6a8
  8. load:0x403d0000,len:0x2358
  9. SHA-256 comparison failed:
  10. Calculated: 4bd624aff3257f126bd68f521ac53163cd7fe48cae8d3a77a847ef36aa76ad41
  11. Expected: 2dd871cd993fccdf87b5ef3c78d949bd29ad8f4d97ecb130ff4297267fa0ddbe
  12. Attempting to boot anyway...
  13. entry 0x403ce000
  14. Hello ESP32C3!!
  15. [  1367][E][WiFiSTA.cpp:322] begin(): connect failed! 0x300a
复制代码

作者: 玛德陛下    时间: 2022-5-28 23:46
真是便宜啊
作者: rogerllg    时间: 2022-5-30 08:49
不错,不错~价格也便宜
作者: aacyxjz    时间: 2022-5-30 13:12
竟然有屏幕了哈哈,加分支持
作者: 终结的人工    时间: 2022-5-30 14:47
价格实惠,打算入手
作者: yang_alex    时间: 2022-5-30 23:23
之前已经下单了,结果发现是上海发货。又赶紧取消了。
作者: 桃源客    时间: 2022-5-30 23:46
本帖最后由 桃源客 于 2022-5-30 23:52 编辑

花了两三天时间,安装了无数次,百度了几十篇技术资料,看了上百次BILIBILI视频,才把vscode+PlatformIO开发环境搭建好,其中的艰辛,折腾非常难受,真的一言难尽!但是总体用起来比ARDUNOIDE开发环境好多了。就是安装非常难。
代码还看不懂,抄了楼主的改了一下,显示字号和颜色。
作者: firseve    时间: 2022-5-31 11:37
我看还有个9.9的北斗gps模块 这个可以研究下
作者: firseve    时间: 2022-5-31 11:39
wpll 发表于 2022-5-21 01:06
不许说实话 我买的东西基本没有用上的 都吃灰呢

谁还没有一俩箱的吃灰板
作者: hzy3774    时间: 2022-5-31 14:07
桃源客 发表于 2022-5-30 23:46
花了两三天时间,安装了无数次,百度了几十篇技术资料,看了上百次BILIBILI视频,才把vscode+PlatformIO开发 ...

不错,其实打开项目的话简单,右键用vscode打开项目就可以了,只是第一次打开的话缺少相关库文件,更新可能需要等很久,都是网络的锅
作者: l50211    时间: 2022-5-31 17:37
突然觉得自己啥都不会了
作者: lunerlee    时间: 2022-6-1 18:29
楼主能用这个输出到数码管吗?
这样数字大点,能当时钟用
作者: hzy3774    时间: 2022-6-1 22:56
lunerlee 发表于 2022-6-1 18:29
楼主能用这个输出到数码管吗?
这样数字大点,能当时钟用

可以啊,有硬件的话排线连接一下可以的

作者: lunerlee    时间: 2022-6-2 08:29
hzy3774 发表于 2022-6-1 22:56
可以啊,有硬件的话排线连接一下可以的

我对编程还不懂,不知道如何将时间信息输出,通过何种芯片解码,然后驱动数码管
作者: xjb1783    时间: 2022-6-3 17:15
EEPROM.h
不储存
有朋友遇到吗?
作者: xjb1783    时间: 2022-6-3 17:16
#include "WiFi.h"
#include "EEPROM.h"
#define LENGTH(x) (strlen(x) + 1)   // 增量为 char 字符串的长度
#define EEPROM_SIZE 200             // EEPROM 大小定义为
#define WiFi_rst 0                  //启动按钮来重置 Wi-Fi 凭据设置
String ssid;                        // SSID 的字符串变量。
String pss;                         // 密码  的字符串变量。
unsigned long rst_millis;

void setup() {
  Serial.begin(115200);             //波特率初始化串行通信。
  pinMode(WiFi_rst, INPUT);         //WiFi_rst 引脚设置为输入引脚。
  if (!EEPROM.begin(EEPROM_SIZE)) { // 初始化 EEPROM。
    Serial.println("failed to init EEPROM");
    delay(1000);
  }
  else
  {
    ssid = readStringFromFlash(0); // Read SSID stored at address 0
    Serial.print("SSID = ");
    Serial.println(ssid);
    pss = readStringFromFlash(40); // Read Password stored at address 40
    Serial.print("psss = ");
    Serial.println(pss);
  }

  WiFi.begin(ssid.c_str(), pss.c_str());

  delay(3500);   // Wait for a while till ESP connects to WiFi

  if (WiFi.status() != WL_CONNECTED) // if WiFi is not connected
  {
    //Init WiFi as Station, start SmartConfig
    WiFi.mode(WIFI_AP_STA);
    WiFi.beginSmartConfig();

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

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

    //Wait for WiFi to connect to AP
    Serial.println("Waiting for WiFi");
    while (WiFi.status() != WL_CONNECTED) {
      delay(500);
      Serial.print(".");
    }

    Serial.println("WiFi Connected.");

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

    // read the connected WiFi SSID and password
    ssid = WiFi.SSID();
    pss = WiFi.psk();
    Serial.print("SSID:");
    Serial.println(ssid);
    Serial.print("PSS:");
    Serial.println(pss);
    Serial.println("Store SSID & PSS in Flash");
    writeStringToFlash(ssid.c_str(), 0); // storing ssid at address 0
    writeStringToFlash(pss.c_str(), 40); // storing pss at address 40
  }
  else
  {
    Serial.println("WiFi Connected");
  }
}

void loop() {
  // put your main code here, to run repeatedly:
  rst_millis = millis();
  while (digitalRead(WiFi_rst) == LOW)
  {
    // Wait till boot button is pressed
  }
  // check the button press time if it is greater than 3sec clear wifi cred and restart ESP
  if (millis() - rst_millis >= 3000)
  {
    Serial.println("Reseting the WiFi credentials");
    writeStringToFlash("", 0); // Reset the SSID
    writeStringToFlash("", 40); // Reset the Password
    Serial.println("Wifi credentials erased");
    Serial.println("Restarting the ESP");
    delay(500);
    ESP.restart();            // Restart ESP
  }
}


void writeStringToFlash(const char* toStore, int startAddr) {
  int i = 0;
  for (; i < LENGTH(toStore); i++) {
    EEPROM.write(startAddr + i, toStore[i]);
  }
  EEPROM.write(startAddr + i, '\0');
  EEPROM.commit();
}


String readStringFromFlash(int startAddr) {
  char in[128]; // char array of size 128 for reading the stored data
  int i = 0;
  for (; i < 128; i++) {
    in[i] = EEPROM.read(startAddr + i);
  }
  return String(in);
}

作者: yuanhs_2008    时间: 2022-6-4 00:16
看起来不错,有空试试看看
作者: eagler8    时间: 2022-6-5 05:25
看了你的帖子,觉得不错,也买了一套,正在路上.......
作者: hewayking    时间: 2022-6-23 16:16
桃源客 发表于 2022-5-30 23:46
花了两三天时间,安装了无数次,百度了几十篇技术资料,看了上百次BILIBILI视频,才把vscode+PlatformIO开发 ...

VSCode怎么导入下载楼主的文件       怎么下载下载文件后缀是啥      
作者: gl542400    时间: 2022-6-23 18:49
又心动的吃灰东西  stm32当年POS机搞了几个没用 现在涨天价了
作者: wpll    时间: 2022-6-24 00:28
有没有大神给我写个程序  3264的双色屏 LED时钟 带 公历农历星期显示 用单片机驱动 3213的那个时钟芯片 外加GPS和WiFi对时
我有几个LED屏 想用上 只是现在我在船上 我得下船后才能用
如果有现成的更好了 我搜了几次都没找到
以前买过一个 人的 但是找不到了 时间长了

作者: shadow1988    时间: 2022-7-7 20:55
xjb1783 发表于 2022-6-3 17:16
#include "WiFi.h"
#include "EEPROM.h"
#define LENGTH(x) (strlen(x) + 1)   // 增量为 char 字符串的长 ...

arduinoIDE代码编译没问题,正常上传了,但是显示屏只亮着背光,没有显示,大佬能否解释下程序,新手实在看不懂,太吃力,感谢
作者: wdy298    时间: 2022-7-8 10:41
对网络这一块还是不熟悉
作者: xktx09    时间: 2022-7-8 13:55
不错的屏幕
作者: 走来走去2003    时间: 2022-7-8 15:45
不小心点了下附件,就被扣了55分,额,,,
作者: hzy3774    时间: 2022-7-8 17:53
走来走去2003 发表于 2022-7-8 15:45
不小心点了下附件,就被扣了55分,额,,,

这个没法设置免费,去git免费下吧
作者: yanjian    时间: 2022-7-8 21:00
这玩意竟然涨价了!
作者: whjwnavy    时间: 2022-7-8 21:27
这个开发板可以当普通的ESP32开发板用吗?可以编译烧录乐鑫官方的固件吗?
作者: whjwnavy    时间: 2022-7-8 21:28
这个开发板可以当普通的ESP32开发板用吗?可以编译烧录乐鑫官方的固件吗?
作者: shaozongzongde    时间: 2023-1-3 20:25
小白问下arduinoIDE里面硬件选esp32哪一个呢

作者: shaozongzongde    时间: 2023-1-3 20:45
arduinoIDE里面硬件选esp32哪一个呢
作者: lmn2005    时间: 2023-1-11 13:31
ww5223017240 发表于 2022-5-19 19:11
最近准备返祖做GPS时钟,骑车用,WIFI的晚点再搞,毕竟WIFI环境下不缺正经时钟 ...

大佬,弱弱的问一下,GPS模块是不是只适用于室外,室内可以用吗?
作者: gwk    时间: 2024-1-20 16:11
大佬,为啥我用ESPtouch连不上wifi啊,啥反应没有直到超时。。。
作者: njchenmin    时间: 2024-3-24 07:58
不错呀,就是环境不好搭
作者: sjh_7366    时间: 2024-3-26 16:18
不错!!!




欢迎光临 数码之家 (https://www.mydigit.cn/) Powered by Discuz! X3.4