
开源协议
:Public Domain
描述
注:* 为必填项
请在报名阶段填写 ↓
* 1、项目功能介绍
请输入内容…
基于瑞萨MCU做一款多功能电子时钟
还只做了时间基础功能,联网和存储还没做。还没搞明白瑞萨这个单片机
注:主题不限,可以是解决生活/工作中的某个问题、为某个人群/场景设计的方案、毕业设计/课程设计/DIY项目/纯属炫酷项目等。主要讲一下自己通过什么手段解决了什么问题。
*2、项目属性
请输入内容…
首次公开
注:请说明项目是否首次公开;项目是否为原创;项目是否曾经在其他比赛中获奖,若有获奖则叙述获奖详情;项目是否在学校参加过答辩。
* 3、开源协议
请输入内容…
GPL3.0
注:利他即利己,请认真阅读下述内容。
- 拥抱开源,赋予项目无限价值。建议项目核心功能开源80%以上;
- 若某一部分功能不可替代且删掉之后项目无法解决对应的问题,则这一部分实现的功能就是项目的核心功能;比如设计了一台电子负载且设计了一款上位机软件监控功率变化,则电子负载为核心功能,上位机软件为辅助功能;比如电子负载中使用了一款隔离485模块与上位机通信,则此485模块实现的通讯功能为辅助功能;
- 项目应选择适合自己的开源协议,若项目引用其他开源项目,应注明来源并遵循原作者的开源协议规定;原创项目推荐使用GPL3.0开源协议;
- 直接引用开源项目的原电路或原代码实现的功能不可作为自己项目的核心功能、使用市场上通用模块直接实现的功能不可作为自己项目的核心功能。
请在竞赛阶段填写 ↓
*4、硬件部分

显示部分使用的1.69寸SPI LCD,可做丰富的内容显示。

3.3V稳压使用MT3410LB搭建开关电源,并使用ETA6093做锂电管理,该芯片内置升压,可为我后面的WS2812B供电。

温湿度部分使用的AHT10,使用I2C通讯。

板载USB转串口,CH340E。为串口下载和通讯提供方便。

