GSM sim808 with SHTC3

Hello all,
I hope this is the right place to put my problem. I am working on making a behive scale to measure weight temperature and humidity and send those values through GPRS to thingspeak website. My materials atm are :

  1. arduino uno
  2. gsms sim808
  3. SHTC3
  4. 150kg loadcell + HX711
    GSM is connected to arduino from RX and TX to pins 3 and 2, shtc3 is connecting to SDA and SCL on arduino, hx711 is CLK to D6 and dat to D5, hx711 is powered with 3,3v from arduino, shtc3 with 5v from arduino and the gsm with external power 9v and arduino ofc with usb. When im using a code to get weight , temperature and humidity values everything is ok, but when im using a different code and connecting the gsm my weight values are different and im getting constant 0% humidity and -45 C temperature. So i would like to ask is there any chance that gsm when working affect the reading from my sensors and why im getting those constant values from SHTC3 like its working? Below is my code for reading sensors and sending the data to GPRS.
#include <SoftwareSerial.h>
#include "HX711.h"
#include <SparkFun_SHTC3.h>
SoftwareSerial gprsSerial(2,3);
 
#include <String.h>

#define DIGITALOUT  5     //HX711 DT
#define CLOCK       6     //HX711 CKL
SHTC3 mySHTC3;
HX711 scale;
float   SCALE =     -20160.96;  //Set to 'false' on your first try, then enter your calibration factor
long    OFFSET =    62037; //Set to 'false' if you dont know your offset / zero factor.


 
void setup() {
  gprsSerial.begin(9600);               // the GPRS baud rate   
  Serial.begin(9600);    // the GPRS baud rate 
  while(Serial == false){};
  Wire.begin();
  
  
  scale.begin(DIGITALOUT, CLOCK);
  scale.set_scale(-20160.96);

  long zero_factor = scale.read_average(); //Get a baseline reading
  Serial.print("Zero factor / OFFSET: "); //This can be used to remove the need to tare the scale. Useful in permanent scale projects.
  Serial.println(zero_factor);
  zero_factor = scale.read_average(); //Get a baseline reading
  Serial.print("Zero factor / OFFSET: "); //This can be used to remove the need to tare the scale. Useful in permanent scale projects.
  Serial.println(zero_factor);

  if(OFFSET){
      scale.set_offset(OFFSET); //set offset
  } else {
      scale.tare(); //Else reset scale to zero
  }
  
  delay(1000);
}
 
void loop()
{
      float RH,T,weight;
      delay(1000);  
      
      RH = mySHTC3.toPercent();
      T= mySHTC3.toDegC(); 
      
        
      Serial.print("Weight: ");
      Serial.print(scale.get_units(5), 1);
      weight=(scale.get_units(5), 1);
      Serial.print(" kg");
      Serial.println();  
      Serial.print("Temperature = ");
      Serial.print(T);
      Serial.println(" °C");
      Serial.print("Humidity = ");
      Serial.print(RH);
      Serial.println(" %");    
      delay(1000);
   
  if (gprsSerial.available())
    Serial.write(gprsSerial.read());
 
  gprsSerial.println("AT");
  delay(1000);
 
  gprsSerial.println("AT+CPIN?");
  delay(1000);
 
  gprsSerial.println("AT+CREG?");
  delay(1000);
 
  gprsSerial.println("AT+CGATT?");
  delay(1000);
 
  gprsSerial.println("AT+CIPSHUT");
  delay(1000);
 
  gprsSerial.println("AT+CIPSTATUS");
  delay(2000);
 
  gprsSerial.println("AT+CIPMUX=0");
  delay(2000);
 
  ShowSerialData();
 
  gprsSerial.println("AT+CSTT=\"gint.b-online.gr\"");//start task and setting the APN,
  delay(1000);
 
  ShowSerialData();
 
  gprsSerial.println("AT+CIICR");//bring up wireless connection
  delay(3000);
 
  ShowSerialData();
 
  gprsSerial.println("AT+CIFSR");//get local IP adress
  delay(2000);
 
  ShowSerialData();
 
  gprsSerial.println("AT+CIPSPRT=0");
  delay(3000);
 
  ShowSerialData();
  
  gprsSerial.println("AT+CIPSTART=\"TCP\",\"api.thingspeak.com\",\"80\"");//start up the connection
  delay(6000);
 
  ShowSerialData();
 
  gprsSerial.println("AT+CIPSEND");//begin send data to remote server
  delay(4000);
  ShowSerialData();
  
  String str="GET https://api.thingspeak.com/update?api_key=Y92RLSQQQO5FIZON&field1=" + String(T) +"&field2="+String(RH) +"&field3="+String(weight);
  Serial.println(str);
  gprsSerial.println(str);//begin send data to remote server
  
  delay(4000);
  ShowSerialData();
 
  gprsSerial.println((char)26);//sending
  delay(5000);//waitting for reply, important! the time is base on the condition of internet 
  gprsSerial.println();
 
  ShowSerialData();
 
  gprsSerial.println("AT+CIPSHUT");//close the connection
  delay(100);
  ShowSerialData();
  delay(5000);
} 
void ShowSerialData()
{
  while(gprsSerial.available()!=0)
  Serial.write(gprsSerial.read());
  delay(5000); 
  
}