Skip to content

Networking and Communications

Hero Shot

Summary

Approach

Assignment

  • individual assignment:
    • design, build, and connect wired or wireless node(s) with network or bus addresses and local input &/or output device(s)
  • group assignment:
    • send a message between two projects

Individual assignment

I made two nodes that can communicate through I2C, one with a phototransistor as an input and one with a neopixel as an output. For the I2C pins I used pin 2 and 3, following the datasheet, to give met I2C1 SDA and I2C1 SCL as peripherals. Input board Output board

Two of my traces got fused because I inputted a 0.4 clearance in KiCad, but set the tool diameter to 0.6mm in Mods, this was something I had written down wrong following week 8's instructions. It makes sense to use 0.6mm when doing the edge cut, since you're going deeper, but it's not a good idea when doing the traces; from now on I'll use 0.4 in Mods as well.


Group assignment

This week we went to Enschede to visit Leo, how works at the Fab Lab... We set up serial communication between two XIAO RP2040 boards using UART, working with the custom boards we had produced in earlier weeks. Instead of starting from theory, we began hands-on: wiring the boards together with jumper cables and connecting TX to RX according to Seeed’s pinout.

Once the physical connection was in place, we tested the link by sending messages between two computers. Each RP2040 acted as a bridge, running either MicroPython or Arduino code to pass data along. This quickly turned into a simple back-and-forth exchange to confirm everything was working.

The more interesting challenge came when we tried to connect two existing projects rather than just two bare boards. We initially assumed any available pins would work for UART, but that approach failed. The issue turned out to be more specific: UART on the RP2040 relies on dedicated hardware peripherals, and there are only two available. That means only certain pin combinations are valid, depending on how those peripherals are mapped.

After checking the documentation (notably section 4.2 on UART in the RP2040 datasheet and the MicroPython implementation), we identified which pins could actually function together. Luckily, the boards we had built still offered enough flexibility to find a working configuration, and we were able to establish a stable connection between the two projects.


What would i do differently

Files & resources

Done checklist

  • assignment checklist check off?
  • assignment learning outcomes learned?
  • assignment questions answered?
  • compressed assets?
  • everything self hosted?
  • pushed to main?
  • are all links relative and working on server?
  • removed this checklist?
  • added this page to nav?
  • added this page to index?

Leftovers previous week

  • which task from last week need finishing up?

Further exploration

  • out of scope nice to have