Testing Thermostat v1 with ionpak
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Astro 2773ba47fe tec: init freq pins for 1 MHz switching 2 years ago
.cargo Update for latest nightly. 3 years ago
src tec: init freq pins for 1 MHz switching 2 years ago
Cargo.lock Carto.toml: update dependencies 2 years ago
Cargo.toml Carto.toml: update dependencies 2 years ago
README.md command_parser: shorten to parallel_r, add tests 2 years ago
build.rs build.rs: delint 2 years ago
memory.x Move firmware to firmware/. 5 years ago
openocd.cfg adapt OpenOCD script 2 years ago


Thermostat v1 prototype firmware


On Debian-based systems

apt install gcc gcc-arm-none-eabi git-core
rustup toolchain install nightly
rustup update
rustup target add thumbv7em-none-eabihf --toolchain nightly
rustup default nightly
rustup component add rust-src
cargo install cargo-xbuild
git clone https://github.com/llvm/llvm-project.git
export RUST_COMPILER_RT_ROOT=`pwd`/llvm-project/compiler-rt

cd firmware && cargo xbuild --release

The built ELF file will be at target/thumbv7em-none-eabihf/release/ionpak-firmware

Development build on NixOS

Requires NixOS 19.09 or later for cargo-xbuild.

nix-shell --run "cd firmware && cargo xbuild --release"



Ethernet, IP:

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

Reading ADC input

Set report mode to once to obtain the single next value. Report mode will turn itself off after the next reading.

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

The scope of this setting is per TCP session.


Syntax Function
report Show current input
report mode Show current report mode
report mode <off/on> Set report mode
pwm <0/1> max_i_pos <width> <total> Set PWM duty cycle for max_i_pos to width / total
pwm <0/1> max_i_neg <width> <total> Set PWM duty cycle for max_i_neg to width / total
pwm <0/1> max_v <width> <total> Set PWM duty cycle for max_v to width / total
pwm <0/1> <width> <total> Set PWM duty cycle for i_set to manual width / total
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> <a/b/c> <value> Set Steinhart-Hart parameter for a channel
s-h <0/1> parallel_r <value> Set parallel resistance of the ADC
postfilter <0/1> rate <rate> Set postfilter output data rate