---
title: "[AIoT] WebCamServer: ArduCam OV2640 Module + WIZnet-EVB-Pico"
url: "https://maker.wiznet.io/emimamanna/projects/%5Baiot%5D-webcamserver%3A-arducam-ov2640-module-wiznet-evb-pico/"
markdown_url: "https://maker.wiznet.io/emimamanna/projects/%5Baiot%5D-webcamserver%3A-arducam-ov2640-module-wiznet-evb-pico/md"
type: "UCC: User Created Content"
author: "emimamanna"
author_url: "https://maker.wiznet.io/emimamanna/"
original_author: "Innovation4x"
original_url: "https://www.hackster.io/innovation4x/webcamserver-arducam-ov2640-module-wiznet-evb-pico-73ceae"
published: "2022-09-22"
language: "en"
tags: ["AIoT", "CircuitPython"]
hardware: ["WIZnet W5100S-EVB-Pico"]
likes: 26
views: 9317
comments: 4
source: "WIZnet Makers (https://maker.wiznet.io/)"
---

# [AIoT] WebCamServer: ArduCam OV2640 Module + WIZnet-EVB-Pico

> This is a Python implementation of WebCamServer using the ArduCam Mini 2MP Plus - SPI Camera Module and WIZnet W5100S-EVB-Pico board.

Original author: Innovation4x (source: https://www.hackster.io/innovation4x/webcamserver-arducam-ov2640-module-wiznet-evb-pico-73ceae)

## Components

- **WIZnet W5100S-EVB-Pico** x 1 ([docs](https://docs.wiznet.io/Product/Chip/Ethernet/W5100S/w5100s-evb-pico))

## Documents and links

- [Ardu Cam WebServer](https://github.com/Innovation4x/WIZnet-EVB-Pico-ArduCamWebServer) (code)
- [GPIO Pin mapping](https://www.hackster.io/innovation4x/webcamserver-arducam-ov2640-module-wiznet-evb-pico-73ceae#schematics) (schematics)

## Article

## **Things used in this projectHardware components**
WIZnet W5100S-EVB-Pico × 1
ArduCam Mini 2MP Plus - SPI Camera Module × 1
Jumper wires (generic) × 1
Solderless Breadboard Half Size × 1

**Software apps and online services**
CiruitPython

### **How to implement (Step by step)**

### **Step1:**

- Installation of Thonny ([https://thonny.org)](https://thonny.org/) in your system

### **Step2:**

- Run [Thonny] Interpreter:

- Select CircuitPython (generic)

- Select COM port for EVB-Pico

- Update firmware (if it is necessary)

### **Step3:**

- Install CircuitPython Libraries

- Download libraries: <https://circuitpython.org/libraries>

- Open removable disk “CIRCUITPY”

- Make a folder “/lib” if it is not exist

- Copy required CircuitPython Libraries (below are required folders for ArduCam and Ethernet connection)

```plaintext
/lib/adafruit_wsgi/
/lib/adafruit_wiznet5k/
/lib/adafruit_requests.mpy
/lib/adafruit_minimqtt/
/lib/adafruit_io/
/lib/adafruit_bus_device/
```

### **Step4:**

- Copy source codes to the root folder of the EVB-Pico board:

- Reference: <https://github.com/ArduCAM/PICO_SPI_CAM>

- Copy source codes below:

```plaintext
ArduCAM_Mini_2MP_Plus_VideoStreaming_HttpServer_v2.py
Arducam.py
OV2640_reg.py
OV5642_reg.py
```

### **Step5:**

- Open Arducam.py source code

- Change SPI PIN number (default SPI is used by WIZnet ethernet)

- #self.SPI_CS=digitalio.DigitalInOut(board.GP5)self.SPI_CS=digitalio.DigitalInOut(board.GP13)

- #self.spi = busio.SPI(clock=board.GP2, MOSI=board.GP3, MISO=board.GP4)self.spi = busio.SPI(clock=board.GP10, MOSI=board.GP11, MISO=board.GP12)

![Default pin connection of ArduCam OV2640 and Raspberry Pico board](https://hackster.imgix.net/uploads/attachments/1462656/arducam-pin_ZYPgtae050.jpg?auto=compress%2Cformat&w=740&h=555&fit=max)

Default pin connection of ArduCam OV2640 and Raspberry Pico board

ArduCam OV2640 Module requires CS, MOSI, MISO, SCLK pins for SPI connection, and SDA, SCL pins for I2C connection. This project modified the Arducam.py to use SPI1.

**SPI1 configuration for ArduCam OV2640**

- CS --> GPIO 13

- MOSI --> GPIO 11

- MISO --> GPIO 12

- SCLK --> GPIO 10

**I2C configuration for ArduCam OV2640**

- SDA --> GPIO 8

- SCL --> GPIO 9

---

Source: https://maker.wiznet.io/emimamanna/projects/%5Baiot%5D-webcamserver%3A-arducam-ov2640-module-wiznet-evb-pico/
