Home | pfodApps/pfodDevices | WebStringTemplates | Java/J2EE | Unix | Torches | Superannuation | CRPS Treatment | | About Us
 

Forward Logo (image)      

pfodWeb and pfodWebDesigner
Custom Web Page Controls for your Arduino

by Matthew Ford 27th March 2026 (originally posted 17th July 2025)
© Forward Computing and Control Pty. Ltd. NSW Australia
All rights reserved.

How Control your Arduino via Interactive Web page
served from any Arduino board
via Serial, BLE TCP/IP or HTTP
using pfodWeb and pfodWebDesigner
Also Chart / Format / Save streaming csv data


30th June 2026 – Added Mouse over chart to display data values
27th June 2026 – Added Minimal C Code target to Designer and revised pfodProxy connection
26
th June 2026 – Completed pfodWeb menu support and added Designer connection. pfodWeb not runs in any brower
18
th March 2026 – Added Charting via Serial, BLE and WiFi (HTTP)
18
th October 2025 – pfodWeb V2 can now connect via Serial, BLE and WiFi (HTTP)

Quick Overview of pfodWeb

pfodApp has been in development for over 25 years. First as a J2ME application and, since 2012, as an paid Android app.
This javascript web based, pfodWeb.html, provides a browser based version of pfodApp that can be run on any modern computer or mobile (including Apple IPhones)

pfodWeb.html is a free web based replacement for the paid Android app, pfodApp. pfodWeb.html runs in any browser and connects to your Arduino board via either Serial, BLE, TCP/IP or HTTP. Using Serial you can connect to any Arduino board and display the menus / interactive controls it serves. pfodWeb.html runs competely off-line. No internet connection is needed. The menus and interactive controls are completely defined by your Arduino using the code generated by the pfodWeb.html Designer connection, or the Android app, pfodDesignerV3. Very compact pfod messages are used to send the controls and receive the user's commands.

Install the Arduino pfodParser library (or download pfodParser.zip). Open …/Arduino/libraries/pfodParser/pfodWeb/pfodWeb.html in your browser. Click on the Serial connection and follow the pfodProxy Instructions to download and run the pfodProxy. The pfodProxy lets you connect via Serial, BLE and TCP/IP. See pfodWeb_startup and Quick Start below

If your Arduino board supports HTTP and has a file system of 1MB, then you can load the all necessary pfodWeb.html files for an HTTP connection onto your microprocessor and serve them directly from there for a completely self contained deployment. See the pfodParser library examples/pfodWeb/demoScreens_http and LedOnOff_http.

pfodWeb Designer

pfodWeb includes a Designer connection that lets you design your own menus / charts etc and connect the controls to your board's pins. You can preview the control menus and then generate complete Arduino sketches for your board. This Designer connection is a re-implementation of the pfodDesigner Android app. See the many tutorials on using it to build you own controls and data logging and charting.

Quick and Simple Charting and Data Logging.

pfodWeb can chart and data log csv data streamed from your micro. No menu or GUI is needed. The charting much more flexiable than the default Arduino plotter. You can freeze the chart and zoom in, scale and split the plots or ignore them. For a detailed tutorial on Charting see Flexible Plotting with pfodWeb via Serial BLE, HTTP and also the docs pfodWeb-chart-mode-guide

Support pfodWeb

pfodWeb and pfodWebDesigner are free and open source. If you want to support this work, purchase the Android pfodApp which will work with the same code developed here.
Also see the free pfodDesigner Android app for creating menus and charts for pfodApp.

pfodWebDesigner

pfodWebDesigner is a companion, free web based replacement for the Android app, pfodGUIdesigner. pfodWebDesigner allows you to design interactive and responsive user interfaces for your microprocessor. pfodWebDesigner generates Arduino code that works with all pfodDevices that connect via Serial, Bluetooth, BLE, SMS and WiFi, not just those that have WiFi support. See how to install pfodWebDesigner and Using pfodWeb Designer to Create GUI's. Individual pfodWebDesigner controls are stored as JSON files which you can duplicate, modify and reuse in other designs. Each reused control can be individually scaled and positioned in the final design.

