Bring Ethernet to the Pi Pico via SPI

Overview

Pico Ping

Uses lwIP in combination with the ENC28J60 SPI ethernet module to bring a TCP/IP stack to the Pi Pico!

Packets are read from SPI and then fed to lwIP which is running in "NO_SYS" mode - because the Pi Pico has no operating system! Pseudo code for this approach can be found here.

Code to interact with the ethernet module was adapted from an @turicas's Arduino driver.

Image of Pico responding to ping over local IP address

Future Improvements

  • diagram of wiring
  • format code
  • get DHCP discovery working
You might also like...
Bring your own print driver privilege escalation tool

Concealed Position Concealed Position is a local privilege escalation attack against Windows using the concept of "Bring Your Own Vulnerability". Spec

Yet another post-build step and class to bring reflection to C++ enumerations.

enum_values Yet another post-build step and class to bring reflection to C++ enumerations! Fair warning: this project has not undergone much testing (

This project aims to bring back a productive working environment on Windows 11
This project aims to bring back a productive working environment on Windows 11

This project aims to bring back a productive working environment on Windows 11

Tetris on a Raspberry Pi Pico mounted on a Pimoroni Pico Explorer

PicoTetris Classic Tetris game running on a Raspberry Pi Pico microcontroller. Pico C port by Richard Birkby Original JavaScript implementation - Jake

Breakout game for Raspberry Pi Pico with Pimoroni Pico Display pack
Breakout game for Raspberry Pi Pico with Pimoroni Pico Display pack

breakout_rpi_pico Breakout game for Raspberry Pi Pico with Pimoroni Pico Display pack Prebuilt binary (breakout.uf2) is here. To build your own binary

Pico-uart-bridge - Raspberry Pi Pico UART-USB bridge

Raspberry Pi Pico USB-UART Bridge This program bridges the Raspberry Pi Pico HW UARTs to two independent USB CDC serial devices in order to behave lik

Digital rain animation gif with glow squeezed into a raspberry pi pico and pimoroni pico-display
Digital rain animation gif with glow squeezed into a raspberry pi pico and pimoroni pico-display

pico-display-matrix Digital rain animation gif with glow squeezed into a raspberry pi pico and pimoroni pico-display or how to actually use all Flash

Firmware for the Boson Ethernet Adapter

Boson Ethernet Firmware This project contains firmware and gateware required to adapt the FLIR boson into an ethernet connection Directory Structure f

Demonstrates basic advantages of integrating the Data Distribution Service (DDS) and Time-Sensitive Networking (TSN) Ethernet.
Demonstrates basic advantages of integrating the Data Distribution Service (DDS) and Time-Sensitive Networking (TSN) Ethernet.

ROS2-DDS-TSN integration demo This repository demonstrates basic advantages of integrating the Data Distribution Service (DDS) and Time-Sensitive Netw

This is a C/C++ simulation project which illustrates the framing of standard ethernet protocol

This is a C/C++ simulation project which illustrates the framing of standard ethernet protocol. It creates server and client processes on the same machine and through IPC, it sends the data from the client to the server in a simplex communication.

QNEthernet, an lwIP-Based Ethernet Library For Teensy 4.1

QNEthernet, an lwIP-Based Ethernet Library For Teensy 4.1 Version: 0.10.0-snapshot The QNEthernet library provides Arduino-like Ethernet functionality

Boilerplate to create a project with:  STM32 + Ethernet + micro-ROS + FreeRTOS + Arduino + PlatformIO
Boilerplate to create a project with: STM32 + Ethernet + micro-ROS + FreeRTOS + Arduino + PlatformIO

micro_ros_stm32_template Boilerplate to create a project with: STM32 + Ethernet + micro-ROS + FreeRTOS + Arduino + PlatformIO Default config STM32F407

Arduino library to access Adafruit IO from WiFi, cellular, and ethernet modules.
Arduino library to access Adafruit IO from WiFi, cellular, and ethernet modules.

Adafruit IO Arduino Library This library provides a simple device independent interface for interacting with Adafruit IO using Arduino. It allows you

Send and receive MIDI messages over Ethernet (rtpMIDI or AppleMIDI)
Send and receive MIDI messages over Ethernet (rtpMIDI or AppleMIDI)

AppleMIDI (aka rtpMIDI) for Arduino Enables an Arduino with IP/UDP capabilities (Ethernet shield, ESP8266, ESP32, ...) to participate in an AppleMIDI

Collection of additional Ethernet drivers for ESP-IDF

Collection of additional Ethernet drivers for ESP-IDF This repository aims to store additional Ethernet drivers which are not available directly in ES

RPI Pico WIFI via ESP-01S, LWESP, FreeRTOS, and MQTT example

RPIPicoRTOSMQTT RPI Pico WIFI via ESP-01S, LWESP, FreeRTOS, and MQTT example Demo code for RPI Pico using ESP-01S for wifi connection over uart. With

WinChipHead CH341 linux driver for I2C / SPI and GPIO mode

WinChipHead (沁恒) CH341 linux driver for I2C / SPI and GPIO mode The CH341 is declined in several flavors, and may support one or more of UART, SPI, I2

Memory FRAM MB85RS16 SPI Driver Library

mb85rs16 package 中文页 | English Introduction The mb85rs16 software package is a software package developed by XiaojieFan for the SPI FRAM MB85RS16. Usi

Comments
  • [ENHANCEMENT] DMA for packet operations

    [ENHANCEMENT] DMA for packet operations

    It would be nice to not have blocking SPI for packet access.

    I could technically work around this with a RTOS, however that will waste bus cycles. This would also waste CPU cycles. This could become problematic for certain applications.

    opened by daveythacher 0
  • Packet filtering letting non-ARP through

    Packet filtering letting non-ARP through

    Hi, it appears that the packet filtering is letting non-ARP UDP broadcast traffic through, the module is accepting these packets when 0x08 0x06 should be required:

    image

    Testing with Packet Sender and the following command on Windows:

    PacketSenderPortable_v8.0.9\PacketSenderPortable>packetsender.com --rate 4 --udp 192.168.0.255 5000 00

    Calling enc28j60PacketReceive returns non-zero after these packets have been received. I've checked the filtering code against the datasheet and the mask looks correct, so I am puzzled as to why those packets are not rejected.

    opened by ajsedwards 0
  • TCP client

    TCP client

    Hi Sorry for this amateur question. But I couldn't find any functions of TCP client in the codebase. Do I need to add any more files to make it work as a TCP client?

    Please help

    opened by arahasya 1
Owner
James Judd
James Judd
Alternative Shellcode Execution Via Callbacks

Alternative Code Execution This is gaining more popularity than expected, so I just wanted to give a shoutout to alfarom256 for informing me about cal

null 949 Jan 1, 2023
Control Hörmann doors drives directly via MQTT from Home Assistant

hoermann_door Control Hörmann doors drives directly via MQTT from Home Assistant

null 66 Nov 23, 2022
Upload arbitrary data via Apple's Find My network.

Send My allows you to to upload abritrary data from devices without an internet connection by (ab)using Apple's Find My network. The data is broadcasted via Bluetooth Low Energy and forwarded by nearby Apple devices.

Positive Security 1.5k Jan 2, 2023
Wifi MQTT Data Logging via an esp8266 for the Ikea VINDRIKTNING PM2.5 air quality sensor

MQTT connectivity for the Ikea VINDRIKTNING This repository contains an ESP8266 firmware, which adds MQTT to the Ikea VINDRIKTNING PM2.5 air quality s

Sören Beye 943 Dec 31, 2022
xpload is a C++ library to communicate with a calibration database via libcurl

xpload is a C++ library to communicate with a calibration database via libcurl

BNL Nuclear and Particle Physics Software Group 1 Jan 10, 2022
✔️The smallest header-only GUI library(4 KLOC) for all platforms

Welcome to GUI-lite The smallest header-only GUI library (4 KLOC) for all platforms. 中文 Lightweight ✂️ Small: 4,000+ lines of C++ code, zero dependenc

null 6.6k Jan 8, 2023
A FAT filesystem with SPI driver for SD card on Raspberry Pi Pico

no-OS-FatFS-SD-SPI-RPi-Pico Simple library for SD Cards on the Pico At the heart of this library is ChaN's FatFs - Generic FAT Filesystem Module. It a

Carl J Kugler III 130 Dec 27, 2022
This is a set of utilities that allow you to read, write or erase SPI flash chips using a Raspberry Pi Pico (RP2040) chip.

Pico SPI Utilities This is a set of utilities that allow you to read, write or erase SPI flash chips using a Raspberry Pi Pico (RP2040) chip. While th

Two Bean Development 2 Aug 7, 2022
Cross-platform, graphics API agnostic, "Bring Your Own Engine/Framework" style rendering library.

bgfx - Cross-platform rendering library GitHub Discussions Discord Chat What is it? Cross-platform, graphics API agnostic, "Bring Your Own Engine/Fram

Бранимир Караџић 12.6k Jan 8, 2023