【电子DIY作品】监控摄像头 + 小安派Cam-D200 + Home Assistant

[复制链接]
查看479 | 回复9 | 2024-7-14 14:52:28 | 显示全部楼层 |阅读模式

1.视频展示

作品的制作背景和制作流程可以见以下 B 站视频:

下面从几个方面来总结下这个作品。

  1. 设备端固件
  2. HA的搭建和接入
  3. 外形设计
  4. 应用扩展

2. 设备端固件

在安信可泽神发布新的小安派Cam-D200固件前,之前发布的固件是AP模式运行的。也就是说设备是作为一个WIFI路由端的,那么想要连接到小安派Cam-D200就必须要把终端设备连接到小安派Cam-D200的WIFI信号上。这就限制了小安派Cam-D200去接入局域网,让其他设备来访问的能力。

鼠鼠就是研究了旧的固件,将原来AP模式,修改成了STATION模式。源码可以从如下的帖子中获取:

小安派CamD200 Station模式 - 小安派Cam - 物联网开发者社区-安信可论坛 - Powered by Discuz! (ai-thinker.com)

主要的设备连接代码如下:

uint8_t wifi_connect(char* ssid, char* passwd)
{
    int ret = 255;
    // struct fhost_vif_ip_addr_cfg ip_cfg = { 0 };
    uint32_t ipv4_addr = 0;
    char* queue_buff = pvPortMalloc(128);
    memset(queue_buff, 0, 128);
    if (NULL==ssid || 0==strlen(ssid)) {
        return 1;
    }
    //先断开WiFi
    if (wifi_mgmr_sta_state_get() == 1) {
        wifi_sta_disconnect();
    }
    printf("WiFi STA connect .....");
    if (wifi_sta_connect(ssid, passwd, NULL, NULL, 0, 0, 0, 1)<0) {
        vPortFree(queue_buff);
        return 4;
    }
    printf("Wating wifi connet");
    //等待连接成功
    sta_ConnectStatus = 0;
    for (int i = 0;i<10*30;i++) {
        vTaskDelay(100/portTICK_PERIOD_MS);
        switch (sta_ConnectStatus) {
            case CODE_WIFI_ON_MGMR_DONE:
                return 3;
            case CODE_WIFI_ON_SCAN_DONE:
                vPortFree(queue_buff);
                return 2;
            case CODE_WIFI_ON_DISCONNECT:   //连接失败(超过了重连次数还没有连接成功的状态)
                return 4;
            case CODE_WIFI_ON_CONNECTED:    //连接成功(表示wifi sta状态的时候表示同时获取IP(DHCP)成功,或者使用静态IP)
                printf("Wating wifi connet OK");
                break;
            case CODE_WIFI_ON_GOT_IP:
                wifi_sta_ip4_addr_get(&ipv4_addr, NULL, NULL, NULL);
                printf("wifi connened %s,IP:%s", ssid, inet_ntoa(ipv4_addr));
                return 0;
            default:
                //等待连接成功
                break;
        }

    }
    vPortFree(queue_buff);
    printf("wifi connened time out!");
    return 14; //连接超时
}



void http_server_task(void *param)
{
    while(wifi_connect("TP-LINK_3F2D", "buyaolianwo") != 0);
    mhttp_server_init();
}

在设备启动时,启动HTTP Server任务,并在里面去连接局域网中的路由器。完整的代码可以去上面的链接去下载。

好巧不巧,泽神也发布了新的固件实现了STATION模式,也修复了硬件上的一些问题。

【小安派-Cam-D200】更快更稳,D200升级啦 - 小安派Cam - 物联网开发者社区-安信可论坛 - Powered by Discuz! (ai-thinker.com)

3. HA的搭建和接入

3.1 HA的搭建

作为一个对智能家居完全不懂的小白,当然时跟着社区的大神们学习,然后自己动手搭建。恰好手边正有一个树莓派4B, 遂使用它来安装HA。安装HA的过程在之前的帖子中分享过:

【记录从零学智能家居】1.树莓派4B上安装HA - 智能家居 - 物联网开发者社区-安信可论坛 - Powered by Discuz! (ai-thinker.com)

搭建是直接使用Docker镜像搭建的,如果手上有不同的硬件也可以去参考如下的链接:

智能家居之旅,第一站:了解 HomeAssistant - 智能家居 - 物联网开发者社区-安信可论坛 - Powered by Discuz! (ai-thinker.com)

树莓派或香橙派安装 Home Assistant - 智能家居 - 物联网开发者社区-安信可论坛 - Powered by Discuz! (ai-thinker.com)

3.2 小安派Cam-D200接入HA

搭建完成后就可以把摄像头接入到HA了。在接入前,鼠鼠还思考着是不是需要修改固件代码,让设备推流到HA上接入。但是当我打开HA的界面的时候发现一个有意思的卡片。

没错!就是这个图片,原来这个图片卡片可以直接去拉去视频流,那么过程就变得很简单了。

Snipaste_2024-06-30_08-17-48.png

把小安派Cam-D200的视频流地址填入即可,就这么简单!

image.png

4. 外形设计

在了解到3D打印之前,经常苦恼自己做的东西就是一块裸露的电路板,没有一点点美感。这次外形的设计思路参考的是B站大佬阿奇的桌面小屏幕的设计思路。

设计主要分成前壳,后壳和支架三个部分:

前壳上的方形空预留给小安派Cam-D200的摄像头;

后壳复杂锁紧PCB电路板,同时中间预留的空间可以正好放进入一下小的锂电池,这样摄像头可以移动使用。

支架的作用主要是在设备放在桌面的时候用来调整摄像头在Z轴上的角度。

image.png

换个角度看一下

image.png

5. 应用扩展

当这个摄像头接入到树莓派,那么和图像相关的应用就都可以挂上钩了。

  1. 接入HA, 手机端可以查看摄像头,和家用的监控摄像头功能一样;
  2. 在树莓派端读入图像,可以运行起来图像识别和检测等,这部分大家可以任意想象;
选择去发光,而不是被照亮
回复

使用道具 举报

bzhou830 | 2024-7-14 14:56:03 | 显示全部楼层
外壳STL文件在这里

CAM200Shell.tar

251 KB, 下载次数: 1

选择去发光,而不是被照亮
回复 支持 反对

使用道具 举报

lovzx | 2024-7-14 17:02:38 | 显示全部楼层
大佬厉害
回复

使用道具 举报

爱笑 | 2024-7-15 08:38:12 | 显示全部楼层
交作业了!
用心做好保姆工作
回复

使用道具 举报

bzhou830 | 2024-7-15 08:40:19 | 显示全部楼层

快去给我的视频一键三连,小美都夸我剪得好
选择去发光,而不是被照亮
回复 支持 反对

使用道具 举报

1084504793 | 2024-7-15 09:21:08 | 显示全部楼层
回复

使用道具 举报

Francisliu | 2024-7-15 11:18:24 | 显示全部楼层
这个真不错
回复 支持 反对

使用道具 举报

月亮上的小熊 | 2024-7-15 17:09:56 | 显示全部楼层
优秀!
回复

使用道具 举报

bzhou830 | 2024-7-22 09:14:10 | 显示全部楼层
选择去发光,而不是被照亮
回复 支持 反对

使用道具 举报

bzhou830 | 2024-7-22 09:16:01 | 显示全部楼层
选择去发光,而不是被照亮
回复 支持 反对

使用道具 举报

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

本版积分规则