Asked

Alternative To Ezrobot Ezb For Robot Head Project

My course has primarily focused on robotics projects using the EZ-B controller and a camera for real-time interfacing. With recent developments, I am planning to create an additional video that incorporates Synthiam's support for other types of controllers. Although I've successfully flashed an alternative controller, it lacked compatibility with camera integration and Wi-Fi capabilities. The absence of an onboard computer limits the use of a USB camera, posing a significant challenge.

This dependency on specific components like the EZ-B, IO Tiny, and cameras can be problematic. For my course project, Mecha Morphix, which involves controlling five servos, the Arduino Mega seems excessive. I am in search of a suitable controller, compatible with Synthiam ARC, that includes both Wi-Fi and camera support to effectively replace the EZ-B.

I noticed that the ESP32 with a camera is listed among the supported controllers for ARC. Has anyone experimented with using the ESP32 in conjunction with a camera for such applications? Any insights or experiences would be appreciated.


Related Hardware ESP32 Cam

ARC Pro

Upgrade to ARC Pro

Become a Synthiam ARC Pro subscriber to unleash the power of easy and powerful robot programming

Author Avatar
PRO
Canada
#49  

Short answer up front

  • The common, widelysupported ESP32CAM board that Synthiam builds firmwares for is the AITHINKER module (select CAMERA_MODEL_AI_THINKER).
  • If the camera module itself reports OV3660, that indicates the sensor chip is an OV3660 (not the usual OV2640 on AIThinker). That can require a different camera config. Don’t assume AI_THINKER if the sensor is OV3660 - we need to verify.

What to do next (recommended, stepbystep)

  1. Try the Synthiam binary first (safe, fast)
  • Flash the Synthiam ESP32Cam EZB .bin you linked.
  • Open a Serial Monitor at 115200 baud, reset/power the board, and watch the boot log.
  • Look for camera init lines such as "camera init done", "camera probe successful", or any camera sensor identification text. Paste the complete serial output here (I can’t see images - please paste text).

Why the serial log matters

  • The firmware usually logs whether the camera probe succeeded and often prints sensor info or a failure message. That tells us which model the firmware succeeded with (and whether a mismatch exists).
  1. If you don’t get useful serial output, or the camera probe fails
  • The camera model #define in source must match the module/pinout the binary expects. The synthiam binary you linked most likely was built for a particular model (commonly AI_THINKER). If your module’s sensor is actually OV3660, that could cause probe failures unless the firmware was configured accordingly.
  • If probe fails, paste the serial log and I’ll tell you which #define to use or what pin remapping is needed.
  1. If you want to detect the sensor directly (optional)
  • I can give you a simple Arduino sketch that initializes the esp32 camera with a guessed pinmap and prints the camera probe output / sensor id. If you want that, tell me which board pinout you have (or paste the Freenove pinout) and I’ll prepare the sketch.

Quick guide to the #defines you saw in the firmware

  • CAMERA_MODEL_AI_THINKER - usually corresponds to the common OV2640 modules used on the lowcost ESP32CAM board (AIThinker). If the module is AIThinker / OV2640, this is the right choice.
  • CAMERA_MODEL_WROVER_KIT, ESP_EYE, M5STACK_* - are for other Espressif development boards or M5Stack modules; each has its own camera pins and sometimes PSRAM differences.

If you see OV3660 printed on the camera

  • That indicates the sensor chip is OV3660. It’s not the usual OV2640, so the default AI_THINKER config may or may not work. We’ll need to:
    • Verify the camera pin mapping for that module, and
    • Use a camera_config_t that matches those pins and the correct driver support in the Arduino core being used.

What I can do for you right now

  • Option A - If you flashed the Synthiam .bin already, paste the serial log text here and I’ll interpret it and tell you whether it matched the camera and which change is needed.
  • Option B - I’ll provide a small detection sketch (Arduino) that will initialize the camera and print the sensor ID and probe result. You can run it and paste the output.
  • Option C - If you want to move to the Freenove ESP32S3 CAM next, paste the Freenove pinout and confirm whether it has PSRAM; I’ll draft a readytoflash sketch (camera pins + EZB server skeleton) for that board.

One reminder: I can’t view images, so please paste any serial text or board pinout text here. Which option would you like me to do now?


I am a customer support GPT-powered AI and still learning. If you have doubts about my response, please use the support documentation to verify my answer.
Author Avatar
PRO
USA
#50  

ok I'll try first with AI thinker. The sales pitch for the camera says: "The original OV2640 camera has been updated to OV3660, with clearer and more stable image quality. The usage method remains unchanged, improving efficiency." So hopefully no changes.

Author Avatar
PRO
USA
#52  

Note: The board shows up in my network and its transmitting it just wont connect to the board in ARC.

Author Avatar
PRO
Canada
#53  

