Coder Social home page Coder Social logo

jacycle / lizcubic Goto Github PK

View Code? Open in Web Editor NEW

This project forked from qingehao/lizcubic

0.0 0.0 0.0 11.84 MB

License: GNU General Public License v2.0

Shell 0.59% C++ 0.19% Python 1.00% Perl 0.01% C 90.23% Assembly 3.26% Makefile 0.24% HTML 4.38% CMake 0.02% Batchfile 0.01% Yacc 0.02% Lex 0.01% M4 0.03% RPC 0.02%

lizcubic's Introduction

简介

视频链接:https://www.bilibili.com/video/BV1fr4y1H7NV/

LizCubic借鉴了稚晖君HoloCubic的使用分光棱镜达到伪全息显示的创意所制作的小玩意(异地恋神器)。

在设计上,我只在外壳上借鉴HoloCubic的实现,其硬件以及软件均与其毫无关系,因此本项目的程序并不适用于其他Cubic。

其通过4G蜂窝网络进行网络连接,具备时钟天气显示界面,可显示时间以及当前实时天气以及室外的风向、风力等级、温湿度和外出建议;具备音乐频谱界面,可显示当前环境音频的频谱,频谱的颜色具有渐变效果;具备纪念日界面,可显示当前日期距离目标日期之间的天数,其界面参考了手机端同名APP;具备HeartBeat功能,使的LizCubic(s)可进行联动,表达对远方的他(她)的思念!

外壳结构

与稚晖君不同的地方有四处。

  1. 外壳底部开窗设计,以方便SIM卡的插拔和音频的拾取

  1. 尾部放弃使用TypeC接口直插设计,伸出一段软线+TypeC母口,尾部可使用一个线尾巴,我使用的线尾巴见图。

  1. 尾部开了个正方形槽,以方便4G天线的嵌入。上图尾部带点红色的便为4G天线。

  2. 内部部分区域厚度做了减薄,以为了4G模块的塞入。

关于硬件

LizCubic的硬件与其他Cubic完全不同,区别如下:

  1. 并未采用ESP32作为主控,而是使用STM32F412CEU6。
  2. 采用4G Cat.1的联网方式,基于SIMCOM的A7680C模组实现。
  3. 未使用SD卡,使用的是SPI FLASH芯片,当然这使得图片以及字体资源变得不太方便写入其中。
  4. 添加了音频拾取以及音频放大芯片,麦克风采用AP3722AT模拟硅麦,音频放大芯片采用MAX9814ETD,具备AGC放大功能。
  5. 供电部分,A7680C采用单独的DC-DC 3.8V供电,其余部分采用LDO 3.3V供电,这里需要做好隔离以及纹波控制,不然的话,频谱会有较大干扰。
  6. 4G天线采用的是贴片天线,型号为CrossAir CA-L01,使用该天线注意阻抗匹配,否则信号很差。
  7. 在如此小体积的空间内塞入一个4G模块、一个4G天线还有SIM卡槽,属实比较困难。正因如此才去掉了SD卡槽,换成了nano sim卡槽,另外,特别设计了一块PCB用以连接主板和4G模块,和iPhone的双层主板设计相同,不同的是iPhone的叠层中框采用的是BGA封装设计,我这里考虑成本,使用的是半孔,最终效果十分完美。

软件部分

本项目整体基于RT-Thread进行开发,并使用到了FAL、LittleFs、FlashDB、at_device、jsmn、lvgl、motiondriver、pahomqtt、webclient软件包。

需要注意的是,lcd的spi驱动并未使用官方SPI驱动框架,因为官方的spi驱动在等待数据传输完成的方案上使用的死等的方式,既无法发挥RTOS多任务的优势,也使得lvgl屏幕刷新机制无法得到充分利用。

构建工程

本仓库中未包含项目中使用的软件包,请下载ENV工具后,使用pkgs --update命令下载更新所使用的软件包,而后使用scons --target=mdk5命令构建并生成MDK工程(具体使用方法请移步RT-Thread官网资料中心)。构建完成后即可打开MDK工程文件,本项目推荐使用MDK AC6编译器进行编译,并选择-Os优化等级 和 开启LTO优化,可发挥最大性能。如图所示。

代码修改

  1. 天气API修改

    firmware\LizCubic\config\liz_config.h中修改图中两处地方。天气的获取使用的是一刻天气API,可自行去注册账号,获得这两个值。

  2. at_device软件包修改

    at_deivce中并没有A7680C的原生驱动,但其具有sim76xx的驱动,两者的AT指令稍有差别,需要做一些修改。并且官方的AT SOCKET在多TCP连接的实现上存在漏洞,也需要做一些修改。

    由于修改的地方比较多,我将修改后的文件单独上传到firmware\LizCubic\port\A7680C中,在构建完工程后,替换掉相应文件即可。

  3. MQTT服务器修改

    修改firmware\LizCubic\config\liz_config.h如图所示宏定义为自己的MQTT服务器即可。

代码编译

除了使用MDK进行编译外,可采用GCC进行编译,但需要注意的是,进行FFT计算所用的DSP库,我目前是在MDK的Run-Time Environment中配置的,使用GCC编译的话需要加入相关的文件。

资源文件上传

项目中的资源文件包括字体以及HeartBeat中用到的兔小只的表情,分别在firmware\LizCubic\app\fontsfirmware\LizCubic\app\imgs目录中。这些资源文件存储在SPI FLASH中。

项目中,我已为flash挂载了文件系统,flash中的目录如下图所示。

在成功编译好工程并烧录后,通过USB转串口模块连接串口1(PA9、PA10)到电脑端,电脑端使用Xshell进行连接,便可进入系统shell命令行界面,如图所示。

输入ry /fonts命令后回车,右键终端界面,选择"传输->YMODEM->用YMODEM发送,上传firmware\LizCubic\app\fonts\bin\msyhbd_22_ex.bin文件到flash中。该文件为天气信息所用到的一些汉字。

其余兔小只表情的发送、接收以及跳舞的表情,使用相同方法上传到flash中,命令分别为ry /archerrry /archersry /heart

关于其他

  • 我没想着量产或者拿来卖,只是自己做给女朋友的一件礼物。
  • 教程什么的,上面已经写的蛮详细的了。平时工作较忙,应该没时间出保姆级教程的视频,期待哪位大佬可以分享教程。
  • 硬件不开源主要是害怕,一些人拿着这些直接就去卖了,然后导致满大街均是LizCubic,本来是我给女朋友送的礼物,我想要保持其独一无二性。
  • 最近芯片涨价比较厉害。MCU可以更换为STM32F411CEU6,与F412程序完全相同,只是RAM小了点,但是够用。因为我手头有很多F412,因此才选择了这个。至于其他的MCU,可以哪位大佬自己设计硬件,使用别的方案,例如ESP32等。
  • 很多人说,手机不行么?其实,并不冲突。首先这个作为一个桌面摆件,也还挺好看。其次就像现在的手环、智能手表等,其与手机功能均高度重合,但其仍具有市场,因为其拓展了通知的方式,使得即使忙于工作而无法及时查看手机消息的人以额外的通知方式。但是如果你整天捧着手机,这个确实没啥用......。最后,有种东西叫做仪式感!懂吧!
  • 其他的,大家可以在issue中问我。

支持

如果 LizCubic 解决了你的问题,不妨扫描上面二维码请我 喝杯咖啡~

许可

采用 GPL-2.0 开源协议,细节请阅读项目中的 LICENSE 文件内容。

lizcubic's People

Contributors

qingehao avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.