defines.h 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273
  1. #pragma once
  2. #ifndef defines_h
  3. #define defines_h
  4. /////////////////////////////////////////////
  5. //// Global definitions ////
  6. /////////////////////////////////////////////
  7. /* Uncomment this to keep the logfile open for appending.
  8. * If commented out, the logfile gets opened/closed for each log measage (old behaviour) */
  9. // ClassLogFile
  10. //#define KEEP_LOGFILE_OPEN_FOR_APPENDING
  11. //ClassControllCamera + ClassFlowMakeImage + connect_wlan + main
  12. #define FLASH_GPIO GPIO_NUM_4
  13. #define BLINK_GPIO GPIO_NUM_33
  14. //ClassFlowMQTT + interface_mqtt + connect_wlan + main
  15. #define __HIDE_PASSWORD
  16. //ClassControllCamera
  17. #define USE_PWM_LEDFLASH // if __LEDGLOBAL is defined, a global variable is used for LED control, otherwise locally and each time a new
  18. //server_GPIO
  19. #define __LEDGLOBAL
  20. //ClassControllCamera + ClassFlowMakeImage
  21. #define CAMERA_MODEL_AI_THINKER
  22. #define BOARD_ESP32CAM_AITHINKER
  23. //server_GPIO + server_file + SoftAP
  24. #define CONFIG_FILE "/sdcard/config/config.ini"
  25. //ClassFlowControll + Main + SoftAP
  26. #define WLAN_CONFIG_FILE "/sdcard/wlan.ini"
  27. //main
  28. #define __SD_USE_ONE_LINE_MODE__
  29. // server_file + Helper
  30. #define FILE_PATH_MAX (255) //Max length a file path can have on storage
  31. //server_file +(ota_page.html + upload_script.html)
  32. #define MAX_FILE_SIZE (8000*1024) // 8 MB Max size of an individual file. Make sure this value is same as that set in upload_script.html
  33. #define MAX_FILE_SIZE_STR "8MB"
  34. #define LOGFILE_LAST_PART_BYTES SERVER_FILER_SCRATCH_BUFSIZE * 20 // 80 kBytes // Size of partial log file to return
  35. #define SERVER_FILER_SCRATCH_BUFSIZE 4096
  36. #define SERVER_HELPER_SCRATCH_BUFSIZE 8192
  37. #define SERVER_OTA_SCRATCH_BUFSIZE 1024
  38. //server_file + server_help
  39. #define IS_FILE_EXT(filename, ext) \
  40. (strcasecmp(&filename[strlen(filename) - sizeof(ext) + 1], ext) == 0)
  41. //server_ota
  42. #define HASH_LEN 32 // SHA-256 digest length
  43. #define OTA_URL_SIZE 256
  44. //ClassFlow + ClassFlowImage + server_tflite
  45. #define LOGFILE_TIME_FORMAT "%Y%m%d-%H%M%S"
  46. #define LOGFILE_TIME_FORMAT_DATE_EXTR substr(0, 8)
  47. #define LOGFILE_TIME_FORMAT_HOUR_EXTR substr(9, 2)
  48. //ClassFlowControll
  49. #define READOUT_TYPE_VALUE 0
  50. #define READOUT_TYPE_PREVALUE 1
  51. #define READOUT_TYPE_RAWVALUE 2
  52. #define READOUT_TYPE_ERROR 3
  53. //ClassFlowMQTT
  54. #define LWT_TOPIC "connection"
  55. #define LWT_CONNECTED "connected"
  56. #define LWT_DISCONNECTED "connection lost"
  57. //ClassFlowPostProcessing
  58. #define PREVALUE_TIME_FORMAT_OUTPUT "%Y-%m-%dT%H:%M:%S%z"
  59. #define PREVALUE_TIME_FORMAT_INPUT "%d-%d-%dT%d:%d:%d"
  60. //CImageBasis
  61. #define HTTP_BUFFER_SENT 1024
  62. #define GET_MEMORY(X) heap_caps_malloc(X, MALLOC_CAP_SPIRAM)
  63. #define MAX_JPG_SIZE 128000
  64. //CAlignAndCutImage + CImageBasis
  65. #define _USE_MATH_DEFINES
  66. #define GET_MEMORY(X) heap_caps_malloc(X, MALLOC_CAP_SPIRAM)
  67. //make_stb + stb_image_resize + stb_image_write + stb_image //do not work if not in make_stb.cpp
  68. //#define STB_IMAGE_IMPLEMENTATION
  69. //#define STB_IMAGE_WRITE_IMPLEMENTATION
  70. //#define STB_IMAGE_RESIZE_IMPLEMENTATION
  71. //#define STBI_ONLY_JPEG // (save 2% of Flash, but breaks the alignment mark generation, see https://github.com/jomjol/AI-on-the-edge-device/issues/1721)
  72. //interface_influxdb
  73. #define MAX_HTTP_OUTPUT_BUFFER 2048
  74. //server_mqtt
  75. #define LWT_TOPIC "connection"
  76. #define LWT_CONNECTED "connected"
  77. #define LWT_DISCONNECTED "connection lost"
  78. //CTfLiteClass
  79. #define TFLITE_MINIMAL_CHECK(x) \
  80. if (!(x)) { \
  81. fprintf(stderr, "Error at %s:%d\n", __FILE__, __LINE__); \
  82. exit(1); \
  83. }
  84. #define SUPRESS_TFLITE_ERRORS // use, to avoid error messages from TFLITE
  85. //connect_wlan
  86. #define WLAN_USE_MESH_ROAMING
  87. #define WLAN_WIFI_RSSI_THRESHOLD -50
  88. #define EXAMPLE_ESP_MAXIMUM_RETRY 1000
  89. /* The event group allows multiple bits for each event, but we only care about two events:
  90. * - we are connected to the AP with an IP
  91. * - we failed to connect after the maximum amount of retries */
  92. #define WIFI_CONNECTED_BIT BIT0
  93. #define WIFI_FAIL_BIT BIT1
  94. //ClassFlowCNNGeneral
  95. #define Analog_error 3
  96. #define AnalogToDigtalFehler 0.8
  97. #define Digital_Uncertainty 0.2
  98. #define DigitalBand 3
  99. #define Digital_Transition_Range_Predecessor 2
  100. #define Digital_Transition_Area_Predecessor 0.7 // 9.3 - 0.7
  101. #define Digital_Transition_Area_Forward 9.7 // Pre-run zero crossing only happens from approx. 9.7 onwards
  102. //#define DEBUG_DETAIL_ON
  103. /////////////////////////////////////////////
  104. //// Conditionnal definitions ////
  105. /////////////////////////////////////////////
  106. //******* camera model
  107. #if defined(CAMERA_MODEL_WROVER_KIT)
  108. #define PWDN_GPIO_NUM -1
  109. #define RESET_GPIO_NUM -1
  110. #define XCLK_GPIO_NUM 21
  111. #define SIOD_GPIO_NUM 26
  112. #define SIOC_GPIO_NUM 27
  113. #define Y9_GPIO_NUM 35
  114. #define Y8_GPIO_NUM 34
  115. #define Y7_GPIO_NUM 39
  116. #define Y6_GPIO_NUM 36
  117. #define Y5_GPIO_NUM 19
  118. #define Y4_GPIO_NUM 18
  119. #define Y3_GPIO_NUM 5
  120. #define Y2_GPIO_NUM 4
  121. #define VSYNC_GPIO_NUM 25
  122. #define HREF_GPIO_NUM 23
  123. #define PCLK_GPIO_NUM 22
  124. #elif defined(CAMERA_MODEL_M5STACK_PSRAM)
  125. #define PWDN_GPIO_NUM -1
  126. #define RESET_GPIO_NUM 15
  127. #define XCLK_GPIO_NUM 27
  128. #define SIOD_GPIO_NUM 25
  129. #define SIOC_GPIO_NUM 23
  130. #define Y9_GPIO_NUM 19
  131. #define Y8_GPIO_NUM 36
  132. #define Y7_GPIO_NUM 18
  133. #define Y6_GPIO_NUM 39
  134. #define Y5_GPIO_NUM 5
  135. #define Y4_GPIO_NUM 34
  136. #define Y3_GPIO_NUM 35
  137. #define Y2_GPIO_NUM 32
  138. #define VSYNC_GPIO_NUM 22
  139. #define HREF_GPIO_NUM 26
  140. #define PCLK_GPIO_NUM 21
  141. #elif defined(CAMERA_MODEL_AI_THINKER)
  142. #define PWDN_GPIO_NUM GPIO_NUM_32
  143. #define RESET_GPIO_NUM -1
  144. #define XCLK_GPIO_NUM GPIO_NUM_0
  145. #define SIOD_GPIO_NUM GPIO_NUM_26
  146. #define SIOC_GPIO_NUM GPIO_NUM_27
  147. #define Y9_GPIO_NUM GPIO_NUM_35
  148. #define Y8_GPIO_NUM GPIO_NUM_34
  149. #define Y7_GPIO_NUM GPIO_NUM_39
  150. #define Y6_GPIO_NUM GPIO_NUM_36
  151. #define Y5_GPIO_NUM GPIO_NUM_21
  152. #define Y4_GPIO_NUM GPIO_NUM_19
  153. #define Y3_GPIO_NUM GPIO_NUM_18
  154. #define Y2_GPIO_NUM GPIO_NUM_5
  155. #define VSYNC_GPIO_NUM GPIO_NUM_25
  156. #define HREF_GPIO_NUM GPIO_NUM_23
  157. #define PCLK_GPIO_NUM GPIO_NUM_22
  158. #else
  159. #error "Camera model not selected"
  160. #endif //camera model
  161. // ******* Board type
  162. #ifdef BOARD_WROVER_KIT // WROVER-KIT PIN Map
  163. #define CAM_PIN_PWDN -1 //power down is not used
  164. #define CAM_PIN_RESET -1 //software reset will be performed
  165. #define CAM_PIN_XCLK 21
  166. #define CAM_PIN_SIOD 26
  167. #define CAM_PIN_SIOC 27
  168. #define CAM_PIN_D7 35
  169. #define CAM_PIN_D6 34
  170. #define CAM_PIN_D5 39
  171. #define CAM_PIN_D4 36
  172. #define CAM_PIN_D3 19
  173. #define CAM_PIN_D2 18
  174. #define CAM_PIN_D1 5
  175. #define CAM_PIN_D0 4
  176. #define CAM_PIN_VSYNC 25
  177. #define CAM_PIN_HREF 23
  178. #define CAM_PIN_PCLK 22
  179. #endif //// WROVER-KIT PIN Map
  180. #ifdef BOARD_ESP32CAM_AITHINKER // ESP32Cam (AiThinker) PIN Map
  181. #define CAM_PIN_PWDN 32
  182. #define CAM_PIN_RESET -1 //software reset will be performed
  183. #define CAM_PIN_XCLK 0
  184. #define CAM_PIN_SIOD 26
  185. #define CAM_PIN_SIOC 27
  186. #define CAM_PIN_D7 35
  187. #define CAM_PIN_D6 34
  188. #define CAM_PIN_D5 39
  189. #define CAM_PIN_D4 36
  190. #define CAM_PIN_D3 21
  191. #define CAM_PIN_D2 19
  192. #define CAM_PIN_D1 18
  193. #define CAM_PIN_D0 5
  194. #define CAM_PIN_VSYNC 25
  195. #define CAM_PIN_HREF 23
  196. #define CAM_PIN_PCLK 22
  197. #endif // ESP32Cam (AiThinker) PIN Map
  198. // ******* LED definition
  199. #ifdef USE_PWM_LEDFLASH
  200. //// PWM für Flash-LED
  201. #define LEDC_TIMER LEDC_TIMER_1 // LEDC_TIMER_0
  202. #define LEDC_MODE LEDC_LOW_SPEED_MODE
  203. #define LEDC_OUTPUT_IO FLASH_GPIO // Define the output GPIO
  204. #define LEDC_CHANNEL LEDC_CHANNEL_1
  205. #define LEDC_DUTY_RES LEDC_TIMER_13_BIT // Set duty resolution to 13 bits
  206. //#define LEDC_DUTY (195) // Set duty to 50%. ((2 ** 13) - 1) * 50% = 4095
  207. #define LEDC_FREQUENCY (5000) // Frequency in Hertz. Set frequency at 5 kHz
  208. #endif //USE_PWM_LEDFLASH
  209. //softAP
  210. #ifdef ENABLE_SOFTAP
  211. #define EXAMPLE_ESP_WIFI_SSID "AI-on-the-Edge"
  212. #define EXAMPLE_ESP_WIFI_PASS ""
  213. #define EXAMPLE_ESP_WIFI_CHANNEL 11
  214. #define EXAMPLE_MAX_STA_CONN 1
  215. #endif // ENABLE_SOFTAP
  216. #endif // ifndef defines_h