Ever need a serial port far away from your Raspberry Pi? Wish you could use WiFi to talk to a serial device without having to run a wire? This project is for you.
sudo npm install -g remote-serial-pico
remote-serial-pico install
Now a server is running on the Pi. If you plug in a Pico to the USB it will install the client code on the pico and make it a remote serial port.
/tmp/pico_1
It's that easy to setup a remote serial port. Each time you plug in a pico, it will be the next pico_N
on the list.
If you haven't already installed npm:
sudo apt update
sudo apt install nodejs npm
Designed to facilitate communication between a remote device (such as a Raspberry Pi) and a device connected via serial to the Pico. It leverages TCP/IP networking to bridge data exchange between the Pico's serial interface and a networked environment. Extend this project using either the node-red-bridge
or homebridge-tcp-smarthome
.
- LED blinks repeatedly during the WiFi connection process. Upon successful connection it turns off.
- LED switches on again when connected to the TCP server.
- LED blinks once upon receiving a command either from TCP server or a serially connected device.
- LED turns off when disconnected from the TCP server.
-
Curious about PtyServer?
- Detects Pico clients upon receiving first packet with
pico_{N}
, and assigns separate pipes. - Sends data available in command pipe to the respective Pico and clears the pipe.
- Writes data received from Pico into corresponding response pipe.
- Deletes corresponding Pico pipes upon disconnection.
- Detects Pico clients upon receiving first packet with
-
Wondering how plugging Pico into the Pi installs PicoSerialClient.py?
- The udev rule (99-pico.rules) watches for Pico devices connecting to the Raspberry Pi.
- When a Pico is connected, it triggers another script PicoScriptDeployer.py to run on Pi.
-
And what exactly does PicoScriptDeployer do?
- It fetches
wifi-ssid, password, IP, Pico-serial-id
and updates the corresponding credentials onconfig.json
. You can also manually update it. - Modifies
PicoSerialClient.py
with the credentials from config.json. - Renames and deploys PicoSerialClient.py as main.py for auto-execution on Pico restart.
- Deploys
PicoSerialClient.py
to the most recently connected Pico only.
- It fetches
-
Wanna check out the commands log?
tail -f /tmp/smart_home.log
-
Checkout detailed diagram.
Special thanks to Medical Informatics Engineering for their support throughout the development of this project, especially to Doug Horner for his invaluable guidance.