diff --git a/src/boards/RIGv2/Configs/SensorsConfig.h b/src/boards/RIGv2/Configs/SensorsConfig.h
index 7f12a6710ae4fefbf0565566eeb55fd583d6b48e..28712cd8f496f7b662f29ab88cdc5019eb6c7ddc 100644
--- a/src/boards/RIGv2/Configs/SensorsConfig.h
+++ b/src/boards/RIGv2/Configs/SensorsConfig.h
@@ -34,6 +34,7 @@ namespace Sensors
 {
 
 static constexpr uint32_t ADC_SAMPLE_PERIOD = 10;
+static constexpr uint32_t TC_SAMPLE_PERIOD = 100;
 
 }
 
diff --git a/src/boards/RIGv2/Radio/Radio.cpp b/src/boards/RIGv2/Radio/Radio.cpp
index b4d51c19393586953d64ee0ebaa2a1d5f0553c8e..8e5f5d3f1f564d27cf0d397e1dfb7c2a97af396c 100644
--- a/src/boards/RIGv2/Radio/Radio.cpp
+++ b/src/boards/RIGv2/Radio/Radio.cpp
@@ -402,7 +402,10 @@ bool Radio::packSystemTm(uint8_t tmId, mavlink_message_t& msg)
         {
             mavlink_motor_tm_t tm;
 
+            auto tc1 = modules.get<Sensors>()->getTc1LastSample();
+
             tm.timestamp            = TimestampTimer::getTimestamp();
+            tm.tank_temperature     = tc1.temperature;
             tm.top_tank_pressure    = 69;
             tm.bottom_tank_pressure = 420;
 
diff --git a/src/boards/RIGv2/Sensors/Sensors.cpp b/src/boards/RIGv2/Sensors/Sensors.cpp
index 4318603df29f517a61fe4b9f3c77a9cab53d42c2..fabc78951bd7c197395edbd6519e0d59a6e98919 100644
--- a/src/boards/RIGv2/Sensors/Sensors.cpp
+++ b/src/boards/RIGv2/Sensors/Sensors.cpp
@@ -37,6 +37,7 @@ bool Sensors::start()
 {
     SensorManager::SensorMap_t map;
     adc1Init(map);
+    tc1Init(map);
 
     manager = std::make_unique<SensorManager>(map, &scheduler);
     if (!manager->start())
@@ -61,6 +62,12 @@ ADS131M08Data Sensors::getADC1LastSample()
     return adc1->getLastSample();
 }
 
+Boardcore::MAX31856Data Sensors::getTc1LastSample()
+{
+    PauseKernelLock l;
+    return tc1->getLastSample();
+}
+
 void Sensors::adc1Init(SensorManager::SensorMap_t &map)
 {
     ModuleManager &modules = ModuleManager::getInstance();
@@ -92,8 +99,32 @@ void Sensors::adc1Callback()
                   sample.voltage[4], sample.voltage[5],
                   sample.voltage[6], sample.voltage[7]};
 
-    // For Flavio, fuck Flavio
-    LOG_INFO(logger, "{}\t{}", sample.voltage[6], sample.voltage[7]);
+    sdLogger.log(data);
+}
+
+void Sensors::tc1Init(SensorManager::SensorMap_t &map)
+{
+    ModuleManager &modules = ModuleManager::getInstance();
+
+    SPIBusConfig spiConfig = MAX31856::getDefaultSPIConfig();
+    spiConfig.clockDivider = SPI::ClockDivider::DIV_32;
+
+    tc1 =
+        std::make_unique<MAX31856>(modules.get<Buses>()->getMAX31856_1(),
+                                   sensors::MAX31856_1::cs::getPin(), spiConfig,
+                                   MAX31856::ThermocoupleType::K_TYPE);
+
+    SensorInfo info("MAX31856_1", Config::Sensors::TC_SAMPLE_PERIOD,
+                    [this]() { tc1Callback(); });
+    map.emplace(std::make_pair(tc1.get(), info));
+}
+
+void Sensors::tc1Callback()
+{
+    MAX31856Data sample = tc1->getLastSample();
+
+    TCsData data{sample.temperatureTimestamp, 1, sample.temperature,
+                 sample.coldJunctionTemperature};
 
     sdLogger.log(data);
 }
