View Single Post
God kveld, jeg trenger litt råd her.

Jeg har nettopp kjøpt et LilyGO-T-SIM7000G fra Amazon

Jeg har hittil ikke fått til å koble til mobildata og sende en SMS fra SIM-kortet som står i den. SIM-kortet fungerer på en iPhone. Jeg har oppgitt samme APN som iPhonen får: "telia".

Jeg prøver nå med følgende skript:

Kode

#include <SoftwareSerial.h>

#define RX_PIN 26
#define TX_PIN 27
#define POWER_PIN 4
#define BAUD_RATE 115200
#define LED_PIN 12

SoftwareSerial sim(RX_PIN, TX_PIN);

bool isModemPoweredOn() {
  sim.println("AT");
  delay(1000);
  if (sim.find("OK")) {
    return true;
  } else {
    return false;
  }
}

void setup() {
  Serial.begin(BAUD_RATE);
  sim.begin(BAUD_RATE);
  pinMode(POWER_PIN, OUTPUT);
  pinMode(LED_PIN, OUTPUT);
  Serial.println("Powering off modem.");
  digitalWrite(POWER_PIN, LOW);
  digitalWrite(LED_PIN, LOW);
  delay(1000);
  Serial.println("Powering on modem.");
  digitalWrite(POWER_PIN, HIGH);
  digitalWrite(LED_PIN, HIGH);
  delay(10000);
  
  // Check if modem is powered on
  if (isModemPoweredOn()) {
    Serial.println("Modem is powered on and ready.");
  } else {
    Serial.println("Modem is not responding to AT commands. Please check power connection and pin configuration.");
  }
}

void loop() {
  // Check if modem is registered to the network
  sim.println("AT+CREG?");
  delay(1000);
  if (sim.find("+CREG: 0,1") || sim.find("+CREG: 0,5")) {
    Serial.println("Modem registered to the network.");
    
    // Set SMS mode to text mode
    sim.println("AT+CMGF=1");
    delay(1000);
    
    // Send SMS message
    sim.println("AT+CMGS=\"+4799999999\"");
    delay(1000);
    sim.println("LilyGO-T-SIM7000G booted up!");
    delay(100);
    sim.write(26);
    delay(1000);
  } else {
    Serial.println("Modem not registered to the network. Trying to connect...");
    
    // Configure APN
    sim.println("AT+CGDCONT=1,\"IP\",\"telia\"");
    delay(1000);
    
    // Set modem to automatically select the network and start the GPRS and LTE services
    sim.println("AT+COPS=0");
    delay(5000);
    
    // Check if modem is registered to the network
    sim.println("AT+CREG?");
    delay(1000);
    if (sim.find("+CREG: 0,1") || sim.find("+CREG: 0,5")) {
      Serial.println("Modem connected to the network.");
      
      // Set SMS mode to text mode
      sim.println("AT+CMGF=1");
      delay(1000);
      
      // Send SMS message
      sim.println("AT+CMGS=\"+479999999\"");
      delay(1000);
      sim.println("LilyGO-T-SIM7000G booted up!");
      delay(100);
      sim.write(26);
      delay(1000);
    } else {
      Serial.println("Modem could not connect to the network.");
    }
  }
  
  delay(1000);
}
Dette er et skript jeg og ChatGPT har mekket sammen, jeg har også prøvd med noen skripts fra https://github.com/Xinyuan-LilyGO/LilyGO-T-SIM7000G

Dette skriptet gir meg feilmeldingen:
Modem is not responding to AT commands. Please check power connection and pin configuration.
Vis hele sitatet...
Jeg ser selv hvor i skriptet feilmeldingen kommer fra, og har prøvd å feilsøke her, men det er ikke dette jeg skal spørre dere om nå.

Jeg har også flere andre ESP32-enheter slengt rundt her, også en ESP8266: https://www.kjell.com//no/produkter/...ngskort-p87294

Det jeg synes er merkelig, er at når jeg bruker digitalWrite(PIN, HIGH), så skjer det motsatte. Jeg må dermed bruke digitalWrite(PIN, LOW) for å skru på pinnen. Dette er en utfordring, fordi jeg ikke har noen måte å fysisk se om modemet er skrudd på eller ikke på dette brettet.

Enda merkeligere er det når jeg oppdager at det samme skjer på ESP8266-kortet mitt. Jeg har ikke undersøkt de andre ESP32-kortene enda, men tviler ikke på at det samme skjer på dem.

Og når jeg ser at noen av skriptene på github-prosjektet ble oppdatert for bare tre uker siden, og disse fremdeles bruker digitalWrite(PIN, HIGH); så lurer jeg på hva faen det er som skjer her?

Hvorfor gjør funksjonen det motsatte av det den skal?
Jeg spurte ChatGPT om det også, og det syntes hen var rart også. Hen foreslo å reversere batterikontakten, men dette her går via. USB-power, så det er ingenting å "reversere".

Kan det være at funksjonen digitalWrite har endret virkemåte i de siste oppdateringene av Arduino?

EDIT: Jøss, post nr. 500!
Sist endret av Tysteren; 24. februar 2023 kl. 20:46. Grunn: Post nr. 500!