Communication

Table of Contents

  1. L1: Intro to Serial
  2. L2: Web Serial
  3. L3: p5.js Serial
  4. L4: p5.js Serial I/O
  5. L5: Paint I/O Example
  6. L6: ml5.js Serial

In this lesson series, we will learn about computer-to-Arduino interaction. More specifically, serial communication, web serial, and using p5js to communicate with Arduino.

L1: Intro to Serial

In this lesson, we’ll dive into asynchronous serial communication and how we can use it for bidrectional Computer ↔ Arduino communication. We’ll show example serial communication clients using terminal programs and Python.

L2: Web Serial

In this lesson, you’ll learn about the new Web Serial API and how to build simple web apps that communicate with Arduino.

L3: p5.js Serial

In this lesson, you’ll learn about Processing, p5.js, and how to use p5.js with Web Serial (with a focus on processing incoming serial input data).

L4: p5.js Serial I/O

In this lesson, we look at creating more complicated p5.js + Arduino applications that bidirectionally communicate together both Arduino to p5.js (Arduino → Computer) as well as p5.js to Arduino (Computer → Arduino).

L5: Paint I/O Example

In this lesson, we will bring everything together thus far to build a fully interactive p5.js + Arduino painting application, called PaintIO, with bidirectional serial communication and a custom paintbrush controller using an accelerometer to control brush location, a force-sensitive resistor to control brush size, and bimanual interaction using both Arduino + the mouse simultaneously for drawing.

L6: ml5.js Serial

In this lesson, we’ll introduce machine learning frameworks like Runway ML and ml5js and show how to use them with Arduino.


This website was developed by Professor Jon E. Froehlich and the Makeability Lab using Just the Docs. If you found the website useful or use it in your teaching, we'd love to hear from you: jonf@cs.uw.edu. This website and all code is open source (website GitHub, Arduino GitHub, p5js GitHub). You can find the MakeabilityLab_Arduino_Library here. Found an error? File a GitHub Issue.