\ No newline at end of file
diff --git a/src/boards/RIGv2/Sensors/Sensors.h b/src/boards/RIGv2/Sensors/Sensors.h
index 14eeef1914e75006e986c78b44beeb80aef22db4..43d614ee797e95137d5e782beafc59197fa5ce79 100644
--- a/src/boards/RIGv2/Sensors/Sensors.h
+++ b/src/boards/RIGv2/Sensors/Sensors.h
@@ -23,6 +23,7 @@
 #pragma once
 
 #include <sensors/ADS131M08/ADS131M08.h>
+#include <sensors/MAX31856/MAX31856.h>
 #include <sensors/SensorManager.h>
 
 #include <memory>
@@ -44,10 +45,14 @@ public:
     bool isStarted();
 
     Boardcore::ADS131M08Data getADC1LastSample();
+    Boardcore::MAX31856Data getTc1LastSample();
 
 private:
     void adc1Init(Boardcore::SensorManager::SensorMap_t &map);
     void adc1Callback();
+    
+    void tc1Init(Boardcore::SensorManager::SensorMap_t &map);
+    void tc1Callback();
 
     Boardcore::Logger &sdLogger = Boardcore::Logger::getInstance();
     Boardcore::PrintLogger logger = Boardcore::Logging::getLogger("sensors");
@@ -55,6 +60,7 @@ private:
 
     std::atomic<bool> started{false};
     std::unique_ptr<Boardcore::ADS131M08> adc1;
+    std::unique_ptr<Boardcore::MAX31856> tc1;
     std::unique_ptr<Boardcore::SensorManager> manager;
 };
 
diff --git a/src/boards/RIGv2/Sensors/SensorsData.h b/src/boards/RIGv2/Sensors/SensorsData.h
index db59f9eef247763d23289271997f4bf8473fa3fc..ac2a64432705f98d1d16ad30c6f101eb7546c256 100644
--- a/src/boards/RIGv2/Sensors/SensorsData.h
+++ b/src/boards/RIGv2/Sensors/SensorsData.h
@@ -23,6 +23,7 @@
 #pragma once
 
 #include <sensors/ADS131M08/ADS131M08Data.h>
+#include <sensors/MAX31856/MAX31856Data.h>
 
 namespace RIGv2
 {
@@ -41,7 +42,7 @@ struct ADCsData : Boardcore::ADS131M08Data
 
     static std::string header()
     {
-        return "timestamp,adc_number,voltage_channel_1,voltage_channel_2,"
+        return "timestamp,adcNumber,voltage_channel_1,voltage_channel_2,"
                "voltage_channel_3,voltage_channel_4,voltage_channel_5,voltage_"
                "channel_6,voltage_channel_7,voltage_channel_8\n";
     }
@@ -54,4 +55,30 @@ struct ADCsData : Boardcore::ADS131M08Data
            << voltage[7] << "\n";
     }
 };
-}  // namespace RIG
\ No newline at end of file
+
+struct TCsData : Boardcore::MAX31856Data
+{
+    uint8_t tcNumber;
+
+    TCsData() : MAX31856Data{0, 0}, tcNumber{0} {}
+
+    TCsData(uint64_t time, uint8_t num, float temperature,
+            float coldJunctionTemperature)
+        : MAX31856Data{time, temperature, coldJunctionTemperature},
+          tcNumber{num}
+    {
+    }
+
+    static std::string header()
+    {
+        return "temperatureTimestamp,tcNumber,temperature,"
+               "coldJunctionTemperature\n";
+    }
+
+    void print(std::ostream& os) const
+    {
+        os << temperatureTimestamp << "," << (int)tcNumber << "," << temperature
+           << "," << coldJunctionTemperature << "\n";
+    }
+};
+}  // namespace RIGv2
\ No newline at end of file
diff --git a/src/scripts/logdecoder/RIGv2/logdecoder.cpp b/src/scripts/logdecoder/RIGv2/logdecoder.cpp
index fddfb7c20d0955d6f7f4393567819efa998e2b52..eab10f51c11e5b25893a3eeb31029ae54057ad06 100644
--- a/src/scripts/logdecoder/RIGv2/logdecoder.cpp
+++ b/src/scripts/logdecoder/RIGv2/logdecoder.cpp
@@ -52,6 +52,7 @@ void registerTypes(Deserializer& ds)
 
     // Custom types
     ds.registerType<ADCsData>();
+    ds.registerType<TCsData>();
     ds.registerType<ActuatorsData>();
 }