You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

245 lines
7.0 KiB

3 years ago
  1. #pragma once
  2. #include "freertos/FreeRTOS.h"
  3. #include "freertos/queue.h"
  4. #include "freertos/task.h"
  5. #include "freertos/semphr.h"
  6. #include "esp_camera.h"
  7. #if CONFIG_CAMERA_MODULE_WROVER_KIT
  8. #define CAMERA_MODULE_NAME "Wrover Kit"
  9. #define CAMERA_PIN_PWDN -1
  10. #define CAMERA_PIN_RESET -1
  11. #define CAMERA_PIN_XCLK 21
  12. #define CAMERA_PIN_SIOD 26
  13. #define CAMERA_PIN_SIOC 27
  14. #define CAMERA_PIN_D7 35
  15. #define CAMERA_PIN_D6 34
  16. #define CAMERA_PIN_D5 39
  17. #define CAMERA_PIN_D4 36
  18. #define CAMERA_PIN_D3 19
  19. #define CAMERA_PIN_D2 18
  20. #define CAMERA_PIN_D1 5
  21. #define CAMERA_PIN_D0 4
  22. #define CAMERA_PIN_VSYNC 25
  23. #define CAMERA_PIN_HREF 23
  24. #define CAMERA_PIN_PCLK 22
  25. #elif CONFIG_CAMERA_MODULE_ESP_EYE
  26. #define CAMERA_MODULE_NAME "ESP-EYE"
  27. #define CAMERA_PIN_PWDN -1
  28. #define CAMERA_PIN_RESET -1
  29. #define CAMERA_PIN_XCLK 4
  30. #define CAMERA_PIN_SIOD 18
  31. #define CAMERA_PIN_SIOC 23
  32. #define CAMERA_PIN_D7 36
  33. #define CAMERA_PIN_D6 37
  34. #define CAMERA_PIN_D5 38
  35. #define CAMERA_PIN_D4 39
  36. #define CAMERA_PIN_D3 35
  37. #define CAMERA_PIN_D2 14
  38. #define CAMERA_PIN_D1 13
  39. #define CAMERA_PIN_D0 34
  40. #define CAMERA_PIN_VSYNC 5
  41. #define CAMERA_PIN_HREF 27
  42. #define CAMERA_PIN_PCLK 25
  43. #elif CONFIG_CAMERA_MODULE_ESP_S2_KALUGA
  44. #define CAMERA_MODULE_NAME "ESP-S2-KALUGA"
  45. #define CAMERA_PIN_PWDN -1
  46. #define CAMERA_PIN_RESET -1
  47. #define CAMERA_PIN_XCLK 1
  48. #define CAMERA_PIN_SIOD 8
  49. #define CAMERA_PIN_SIOC 7
  50. #define CAMERA_PIN_D7 38
  51. #define CAMERA_PIN_D6 21
  52. #define CAMERA_PIN_D5 40
  53. #define CAMERA_PIN_D4 39
  54. #define CAMERA_PIN_D3 42
  55. #define CAMERA_PIN_D2 41
  56. #define CAMERA_PIN_D1 37
  57. #define CAMERA_PIN_D0 36
  58. #define CAMERA_PIN_VSYNC 2
  59. #define CAMERA_PIN_HREF 3
  60. #define CAMERA_PIN_PCLK 33
  61. #elif CONFIG_CAMERA_MODULE_ESP_S3_EYE
  62. #define CAMERA_MODULE_NAME "ESP-S3-EYE"
  63. #define CAMERA_PIN_PWDN -1
  64. #define CAMERA_PIN_RESET -1
  65. #define CAMERA_PIN_VSYNC 6
  66. #define CAMERA_PIN_HREF 7
  67. #define CAMERA_PIN_PCLK 13
  68. #define CAMERA_PIN_XCLK 15
  69. #define CAMERA_PIN_SIOD 4
  70. #define CAMERA_PIN_SIOC 5
  71. #define CAMERA_PIN_D0 11
  72. #define CAMERA_PIN_D1 9
  73. #define CAMERA_PIN_D2 8
  74. #define CAMERA_PIN_D3 10
  75. #define CAMERA_PIN_D4 12
  76. #define CAMERA_PIN_D5 18
  77. #define CAMERA_PIN_D6 17
  78. #define CAMERA_PIN_D7 16
  79. #elif CONFIG_CAMERA_MODULE_ESP32_CAM_BOARD
  80. #define CAMERA_MODULE_NAME "ESP-DEVCAM"
  81. #define CAMERA_PIN_PWDN 32
  82. #define CAMERA_PIN_RESET 33
  83. #define CAMERA_PIN_XCLK 4
  84. #define CAMERA_PIN_SIOD 18
  85. #define CAMERA_PIN_SIOC 23
  86. #define CAMERA_PIN_D7 36
  87. #define CAMERA_PIN_D6 19
  88. #define CAMERA_PIN_D5 21
  89. #define CAMERA_PIN_D4 39
  90. #define CAMERA_PIN_D3 35
  91. #define CAMERA_PIN_D2 14
  92. #define CAMERA_PIN_D1 13
  93. #define CAMERA_PIN_D0 34
  94. #define CAMERA_PIN_VSYNC 5
  95. #define CAMERA_PIN_HREF 27
  96. #define CAMERA_PIN_PCLK 25
  97. #elif CONFIG_CAMERA_MODULE_M5STACK_PSRAM
  98. #define CAMERA_MODULE_NAME "M5STACK-PSRAM"
  99. #define CAMERA_PIN_PWDN -1
  100. #define CAMERA_PIN_RESET 15
  101. #define CAMERA_PIN_XCLK 27
  102. #define CAMERA_PIN_SIOD 25
  103. #define CAMERA_PIN_SIOC 23
  104. #define CAMERA_PIN_D7 19
  105. #define CAMERA_PIN_D6 36
  106. #define CAMERA_PIN_D5 18
  107. #define CAMERA_PIN_D4 39
  108. #define CAMERA_PIN_D3 5
  109. #define CAMERA_PIN_D2 34
  110. #define CAMERA_PIN_D1 35
  111. #define CAMERA_PIN_D0 32
  112. #define CAMERA_PIN_VSYNC 22
  113. #define CAMERA_PIN_HREF 26
  114. #define CAMERA_PIN_PCLK 21
  115. #elif CONFIG_CAMERA_MODULE_M5STACK_WIDE
  116. #define CAMERA_MODULE_NAME "M5STACK-WIDE"
  117. #define CAMERA_PIN_PWDN -1
  118. #define CAMERA_PIN_RESET 15
  119. #define CAMERA_PIN_XCLK 27
  120. #define CAMERA_PIN_SIOD 22
  121. #define CAMERA_PIN_SIOC 23
  122. #define CAMERA_PIN_D7 19
  123. #define CAMERA_PIN_D6 36
  124. #define CAMERA_PIN_D5 18
  125. #define CAMERA_PIN_D4 39
  126. #define CAMERA_PIN_D3 5
  127. #define CAMERA_PIN_D2 34
  128. #define CAMERA_PIN_D1 35
  129. #define CAMERA_PIN_D0 32
  130. #define CAMERA_PIN_VSYNC 25
  131. #define CAMERA_PIN_HREF 26
  132. #define CAMERA_PIN_PCLK 21
  133. #elif CONFIG_CAMERA_MODULE_AI_THINKER
  134. #define CAMERA_MODULE_NAME "AI-THINKER"
  135. #define CAMERA_PIN_PWDN 32
  136. #define CAMERA_PIN_RESET -1
  137. #define CAMERA_PIN_XCLK 0
  138. #define CAMERA_PIN_SIOD 26
  139. #define CAMERA_PIN_SIOC 27
  140. #define CAMERA_PIN_D7 35
  141. #define CAMERA_PIN_D6 34
  142. #define CAMERA_PIN_D5 39
  143. #define CAMERA_PIN_D4 36
  144. #define CAMERA_PIN_D3 21
  145. #define CAMERA_PIN_D2 19
  146. #define CAMERA_PIN_D1 18
  147. #define CAMERA_PIN_D0 5
  148. #define CAMERA_PIN_VSYNC 25
  149. #define CAMERA_PIN_HREF 23
  150. #define CAMERA_PIN_PCLK 22
  151. #elif CONFIG_CAMERA_MODULE_CUSTOM
  152. #define CAMERA_MODULE_NAME "CUSTOM"
  153. #define CAMERA_PIN_PWDN CONFIG_CAMERA_PIN_PWDN
  154. #define CAMERA_PIN_RESET CONFIG_CAMERA_PIN_RESET
  155. #define CAMERA_PIN_XCLK CONFIG_CAMERA_PIN_XCLK
  156. #define CAMERA_PIN_SIOD CONFIG_CAMERA_PIN_SIOD
  157. #define CAMERA_PIN_SIOC CONFIG_CAMERA_PIN_SIOC
  158. #define CAMERA_PIN_D7 CONFIG_CAMERA_PIN_Y9
  159. #define CAMERA_PIN_D6 CONFIG_CAMERA_PIN_Y8
  160. #define CAMERA_PIN_D5 CONFIG_CAMERA_PIN_Y7
  161. #define CAMERA_PIN_D4 CONFIG_CAMERA_PIN_Y6
  162. #define CAMERA_PIN_D3 CONFIG_CAMERA_PIN_Y5
  163. #define CAMERA_PIN_D2 CONFIG_CAMERA_PIN_Y4
  164. #define CAMERA_PIN_D1 CONFIG_CAMERA_PIN_Y3
  165. #define CAMERA_PIN_D0 CONFIG_CAMERA_PIN_Y2
  166. #define CAMERA_PIN_VSYNC CONFIG_CAMERA_PIN_VSYNC
  167. #define CAMERA_PIN_HREF CONFIG_CAMERA_PIN_HREF
  168. #define CAMERA_PIN_PCLK CONFIG_CAMERA_PIN_PCLK
  169. #endif
  170. #define XCLK_FREQ_HZ 15000000
  171. #ifdef __cplusplus
  172. extern "C"
  173. {
  174. #endif
  175. /**
  176. * @brief Initialize camera
  177. *
  178. * @param pixformat One of
  179. * - PIXFORMAT_RGB565
  180. * - PIXFORMAT_YUV422
  181. * - PIXFORMAT_GRAYSC
  182. * - PIXFORMAT_JPEG
  183. * - PIXFORMAT_RGB888
  184. * - PIXFORMAT_RAW
  185. * - PIXFORMAT_RGB444
  186. * - PIXFORMAT_RGB555
  187. * @param frame_size One of
  188. * - FRAMESIZE_96X96, // 96x96
  189. * - FRAMESIZE_QQVGA, // 160x120
  190. * - FRAMESIZE_QCIF, // 176x144
  191. * - FRAMESIZE_HQVGA, // 240x176
  192. * - FRAMESIZE_240X240, // 240x240
  193. * - FRAMESIZE_QVGA, // 320x240
  194. * - FRAMESIZE_CIF, // 400x296
  195. * - FRAMESIZE_HVGA, // 480x320
  196. * - FRAMESIZE_VGA, // 640x480
  197. * - FRAMESIZE_SVGA, // 800x600
  198. * - FRAMESIZE_XGA, // 1024x768
  199. * - FRAMESIZE_HD, // 1280x720
  200. * - FRAMESIZE_SXGA, // 1280x1024
  201. * - FRAMESIZE_UXGA, // 1600x1200
  202. * - FRAMESIZE_FHD, // 1920x1080
  203. * - FRAMESIZE_P_HD, // 720x1280
  204. * - FRAMESIZE_P_3MP, // 864x1536
  205. * - FRAMESIZE_QXGA, // 2048x1536
  206. * - FRAMESIZE_QHD, // 2560x1440
  207. * - FRAMESIZE_WQXGA, // 2560x1600
  208. * - FRAMESIZE_P_FHD, // 1080x1920
  209. * - FRAMESIZE_QSXGA, // 2560x1920
  210. * @param fb_count Number of frame buffers to be allocated. If more than one, then each frame will be acquired (double speed)
  211. */
  212. void register_camera(const pixformat_t pixel_fromat,
  213. const framesize_t frame_size,
  214. const uint8_t fb_count,
  215. const QueueHandle_t frame_o);
  216. #ifdef __cplusplus
  217. }
  218. #endif