pfodWeb Quick Start

  1. Install Arduino IDE V2 – For Windows, use the "Windows ZIP" or plain "Windows" executable (EXE) downloaded direct from https://arduino.cc. and allow it to install any device drivers it suggests.

  2. Install the latest pfodParser library from the library manager OR unzip the pfodParser.zip to your Arduino libraries dir

  3. Compile and upload the examples → pfodParser → pfodWeb → demoScreens_Serial example sketch

  4. Open …Arduino/libraries/pfodParser/pfodWeb/pfodWeb.html in your browser. Click on Serial connection and follow the pfodProxy Instructions to install the pfodProxy for your OS (windows, macOS or linux). See pfodWeb_startup.

  5. Select Com Port and Connect by pfodProxy
    Note: This will fail if the Arduino IDE or other application already has that port open. Close the Arduino Serial Monitor.

See the docs for more details on pfodWeb and Charting and Data Logging

The pfodWeb Debug logging logs extensive debug messages to the web page console (see How to Open the Developer Console in different Browsers) and displays dotted outlines for the mouse touchZones in drawings.

Browser Caching

The pfodWeb.html page caches the menu data with its version, so that when requesting updates, only the changes are sent, not the whole menu.
If the GUI does not seem to displaying your changes, Exit the menu, using the … button bottom right and Clear Menu Cache and re-connect.

pfodWebDesigner Tutorial List

The companion pfodWebDesigner web app, separate from pfodWeb's Designer connection, allows you to create your own interactive and responsive GUI's and then export the Arduino code that will serve them to pfodApp or pfodWeb. You have complete control over the size, color, position and function of the controls you design using pfodWebDesigner.
The messages that create the GUI are very compact and can be served by any microprocessor that has a Bluetooth Classic, Bluetooth Low Energy (BLE) or WiFi connection.

Introductory pfodWebDesigner Tutorial – Covers setting up the pfodWeb Designer local server. A simple press button example illustrates touchZone and touchAction.
Reusing Controls with InsertDwg – Covers copying dwgs and using insertDwg to insert multiple copies into the main drawing.
touchActions for Instant FeedbackCovers using touchActions to give instant feedback in a slider control.
TouchActionInput for text/number entryCovers using touchActionInput to input text / numbers to your micro
Building Reusable ControlsCovers building a re-usable popup help button component.

Parts List

Arduino IDE V2 (V2.3.6)
Any Arduino board
Libraries - pfodParser – Install via Arduino or install the pfodParser.zip

Installing pfodWeb on your microprocessor for HTTP connections

If your Arduino microprocessor supports a web server and has 1MB of available file storage, you can host all the pfodWeb files necessary to connect via HTTP on your pfodDevice (your microprocessor) and serve them from there. Any web browser can be used to display pfod GUI's via HTTP

The pfodParser library has an example sketches LedOnOff_http and demoScreens_http under under File → Examples → pfodParser → pfodWeb. Those sketches compile for ESP8266, ESP32 and Pi PicoW/2W.

1) Install the Arduino IDE V2 data upload add-on arduino-littlefs-upload that will upload the file system data to ESP8266 and ESP32 and Pi Pico
2) Open the LedOnOff_http or demoScreens_http example sketch and fill in your network's ssid and password.
3) Edit the
useLittleFSToServe_pfodWeb to true to start the microprocessor's LittleFS file system.

bool useLittleFSToServe_pfodWeb = true;

4) Select a memory setting for the board that has at least 1MB available for a file system FS/SPIFFS.
5) Upload the sketch.
6) When the upload is finished, make sure the Arduino Serial Monitor is closed and press Ctrl+Shift+P to open the tools menu and in the search bar type
Upload LittleFS to find the upload too. Select it to load the data files.
7) Open the Serial Monitor (within 10sec) to see what IP has been assigned to your board.
8) In your web browser, any web browser, enter
http://<board_ip> If the Serial Monitor shows Connected! IP address: 10.1.1.10, then enter http://10.1.1.10 and that will display your control.

