# TH7 ### Seven-channel multiple thermocouple reader and logger HAT for the Raspberry Pi. This software supports the following thermocouple types: - B - E - J - K - N - R - S - T Features not yet implemented but planned: - More database logging options than SQLite3 - Advanced filtering, incl. user-selectable filtering stages and sample sizes - Several logging options at once, one local, one or more remote - Configure any setting via API call either via RESTful JSON API or GRPC - A terminal user interface ("TUI") that may be used to remotely monitor/access/configure a TH7 (w/ auth) - Ability to act in headless mode - Request dumps from filter stages for noise study - ... and more! ###### Note: Most thermocouples that have a coloured and a white lead, usually have the coloured one as the positive. ![Alt](/.gitea/webview0.png "Web view demo") ## Configuring the TH7 This program is controlled with a config file `config.toml` in which the user can configure each thermocouple channel independently, enable a web view, configure database logging, etc. The TH7 software uses sane default values where possible. ```properties # EXAMPLE TH7 CONFIG [TH7] # port used by the web view port = 9090 # enable the blinking lights on the Raspberry Pi Hat LED = true # if true, the software will use a simulated TH7 debug = false # Configure channel 1 [Channel_1] # set type to K-type thermocouple type = 'K' # gain is used during signal conversion gain = 106.8 # offset is added to the final converted value (in °C) offset = -5.6 # samples for the filter function filter.samples = 50 # integer representing the filter function type filter.type = 0 # Filter functions: # 0: simple alpha-beta filter (default) # 1: lag filter: old * 0.90 + new * 0.10 # 2: lag filter: old * 0.95 + new * 0.05 # 3: lag filter: old * 0.99 + new * 0.01 # Configure channel 2 to read μV # this example uses default values for gain, offset and filter. [Channel_2] # set thermocouple type to 'U' to just read μV type = 'U' # Database # Each database type (so far only SQLite3) requires its own set of values # Below is an example for SQLite3 [DB] type = "sqlite3" # where to save the database file path = "/home/pi/th7.db" # logging frequency. specified in seconds. freq = 60 ``` ## Building on a Raspberry Pi This code builds without fuss on Raspberry Pi 4 with go version go1.19.3 linux/arm ```shell wget https://go.dev/dl/go1.19.3.linux-armv6l.tar.gz sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go1.19.3.linux-armv6l.tar.gz ``` edit $HOME/.profile and add the following, if not already there: ```shell export PATH=$PATH:/usr/local/go/bin ``` source new profile ```shell . $HOME/.profile ``` then try to build ```shell make ```