Skip to content
Snippets Groups Projects
README.md 3.79 KiB
Newer Older
Jake Read's avatar
Jake Read committed
## Vent Display

Jake Read's avatar
Jake Read committed
`LTV-1200 --RS232-> Raspberry Pi Serialport --> Local Node.JS Bridge --WebSocket-> Browser Display`

Data streams 'realtime' packets from the LTV at ~ 10ms intervals (+ / - 5ms) (per the datasheet), but I observed some occasional drop-outs: I think these happen when the vent sends some other packet type (alarms). 

Otherwise, data is cached locally on the raspberry pi, and clients can request it in intervals: sending with their query the time-stamp of their most-recent slice: the pi should respond as best it can with a full update since then. 

Qualitative MVP video below, next steps probably:
 - pretty-ify,
 - run for ~ hours, verify no memory leaks etc 
 - do on RPI4, see if HZ can improve 
 - circuit for RS232 interface, RPI screen mount 
 - UI for system reset / reboot, 
 - UI for system state (vent connection OK? ws connection OK?) 
 - label flows 

## Log

## 2020 11 18  

![running](log/2020-11-18_vent-display-mvp.mp4)

In order of appearance, this video should be:
- 'prox pressure'
- 'xdcr flow'
- volume 

## 2020 11 05 

Jake Read's avatar
Jake Read committed
### Yonder Phy

We have an RJ45 port, pinouts are 

| pin | sig | 
| --- | --- | 
| 1 | SGND | 
| 2 | TxD | 
| 3 | RxD | 
| 4 | CTS | 
| 5 | RTS | 
| 6 | SGND |

Seems like this should be straightforward - datasheet notes that data is uni-directional, my guess is that it just spews data out of the port, wouldn't that be nice. 

First move is to get it venting. [Setup Guide](https://bu.digication.com/bumc-ed1/ltv-ventilator-setup-and-initial-settings) 

OK, have woken it up with a glove, can confirm it has an RS232 out that just spews data - that's great. I do need an RS232 interface though, which swings -10 to +10v here. 

### RPI

pi  
vent 

- do rpi basic setup:
    - use mouse, keyboard, hdmi...
    - connect to internet, do updates 
- install node.js 
    - `$ curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -`
    - `$ sudo apt install -y nodejs`
- install raspi-serial
    - have to do some serialport config stuff 
    - might be some trix in here: the bluetooth module uses the serialport, so we have to wrestle for control 
- get vscode ? 

I think we want RPI4 for this, they have decent UART support now.
- https://learn.pi-supply.com/make/raspberry-pi-4-pinout/ 
- https://datasheets.raspberrypi.org/bcm2711/bcm2711-peripherals.pdf 

Jake Read's avatar
Jake Read committed
### Notes 
Jake Read's avatar
Jake Read committed

OK, turned the vent on today, and got characters from the RS232 port. Have an RPI setup and ready to test with some code tomorrow morning, and a temporary RS232-TTL adapter to splice in between. Some concern about the RPI's serial port being 'in use' when bluetooth module is being used, etc. RPI 4 has mucho ++ serial ports, will try to use one of those in the end run. 

So, first move tomorrow is getting the serial port hooked up & seeing if I can pull anything into JS, then is a little software architecting. 

## 2020 11 06

Serial on the RPI3 is a pain, have to disable a bunch of things:

https://openenergymonitor.org/forum-archive/node/12311.html 

OK, so I:
    - used node serialport (not the particular raspi-serial library)
    - set it up for /dev/ttyAMA0, the default port
    - baudrate to 60096 
    - use a bytelength parser 
    - disable the uart terminal / enable the uart hardware in `sudo raspi-config`
    - put `dtoverlay=pi3-disable-bt` in `/boot/config.txt`
    - did `sudo systemctl disable hciuart`
    - rebooted
    - now I am recieving bytes 

So I should decode some packets. 

Packets: decoded. Now I want the 'other end' of it, my bootstrap code / server / client. 

Cool, have a bootstrap up, just need to plug it into the ltv, get three plots up and one state-swapping thing, then it should be ahn MVP, next step would be a circuit / display. 

OK, I have the client / server architecture setup now... so just one more day at that and I should have an MVP, good enough to proceed with a circuit etc.