本次项目使用硬件包括Adafruit的feather开发板,舵机、bh1750数字光传感器和按键实现了测光表和远程快门的功能。
本次项目的主控板为Feather TFT ESP32-S3,使用ESP32 S3 MINI模组作为主控,开发板自带一个可编程按键,一颗NeoPixel LED,一片240*135 tft显示屏,MCP73831和MAX17048实现了锂电池的充电管理和电量检测,同时还留了一个空焊盘方便焊接bmp280传感器。开发板自带PH2.0接口,可直接使用锂电池供电,自带一个立贴的sh1.0 4pin接口,方便链接所有Steema QT接口的iic传感器。
Adafruit为feather系列开发板开发了非常丰富的扩展板,为了更优雅地完成本次项目,我充分使用了这些扩展板。
首先我使用了Feather2*2的底板,这块板提供了多达4块Feather开发板的连接孔位,方便链接多个外设以丰富功能
因为要控制舵机,我使用了舵机驱动Featherwing,此块开发板使用PCA9685芯片,基于IIC通信,最多可以驱动8路舵机。
Bh1750数字光传感器和按键因为使用的Grove接口,我使用了Grove Featherwing,此块开发板引出了6个Grove接口, 其中3个为模拟/数字连接器、1 个为UART连接器和2个 I2C连接器.
本项目硬件流程图如下
Feather开发板和两片Featherwing基于底板实现电路链接,舵机连接在舵机驱动班上(使用iic驱动),按键和bh1750数字光传感器连接在Grove Featherwing上(按键链接A2,A3,数字光传感器使用iic驱动)。所有电路全部基于接插件连接,没有焊接,非常优雅。
项目最终实现了实时读取光传感器数值、按键状态,并将数据显示在开发板的TFT屏幕上,同时按键按下可以控制舵机运行,模拟按下快门动作。
首先是屏幕初始化代码
// turn on backlite pinMode(TFT_BACKLITE, OUTPUT); digitalWrite(TFT_BACKLITE, HIGH); // turn on the TFT / I2C power supply pinMode(TFT_I2C_POWER, OUTPUT); digitalWrite(TFT_I2C_POWER, HIGH); delay(10); // initialize TFT display.init(135, 240); // Init ST7789 240x135 display.setRotation(3); display.fillScreen(ST77XX_BLACK);
此块开发板比较特殊,因为考虑到了低功耗应用,外设单独使用一颗LDO,没有和MCU共用,当要使用iic外设或点亮TFT屏幕,需要先将LDO使能引脚拉高:digitalWrite(TFT_I2C_POWER, HIGH);,之后就是比较常规的基于屏幕参数初始化屏幕
初始化代码较为简单,此处就不粘贴了,要看完整代码可以看附件
主循环中,每次循环开始先读取BH1750的示数,并基于老师给到的iso100下的转换公式进行数学运算
然后读取按键状态,并判断状态是否有变化,若判断是按下了按键,则执行相应的舵机动作
a=digitalRead(BUTTON_A); b=digitalRead(BUTTON_B); if(a != lasta) { if (a) { Serial.println("A UP"); display.fillRect(90, 75, 120, 20, ST77XX_BLACK); display.setCursor(40, 75); display.setTextColor(ST77XX_BLUE); display.setTextSize(2); display.println("BUTTON A UP"); } else { Serial.println("A DOWN"); display.fillRect(90, 75, 120, 20, ST77XX_BLACK); display.setCursor(40, 75); display.setTextColor(ST77XX_BLUE); display.setTextSize(2); display.println("BUTTON A DOWN"); for (uint16_t pulselen = SERVOMIN; pulselen < SERVOMAX; pulselen++) { pwm.setPWM(servonum, 0, pulselen); } } lasta=a; }
至此代码的基础逻辑已经描述完毕了,还是一个相对轻松的任务。
最后感谢EEPW论坛和得捷电子,Adafruit一直是我很喜欢的硬件厂商,本次算是深入体验了Adafruit Feather产品线的各种功能,非常开心。期待以后得活动。