The sketch's /data files are gz compressed and serve up the HTTP connection version of pfodWeb.

Regardless of the setting of useLittleFSToServe_pfodWeb you can always use the pfodWeb.html to access and display the GUI via HTTP by entering the IP address of the board in pfodWeb.html's HTTP connection details.

pfodWeb versus pfodApp

pfodWeb re-implements pfodApp in js. There are two points of difference:-
i) pfodSecurity is currently not supported and
ii) the {@} request for current micro time is not sent. As a fall back pfodWeb time stamps the first data messages with the local time and uses that to infer local time from the data's millisecond time stamps.

The Designer connection in pfodWeb is a re-implemenation of the pfodDesignerV2 Android app. Currently pfodWeb Designer only generates code for Serial connections for AVR and ESP32 boards. More boards and connections will be added later. See the pfodDesignerV3 tutorials for how to generate menus and sub-menus, charts etc.

pfodWeb.html includes a basic set of Android fonts so that the size and spacing of menus and drawings match between pfodApp and pfodWeb. Additional fonts can be added by you without having to re-compile pfodWeb.html. See the extraFonts Guide

Compatible Web Browsers for Serial and BLE connections via pfodWeb

pfodWeb now runs in any browser released after 2017. pfodWeb uses pfodProxy to connect to Serial, BLE and TCP/IP connection. pfodProxy runs on Windows, MacOS and linux systems from 2017 onwards.

Which Connection to Use?

The pfodWeb Designer connection generates complete Arduino sketches for Serial connections (to be expanded later). pfodWebDesigner generates complete sketches for Serial, BLE and WiFi. The free pfodDesignerV2 Android app generates complete sketches for Serial, BLE and WiFi.

Serial is the simplest sketch, and works with any Arduino board. You can keep printing debug msg which will be sent along with the pfod messages and can be viewed in the Raw Message View. For non-Arduino microprocessors there is a Minimal C Code code generator that will work with any micro with 2KB of flash, e.g. PIC, Attiny84/85 etc. See Control of Non-Arduino based micros for examples.

HTTP is the connection to use for completely self-contained deployments. You server pfodWeb.html from your micro's file system. Nothing else need to access and control your micro.

BLE is the third option, if your Arduino board supports a Nordic UART connection. The pfodWebDesigner and the free Android pfodDesigner app generates complete BLE sketches for the ESP32 and other boards. You can connect using pfodWeb or the Android pfodApp Android.

TCP/IP is the final option. The free Android pfodDesigner app generates complete sketches for a range of boards. You can connect using pfodWeb or the Android pfodApp Android.

How Safe is the pfodWeb and pfodWebDesigner Code Base

pfodWeb.html is pure html / js and does not use any external packages or downloads. You can run pfodWeb completely off-line with no internet connection. pfodProxy is written in Rust.
The entire source code is available on Github and in pfodWeb_src.zip,

pfodWebDesigner uses nodejs to run a local server on your computer. So you need to install nodejs on your computer, but no other modules need to be downloaded and once the main nodejs is installed you can run completely off-line with no internet connection. pfodWebDesigner.zip contains all the source code and comes with all necessary (un-compromised) nodejs packages it needs. pfodWebDesiger is also hosted on Github.

There have been a number of attacks on NPM packages recently, see Shai-Hulud malware campaign (local copy here) and NPM Supply Chain Attack (local copy here). None of the compromised packages are used by pfodWebDesigner.

Conclusion

This page covered using pfodWeb to display interactive GUI's served by your Arduino board via Serial, BLE or HTTP. The Serial connection allow any Arduino board to serve its own custom GUI to control it operation and display its measurements.

AndroidTM is a trademark of Google Inc. For use of the Arduino name see http://arduino.cc/en/Main/FAQ


The General Purpose Android/Arduino Control App.
pfodDevice™ and pfodApp™ are trade marks of Forward Computing and Control Pty. Ltd.


Forward home page link (image)

Contact Forward Computing and Control by
©Copyright 1996-2024 Forward Computing and Control Pty. Ltd. ACN 003 669 994