7
7
#include " button.h"
8
8
#include " config.h"
9
9
#include " iot/thing_manager.h"
10
+ #include " esp32_camera.h"
11
+
10
12
#include " led/circular_strip.h"
11
13
#include " assets/lang_config.h"
12
14
@@ -30,6 +32,8 @@ class Df_K10Board : public WifiBoard {
30
32
LcdDisplay *display_;
31
33
button_handle_t btn_a;
32
34
button_handle_t btn_b;
35
+ Esp32Camera* camera_;
36
+
33
37
button_driver_t * btn_a_driver_ = nullptr ;
34
38
button_driver_t * btn_b_driver_ = nullptr ;
35
39
@@ -163,6 +167,40 @@ class Df_K10Board : public WifiBoard {
163
167
}, this );
164
168
}
165
169
170
+ void InitializeCamera () {
171
+
172
+ camera_config_t config = {};
173
+ config.ledc_channel = LEDC_CHANNEL_2; // LEDC通道选择 用于生成XCLK时钟 但是S3不用
174
+ config.ledc_timer = LEDC_TIMER_2; // LEDC timer选择 用于生成XCLK时钟 但是S3不用
175
+ config.pin_d0 = CAMERA_PIN_D2;
176
+ config.pin_d1 = CAMERA_PIN_D3;
177
+ config.pin_d2 = CAMERA_PIN_D4;
178
+ config.pin_d3 = CAMERA_PIN_D5;
179
+ config.pin_d4 = CAMERA_PIN_D6;
180
+ config.pin_d5 = CAMERA_PIN_D7;
181
+ config.pin_d6 = CAMERA_PIN_D8;
182
+ config.pin_d7 = CAMERA_PIN_D9;
183
+ config.pin_xclk = CAMERA_PIN_XCLK;
184
+ config.pin_pclk = CAMERA_PIN_PCLK;
185
+ config.pin_vsync = CAMERA_PIN_VSYNC;
186
+ config.pin_href = CAMERA_PIN_HREF;
187
+ config.pin_sccb_sda = -1 ; // 这里如果写-1 表示使用已经初始化的I2C接口
188
+ config.pin_sccb_scl = CAMERA_PIN_SIOC;
189
+ config.sccb_i2c_port = 1 ; // 这里如果写1 默认使用I2C1
190
+ config.pin_pwdn = CAMERA_PIN_PWDN;
191
+ config.pin_reset = CAMERA_PIN_RESET;
192
+ config.xclk_freq_hz = XCLK_FREQ_HZ;
193
+ config.pixel_format = PIXFORMAT_RGB565;
194
+ config.frame_size = FRAMESIZE_VGA;
195
+ config.jpeg_quality = 12 ;
196
+ config.fb_count = 1 ;
197
+ config.fb_location = CAMERA_FB_IN_PSRAM;
198
+ config.grab_mode = CAMERA_GRAB_WHEN_EMPTY;
199
+
200
+ camera_ = new Esp32Camera (config);
201
+ camera_->SetVFlip (1 );
202
+ }
203
+
166
204
void InitializeIli9341Display () {
167
205
esp_lcd_panel_io_handle_t panel_io = nullptr ;
168
206
esp_lcd_panel_handle_t panel = nullptr ;
@@ -217,6 +255,12 @@ class Df_K10Board : public WifiBoard {
217
255
InitializeIli9341Display ();
218
256
InitializeButtons ();
219
257
InitializeIot ();
258
+ InitializeCamera ();
259
+
260
+ #if CONFIG_IOT_PROTOCOL_XIAOZHI
261
+ auto & thing_manager = iot::ThingManager::GetInstance ();
262
+ thing_manager.AddThing (iot::CreateThing (" Speaker" ));
263
+ #endif
220
264
}
221
265
222
266
virtual Led* GetLed () override {
@@ -241,6 +285,10 @@ class Df_K10Board : public WifiBoard {
241
285
return &audio_codec;
242
286
}
243
287
288
+ virtual Camera* GetCamera () override {
289
+ return camera_;
290
+ }
291
+
244
292
virtual Display *GetDisplay () override {
245
293
return display_;
246
294
}
0 commit comments