啃小安派代码-12-小安派 AiPi-KVM

[复制链接]
查看1056 | 回复5 | 2023-12-15 11:38:54 | 显示全部楼层 |阅读模式
本帖最后由 ckdsx.cn 于 2023-12-15 11:38 编辑

工程目录:AiPi-Open-Kits/ AiPi-KVM
文件目录:AiPi-Open-Kits/ AiPi-KVM / main / main.c



AiPi-KVM 三进一出切换器概述
AiPi-KVM 是一款三进一出的HDMI+USB的切换器,可以让一个显示器在三台主机中切换其中一台主机,同时会把KVM上的USB设备(键盘鼠标等)也切换到目标主机当中。 这个设备方便开发人员在只有一台显示器且有3台电脑主机的情况下使用。
1.jpg
目前,这个源码只实现了使用按键进行切换主机,M61模组支持WiFi+BLE,所以它能够开发出更多的远程切换方式,比如可以通过在AiPi-DSL_Dashboard 工程添加一个控制页面,并开启一个TCP服务器,AiPI-KVM开发一个TCP客户端功能连接上AiPi-DSL_Dashboard 之后就能实现快捷控制。
使用方法1.连接
AiPi-KVM 需要额外接入供电口,因为USB和HDMI的5V足以为整个板子供电
AiPi-KVM 拥有众多接口,而其中有三组输入: HDMI1+USB1、HDMI2+USB2、HDMI3+USB3,它们每组是成对接入同一台主机。所以你需要准备一根HDMI线和Type-C USB数据线。
2.jpg
除此之外,HDMI的输出和键盘鼠标的接入可以参考概述中的示意图。
2.切换板载的三个轻触按键,分别对应了三个主机的选择:[td]
按键序号
HDMI通道
USB通道
S3
HDMI1
USB1
S4
HDMI2
USB2
S5
HDMI3
USB3
例如,当按下S3时,HDMI的输出及键盘鼠标会同时切换到第一台主机上,屏幕显示第一台主机的页面。
3.掉电储存AiPi-KVM 可以存储当前设置的通道,所以当AiPi-KVM 重新启动时,可以自动设置掉电前的最后的通道。4.一些想法
AiPi-KVM 使用Ai-M61-32S做切换控制,WiFi6+BLE5.3拥有强大的无线传输能力,所以它能够实现无线的控制,你可以用它连接之前AiPi-DSL_Dashboard ,或者使用App控制切换,这样,你就可以给它设计一个外壳,不需要按键就能做到切换PC。
编译和烧录1.烧录接线
3.jpg

AiPi-KVM 设计紧凑,因此没有把TTL芯片电路设计进去,因此,需要使用TTL工具连接烧录接口:
[td]
烧录接口
TTL工具
3V3
3.3V
RX
TXD
TX
RXD
GND
GND
main 工程代码:
--------------------------------------------------
/**
* @file main.c
* @author your name (you@domain.com)
* @brief
* @version 0.1
* @date 2023-08-22
*
* @copyright Copyright (c) 2023
*
*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <FreeRTOS.h>
#include <task.h>
#include "board.h"
#include "log.h"
#include "mem.h"
#include "kvm_dev.h"
#include "easyflash.h"
#include "bflb_mtd.h"
#include "StateMachine.h"
#define DBG_TAG "MAIN"

static int bl61x_get_heap_size(void)
{
    struct meminfo info1 = { 0 };
    struct meminfo info2 = { 0 };
    uint32_t total_free_size = 0;
    // return xPortGetFreeHeapSize();

    bflb_mem_usage(KMEM_HEAP, &info1);
    bflb_mem_usage(PMEM_HEAP, &info2);

    total_free_size = info1.free_size;
    LOG_F("[%s:%d]heap_size------->KMEM_HEAP=%d  PMEM_HEAP=%d", DBG_TAG, __LINE__, info1.free_size, info2.free_size);
    return total_free_size;
}
static void bl61x_show_heap_size_task(void* arg)
{
    while (1) {
        bl61x_get_heap_size();
        vTaskDelay(3000/portTICK_PERIOD_MS);
    }
}

int main(void)
{
    board_init();
    bflb_mtd_init();
    easyflash_init();
    aipi_kvm_dev_init();
    xTaskCreate(bl61x_show_heap_size_task, (char*)"heap", 512, NULL, 2, NULL);
    StateMachineTask_start();
    vTaskStartScheduler();
}

[td]


回复

使用道具 举报

干簧管 | 2023-12-15 12:03:35 | 显示全部楼层
回复

使用道具 举报

1084504793 | 2023-12-15 12:44:09 | 显示全部楼层
学到了
回复

使用道具 举报

爱笑 | 2023-12-15 15:06:32 | 显示全部楼层
用心做好保姆工作
回复

使用道具 举报

san | 2023-12-15 23:56:42 | 显示全部楼层
学到了
回复

使用道具 举报

这个工程现在没有了吗
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则