本帖最后由 jinglixixi 于 2022-4-11 21:37 编辑
前段时间申请到一套摄像头组件,可与电脑连接来显示拾取的图像,但却无法直接将采集的图像显示到一般的显示屏上。如今网友已使用ESP32 开发板同摄像头相结合实现了在屏上的显示功能,这就为制作小巧的操控型摄像装置提供新途径。 该如何来实现摄像头的操控呢? 那就是为摄像头配上一个可操控的云台,并通过步进电机来驱动云台的转动。而云台的操控则是通过迪文智能屏来完成,并直接显示出摄像头所转动的视角,其界面及制作见图1和图2所示。
图1 操控界面
图2界面制作
此外,为了防止缠绕性地转动,还设置了边界的提示保护功能,即达到边界后自动停止自动,并提供蜂鸣器来报警提示,
该装置在硬件方面由迪文5寸触摸屏、步进电机、驱动模块及蜂鸣器模块所组成,见如图6所示。 其中,步进电机所使用的引脚为P1.0~P1.3,蜂鸣器所使用的引脚为P1.4。
图3 步进电机
图4 内部连接
图5 驱动模块
图6 硬件构成
在使用时,是通过触摸界面上的正转、反转及停止键即可操作云台运转。云台的转动范围在0~360度之间。 正反转功能函数为:
- void zx(void)
- {
- u8 j;
- for(j=0;j<8;j++)
- {
- MDH;
- MAH;
- delay_ms(n);
- MAL;
- delay_ms(n);
- MCH;
- delay_ms(n);
- MDL;
- delay_ms(n);
- MBH;
- delay_ms(n);
- MCL;
- delay_ms(n);
- MAH;
- delay_ms(n);
- MBL;
- delay_ms(n);
- }
- }
- void fx(void)
- {
- u8 j;
- for(j=0;j<8;j++)
- {
- MDL;
- MAH;
- delay_ms(n);
- MBH;
- delay_ms(n);
- MAL;
- delay_ms(n);
- MCH;
- delay_ms(n);
- MBL;
- delay_ms(n);
- MDH;
- delay_ms(n);
- MCL;
- delay_ms(n);
- MAH;
- delay_ms(n);
- }
- }
复制代码
实现视角显示与边界提示的主程序为:
- void main(void)
- {
- u16 n,i,m;
- InitCPU();
- Starttimer(1,500);
- delay_ms(200);
- IO_OUT();
- MAL;
- MBL;
- MCL;
- MDL;
- BEEP=1;
- i=0;
- n=0;
- Write_Dgus(0x2004,0);
- while(1)
- {
- m=Read_Dgus(0x2000);
- if(m==1)
- {
- zx();
- i=i+1;
- }
- if(m==2)
- {
- fx();
- i=i-1;
- }
- n=i*360/64;
- Write_Dgus(0x2004,n);
- if((i>=64)||(i==0))
- {
- m=0;
- Write_Dgus(0x2000,m);
- BEEP=0;
- delay_ms(1000);
- BEEP=1;
- }
- if(m==3)
- {
- m=0;
- }
- delay_ms(10);
- }
- }
复制代码
本作品完全是利用迪文屏的自身资源来实现云台的控制,并配以转动位置显示及边界提示功能。 演示视频:
1) https://www.bilibili.com/video/BV1634y1x7Wo/
2) https://www.bilibili.com/video/BV1UT4y1Y74b/
|