使用ESP-01S做联网获取时钟。功能还没调好。
注:推荐使用嘉立创EDA。若选择其他EDA工具,请在附件上传PDF格式的原理图,PDF格式的PCB图纸,Gerber格式的PCB文件。这里可以详细说明您的项目实现原理和机制、注意事项、调试方法、测试方法等。推荐图文并茂的形式向别人介绍您的想法。
*5、软件部分
使用瑞萨的FSP 3.5生成KEIL MDK工程,在MDK中进行程序开发。主要用到了SPI驱动屏幕,I2C驱动温湿度传感器,串口用于打印LOG,WS2812B部分的灯实现还没做。
void hal_entry(void){ /* TODO: add your own code here */
fsp_err_t err; /* Initialize the IOPORT module and configure the pins * Note: The default pin configuration name in the RA Configuraton tool is g_bsp_pin_cfg */ err = R_IOPORT_Open(&g_ioport_ctrl, &g_bsp_pin_cfg); /* Handle any errors. This function should be defined by the user. */ assert(FSP_SUCCESS == err);
/* Open the transfer instance with initial configuration. */ err = R_SCI_UART_Open(&g_uart0_ctrl, &g_uart0_cfg); assert(FSP_SUCCESS == err); err = R_SCI_UART_Open(&g_uart1_ctrl, &g_uart1_cfg); assert(FSP_SUCCESS == err);
float Nhumidity, Ntemperature; unsigned char buff[] = "RA START\n"; uint8_t buff_len = strlen(buff); HAL_UART_Transmit(buff, buff_len); ST7789_BL_OFF(); sensorAht110_test(); /**********************RTC开启***************************************/ /* Initialize the RTC module*/ err = R_RTC_Open(&g_rtc0_ctrl, &g_rtc0_cfg); // R_RTC_Close(&g_rtc0_ctrl); // /* Handle any errors. This function should be defined by the user. */ assert(FSP_SUCCESS == err);
// /* R_RTC_CalendarTimeSet must be called at least once to start the RTC */ R_RTC_CalendarTimeSet(&g_rtc0_ctrl, &set_time); // // /* Set the periodic interrupt rate to 1 second */ R_RTC_PeriodicIrqRateSet(&g_rtc0_ctrl, RTC_PERIODIC_IRQ_SELECT_1_SECOND);
R_RTC_CalendarAlarmSet(&g_rtc0_ctrl, &set_alarm_time); err = R_RTC_Open(&g_rtc0_ctrl, &g_rtc0_cfg); /* Handle any errors. This function should be defined by the user. */ assert(FSP_SUCCESS == err); uint8_t rtc_second = 0; // 秒 uint8_t rtc_minute = 0; // 分 uint8_t rtc_hour = 0; // 时 uint8_t rtc_day = 0; // 日 uint8_t rtc_month = 0; // 月 uint16_t rtc_year = 0; // 年 uint8_t rtc_week = 0; // 周 rtc_time_t get_time;
// ESP01S_AT_GET_TIME(&set_time); // R_RTC_CalendarTimeSet(&g_rtc0_ctrl, &set_time);
static uint8_t time_ticks_up = 0; ST7789_Init(); HAL_UART_Transmit("Inited lcd\n", sizeof("Inited lcd\n") - 1); ST7789_BL_ON(); DeviceButtonsInit(); Timer_Init(); while (1) { if (rtc_flag) { R_RTC_CalendarTimeGet(&g_rtc0_ctrl, &get_time); // 获取RTC计数时间 rtc_flag = 0; rtc_second = get_time.tm_sec; // 秒 rtc_minute = get_time.tm_min; // 分 rtc_hour = get_time.tm_hour; // 时 rtc_day = get_time.tm_mday; // 日 rtc_month = get_time.tm_mon; // 月 rtc_year = get_time.tm_year; // 年 rtc_week = get_time.tm_wday; // 周 // sprintf(uart_send_buffer, " %d y %d m %d d %d h %d m %d s %d w\n", rtc_year + 1900, rtc_month, rtc_day, rtc_hour, rtc_minute, rtc_second, rtc_week); // HAL_UART_Transmit(uart_send_buffer, sizeof(uart_send_buffer)); // 时间显示 GetSeensorSingle(&Nhumidity, &Ntemperature);// sprintf(uart_send_buffer, "H=%.1f,T=%.1f\r\n", Nhumidity, Ntemperature);// HAL_UART_Transmit(uart_send_buffer, sizeof(uart_send_buffer)); ST7789_WriteString(40, 200, uart_send_buffer, Font_16x26, MAGENTA, BLACK); // BLACK } if (rtc_alarm_flag) { rtc_alarm_flag = 0; // sprintf(uart_send_buffer, "/************************Alarm Clock********************************/\n"); // HAL_UART_Transmit(uart_send_buffer, sizeof(uart_send_buffer)); }
KeyHandler();
HAL_Delay(10); time_ticks_up++; if (time_ticks_up >= 10) { time_ticks_up = 0; if (ClockMode == 0) TimeDateShow(get_time); else if (ClockMode) TimeDateShow(set_time); } }#if BSP_TZ_SECURE_BUILD /* Enter non-secure code */ R_BSP_NonSecureEnter();#endif}
注:若您的项目涉及软件开发,请在附件上传对应的工程源码。这里可以详细说明您的软件流程图、功能模块框图、相关算法的解释或科普、源码结构、编译环境的搭建和配置、源码编译方法、程序烧录方法等。推荐图文并茂的形式向别人介绍您的想法。
*6、BOM清单
请输入内容…

注:项目涉及的BOM清单。这个位置请上传BOM的截图。清单详情请以PDF的格式上传到附件中。建议包括型号、品牌、名称、封装、采购渠道、用途等内容。具体内容和形式应以表达清楚项目构成为准。
*7、大赛LOGO验证

请上传包含大赛logo的项目图片,logo以丝印形式印刷在PCB上面。
点击zip下载大赛logo标识! (大赛标识).zip
* 8、演示您的项目并录制成视频上传
视频要求:请横屏拍摄,分辨率不低于1280×720,格式Mp4/Mov,单个视频大小限100M内;
视频标题:立创电赛:{项目名称}-{视频模块名称};如立创电赛:《自动驾驶》-团队介绍。
更多详情:https://diy.szlcsc.com/posts/15a52db9fd7d40c492eb505280278e45
设计图
未生成预览图,请在编辑器重新保存一次BOM
暂无BOM
克隆工程工程成员
知识产权声明&复刻说明
本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。
请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。


评论