<!--[toc]-->
3周了,时间过得真快,已经两周没有发周记文章记录了...
这三周主要是在忙:智慧小窗!?算是个主线吧... 因为这项大概占满了3周的安排,它有论文、PCB、原理图、固件代码、上位机代码等等...
还有一些其他事(TFT裸屏拓展引脚PCB、智能家居课程的考试准备等),大概讲一下吧。

智慧小窗

一个主线,我的毕业设计,可以实现集成信息的显示、电脑硬件信息的监控、辅助控制的终端设备(新)

原理图、PCB、实物

原理图其实非常简单,一个电池管理芯片,主要为了让小屏脱离线的束缚,使用锂电池可以实现充放电。原理图:
PCB:
焊接后实物:

说明:目前锂电池选用的是双引脚的,并不带电量检测,所以充电电满的绿色亮灯没有用...到时候改电量显示的话,原理图PCB都要改,加入计划。

上位机

上位机用于控制小屏设备的运行模式。使用TCP建立通信连接,发送对应设定好的报文即可。
新增了一个辅助控制模式,可以使用小屏上的按键实现控制电脑设备,利用上位机。
界面如图:

虽然可以达到目标,但是本设计还是存在一些问题:通信从发送到接受,分析到执行,时间非常大,延迟非常严重,最高达4秒钟。慢慢优化吧。
而且目前辅助模式上位机仅支持3个控制功能,日后会逐渐根据需要逐渐增加。加入计划。

固件软件

固件 也针对比较废物的按钮做了改进,可以识别6种模式(单击、双击、长击、双长击、短-长击、长-短击),可以配合上面的上位机实现控制电脑设备的操作了!

识别按键部分代码:

    // 按键读取版本2 支持长按检测、双击等
    if (digitalRead(D8) == 1)
        Button_count++;
    else
    {
        if (Button_count != 0)
        {
            if (Button_count <= 4)
            {
                Button_VS[Button_i++] = OneCilck;
                Button_EndCount = 0;
                Button_i = Button_i % 2;
            }
            else if (Button_count > 4)
            {
                Button_VS[Button_i++] = LongOneCilck;
                Button_EndCount = 0;
                Button_i = Button_i % 2;
            }

            Button_Endflag = 1;
        }
        Button_count = 0;
        if (Button_Endflag == 1)
        {
            Button_EndCount++;
            if (Button_EndCount >= 5)
            {
                Button_EndCount = 0;
                Button_Endflag = 0;
                if (Button_VS[1] == NoClick)
                    Button_D8 = Button_VS[0];
                else if (Button_VS[0] == OneCilck && Button_VS[1] == OneCilck)
                    Button_D8 = DoubleCilck; //双短击
                else if (Button_VS[0] == LongOneCilck && Button_VS[1] == LongOneCilck)
                    Button_D8 = LongDoubleCilck; //双长击
                else if (Button_VS[0] == OneCilck && Button_VS[1] == LongOneCilck)
                    Button_D8 = SL; //短长击
                else if (Button_VS[0] == LongOneCilck && Button_VS[1] == OneCilck)
                    Button_D8 = LS; //长短击

                sprintf(Button_Testbuffer, "Button_VS: %d,%d", Button_VS[0], Button_VS[1]);
                Serial.println(Button_Testbuffer);
                Button_VS[0] = 0;
                Button_VS[1] = 0;
                Button_i = 0;
            }
        }
    }

上面的代码出现在定时器中,定时器设置间隔为0.1秒。


智能家居

智能家居是主线课程,需要重视一下。
协调器、房间板都使用了CC2530芯片利用ZigBee通信起到控制设备的目的。
房间板使用继电器来控制大功率电器的开合。
其实挺简单的,考试就改改报文格式、解析代码、通信通道、波特率。


TFT裸屏拓展引脚PCB

这是个支线?,TFT2.4寸裸屏是在暑假买的,到现在 才点亮使用,主要是暑假一直在兼职。
PCB等请转到ESP32开发版 SPI接口查询记录

接下来 我会继续优化显示效果的,目前只可以点亮屏幕,并且使用测试了一些tft库的示例。