Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
esp32-cam [2018/12/19 23:54] – [getting a pic] yairesp32-cam [2020/01/04 19:01] (current) yair
Line 4: Line 4:
 ===== ESP32 stream camera modules  ===== ===== ESP32 stream camera modules  =====
  
-at their core this modules uses external RAM ([[#psram]] to buffer an ov2640 camera module that does jpeg at 10fps on-board. the external ram is not strictly neseccery, but going fwd its the right way to go, beware of [[#M5Stack|modules]] without one+at their core this modules uses external RAM ([[#psram]] to buffer an ov2640 camera module that does jpeg at 10fps on-board. the external ram is not strictly necessary, but going fwd its the right way to go, beware of [[#M5Stack|modules]] without one 
 + 
 +Note2: new modules in market are updated, make sure they carry [[#PSRAM]] chip 
  
 note: **current [[#M5Stack]] modules DO NOT come with the [[#PSRAM]] chip** and are limited in performance and by heat issues.\\ note: **current [[#M5Stack]] modules DO NOT come with the [[#PSRAM]] chip** and are limited in performance and by heat issues.\\
-while the [[#M5Stack]] doesnt have the #PSRAM, out of the box it outputs a working image stream. unlike the [[#ESP32-CAM]] 
  
-modules tested\\ +**modules tested**\\ 
-[[#TTGO T-Journal]] - comes with arduino support, works out of the box\\ +[[#ESP32-CAM]] - <del>glitching ATM</del> works, but lacks heatsink\\ 
-[[#M5Stack]] - works out of box, lacks PSRAM\\ +[[#TTGO T-Journal]] - comes with arduino support, works out of the box, has a heatsink on the esp32.\\ 
-[[#ESP32-CAM]] - glitching ATM\\ +[[#M5Stack]] - works out of box, lacks PSRAM, lacks heatsink\\ 
-untested\\+ 
 +**yet untested**\\
 [[#ESP32-wrover-kit]]\\ [[#ESP32-wrover-kit]]\\
 [[#ESP32-WROVER-B]]\\ [[#ESP32-WROVER-B]]\\
-[[#TTGO T8]]+[[#TTGO T8]]\\ 
 +[[#esp-eye]] - [[https://www.espressif.com/en/products/hardware/esp-eye/overview|link]] 
 + 
 + 
 +==== TTGO T-Journal-revisit  ==== 
 + 
 + 
 +==== ESP32-CAM ==== 
 +{{ :pasted:20181128-003945.png?direct&400}} 
 +[[https://shop72165205.world.taobao.com|AI-thinker]] has  
 + [[https://github.com/donny681/ESP32_CAMERA_QR|released]] a QR-code reading example.  
 + 
 + 
 +<html> 
 +<ul><li>Wireless Module- ESP32-S WiFi 802.11 b/g/n + Bluetooth 4.2 LE module with PCB antenna, u.FL connector, 32Mbit SPI flash, 4MBit PSRAM</li> 
 +<li>External Storage – micro SD card slot <strong>up to 4GB</strong></li> 
 +<li>Camera 
 +<ul><li>FPC connector</li> 
 +<li>Support for OV2640 (sold with board) or OV7670 cameras</li> 
 +<li>Image Format – JPEG(&nbsp;OV2640 support only ), BMP, grayscale</li> 
 +<li>LED flash light</li> 
 +</ul></li> 
 +<li>Expansion – 16x through-holes with UART, SPI, I2C, PWM</li> 
 +<li>Misc – Reset button</li> 
 +<li>Power Supply – 5V via pin header</li> 
 +<li>Power Consumption 
 +<ul><li>Flash LED off – 180mA @ 5V</li> 
 +<li>Flash LED on to maximum brightness- 310mA @ 5V</li> 
 +<li>Deep-sleep – 6mA @ 5V min.</li> 
 +<li>Modem-sleep – 20mA @ 5V min.</li> 
 +<li>Light-sleep – 6.7mA @ 5V min.</li> 
 +</ul></li> 
 +<li>Dimensions – 40.5 x 27 x 4.5 mm</li> 
 +<li>Weight- 10 grams</li> 
 +<li>Temperature Range – Operating: -20 ℃ ~ 85 ℃; storage: -40 ℃ ~ 90 ℃ @ &lt;&nbsp;90%RH</li> 
 +</ul> 
 +</html> 
 + 
 +spec gathered and formatted by [[https://www.cnx-software.com/2018/09/30/esp32-cam-esp32-camera-board/|cnx-software]], check his [[https://www.facebook.com/cnxsoft|feed]] for the latest in embedded open designs 
 +interesting, might be a seeedstudio design, but [[https://www.seeedstudio.com/ESP32-CAM-Development-Board(with-camera)-p-3153.html|abandoned]] [[https://i.imgur.com/yh3N2eL.png|(cache)]]. 
 + 
 +  *[[https://item.taobao.com/item.htm?id=573698917181|AI-thinker]] offical store on taobao 
 +  *[[https://www.aliexpress.com/wholesale?SearchText=ESP32-CAM|ALIexpress sellers]] 
 +  *[[https://coolcomponents.co.uk/collections/cameras/products/esp32-cam-development-boardwith-camera|UK seller]] 
 + 
 +  *{{:pasted:20181219-222557.png?linkonly|pinout}} 
 +  *{{ :ESP32_CAM_V1.6.pdf|schematics}} 
 +  *{{ :esp32-cam.pdf |datasheet (chinese)}} - from wiki 
 +  *[[http://wiki.ai-thinker.com/esp32-cam|wiki-page]] - lots of time offline 
 + 
 +=== gettting it going === 
 +  #install esp-idf on system 
 +  https://docs.espressif.com/projects/esp-idf/en/latest/get-started/#get-esp-idf 
 +   
 +  #get esp-who repo, it will also pull submodule esp32-camera component 
 +  git clone --recursive https://github.com/espressif/esp-who.git 
 +  #if you didnt pull the submodules run  $ git submodule update --init  
 +  cd esp/esp-who/examples/single_chip/camera_web_server/ 
 +   
 +   
 +  # change camera module to ai-thinker in sdkconfig 
 +  # also change port to /dev/ttyUSB0 or whatever is yours.  
 +  # 
 +  # Camera Pins 
 +  # 
 +  CONFIG_CAMERA_MODEL_WROVER_KIT= 
 +  CONFIG_CAMERA_MODEL_M5STACK_PSRAM= 
 +  CONFIG_CAMERA_MODEL_AI_THINKER=y 
 +  CONFIG_CAMERA_MODEL_CUSTOM= 
 +  CONFIG_ESP_FACE_DETECT_ENABLED=y 
 +  CONFIG_ESP_FACE_RECOGNITION_ENABLED=y 
 +  #now compile and flash 
 +  make menuconfig 
 +  make flash 
 + 
 +{{:pasted:20181219-220415.png}} 
  
 ==== M5Stack ==== ==== M5Stack ====
-M5Stack host it's [[https://m5stack.github.io/m5-docs/#/en/product_documents/units/unit_m5camera|product page]] on github and on [[http://m5stack.com/|their]] site.+[[http://m5stack.com/|M5Stack]] host it's [[https://m5stack.github.io/m5-docs/#/en/product_documents/units/unit_m5camera|product page]] on github .
  
 M5Stack warn not to use the cam module for extended time as "{{m5camera_02.jpg?linkonly|it might over heat"}}!\\ M5Stack warn not to use the cam module for extended time as "{{m5camera_02.jpg?linkonly|it might over heat"}}!\\
Line 81: Line 159:
   *[[https://www.amazon.es/gp/product/B07F2DNX6M/r| ES seller AMZ]] -19eu   *[[https://www.amazon.es/gp/product/B07F2DNX6M/r| ES seller AMZ]] -19eu
  
 +===getting image===
 +comes with working demo code: [[https://github.com/m5stack/esp32-cam-demo|github]] 
  
-==== ESP32-CAM ==== +watch their github [[https://github.com/m5stack/m5stack-cam-psram|m5stack-cam-psram]]
-{{ :pasted:20181128-003945.png?direct&400}} +
-[[https://shop72165205.world.taobao.com|AI-thinker]] has  +
- [[https://github.com/donny681/ESP32_CAMERA_QR|released]] a QR-code reading example.  +
- +
- +
-<html> +
-<ul><li>Wireless Module- ESP32-S WiFi 802.11 b/g/n + Bluetooth 4.2 LE module with PCB antenna, u.FL connector, 32Mbit SPI flash, 4MBit PSRAM</li> +
-<li>External Storage – micro SD card slot <strong>up to 4GB</strong></li> +
-<li>Camera +
-<ul><li>FPC connector</li> +
-<li>Support for OV2640 (sold with board) or OV7670 cameras</li> +
-<li>Image Format – JPEG(&nbsp;OV2640 support only ), BMP, grayscale</li> +
-<li>LED flash light</li> +
-</ul></li> +
-<li>Expansion – 16x through-holes with UART, SPI, I2C, PWM</li> +
-<li>Misc – Reset button</li> +
-<li>Power Supply – 5V via pin header</li> +
-<li>Power Consumption +
-<ul><li>Flash LED off – 180mA @ 5V</li> +
-<li>Flash LED on to maximum brightness- 310mA @ 5V</li> +
-<li>Deep-sleep – 6mA @ 5V min.</li> +
-<li>Modem-sleep – 20mA @ 5V min.</li> +
-<li>Light-sleep – 6.7mA @ 5V min.</li> +
-</ul></li> +
-<li>Dimensions – 40.5 x 27 x 4.5 mm</li> +
-<li>Weight- 10 grams</li> +
-<li>Temperature Range – Operating: -20 ℃ ~ 85 ℃; storage: -40 ℃ ~ 90 ℃ @ &lt;&nbsp;90%RH</li> +
-</ul> +
-</html> +
- +
-spec gathered and formatted by [[https://www.cnx-software.com/2018/09/30/esp32-cam-esp32-camera-board/|cnx-software]], check his [[https://www.facebook.com/cnxsoft|feed]] for the latest in embedded open designs +
-interesting, might be a seeedstudio design, but [[https://www.seeedstudio.com/ESP32-CAM-Development-Board(with-camera)-p-3153.html|abandoned]] [[https://i.imgur.com/yh3N2eL.png|(cache)]]. +
- +
-  *[[https://item.taobao.com/item.htm?id=573698917181|AI-thinker]] offical store on taobao  +
-  *[[https://www.aliexpress.com/wholesale?SearchText=ESP32-CAM|ALIexpress sellers]] +
-  *[[https://coolcomponents.co.uk/collections/cameras/products/esp32-cam-development-boardwith-camera|UK seller]] +
-  *{{:pasted:20181209-223036.png?linkonly|pinout}} +
-  *{{ :esp32-cam.pdf |datasheet (chinese)}} - from wiki +
-  *[[http://wiki.ai-thinker.com/esp32-cam|wiki-page]] +
- +
  
 ====esp-who==== ====esp-who====
Line 163: Line 202:
   git clone https://github.com/LilyGO/ESP32-Camera   git clone https://github.com/LilyGO/ESP32-Camera
   #(re)open arduino    #(re)open arduino 
-  File>Examples>Examples from customs libraries>ESP32 camear>ESP32_Station_Cam.ino+  File>Examples>Examples from customs libraries>ESP32 camera>ESP32_Station_Cam.ino
  
 the TTGO is the best one. \\ the TTGO is the best one. \\
Line 171: Line 210:
 click image for the mjpeg_stream output \\ click image for the mjpeg_stream output \\
 {{:pasted:smartselect_20181218-125103_chrome.gif?direct&300|}} {{:pasted:smartselect_20181218-125103_chrome.gif?direct&300|}}
 +
 +===getting image -arduino===
 +  git clone https://github.com/espressif/arduino-esp32.git ~/Documantes/Arduino/hardware/espressif/esp32
 +  git submodule update --init --recursive
 +  #Open [ARDUINO_SKETCHBOOK_DIR]/hardware/espressif/esp32/tools and double-click get.exe
 +  #going for File>Examples>esp32>camera
 +i added the pinout for the T-journal
 +
 +<code>//https://github.com/espressif/esp-who/issues/2#issuecomment-435813085
 +// Select camera model
 +#define CAMERA_MODEL_TTGO_Tjournal
 +
 +#elif defined(CAMERA_MODEL_TTGO_Tjournal)
 +#define PWDN_GPIO_NUM 0
 +#define RESET_GPIO_NUM 15
 +#define Y2_GPIO_NUM 17
 +#define Y3_GPIO_NUM 35
 +#define Y4_GPIO_NUM 34
 +#define Y5_GPIO_NUM 5
 +#define Y6_GPIO_NUM 39
 +#define Y7_GPIO_NUM 18
 +#define Y8_GPIO_NUM 36
 +#define Y9_GPIO_NUM 19
 +#define XCLK_GPIO_NUM 27
 +#define PCLK_GPIO_NUM 21
 +#define HREF_GPIO_NUM 26
 +#define VSYNC_GPIO_NUM 22
 +#define SIOD_GPIO_NUM 25
 +#define SIOC_GPIO_NUM 23
 +</code>
 +  #push G32 on upload start 
 +  
 +
 +
 +{{:pasted:20181224-142203.png?400}}
  
 ==== ESP32-wrover-kit ==== ==== ESP32-wrover-kit ====
Line 245: Line 319:
   * [[https://github.com/m5stack/M5-Schematic/blob/master/Units/m5camera/hardware_diff_with_ESP32CAM_M5Camera.md|pinout diff with esp32-cam]]   * [[https://github.com/m5stack/M5-Schematic/blob/master/Units/m5camera/hardware_diff_with_ESP32CAM_M5Camera.md|pinout diff with esp32-cam]]
  
 +==== getting a pic - superseded ====
 +with help of [[https://github.com/me-no-dev|me-no-dev]] i got the [[#esp32-cam]] working!, below is just all i tried before [[https://github.com/espressif/esp32-camera/issues/7?fbclid=IwAR3BXgsdScCM9Wj6Eb3I6QzCK5oHZu9WrEj6_W1BYUo9wUVXQFzRAudU8pE#issuecomment-448755310|this nudge]] i got.
 +
 +
 +----
 +
 +TLDR: this module comes with a bootloader, but no app. and flashing one didn't get me the results i can work with ATM.\\
 +
 +[[#esp32-cam]] delivery via coolcomponents (3dayups), started by powering it with ftdi breakout (3v/5v) switch. \\
 +but it couldn't get over the startup peaks (after it stabilize on ~160mA). \\
 +
 +
 +using [[https://github.com/donny681/ESP32_CAMERA_QR|cam-qr]] code 
 +arch and esf-idf are in package war. went with  [[https://github.com/konovagit/esp32env|esp32env]] docker 
 +
 +<q>PRO TIP - You can change the baud rate and other properties with make menuconfig which will drop you in esp-idf's project configuration menu.\\ I recommend selecting a baud rate of 921600 as it will reduce flashing times to around 4-5 seconds.</q>
 +
 +espfuse looks cute to probe > https://esp32.com/viewtopic.php?t=6743
 +<hidden>
 +  systemctl start docker
 +  sudo systemctl start docker
 +  echo N | sudo tee /sys/module/overlay/parameters/metacopy
 +  #forking my own as original had several issues
 +  git clone git@github.com:idiot-io/esp32env.git
 +  cd esp32env
 +  make 
 +  make install
 +  sudo cp esp32env /usr/local/bin
 +  sudo chmod a+x /usr/local/bin/esp32env
 +  
 +  git clone https://github.com/donny681/ESP32_CAMERA_QR
 +  cd ESP32_CAMERA_QR
 +  esp32env make menuconfig  # Instead of the traditional `make menuconfig`
 +  esp32env make flash  # Instead of `make flash`
 +  esp32env make monitor # serial comm built in esp-idf, cute see https://docs.espressif.com/projects/esp-idf/en/latest/get-started/#monitor
 +</hidden>
 +it's still not there, had to fix kernel line and massage the dockerfile. 
 +
 +<hidden>
 +<code>
 +esptool.py v2.6-beta1
 +Flashing binaries to serial port /dev/tty.SLAB_USBtoUART (app at offset 0x10000 )...
 +esptool.py v2.6-beta1
 +Serial port /dev/tty.SLAB_USBtoUART
 +Traceback (most recent call last):
 +  File "/esp/esp-idf/components/esptool_py/esptool/esptool.py", line 2865, in <module>
 +    _main()
 +  File "/esp/esp-idf/components/esptool_py/esptool/esptool.py", line 2858, in _main
 +    main()
 +  File "/esp/esp-idf/components/esptool_py/esptool/esptool.py", line 2565, in main
 +    esp = chip_class(each_port, initial_baud, args.trace)
 +  File "/esp/esp-idf/components/esptool_py/esptool/esptool.py", line 213, in __init__
 +    self._port = serial.serial_for_url(port)
 +  File "/usr/lib/python2.7/dist-packages/serial/__init__.py", line 85, in serial_for_url
 +    instance.open()
 +  File "/usr/lib/python2.7/dist-packages/serial/serialposix.py", line 294, in open
 +    raise SerialException(msg.errno, "could not open port %s: %s" % (self._port, msg))
 +serial.serialutil.SerialException: [Errno 2] could not open port /dev/tty.SLAB_USBtoUART: [Errno 2] No such file or directory: '/dev/tty.SLAB_USBtoUART'
 +/esp/esp-idf/components/esptool_py/Makefile.projbuild:62: recipe for target 'flash' failed
 +</code>
 +solved by this [[https://github.com/espressif/esp-idf/issues/712#issuecomment-417988517|comment]]
 +</hidden>
 +
 +then
 +<hidden>
 +<code>
 +esptool.py v2.6-beta1
 +Flashing binaries to serial port /dev/ttyUSB0 (app at offset 0x10000 )...
 +esptool.py v2.6-beta1
 +Serial port /dev/ttyUSB0
 +Connecting........_____....._____....._____....._____....._____....._____....._____
 +
 +A fatal error occurred: Failed to connect to ESP32: Timed out waiting for packet content
 +/esp/esp-idf/components/esptool_py/Makefile.projbuild:62: recipe for target 'flash' failed
 +make: *** [flash] Error 2
 +</code>
 +</hidden>
 +
 +**short GP0&GP2 to ground and disconnect camera**\\ 
 +**dont forget you have to reset the esp32 (btn) when you want to flash**
 +
 +{{:pasted:20181210-132432.png}}
 +
 +then disconnect GP0 and GP2 , reconnect camera, boot and... \\ 
 +YAY! 
 +{{:pasted:20181210-132927.png}}
 +
 +but...\\ 
 +{{:pasted:20181210-133312.png?400&direct}}
 +
 +
 +to get the serial data run ([[https://docs.espressif.com/projects/esp-idf/en/stable/get-started/index.html#monitor|monitor]])
 +  esp32env make monitor
 +
 +on first boot i get the following log
 +<hidden>
 +<code>
 +rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
 +configsip: 0, SPIWP:0xee
 +clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
 +mode:DIO, clock div:2
 +load:0x3fff0018,len:4
 +load:0x3fff001c,len:5868
 +load:0x40078000,len:9176
 +load:0x40080000,len:6064
 +entry 0x40080330
 +I (28) boot: ESP-IDF v3.1.1 2nd stage bootloader
 +I (28) boot: compile time 14:22:34
 +I (28) boot: Enabling RNG early entropy source...
 +0;32mI (33) boot: SPI Speed      : 40MHz
 +I (37) boot: SPI Mode       : DIO
 +I (41) boot: SPI Flash Size : 4MB
 +I (45) boot: Partition Table:
 +I (48) boot: ## Label            Usage          Type ST Offset   Length
 +I (56) boot:  0 nvs              WiFi data        01 02 00009000 00006000
 +I (63) boot:  1 phy_init         RF data          01 01 0000f000 00001000
 +I (71) boot:  2 factory          factory app      000 00010000 00100000
 +I (78) boot: End of partition table
 +I (82) esp_image: segment 0: paddr=0x00010020 vaddr=0x3f400020 size=0x16240 ( 90688) map
 +[0;32mI (123) esp_image: segment 1: paddr=0x00026268 vaddr=0x3ffb0000 size=0x034d0 ( 13520) load
 +I (128) esp_image: segment 2: paddr=0x00029740 vaddr=0x3ffb34d0 size=0x00000 (     0) load
 +I (130) esp_image: segment 3: paddr=0x00029748 vaddr=0x40080000 size=0x00400 (  1024) load
 +I (139) esp_image: segment 4: paddr=0x00029b50 vaddr=0x40080400 size=0x064c0 ( 25792) load
 +I (158) esp_image: segment 5: paddr=0x00030018 vaddr=0x400d0018 size=0x6e4b8 451768) map
 +I (317) esp_image: segment 6: paddr=0x0009e4d8 vaddr=0x400868c0 size=0x0ab48 ( 43848) load
 +I (335) esp_image: segment 7: paddr=0x000a9028 vaddr=0x400c0000 size=0x00000 (     0) load
 +I (336) esp_image: segment 8: paddr=0x000a9030 vaddr=0x50000000 size=0x00000 (     0) load
 +I (352) boot: Loaded app from partition at offset 0x10000
 +I (352) boot: Disabling RNG early entropy source...
 +I (354) cpu_start: Pro cpu up.
 +I (357) cpu_start: Starting app cpu, entry point is 0x40081034
 +I (0) cpu_start: App cpu up.
 +I (368) heap_init: Initializing. RAM available for dynamic allocation:
 +I (375) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM
 +I (381) heap_init: At 3FFB9500 len 00026B00 (154 KiB): DRAM
 +I (387) heap_init: At 3FFE0440 len 00003BC0 (14 KiB): D/IRAM
 +I (393) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM
 +I (400) hea_init: At 40091408 len 0000EBF8 (58 KiB): IRAM
 +I (406) cpu_start: Pro cpu start user code
 +I (200) cpu_start: Starting scheduler on PRO CPU.
 +I (0) cpu_start: Starting scheduler on APP CPU.
 +[0;32mI (246) I2S: DMA Malloc info, datalen=blocksize=256, dma_buf_count=8
 +I (246) I2S: PLL_D2: Req RATE: 78125, real rate: 78125.000, BITS: 16, CLKM: 8, BCK: 8, MCLK: 20000000.000, SCLK: 2500000.000000, diva: 64, divb: 0
 +I (256) camera_xclk: PIN_CTRL before:3ff
 +I (266) camera_xclk: PIN_CTRL after:7fff
 +[0;32mI (4326) camera_demo: Detected OV2640 camera, using JPEG format
 +[0;32mI (4546) system_api: Base MAC address is not set, read default base MAC address from BLK0 of EFUSE
 +I (4546) system_api: Base MAC address is not set, read default base MAC address from BLK0 of EFUSE
 +[0;32mI (4636) phy: phy_version: 400, b6198fa, Sep  3 2018, 15:11:06, 0, 0
 +I (4636) camera_demo: Connecting to "tomato-2.4GHz"
 +[0;32mI (6546) event: sta ip: 192.168.0.93, mask: 2.255.255.0, gw: 192.168.0.1
 +I (6546) camera_demo: Connected
 +I (6546) camera_demo: Open http://192.168.0.93/jpg for single image/jpg image
 +I (6556) camera_demo: Open http://192.168.0.93/jpg_stream for multipart/x-mixed-replace stream of JPEGs
 +I (6566) camera_demo: Free heap: 188012
 +I (6566) camera_demo: Camera demo ready
 +I (28746) camera: Frame 0 done in 158 ms
 +[0;32mI (28906) camera: Frame 1 done in 155 ms
 +I (29066) camera: Frame 2 done in 156 ms
 +</code>
 +</hidden>
 +
 +
 +trying to run esptool (the flasher) without building to faster debug, bin is here <q>/esp/project/build/esp32-cam-demo.bin</q>\\ 
 +to build the app only, without the bootloader you can run (see [[https://docs.espressif.com/projects/esp-idf/en/latest/get-started/make-project.html|docs]])
 +  esp32env make app-flash
 +
 +first image from the moon...\\ 
 +{{:pasted:20181214-233159.png?nolink}}
 +
 +this datamush was also apprant in the ENABLE_TEST_PATTERN
 +
 +===phase2===
 +now the image i got is pretty bad.\\ 
 +im now learning the config system for [[http://linuxdocs.org/HOWTOs/Kernel-HOWTO-4.html|make]] and specificly [[https://docs.espressif.com/projects/esp-idf/en/latest/api-reference/kconfig.html#config-spiram-use|kconfig]]
 +  esp32env vi /esp/project/sdkconfig
 +i later used the recommended 
 +  esp32env make makeconfig 
 +for an ncurses text editor. upped the logging to ''debug'' instead of the default ''info'' and enabled esp32-cam> test pattern
 +
 +{{:pasted:20181215-213613.png?nolink}}
 +<code>I (208210) camera: Frame 262 done in 138 ms
 +D (211100) camera: Waiting for positive edge on VSYNC
 +D (211170) camera: Got VSYNC
 +D (211170) camera: Waiting for frame
 +</code>
 +
 +but hey, thats not the test pattern i was looking for
 +<code>
 +config ENABLE_TEST_PATTERN
 + bool "Enable test pattern on camera output"
 + default n
 + help
 + Configure the camera module to output test pattern instead of live image.
 +
 + Use this option to troubleshoot image issues like noise,
 + distortion, not legible and missing live image.
 + Instead, module will generate regular vertical bars 
 + in shades from dark to white.
 +</code>
 +<hidden><code>
 +I (4720) phy: phy_version: 4000, b6198fa, Sep  3 2018, 15:11:06, 0, 0
 +D (4720) event: SYSTEM_EVENT_STA_START
 +I (4720) camera_demo: Connecting to "tomato-2.4GHz"
 +D (5550) nvs: nvs_set sta.chan 1 1
 +D (5550) nvs: nvs_set_blob sta.apinfo 700
 +D (5550) event: SYSTEM_EVENT_STA_CONNECTED, ssid:tomato-2.4GHz, ssid_len:13, bssid:80:26:89:0d:55:04, channel:1, authmode:3
 +D (5550) tcpip_adapter: dhcp client init ip/mask/gw to all-0
 +D (5560) tcpip_adapter: if0 start ip lost tmr: enter
 +D (5560) tcpip_adapter: if0 start ip lost tmr: no need start because netif=0x3ffcffa0 interval=120 ip=0
 +D (5570) tcpip_adapter: dhcp client start successfully
 +D (6970) tcpip_adapter: if0 dhcpc cb
 +D (6970) tcpip_adapter: if0 ip changed=1
 +D (6970) event: SYSTEM_EVENT_STA_GOT_IP, ip:192.168.0.89, mask:255.255.255.0, gw:192.168.0.1
 +I (6970) event: sta ip: 192.168.0.89, mask: 255.255.255.0, gw: 192.168.0.1
 +I (6980) camera_demo: Connected
 +I (6980) camera_demo: Open http://192.168.0.89/jpg for single image/jpg image
 +I (6990) camera_demo: Open http://192.168.0.89/jpg_stream for multipart/x-mixed-replace stream of JPEGs
 +I (7000) camera_demo: Free heap: 188320
 +I (7000) camera_demo: Camera demo ready
 +D (24580) http_server: Got URI: '/jpg_stream'
 +D (24580) http_server: Got header: 'Host': '192.168.0.89'
 +D (24580) http_server: Got header: 'Connection': 'keep-alive'
 +D (24580) http_server: Got header: 'Upgrade-Insecure-Requests': '1'
 +D (24590) http_server: Got header: 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.80 Safari/537.36'
 +D (24600) http_server: Got header: 'DNT': '1'
 +D (24610) http_server: Got header: 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8'
 +D (24620) http_server: Got header: 'Accept-Encoding': 'gzip, deflate'
 +D (24630) http_server: Got header: 'Accept-Language': 'en-US,en;q=0.9,he;q=0.8,und;q=0.7'
 +D (29630) camera: Waiting for positive edge on VSYNC
 +D (29650) camera: Got VSYNC
 +D (29650) camera: Waiting for frame
 +I (29730) camera: Frame 0 done in 108 ms
 +D (29740) camera: Waiting for positive edge on VSYNC
 +D (29810) camera: Got VSYNC
 +D (29810) camera: Waiting for frame
 +I (29890) camera: Frame 1 done in 155 ms
 +D (29900) camera: Waiting for positive edge on VSYN
 +</code></hidden>
 +
 +// 
 +// 
 +digging some dirt on the esp32 [[https://blog.classycode.com/esp32-floating-point-performance-6e9f6f567a69|floating point performance]], [[http://forums.openmv.io/viewtopic.php?t=613|source]]
 +
 +===phase 3===
 +
 +[[http://forums.openmv.io/viewtopic.php?t=613|micropython]]?
 +
 +micropython on esp32 [[https://hackernoon.com/get-on-the-good-foot-with-micropython-on-the-esp3$|guide]]
 +  sudo pip3 install esptool adafruit-ampy
 +  esptool.py --chip esp32 -p /dev/ttyUSB0 --baud 921600 write_flash \
 +  -z 0x1000 esp32-20181215-v1.9.4-757-g39eef2708.bin 
 +  ampy /dev/ttyUSB0 ls
 +  picocom /dev/ttyUSB0 -b 115200
 +
 +
 +if you get [[https://forum.micropython.org/viewtopic.php?f=16&t=1700&sid=499dbce8dae7d$|wired curropt messages]]
 +  #Try resetting the filesystem using:
 +  import uos
 +  import flashbdev
 +  uos.VfsFat.mkfs(flashbdev.bdev)
 +
 +
 + but why bother, no i2s [[https://github.com/micropython/micropython/issues/4170|support]] yet in micropython
 +
 +===phase 4===
 +so.. i gave up on the [[https://github.com/donny681/ESP32_CAMERA_QR|ESP32_CAMERA_QR]] github and went looking for another code \\ 
 +found a another projects fork that actually outputs an image\\ 
 +[[https://github.com/tmrttmrt/esp32-cam-demo/tree/esp32-cam|tmrttmrt/esp32-cam-demo]].\\
 +but super slowly (1600x1200)...
 +
 +{{:capture.jpg?direct&400|}}
 +
 +revisiting ESP32_CAM_QR i went ahead and in //sdkconfig// enabled
 +  CONFIG_SPIRAM_SUPPORT=y
 +running now 
 +  esp32env make app-flash
 +opened a few more options related to SPRAM
 +<hidden>
 +<code>
 +* SPI RAM config
 +*
 +Initialize SPI RAM when booting the ESP32 (SPIRAM_BOOT_INIT) [Y/n/?] (NEW) 
 +  Ignore PSRAM when not found (SPIRAM_IGNORE_NOTFOUND) [N/y/?] (NEW) 
 +SPI RAM access method
 +  1. Integrate RAM into ESP32 memory map (SPIRAM_USE_MEMMAP) (NEW)
 +  2. Make RAM allocatable using heap_caps_malloc(..., MALLOC_CAP_SPIRAM) (SPIRAM_USE_CAPS_ALLOC) (NEW)
 +> 3. Make RAM allocatable using malloc() as well (SPIRAM_USE_MALLOC) (NEW)
 +choice[1-3?]: 
 +Type of SPI RAM chip in use
 +> 1. ESP-PSRAM32 or IS25WP032 (SPIRAM_TYPE_ESPPSRAM32) (NEW)
 +choice[1]: 1
 +Set RAM clock speed
 +> 1. 40MHz clock speed (SPIRAM_SPEED_40M) (NEW)
 +choice[1]: 1
 +Run memory test on SPI RAM initialization (SPIRAM_MEMTEST) [Y/n/?] (NEW) 
 +Enable workaround for bug in SPI RAM cache for Rev1 ESP32s (SPIRAM_CACHE_WORKAROUND) [Y/n/?] (NEW) 
 +Maximum malloc() size, in bytes, to always put in internal memory (SPIRAM_MALLOC_ALWAYSINTERNAL) [16384] (NEW) 
 +Try to allocate memories of WiFi and LWIP in SPIRAM firstly. If failed, allocate internal memory (WIFI_LWIP_ALLOCATION_FROM_SPIRAM_FIRST) [N/y/?] (NEW) 
 +Reserve this amount of bytes for data that specifically needs to be in DMA or internal memory (SPIRAM_MALLOC_RESERVE_INTERNAL) [32768] (NEW) 
 +Allow external memory as an argument to xTaskCreateStatic (SPIRAM_ALLOW_STACK_EXTERNAL_MEMORY) [N/y/?] (NEW) 
 +*
 +* FreeRTOS
 +*
 +Run FreeRTOS only on first core (FREERTOS_UNICORE) [N/y/?] n
 +Xtensa timer to use as the FreeRTOS tick source
 +> 1. Timer 0 (int 6, level 1) (FREERTOS_CORETIMER_0)
 +  2. Timer 1 (int 15, level 3) (FREERTOS_CORETIMER_1)
 +choice[1-2?]: 1
 +Tick rate (Hz) (FREERTOS_HZ) [100] 100
 +Halt when an SMP-untested function is called (FREERTOS_ASSERT_ON_UNTESTED_FUNCTION) [Y/n/?] y
 +Check for stack overflow
 +  1. No checking (FREERTOS_CHECK_STACKOVERFLOW_NONE)
 +  2. Check by stack pointer value (FREERTOS_CHECK_STACKOVERFLOW_PTRVAL)
 +> 3. Check using canary bytes (FREERTOS_CHECK_STACKOVERFLOW_CANARY)
 +choice[1-3?]: 3
 +Set a debug watchpoint as a stack overflow check (FREERTOS_WATCHPOINT_END_OF_STACK) [N/y/?] n
 +Enable backtrace from interrupt to task context (FREERTOS_INTERRUPT_BACKTRACE) [Y/n/?] y
 +Number of thread local storage pointers (FREERTOS_THREAD_LOCAL_STORAGE_POINTERS) [1] 1
 +FreeRTOS assertions
 +> 1. abort() on failed assertions (FREERTOS_ASSERT_FAIL_ABORT)
 +  2. Print and continue failed assertions (FREERTOS_ASSERT_FAIL_PRINT_CONTINUE)
 +  3. Disable FreeRTOS assertions (FREERTOS_ASSERT_DISABLE)
 +choice[1-3?]: 1
 +Idle Task stack size (FREERTOS_IDLE_TASK_STACKSIZE) [1024] 1024
 +ISR stack size (FREERTOS_ISR_STACKSIZE) [1536] 1536
 +Use FreeRTOS legacy hooks (FREERTOS_LEGACY_HOOKS) [N/y/?] n
 +Maximum task name length (FREERTOS_MAX_TASK_NAME_LEN) [16] 16
 +Enable FreeRTOS static allocation API (SUPPORT_STATIC_ALLOCATION) [Y/?] y
 +  Enable static task clean up hook (ENABLE_STATIC_TASK_CLEAN_UP_HOOK) [N/y/?] (NEW) 
 +FreeRTOS timer task priority (TIMER_TASK_PRIORITY) [1] 1
 +FreeRTOS timer task stack size (TIMER_TASK_STACK_DEPTH) [2048] 2048
 +FreeRTOS timer queue length (TIMER_QUEUE_LENGTH) [10] 10
 +FreeRTOS queue registry size (FREERTOS_QUEUE_REGISTRY_SIZE) [0] 0
 +Enable FreeRTOS trace facility (FREERTOS_USE_TRACE_FACILITY) [N/y/?] n
 +Enable FreeRTOS to collect run time stats (FREERTOS_GENERATE_RUN_TIME_STATS) [N/y/?] n
 +#
 +# configuration written to /esp/project/sdkconfig
 +
 +</code>
 +</hidden>
 +
 +i will copy relevant options from the tmrttmrt fork mentioned above, as best i can
 +<code>
 +-CONFIG_SPIRAM_SUPPORT=
 ++CONFIG_SPIRAM_SUPPORT=y
 ++
 ++#
 ++# SPI RAM config
 ++#
 ++CONFIG_SPIRAM_BOOT_INIT=y
 ++CONFIG_SPIRAM_IGNORE_NOTFOUND=
 ++CONFIG_SPIRAM_USE_MEMMAP=
 ++CONFIG_SPIRAM_USE_CAPS_ALLOC=
 ++CONFIG_SPIRAM_USE_MALLOC=y
 ++CONFIG_SPIRAM_TYPE_ESPPSRAM32=y
 ++CONFIG_SPIRAM_SIZE=4194304
 ++CONFIG_SPIRAM_SPEED_40M=y
 ++CONFIG_SPIRAM_MEMTEST=y
 ++CONFIG_SPIRAM_CACHE_WORKAROUND=y
 ++CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=16384
 ++CONFIG_WIFI_LWIP_ALLOCATION_FROM_SPIRAM_FIRST=
 ++CONFIG_SPIRAM_MALLOC_RESERVE_INTERNAL=32768
 ++CONFIG_SPIRAM_ALLOW_STACK_EXTERNAL_MEMORY=
 +</code>
 +
 +and then start log looks like this
 +
 +<hidden><code>
 +rst:0x1 (POWERON_RESET),boot:0x1b (SPI_FAST_FLASH_BOOT)
 +configsip: 0, SPIWP:0xee
 +clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
 +mode:DIO, clock div:2
 +load:0x3fff0018,len:4
 +load:0x3fff001c,len:5868
 +load:0x40078000,len:9288
 +load:0x40080000,len:6064
 +entry 0x40080330
 +I (28) boot: ESP-IDF v3.1.1 2nd stage bootloader
 +I (28) boot: compile time 20:25:53
 +I (28) boot: Enabling RNG early entropy source...
 +I (33) boot: SPI Speed      : 40MHz
 +I (37) boot: SPI Mode       : DIO
 +I (41) boot: SPI Flash Size : 4MB
 +I (45) boot: Partition Table:
 +I (48) boot: ## Label            Usage          Type ST Offset   Length
 +I (56) boot:  0 nvs              WiFi data        01 02 00009000 00006000
 +I (63) boot:  1 phy_init         RF data          01 01 0000f000 00001000
 +I (71) boot:  2 factory          factory app      00 00 00010000 00100000
 +I (78) boot: End of partition table
 +I (82) esp_image: segment 0: paddr=0x00010020 vaddr=0x3f400020 size=0x1c0c0 (114880) map
 +I (131) esp_image: segment 1: paddr=0x0002c0e8 vaddr=0x3ffb0000 size=0x036f8 ( 14072) load
 +I (137) esp_image: segment 2: paddr=0x0002f7e8 vaddr=0x3ffb36f8 size=0x00000 (     0) load
 +I (138) esp_image: segment 3: paddr=0x0002f7f0 vaddr=0x40080000 size=0x00400 (  1024) load
 +I (148) esp_image: segment 4: paddr=0x0002fbf8 vaddr=0x40080400 size=0x00418 (  1048) load
 +I (157) esp_image: segment 5: paddr=0x00030018 vaddr=0x400d0018 size=0x77ea8 (491176) map
 +I (337) esp_image: segment 6: paddr=0x000a7ec8 vaddr=0x40080818 size=0x15b30 ( 88880) load
 +I (374) esp_image: segment 7: paddr=0x000bda00 vaddr=0x400c0000 size=0x00000 (     0) load
 +I (374) esp_image: segment 8: paddr=0x000bda08 vaddr=0x50000000 size=0x00000 (     0) load
 +I (394) boot: Loaded app from partition at offset 0x10000
 +I (394) boot: Disabling RNG early entropy source...
 +I (396) spiram: SPI RAM mode: flash 40m sram 40m
 +I (400) spiram: PSRAM initialized, cache is in low/high (2-core) mode.
 +I (407) cpu_start: Pro cpu up.
 +I (411) cpu_start: Starting app cpu, entry point is 0x4008136c
 +I (0) cpu_start: App cpu up.
 +I (1310) spiram: SPI SRAM memory test OK
 +I (1311) heap_init: Initializing. RAM available for dynamic allocation:
 +D (1311) heap_init: New heap initialised at 0x3ffae6e0
 +I (1316) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM
 +D (1322) heap_init: New heap initialised at 0x3ffb97b0
 +I (1327) heap_init: At 3FFB97B0 len 00026850 (154 KiB): DRAM
 +I (1334) heap_init: At 3FFE0440 len 00003BC0 (14 KiB): D/IRAM
 +I (1340) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM
 +D (1347) heap_init: New heap initialised at 0x40096348
 +I (1352) heap_init: At 40096348 len 00009CB8 (39 KiB): IRAM
 +I (1358) cpu_start: Pro cpu start user code
 +I (1363) spiram: Adding pool of 4096K of external SPI memory to heap allocator
 +I (1371) spiram: Reserving pool of 32K of internal memory for DMA/internal allocations
 +D (1387) clk: RTC_SLOW_CLK calibration value: 3185024
 +D (54) intr_alloc: Connected src 46 to int 2 (cpu 0)
 +D (55) intr_alloc: Connected src 57 to int 3 (cpu 0)
 +D (55) intr_alloc: Connected src 24 to int 9 (cpu 0)
 +I (60) cpu_start: Starting scheduler on PRO CPU.
 +D (0) intr_alloc: Connected src 25 to int 2 (cpu 1)
 +I (0) cpu_start: Starting scheduler on APP CPU.
 +D (75) heap_init: New heap initialised at 0x3ffe0440
 +D (85) heap_init: New heap initialised at 0x3ffe4350
 +D (95) nvs: nvs_flash_init_custom partition=nvs start=9 count=6
 +D (105) camera: Enabling XCLK output
 +D (105) intr_alloc: Connected src 33 to int 12 (cpu 0)
 +D (105) I2S: Addr[0] = 1073471164
 +D (115) I2S: Addr[1] = 1073471424
 +D (115) I2S: Addr[2] = 1073471684
 +D (115) I2S: Addr[3] = 1073471944
 +D (125) I2S: Addr[4] = 1073472204
 +D (125) I2S: Addr[5] = 1073472464
 +D (125) I2S: Addr[6] = 1073472724
 +D (135) I2S: Addr[7] = 1073472984
 +I (135) I2S: DMA Malloc info, datalen=blocksize=256, dma_buf_count=8
 +I (145) I2S: PLL_D2: Req RATE: 78125, real rate: 78125.000, BITS: 16, CLKM: 8, BCK: 8, MCLK: 20000000.000, SCLK: 2500000.000000, diva: 64, divb: 0
 +D (155) I2S: data: out 189, in: -1, ws: 26, bck: 24
 +I (165) camera_xclk: PIN_CTRL before:3ff
 +I (165) camera_xclk: PIN_CTRL after:7fff
 +D (165) camera: Initializing SSCB
 +D (175) camera: Resetting camera
 +D (4175) camera: Searching for camera address
 +D (4185) camera: Detected camera at address=0x30
 +D (4195) camera: Camera PID=0x26 VER=0x42 MIDL=0x7f MIDH=0xa2
 +D (4195) camera: Doing SW reset of sensor
 +I (4235) camera_demo: Detected OV2640 camera, using JPEG format
 +D (4265) camera: Setting frame size to 160x120
 +D (4325) camera: Test pattern enabled
 +D (4325) camera: in_bpp: 2, fb_bpp: 2, fb_size: 3840, mode: 0, width: 160 height: 120
 +D (4325) camera: Allocating frame buffer (3840 bytes)
 +D (4325) camera: Initializing I2S and DMA
 +D (4335) intr_alloc: Connected src 32 to int 13 (cpu 0)
 +D (4335) camera: Line width (for DMA): 1280 bytes
 +D (4345) camera: DMA buffer size: 1280, DMA buffers per line: 1
 +D (4345) camera: DMA buffer count: 4
 +D (4355) camera: Allocating DMA buffer #0, size=1280
 +D (4355) camera: Allocating DMA buffer #1, size=1280
 +D (4365) camera: Allocating DMA buffer #2, size=1280
 +D (4365) camera: Allocating DMA buffer #3, size=1280
 +D (4375) camera: Initializing GPIO interrupts
 +D (4375) intr_alloc: Connected src 22 to int 17 (cpu 0)
 +D (4455) camera: Init done
 +D (4455) nvs: nvs_open_from_partition misc 1
 +D (4455) nvs: nvs_get_str_or_blob log
 +I (4455) system_api: Base MAC address is not set, read default base MAC address from BLK0 of EFUSE
 +I (4465) system_api: Base MAC address is not set, read default base MAC address from BLK0 of EFUSE
 +D (4475) nvs: nvs_open_from_partition nvs.net80211 1
 +D (4475) nvs: nvs_get opmode 1
 +D (4475) nvs: nvs_get_str_or_blob sta.ssid
 +D (4485) nvs: nvs_get_str_or_blob sta.mac
 +D (4485) nvs: nvs_get sta.authmode 1
 +D (4495) nvs: nvs_get_str_or_blob sta.pswd
 +D (4495) nvs: nvs_get_str_or_blob sta.pmk
 +D (4495) nvs: nvs_get sta.chan 1
 +D (4505) nvs: nvs_get auto.conn 1
 +D (4505) nvs: nvs_get bssid.set 1
 +D (4505) nvs: nvs_get_str_or_blob sta.bssid
 +D (4515) nvs: nvs_get sta.lis_intval 2
 +D (4515) nvs: nvs_get sta.phym 1
 +D (4525) nvs: nvs_get sta.phybw 1
 +D (4525) nvs: nvs_get_str_or_blob sta.apsw
 +D (4525) nvs: nvs_get_str_or_blob sta.apinfo
 +D (4535) nvs: nvs_get sta.scan_method 1
 +D (4535) nvs: nvs_get sta.sort_method 1
 +D (4545) nvs: nvs_get sta.minrssi 1
 +D (4545) nvs: nvs_get sta.minauth 1
 +D (4545) nvs: nvs_get_str_or_blob ap.ssid
 +D (4555) nvs: nvs_get_str_or_blob ap.mac
 +D (4555) nvs: nvs_get_str_or_blob ap.passwd
 +D (4565) nvs: nvs_get_str_or_blob ap.pmk
 +D (4565) nvs: nvs_get ap.chan 1
 +D (4565) nvs: nvs_get ap.authmode 1
 +D (4575) nvs: nvs_get ap.hidden 1
 +D (4575) nvs: nvs_get ap.max.conn 1
 +D (4575) nvs: nvs_get bcn.interval 2
 +D (4585) nvs: nvs_get ap.phym 1
 +D (4585) nvs: nvs_get ap.phybw 1
 +D (4585) nvs: nvs_get ap.sndchan 1
 +D (4595) nvs: nvs_get lorate 1
 +D (4595) nvs: nvs_set_blob sta.mac 6
 +D (4595) nvs: nvs_set_blob ap.mac 6
 +D (4605) nvs: nvs_set_blob sta.ssid 36
 +D (4605) nvs: nvs_set_blob sta.pswd 65
 +D (4615) nvs: nvs_set bssid.set 1 0
 +D (4615) nvs: nvs_set sta.lis_intval 2 3
 +D (4615) nvs: nvs_set sta.scan_method 1 0
 +D (4625) nvs: nvs_set sta.sort_method 1 0
 +D (4625) nvs: nvs_set sta.minrssi 1 -127
 +D (4625) nvs: nvs_set sta.minauth 1 0
 +D (4635) nvs: nvs_set_blob sta.apsw 2
 +D (4635) nvs: nvs_set_blob sta.apinfo 700
 +D (4645) RTC_MODULE: Wi-Fi takes adc2 lock.
 +D (4645) phy_init: loading PHY init data from application binary
 +D (4645) nvs: nvs_open_from_partition phy 0
 +D (4655) nvs: nvs_get cal_version 4
 +D (4655) nvs: nvs_get_str_or_blob cal_mac
 +D (4655) nvs: nvs_get_str_or_blob cal_data
 +D (4665) nvs: nvs_close 3
 +I (4745) phy: phy_version: 4000, b6198fa, Sep  3 2018, 15:11:06, 0, 0
 +D (4745) event: SYSTEM_EVENT_STA_START
 +I (4745) camera_demo: Connecting to "tomato-2.4GHz"
 +D (5715) nvs: nvs_set sta.chan 1 1
 +D (5715) nvs: nvs_set_blob sta.apinfo 700
 +D (5715) event: SYSTEM_EVENT_STA_CONNECTED, ssid:tomato-2.4GHz, ssid_len:13, bssid:80:26:89:0d:55:04, channel:1, authmode:3
 +D (5715) tcpip_adapter: dhcp client init ip/mask/gw to all-0
 +D (5725) tcpip_adapter: if0 start ip lost tmr: enter
 +D (5725) tcpip_adapter: if0 start ip lost tmr: no need start because netif=0x3ffd054c interval=120 ip=0
 +D (5735) tcpip_adapter: dhcp client start successfully
 +D (6985) tcpip_adapter: if0 dhcpc cb
 +D (6985) tcpip_adapter: if0 ip changed=1
 +D (6985) event: SYSTEM_EVENT_STA_GOT_IP, ip:192.168.0.89, mask:255.255.255.0, gw:192.168.0.1
 +I (6985) event: sta ip: 192.168.0.89, mask: 255.255.255.0, gw: 192.168.0.1
 +I (6995) camera_demo: Connected
 +I (6995) camera_demo: Open http://192.168.0.89/jpg for single image/jpg image
 +I (7005) camera_demo: Open http://192.168.0.89/jpg_stream for multipart/x-mixed-replace stream of JPEGs
 +I (7015) camera_demo: Free heap: 4381092
 +I (7025) camera_demo: Camera demo ready
 +
 +</code></hidden>
 +still debug doesnt look as expected (lines), and disabling its still shit...
 +
 +back to ttmmtt fork, now with a change at app_main.c
 +  #define CAMERA_FRAME_SIZE CAMERA_FS_QQVGA //CAMERA_FS_UXGA
 +
 +{{:pasted:20181216-232436.png}}
 +
 +i suspect the slow framerate (0.05fps) and finkness is just there.\\
 +// ESP8266 was winXP, ESP32 is windows vista!//
 +
 +=== phase#5 ===
 +now i found [[https://github.com/espressif/esp32-camera|esp32-camera]] espresiff github repo, maybe it's the key. \\
 +it needs an SPRAM board so i will return to the [[#ESP32-CAM]] module, that gave me [[#getting a pic|lots of]] grief \\
 +this one needs more work to adapt to my virtual dev environment (esp32env), as in\\
 +
 +clone the hello-world example
 +  mkdir -p ~/dev/esp32-camera-test/components
 +  cp /esp-idf-master/examples/get-started/hello_world/ ~/dev/esp32-camera-test
 +add the repo to it
 +  cd ~/dev/esp32-camera-test/components
 +  git clone https://github.com/espressif/esp32-camera
 +compile/flash
 +  esp32env make menuconfig
 +  esp32env make -j4 all
 +  esp32env make -j4 flash
 +
 +fuck this shit, [[https://github.com/espressif/esp32-camera/issues/7|arduino support for the esp32-camera is out!]]\\
 +but.... still not fully backed. 
 +
 +trying a fork of esp32-camera by M5 Stack didn't result in much , [[https://github.com/igrr/esp32-cam-demo/issues/106|0x20001]] error
 +
 +  error 
 +  I (102) camera: Searching for camera address
 +  E (112) camera: Camera probe failed with error 0x20001
 +  E (112) camera: Camera Init Failed 
 +full boot log
 +<hidden><code>
 +  rst:0x1 (POWERON_RESET),boot:0x1b (SPI_FAST_FLASH_BOOT)
 +configsip: 0, SPIWP:0xee
 +clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
 +mode:DIO, clock div:2
 +load:0x3fff0018,len:4
 +load:0x3fff001c,len:5980
 +load:0x40078000,len:8964
 +load:0x40080400,len:6360
 +entry 0x40080728
 +I (28) boot: ESP-IDF v3.3-beta1-44-gda2116f55 2nd stage bootloader
 +I (28) boot: compile time 22:57:44
 +I (28) boot: Enabling RNG early entropy source...
 +I (34) boot: SPI Speed      : 40MHz
 +I (38) boot: SPI Mode       : DIO
 +I (42) boot: SPI Flash Size : 4MB
 +I (47) boot: Partition Table:
 +I (50) boot: ## Label            Usage          Type ST Offset   Length
 +I (57) boot:  0 nvs              WiFi data        01 02 00009000 00006000
 +I (65) boot:  1 phy_init         RF data          01 01 0000f000 00001000
 +I (72) boot:  2 factory          factory app      00 00 00010000 00100000
 +I (80) boot: End of partition table
 +I (84) esp_image: segment 0: paddr=0x00010020 vaddr=0x3f400020 size=0x1b5dc (112092) map
 +I (132) esp_image: segment 1: paddr=0x0002b604 vaddr=0x3ff80000 size=0x00000 (     0) load
 +I (132) esp_image: segment 2: paddr=0x0002b60c vaddr=0x3ff80000 size=0x00000 (     0) load
 +I (139) esp_image: segment 3: paddr=0x0002b614 vaddr=0x3ffb0000 size=0x03088 ( 12424) load
 +I (152) esp_image: segment 4: paddr=0x0002e6a4 vaddr=0x3ffb3088 size=0x00000 (     0) load
 +I (156) esp_image: segment 5: paddr=0x0002e6ac vaddr=0x40080000 size=0x00400 (  1024) load
 +0x40080000: _WindowOverflow4 at /home/yair/esp/esp-idf/components/freertos/xtensa_vectors.S:1685
 +
 +I (166) esp_image: segment 6: paddr=0x0002eab4 vaddr=0x40080400 size=0x0155c (  5468) load
 +I (176) esp_image: segment 7: paddr=0x00030018 vaddr=0x400d0018 size=0x72208 (467464) map
 +0x400d0018: _stext at ??:?
 +
 +I (345) esp_image: segment 8: paddr=0x000a2228 vaddr=0x4008195c size=0x13558 ( 79192) load
 +0x4008195c: timer_list_unlock at /home/yair/esp/esp-idf/components/esp32/esp_timer.c:256
 +
 +I (376) esp_image: segment 9: paddr=0x000b5788 vaddr=0x400c0000 size=0x00000 (     0) load
 +I (377) esp_image: segment 10: paddr=0x000b5790 vaddr=0x50000000 size=0x00000 (     0) load
 +I (383) esp_image: segment 11: paddr=0x000b5798 vaddr=0x50000000 size=0x00000 (     0) load
 +I (404) boot: Loaded app from partition at offset 0x10000
 +I (404) boot: Disabling RNG early entropy source...
 +I (407) spiram: Found 64MBit SPI RAM device
 +I (411) spiram: SPI RAM mode: flash 40m sram 40m
 +I (416) spiram: PSRAM initialized, cache is in low/high (2-core) mode.
 +I (423) cpu_start: Pro cpu up.
 +I (427) cpu_start: Application information:
 +I (432) cpu_start: Project name:     camera
 +I (437) cpu_start: App version:      3435ff5-dirty
 +I (442) cpu_start: Compile time:     22:57:47
 +I (447) cpu_start: Compile date:     Dec 17 2018
 +I (453) cpu_start: ESP-IDF:          v3.3-beta1-44-gda2116f55
 +I (459) cpu_start: Starting app cpu, entry point is 0x400812f4
 +0x400812f4: call_start_cpu1 at /home/yair/esp/esp-idf/components/esp32/cpu_start.c:261
 +
 +I (0) cpu_start: App cpu up.
 +I (1325) spiram: SPI SRAM memory test OK
 +I (1325) heap_init: Initializing. RAM available for dynamic allocation:
 +I (1325) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM
 +I (1331) heap_init: At 3FFBB068 len 00024F98 (147 KiB): DRAM
 +I (1338) heap_init: At 3FFE0440 len 00003AE0 (14 KiB): D/IRAM
 +I (1344) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM
 +I (1351) heap_init: At 40094EB4 len 0000B14C (44 KiB): IRAM
 +I (1357) cpu_start: Pro cpu start user code
 +I (1362) spiram: Adding pool of 4096K of external SPI memory to heap allocator
 +I (41) cpu_start: Starting scheduler on PRO CPU.
 +I (0) cpu_start: Starting scheduler on APP CPU.
 +I (42) spiram: Reserving pool of 32K of internal memory for DMA/internal allocations
 +I (82) camera: Enabling XCLK output
 +I (82) camera: Initializing SSCB
 +I (82) camera: Resetting camera
 +I (102) camera: Searching for camera address
 +E (112) camera: Camera probe failed with error 0x20001
 +E (112) camera: Camera Init Failed
 +I (152) wifi: wifi driver task: 3ffca96c, prio:23, stack:3584, core=0
 +I (152) wifi: wifi firmware version: 328353e
 +I (152) wifi: config NVS flash: enabled
 +I (162) wifi: config nano formating: disabled
 +I (162) system_api: Base MAC address is not set, read default base MAC address from BLK0 of EFUSE
 +I (172) system_api: Base MAC address is not set, read default base MAC address from BLK0 of EFUSE
 +I (192) wifi: Init dynamic tx buffer num: 32
 +I (192) wifi: Init data frame dynamic rx buffer num: 32
 +I (192) wifi: Init management frame dynamic rx buffer num: 32
 +I (202) wifi: Init static tx buffer num: 16
 +I (202) wifi: Init static rx buffer size: 1600
 +I (212) wifi: Init static rx buffer num: 10
 +I (212) wifi: Init dynamic rx buffer num: 32
 +I (302) phy: phy_version: 4000, b6198fa, Sep  3 2018, 15:11:06, 0, 0
 +I (302) wifi: mode : sta (24:0a:c4:29:a6:34)
 +I (302) camera: wifi_init_sta finished.
 +I (302) camera: connect to ap SSID:tomato-2.4GHz password:lastfall
 +I (422) wifi: new:<1,1>, old:<1,0>, ap:<255,255>, sta:<1,1>, prof:1
 +I (1112) wifi: state: init -> auth (b0)
 +I (1112) wifi: state: auth -> assoc (0)
 +I (1122) wifi: state: assoc -> run (10)
 +I (1132) wifi: connected with tomato-2.4GHz, channel 1, bssid = 80:26:89:0d:55:04
 +I (1142) wifi: pm start, type: 1
  
 +I (2612) event: sta ip: 192.168.0.89, mask: 255.255.255.0, gw: 192.168.0.1
 +I (2612) camera: got ip:192.168.0.89
 +</code></hidden>