Good - thanks for the details. Let’s methodically troubleshoot why ARC won’t connect to the board in AP mode and get you streaming.

Quick checklist (most common causes)

  • Your PC must be connected to the ESP32 AP WiFi network. If your PC is still on your home router WiFi, it will not see the ESP32 AP IP.
  • Use the exact IP the board printed on the Serial Monitor (the ESP32 AP default IP is usually 192.168.4.1 but don’t assume - confirm).
  • ARC needs the camera URL in the Camera Device skill as an EZB stream URL: EZB://<IP> or EZB://<IP>:24 (both formats are valid; try both).
  • Windows firewall, VPN or a network profile can block ARC from connecting - temporarily disable firewall/VPN while testing.
  • If you flashed a binary, Arduino IDE board selection does not affect runtime connectivity; you only need the proper board type when compiling from source.

Stepbystep tests and actions

  1. Verify PC is on the ESP32 AP
  • On your PC, open the WiFi list and connect to the ESP32 SSID the board announces (Serial Monitor shows SSID or it looks like ESP32CAMxxxx).
  • After connecting, confirm the PC IP is in the same range as the ESP32 AP (e.g., 192.168.4.x). If it’s still on your router (192.168.1.x), switch to the board’s AP.
  1. Confirm the board IP from Serial Monitor
  • Open Serial Monitor at 115200 baud, reset the board, and copy/paste the camera init lines here.
  • Look for lines like:
    • "AP mode, IP: 192.168.4.1"
    • or "Connected, IP: 192.168.1.XX" (if STA mode) Paste the exact text (I can’t view images - text only).
  1. Ping the board from your PC
  • Open a command prompt and run: ping 192.168.4.1 (Replace with the IP shown on Serial Monitor.)
  • If ping fails, the PC is not connected to the same network (or firewall is blocking ICMP). Fix WiFi connection first.
  1. Try the Camera Device skill with an EZB URL
  • In ARC: Project -> Add Skill -> Camera -> Camera Device (if you already have it open, Stop the camera first).
  • In the device dropdown choose "Custom" and enter one of:
    • EZB://<board-ip>
    • EZB://<board-ip>:24 (Example) EZB://192.168.4.1 or EZB://192.168.4.1:24
  • Press Start.

Alternate: Start programmatically (ControlCommand)

  • Open a Script control and run this JS example:
// Replace the IP with the value your board printed
ControlCommand("Camera", "CameraStart", "EZB://192.168.4.1");

or

ControlCommand("Camera", "CameraStart", "EZB://192.168.4.1:24");
  1. If the Camera control still fails to connect
  • Check ARC debug window (three dots on the Camera skill -> Debug or look at the ARC Console for error text) - paste the error text here.
  • Try directly opening the board IP in a web browser to test connectivity (this firmware may not provide an HTTP stream page, but it’ll show if the IP is reachable): http://192.168.4.1 (replace IP). If page times out, PC and board are not networked.
  1. Firewall / VPN
  • Temporarily disable Windows firewall or any active VPN and retry the CameraStart step. If it connects with firewall off, create an allow rule for ARC or enable necessary ports.
  1. Board selection in Arduino IDE (for compiling/if you recompile source)
  • If you later compile source, use the esp32 Arduino core and choose the AI Thinker ESP32-CAM board (or "ESP32 Wrover Module" if your core doesn’t list AI Thinker). But this is only for building from source - not required when flashing a .bin with esptool.

If you still can’t connect, please provide:

  • The exact Serial Monitor camera/init output (paste text).
  • The board IP shown.
  • The Windows PC IP when you connect to the ESP32 AP (run ipconfig in cmd and paste the IPv4 address).
  • The exact command or CameraStart error text you see in ARC.

If you paste those pieces I’ll:

  • Tell you the exact CameraStart string to use.
  • Provide any firewall troubleshooting steps specific to ARC.
  • If needed, give a small ControlCommand test script you can paste and run to show connection/log output.

I am a customer support GPT-powered AI and still learning. If you have doubts about my response, please use the support documentation to verify my answer.
Author Avatar
PRO
USA
#54   — Edited

@Athena I used the serial monitor and found the correct IP. So I can connect successfully to the board. But the camera will not connect. Based on your instructions I used "custom" in the camera drop down and added "EZB://192.168.50.1" (The ESP32 CAMs IP address) and then tried with "EZB://192.168.50.1:24". I will not enable the camera. I get the following error :" Camera Initialized: EZB://192.168.50.1:24 @ 320x240 EZ-B v4 Camera Error: The operation has timed out. Camera Disabled"

Author Avatar
PRO
Canada
#55  

Thanks - good progress getting the board reachable on the network. A Camera "operation has timed out" usually means ARC could not open the EZB camera socket on the port the firmware is listening on (or something on your PC/network is blocking the connection). Let’s troubleshoot step-by-step so we can pinpoint the failure.

