Firmware for the Sinara 8451 Thermostat
Go to file
Astro 5faf64eae8 README: link CI, more instructions 2020-03-23 23:42:22 +01:00
.cargo use NixOS 19.03 multiarch gdb instead of custom build 2019-04-12 17:14:38 +08:00
src main: improve show pid parameters 2020-03-23 23:02:50 +01:00
.gitignore create nix build infrastructure 2019-03-07 16:27:33 +01:00
Cargo.lock Cargo.toml: use patch for dependency stm32f4xx-hal 2020-03-23 00:28:24 +01:00
Cargo.toml Cargo.toml: use patch for dependency stm32f4xx-hal 2020-03-23 00:28:24 +01:00
LICENSE LICENSE: add GPL-3 2019-03-18 21:47:18 +01:00
README.md README: link CI, more instructions 2020-03-23 23:42:22 +01:00
build.rs create nix build infrastructure 2019-03-07 16:27:33 +01:00
cargosha256.nix cargosha256: update for nixbld.m-labs.hk 2020-03-23 14:51:17 +01:00
memory.x memory.x: fix RAM2 region, place stack in CCMRAM 2019-03-12 22:52:52 +01:00
openocd.gdb gdb with `cargo run` 2019-03-19 17:16:45 +01:00

README.md

Thermostat v2 prototype firmware

Building

Debian-based systems (tested on Ubuntu 19.10)

  • install git, clone this repository
  • install rustup
rustup toolchain install nightly
rustup update
rustup target add thumbv7em-none-eabihf --toolchain nightly
rustup default nightly
cargo build --release

The resulting ELF file will be located under target/thumbv7em-none-eabihf/release/thermostat

Network

Connecting

Ethernet, IP: 192.168.1.26/24

Use netcat to connect to port 23/tcp (telnet)

nc -vv 192.168.1.26 23

telnet clients send binary data after connect. Enter \n once to invalidate the first line of input.

Reading ADC input

Set report mode to on for a continuous stream of input data.

The scope of this setting is per TCP session.

Commands

Syntax Function
report Show current input
report mode Show current report mode
report mode <off/on> Set report mode
pwm Show current PWM settings
pwm <0/1> max_i_pos <width> Set PWM duty cycle for max_i_pos to width
pwm <0/1> max_i_neg <width> Set PWM duty cycle for max_i_neg to width
pwm <0/1> max_v <width> Set PWM duty cycle for max_v to width
pwm <0/1> <width> Disengage PID, set i_set DAC to width
pwm <0/1> pid Set PWM to be controlled by PID
pid Show PID configuration
pid <0/1> target <value> Set the PID controller target
pid <0/1> kp <value> Set proportional gain
pid <0/1> ki <value> Set integral gain
pid <0/1> kd <value> Set differential gain
pid <0/1> output_min <value> Set mininum output
pid <0/1> output_max <value> Set maximum output
pid <0/1> integral_min <value> Set integral lower bound
pid <0/1> integral_max <value> Set integral upper bound
s-h Show Steinhart-Hart equation parameters
s-h <0/1> <t/b/r0> <value> Set Steinhart-Hart parameter for a channel
postfilter <0/1> rate <rate> Set postfilter output data rate