# instant camera **Repository Path**: maxf110415/instant-camera ## Basic Information - **Project Name**: instant camera - **Description**: 复刻简易拍立得项目 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-08-18 - **Last Updated**: 2025-08-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 热敏纸拍立得 项目来源:[简易拍立得设计 - 立创开源硬件平台](https://oshwhub.com/bright_ml/simple-polaroid-design) 概述:在浏览完张明亮大神的作品后,本人就想复刻该项目并且对其进行优化,目前大体上的思路是将原项目中的屏幕升级为电容触控屏,然后移植LVGL做一个好看的ui界面,再将摄像头添加镜头拍摄更加清晰,让其能作为“相机”使用,最后再设计一个好看的外观3D打印出来。由于本人很久没写stm32的代码了,所以这个项目正好可以用作学习stm32,后续将会持续推进整个项目的复刻过程,并从中学习。(主控STM32F407VET6) ## PART1:LCD显示&LVGL移植(采用FSMC驱动LCD屏幕) 学习视频:[【正点原子】手把手教你学LVGL图形界面编程_哔哩哔哩_bilibili](https://www.bilibili.com/video/BV1CG4y157Px?spm_id_from=333.788.videopod.episodes&vd_source=7b5c5c9c962da1913522174256d7c2ce) 屏幕采用3.2寸320x240寸tft lcd彩屏,驱动为ili9341,触控芯片为ft6336u。 最初采用正点原子的LCD驱动文件进行移植,由于我使用的是STM32F407VET6,与正点原子官方使用的ZGT6不同,所以很多引脚需要修改,所以最开始我根据FSMC的定义修改引脚,将例程中使用的FSMC NE4、A6作为数据区分线改为FSMC NE1、A16作为数据区分线,其他数据线相应修改。在修改完之后发现无法驱动显示,找了很长时间bug,最终还是放弃了,决定重构代码,不使用正点原子的例程,最后在核心板商家例程的基础上修改成功驱动LCD,引脚定义如下: ~~~c #define LCD_CS_PORT GPIOD #define LCD_CS_PIN GPIO_Pin_7 #define LCD_RS_PORT GPIOD #define LCD_RS_PIN GPIO_Pin_11 #define LCD_WR_PORT GPIOD #define LCD_WR_PIN GPIO_Pin_5 #define LCD_RD_PORT GPIOD #define LCD_RD_PIN GPIO_Pin_4 #define LCD_BL_PORT GPIOD #define LCD_BL_PIN GPIO_Pin_12 #define LCD_RST_PORT GPIOC #define LCD_RST_PIN GPIO_Pin_2 #define LCD_D0_PORT GPIOD #define LCD_D0_PIN GPIO_Pin_14 #define LCD_D1_PORT GPIOD #define LCD_D1_PIN GPIO_Pin_15 #define LCD_D2_PORT GPIOD #define LCD_D2_PIN GPIO_Pin_0 #define LCD_D3_PORT GPIOD #define LCD_D3_PIN GPIO_Pin_1 #define LCD_D4_PORT GPIOE #define LCD_D4_PIN GPIO_Pin_7 #define LCD_D5_PORT GPIOE #define LCD_D5_PIN GPIO_Pin_8 #define LCD_D6_PORT GPIOE #define LCD_D6_PIN GPIO_Pin_9 #define LCD_D7_PORT GPIOE #define LCD_D7_PIN GPIO_Pin_10 #define LCD_D8_PORT GPIOE #define LCD_D8_PIN GPIO_Pin_11 #define LCD_D9_PORT GPIOE #define LCD_D9_PIN GPIO_Pin_12 #define LCD_D10_PORT GPIOE #define LCD_D10_PIN GPIO_Pin_13 #define LCD_D11_PORT GPIOE #define LCD_D11_PIN GPIO_Pin_14 #define LCD_D12_PORT GPIOE #define LCD_D12_PIN GPIO_Pin_15 #define LCD_D13_PORT GPIOD #define LCD_D13_PIN GPIO_Pin_8 #define LCD_D14_PORT GPIOD #define LCD_D14_PIN GPIO_Pin_9 #define LCD_D15_PORT GPIOD #define LCD_D15_PIN GPIO_Pin_10 ~~~ 然后触控部分驱动结合了商家给的例程和正点原子的例程成功驱动,引脚定义如下: ~~~ #define CT_IIC_SCL PBout(8) //SCL #define CT_IIC_SDA PBout(9) //SDA #define FT_RST PCout(13) #define FT_INT PBin(1) ~~~ 最后再根据正点原子视频中的教程,成功移植LVGL:(视频见pic文件夹) ![](./pic/LVGL.jpg) ## PART2:OV2640摄像头配合LCD实时显示 直接移植的正点原子的例程,感觉存在不少问题,就比如输出的画面存在很多噪声点,目前有几个怀疑的地方:供电不稳定、杜邦线连接传输数据有干扰、代码DMA部分及DCMI部分代码配置有问题。不过目前暂时比较忙,后续仔细排查一下问题再进行解决,目前实现的效果如下(视频在pic文件夹里面): ![](./pic/OV2640.jpg) 引脚定义如下: ~~~ #define SCL PAout(8) //SCL #define SDA PAout(9) //SDA #define PCLK PAout(6) #define PWDN PCout(1) #define VSYNC PBout(7) #define HREF PAout(4) #define RST PCout(3) #define D0~D7 PC6,PC7,PC8,PC9,PC11,PB6,PE5,PE6 ~~~ ## PART3:画核心板、LCD、摄像头的PCB 由于加入摄像头后核心板上要插的线太多了,所以决定先画一个简单的PCB用于做后续实验,需求是引出核心板所有引脚便于后续实验以及画出LCD和摄像头所有需要的信号线。采用立创EDA创作,简单好上手就完事了。(制版文件也给出来了) ![](./pic/schematic.jpg) ![](./pic/pcb.jpg) 在使用画完的板子进行前面LCD移植LVGL实验的测试时,发现之前一只在卡的demo文件现在可以跑了,但是ov2640依旧有很多噪声点,那大概率就是代码的问题,后续学习后修改。