Quick checklist (to verify first)

  • Confirm your PC is connected to the ESP32 AP network (same subnet as the ESP32 IP).
  • Confirm you can ping the ESP32 IP from the PC.
  • Confirm the ESP32 serial log shows the camera initialized and a camera server listening (we need to see those serial lines).

Step 1 - Inspect / paste the serial monitor output

  1. Open Serial Monitor at 115200 and reset the board.
  2. Copy the camera-related lines. Look for lines like:
    • camera probe successful / camera init done
    • camera model / sensor id
    • AP mode / IP address
    • "server started" or "listening on port 24" (or similar)

Paste those exact camera/server lines here (I cannot view images - please paste text). That will tell us whether the firmware actually started the EZB camera server and which port it bound to.

Step 2 - Check the listening TCP port from your PC From your Windows PC open PowerShell (or cmd) and run:

PowerShell:

Test-NetConnection -ComputerName 192.168.50.1 -Port 24

(or replace 192.168.50.1 with the IP printed on serial). Or use telnet:

telnet 192.168.50.1 24
  • If Test-NetConnection reports TcpTestSucceeded : True, the port is open and ARC should be able to connect.
  • If TcpTestSucceeded : False (timeout / connection refused), the ESP32 is not listening on port 24 or firewall is blocking access.

Paste the Test-NetConnection (or telnet) output here.

Step 3 - Try common HTTP camera endpoints (quick sanity test) Some ESP32 camera firmware expose an HTTP snapshot/stream endpoint. Try these in a browser (replace IP):

If any respond, let me know the result. Note: the Synthiam EZB stream is not necessarily the same as those HTTP endpoints, but this helps check the camera stream is running.

Step 4 - ARC side: start with the Camera Device skill and get debug text

  • Open the Camera Device skill in ARC.
  • Stop/start the camera and capture the Debug/Console output (three-line kebab -> Debug). Copy the exact error text here.
  • Also try programmatically starting the camera from a Script control so we can capture program outputs:

JavaScript example (paste into Script control and run):

print("Starting camera via ControlCommand...");
ControlCommand("Camera","CameraStart","EZB://192.168.50.1:24");
print("Done starting command");

Paste any output displayed in ARC or errors shown.

Step 5 - Firewall / antivirus / VPN

  • Temporarily disable Windows Firewall and any VPN/antivirus and re-run the Test-NetConnection and the CameraStart in ARC. If it works with firewall off, add an allow rule for ARC (or allow outgoing TCP to the ESP32 IP/port).

Step 6 - If TCP port closed - next actions

  • Re-check the serial log for any "camera probe failed" messages. If you see camera probe failure (sensor not probed), the firmware may have incompatible camera model/pinmap (OV3660 vs OV2640). Paste the exact camera probe lines.
  • If serial shows probe OK but no server started line: the firmware may be crashing or failing before server thread creation; paste full serial starting from boot to the camera lines.

Step 7 - If everything on the ESP32 side looks OK but ARC still times out

  • Let’s temporarily test with a raw TCP client to confirm the server responds (e.g., use netcat or socat from another device, or use telnet as above). If that shows a connection, ARC should work; then we’ll look at ARC debug and camera skill settings (resolution, skip frames, preview type) to rule out timeout caused by massive initial negotiation.

Notes / likely causes

  • The firmware may not actually use port 24 (firmware might configure a different port). Serial output will show the expected port.
  • Windows firewall often blocks local TCP connections to devices when PC connects to a different WiFi network (Windows profile public/private). Temporarily disabling firewall is helpful to test.
  • OV3660 vs OV2640: some modules switch sensors. If camera probe is failing, you’ll need the correct camera model/pinmap in the firmware. If the synthiam binary assumed OV2640 but your module has OV3660, streaming may fail.

What I need from you now

  1. Paste the camera-related serial monitor text (full camera init section).
  2. Paste the Test-NetConnection or telnet output for the ESP32 IP:24.
  3. Paste the ARC Camera Debug console message (the full error output).

Once you paste those three items I’ll tell you exactly why ARC times out and give the exact next fix (change camera define in firmware and reflash, open firewall rule, or use a different port / re-run the EZB server). If you want I can also provide a tiny Arduino detection sketch that prints the sensor ID and the camera probe result if serial logs are inconclusive.


I am a customer support GPT-powered AI and still learning. If you have doubts about my response, please use the support documentation to verify my answer.
Author Avatar
PRO
USA
#56  

I have success! I changed the board to AI Thinker ESP32-CAM board. And reflashed it and everything works now. Now sure if that was the issue or something else fixed it.

I have the OV2640 and the OV3660 cameras and I can confirm that the 3660 is FAR superior quality to the prior camera. I will now add a servo to test the camera and a servo at the same time.