发帖
12 0 0

【电子DIY作品】进入微观的世界,BW21-CBV 电子显微镜

bzhou830
论坛元老

84

主题

1832

回帖

1万

积分

论坛元老

积分
16620
电子DIY 1092 12 2025-10-26 09:06:43

1. 前言🤖

自从孩子上小学后,天天问各种让我回答不上来的奇怪的问题。最近又迷恋上用放大镜到处找东西观察,而且还对放大到更大的微观世界想进行观察👀。

我无意中说显微镜可以观察到细胞,他就开始让我给他搞一个显微镜😢。贫困的家庭显然不能斥巨资去购买那么高端的设备😊。好在有大佬已经DIY制作了显微镜,成本还相当可观💕。

打印组装完成后使用发现不是特别的方便😂,眼睛盯着镜头看,手需要调整目镜和玻片的位置,想观察到一个比较好的“相”相当的麻烦。特别是还想把观察到的“相”拍照保存下来就更加的麻烦🤦‍♀️。

84b27942590a26cd0e862eba794ccedd.jpg

于是我想到了使用摄像头安装在镜头的前端,PC端显示呈现的“相”,这样保存也方便,观察也方便了。🤞。

2. 方案选择🐱‍🚀

最开始尝试的是使用小安派Cam-D200, 它的体积足够的小巧。在实际试验时感觉到它的帧率当比

BW21-CBV差了不少。遂选择使用BW21-CBV。🎉

有了这个基础,就可以考虑把镜头安装在目镜的位置了。

3. 镜头安装🙌

首先设计一个简单的套筒把BW21-CBV的镜头固定住,这样方便BW21-CBV和目镜进行固定连接。

image.png

随后就是确定目镜和摄像头的位置。设计一个下方的卡口和目镜进行固定,卡口的边缘刚好和目镜挂接。

image.png

开启3D打印机把这两个结构件制造出来。

image.png

目镜和结构件进行组装。

image.png

至此,目镜和摄像头就安装好了。

4. 代码配合

PC端为了自己可以处理图像,编写python代码来对视频流进行捕获,并显示出来😊。当然,也可以后面来进行细胞计数等高级的玩法。

import cv2
# 设置 RTSP URL
RTSP_URL = 'rtsp://192.168.68.204:554'

# 创建 VideoCapture 对象
cap = cv2.VideoCapture(RTSP_URL, cv2.CAP_FFMPEG)
# 检查是否成功打开 RTSP 流
if not cap.isOpened():
   print('Cannot open RTSP stream')
   exit(-1)
# 循环读取帧并显示
while True:
   ret, frame = cap.read()
   if not ret:
       break
   frame = cv2.resize(frame, (800,600))
   cv2.imshow('RTSP stream', frame)
   if cv2.waitKey(1) == 27: # 按下 ESC 键退出
       break
# 释放资源
cap.release()
cv2.destroyAllWindows()

image.png

BW21-CBV的代码参考example中的video-only进行修改。

#include "WiFi.h"
#include "StreamIO.h"
#include "VideoStream.h"
#include "RTSP.h"

#define CHANNEL 0  // Channel 0 : 1920 x 1080 30FPS H264

VideoSetting config(CHANNEL);
RTSP rtsp;
StreamIO videoStreamer(1, 1);    // 1 Input Video -> 1 Output RTSP

char ssid[] = "JDC_great_5G";
char pass[] = "buyaolianwo789";
int status = WL_IDLE_STATUS;

void setup()
{
    Serial.begin(115200);

    // attempt to connect to Wifi network:
    while (status != WL_CONNECTED) {
        Serial.print("Attempting to connect to WPA SSID: ");
        Serial.println(ssid);
        status = WiFi.begin(ssid, pass);

        // wait 2 seconds for connection:
        delay(2000);
    }

    // Configure camera video channel with video format information
    // Adjust the bitrate based on your WiFi network quality
    // config.setBitrate(2 * 1024 * 1024);     // Recommend to use 2Mbps for RTSP streaming to prevent network congestion
    Camera.configVideoChannel(CHANNEL, config);
    Camera.videoInit();

    // Configure RTSP with identical video format information
    rtsp.configVideo(config);
    rtsp.begin();

    // Configure StreamIO object to stream data from video channel to RTSP
    videoStreamer.registerInput(Camera.getStream(CHANNEL));
    videoStreamer.registerOutput(rtsp);
    if (videoStreamer.begin() != 0) {
        Serial.println("StreamIO link start failed");
    }

    // Start data stream from video channel
    Camera.channelBegin(CHANNEL);

    delay(1000);
    printInfo();
}

void loop()
{
    // Do nothing
}

void printInfo(void)
{
    Serial.println("------------------------------");
    Serial.println("- Summary of Streaming -");
    Serial.println("------------------------------");
    Camera.printInfo();

    IPAddress ip = WiFi.localIP();

    Serial.println("- RTSP -");
    Serial.print("rtsp://");
    Serial.print(ip);
    Serial.print(":");
    rtsp.printInfo();
}

5. 效果展示🎉

这是一个洋葱皮的观察图片。

image.png

image.png

感觉回到了中考的“洋葱表皮细胞观察”哈哈。挺好玩。最后来看看这个项目的全家福。

e7747255322fb03e2bdf87d8fa027a8d.jpg

──── 0人觉得很赞 ────

使用道具 举报

玛丽哥和我想一块了,我也想做这个来的。不过不是用BW21,我想的是用 小安派AiPi-Eyes-R3-Cam 还带屏幕。
透镜用的什么呀。
2025-10-26 12:25:33
厉害
2025-10-26 13:49:36
WT_0213 发表于 2025-10-26 11:34
玛丽哥和我想一块了,我也想做这个来的。不过不是用BW21,我想的是用 小安派AiPi-Eyes-R3-Cam 还带屏幕。 ...

R3我试过,那个摄像头是广角的,不太适合做这个。
2025-10-26 13:50:38
WT_0213 发表于 2025-10-26 11:35
透镜用的什么呀。

目镜是10x倍的,物镜是40x倍的
2025-10-26 20:54:34
拿来吧你😋
2025-10-27 08:26:37

📈
2025-10-27 09:50:11
2025-10-27 17:00:14
玛丽哥每次的标题水平很高~
您需要登录后才可以回帖 立即登录
高级模式
12下一页
统计信息
  • 会员数: 30596 个
  • 话题数: 44719 篇