Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/krzmaz/pico-w-webserver-example
https://github.com/krzmaz/pico-w-webserver-example
pico-sdk pico-wireless raspberry-pi-pico-w
Last synced: 3 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/krzmaz/pico-w-webserver-example
- Owner: krzmaz
- License: mit
- Created: 2022-07-24T22:08:40.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-03-17T13:17:55.000Z (8 months ago)
- Last Synced: 2024-05-02T04:24:42.693Z (6 months ago)
- Topics: pico-sdk, pico-wireless, raspberry-pi-pico-w
- Language: C++
- Homepage:
- Size: 28.3 KB
- Stars: 41
- Watchers: 4
- Forks: 13
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-raspberrypipico - Pico W Webserver Example - Example implementation of a blazingly fast web server on Pico W using Pico C SDK. (Resources / Projects)
README
## Example of a web server using Pico SDK and lwIP
This example was described in more detail in a blog post: https://krzmaz.github.io/2022-08-15-creating-a-web-server-on-raspberry-pi-pico-w-using-pico-sdk-and-lwip/
In my testing it reached ~20x performance of the MicroPython implementation from point 3.9.1 of https://datasheets.raspberrypi.com/picow/connecting-to-the-internet-with-pico-w.pdfIf you want to test this example with your html files, just add/edit them in the `src/fs` directory and rebuild the project!
---
### Dependencies:
- CMake 3.19+
- ARM GNU toolchain
- [Perl](https://www.perl.org/get.html) (should be already present on *nix systems)For the first two you can refer to [these instructions](https://datasheets.raspberrypi.com/pico/getting-started-with-pico.pdf#%5B%7B%22num%22%3A39%2C%22gen%22%3A0%7D%2C%7B%22name%22%3A%22XYZ%22%7D%2C115%2C841.89%2Cnull%5D)
---
### One time setup
```bash
cp cmake/credentials.cmake.example cmake/credentials.cmake
#
```
### Building
```bash
./build.sh
```### Flashing
The built USB Flashing Format file will be located in `build/src/pico_w_webserver.uf2` - just copy it over to the Pico W to flash it!### SSI
Now the example uses Server Side Includes (SSI) to introduce dynamic data into the HTML responses.
As per documentation:
> SSI-enabled pages must have one of the predefined SSI-enabled file extensionsWhich means that no cost should be introduced in non SSI pages
### References
- https://www.nongnu.org/lwip/2_1_x/group__httpd.html
- https://github.com/lwip-tcpip/lwip/tree/master/contrib/examples/httpd