Gå til innhold

Kimlorentz

Medlemmer
  • Innlegg

    284
  • Ble med

  • Besøkte siden sist

Innlegg skrevet av Kimlorentz

  1. Jeg driver og lager en batteri spennings måler med bruk av arduino og trenger litt hjelp når det kommer til måling av celle spenninger.

     

    Jeg har 20 celler koblet i serie, hver celle har spenning mellom 0 til 1,7vdc.

    Det jeg ønsker er å kunne måle spenning over hver celle fra -0.5 til + 1.8 vdc.

    Nøyaktigheten må være 0.001 vdc.

     

    Maks total spenning over batteri pakken er 34vdc.

     

    Noen som veit om hvordan jeg kan få målt dette?

    tenkte på differential forsterker kobinert med analog - digital (16-24bit ) converter

  2. Lenge siden sist oppdatering nå. Vert mye opptatt med andre ting en prosjekter.

    Til nå fungerer loggingen som den skal.

    Kan også få GPS posisjon og batteri spenning på sms når jeg spør etter det.

    Den har også blitt bra nøyaktig under testing, helt ned til 0.8 meter nøyaktighet.

     

    Jeg sliter fortsatt litt med å forstå strings.

    Til nå er alle ord delt opp i flere lag og det ser dumt ut.

    Noen her som veit hvordan man lagrer en mottatt sms til en string eller buffer og så gjøre følgene:

    1. Lagre sms til string/buffer
    2. Finne mobilnr (lagre nr i egen buffer/string, remotenr) og ord ( f.eks password, led, pos, batt)
    3. utføre oppgave funnet i sms.
    4. Send resultat til mottatt mobil nr

    For eksempel du mottar sms 1234 pos.

    1234 = ditt passord

    pos = at du ønsker gps posisjons data.

     

    Jeg vil da at den ser at passordet er gyldig eller ikke,

    • viss passord er gyldig send pos data i retur
    • viss passord ikke er gyldig ignorer sms.
  3. Jeg driver å prøve å lese en del av en data som kommer fra en GPS enhet via Arduino DUE.

     

    Jeg har koblet pcen til Arduino DUE og leser da data fra Serial.

    Jeg har koblet en GPS enhet til Serial1.

     

    GPS enheten sender RMC, GGA og GSA men jeg vil kun printe RMC til pcen.

     

    Her er koden jeg prøvde men fikk bare feil.

    String nmearaw = ""; // her lagres GPS data
    
    void setup() 
    {
      Serial.begin(9600); // til PC
      Serial1.begin(9600); // fra GPS
    }
    
    void loop() 
    {
    while (Serial1.available() > 0)
    {
      char c = Serial1.read();
      nmearaw += c;
    }
    
    
    if (strstr(nmearaw, "$GPRMC")) {
       // found RMC
        Serial.println(nmearaw);
        nmearaw = "";
      }
    
    }
    

    Her er feil koden jeg fikk:

     

    Arduino: 1.5.8 (Windows 8), Board: "Arduino Due (Programming Port)"
    sketch_nov23b.ino: In function 'void loop()':
    sketch_nov23b.ino:19:29: error: cannot convert 'String' to 'const char*' for argument '1' to 'char* strstr(const char*, const char*)'
    Error compiling.
    This report would have more information with
    "Show verbose output during compilation"
    enabled in File > Preferences.
  4. Jeg har startet å lage min egen hjemmeside ved bruk av HTML5.

    Jeg startet først med å skaffe meg ferdig oppsett for en hjemmeside som jeg igjen endret til mitt forhold.

    Men for å endre siden må jeg logge meg inn på one.com sin "Web File Manager" for å kunne gjøre endringer.

     

    Jeg har da sett etter en løsning der jeg kan gjøre justeringer direkte i webleseren med å ha en login system. En annen fordel er å kunne gi andre tilgang til endringer også.

     

    Mitt spørsmål da var kan jeg bruke HTML Templates til dette?

    Her er hvilken jeg tenkte å bruke

     

    http://themeforest.net/item/porto-admin-responsive-html5-template/8539472

     

    Vil denne kunne gi meg muligheter å gjøre det jeg ønsker?

  5. Ja jeg prøvde koden, fungerte den slik den var. må bare få arduinoen til å lagre mottatt sms fra Serial2 til smsbuffer.

     

    Slik er det jeg har satt opp til nå:

    #define Sim900Serial Serial2
    
    const int SIM = 7;          // on current Sim900 card the PWM pin 7 control                             //the PWRKEY to SIM900 chip
    const int LED = 10;          // LED output, controlled by SMS
    const int LED2 = 9;          // LED output, controlled by SMS
    boolean LOWVOLT = true;     // Used to stop arduino to send many sms 
                                //during low voltage levels
    

    Setup del:

        pinMode (LED, OUTPUT);
        pinMode (LED2, OUTPUT);
        pinMode (SIM, OUTPUT);
        digitalWrite(LED, LOW);
        digitalWrite(LED2, LOW);
    
    // Starting up SIM900
      digitalWrite(SIM, HIGH);
      delay(3000);
      digitalWrite(SIM, LOW);
      delay(8000);
    
    // SIM900 setup  
      Sim900Serial.begin(115200);               // the GPRS baud rate  
      delay(500);
      Sim900Serial.println("AT+IPR=19200");
      delay(500);
      Sim900Serial.begin(19200);               // the GPRS baud rate  
      delay(1000);  
      Sim900Serial.println("AT+CNMI=2,2,0,0,0\r");
      delay(1000);
      Sim900Serial.println("AT+CMGD=1,4"); // delete all SMS
      
    }
    

    Loop ser slik ut:

    {
      sms();
    
      
    ////// Battery monitor code //////
    int sensor1 = analogRead(A0);  
    float power = sensor1 * (5 / 1023.0) * 2.487;
    
    // When battery is lover then 7.00vdc
      if (power <= 7.00) {
        digitalWrite(LED, HIGH);
        if (LOWVOLT)
            SendTextMessage3();
            LOWVOLT = false;    
      }
      if (power >= 8.00) 
      {
        if(!LOWVOLT)
            LOWVOLT = true; 
      }
      
    }
    

    Det er sms(); som ikke er fullført. det er denne som leser sms, lagre telefon nr i egen buffer f.eks sendernr og utfører ordre fra sms

  6. Var litt opptatt i går så fikk ikke sett noe mer på det. Du kan jo kjøre en løkke som legger på en string for hver gang.

    No har ikke jeg gjort noe mot SoftwareSerial.h eller SIM900, men kanskje dette virker:

    String text = "";
    char bokstaver;
    
    while(SIM900.available() > 0){
    bokstaver = SIM900.read();
    text.concat(bokstaver);
    }

    eller du kan lage ditt eget buffer som skal holde på meldningen, f.eks array med lengde 20 om du vet at meldningen ikke blir lenger en 20 tegn. Så kan du lage en for-løkke (som går 20 ganger) som legger dette inn i arrayen, når dette er gjort kan du konvertere fra char til string.

     

    Det er mange måter, dette var bare noen eksempler, kanskje du kan benytte deg av dette eller kanskje ikke. Du får bare spørre om det er noe mer du lurer på.

     

    Tenkte å bruke en buffer til å lagre mottatt sms på.

    Slik ser dataen ut når SIM900 mottar en sms, jeg brukte *** der mitt nr var

     

    +CMT: "+47********","","14/0/0,19:19:23+0"
    Password led
    Slik jeg ser det har jeg ikke bruk for mer enn 100 bytes buffer den skal klare dette over her og vell så det.
    Jeg er total nood når det kommer til string og buffer og forstår ikke noe av det enda, men prøver å lære.
    Slik jeg ser det nå vil jeg følgende:
    1. Se etter +CMT og lagre all data etter +CMT til smsbuffer
    2. Finne "+47********" og lagre i en egen buffer, "sendernr"
    3. Bekrefte mottatt passordet med det som er lagret i en egen buffe.
    4. Finne ordet led og utføre handlingen viss passordet stemmer.
    5. Sende sms i retur til sender med å hente nummer fra buffer sendernr.
    6. Etter alt er gjort slett alle sms, tøm sendernr og smsbuffer.
  7. Har brukt denne en del, men de har en annen måte å lese setninger for å utføre handlinger

      if(SIM900.available() >0)
      {   
        inchar=SIM900.read(); 
        if (inchar=='2')
        {
          delay(10);
          inchar=SIM900.read(); 
          if (inchar=='1')
          {
            delay(10);
            inchar=SIM900.read(); 
            if (inchar=='2')
            {
              delay(10);
              inchar=SIM900.read(); 
              if (inchar=='8')
              {
                delay(10);
                inchar=SIM900.read(); 
                if (inchar=='6')
    

    osv.

     

    Som du ser er det splittet opp jeg vil unngå det, vil helst 21286 og ikke

    2

    1

    2

    8

    6

  8. Jeg trenger hjelp til å kunne lese og bruke data fra Serial1 porter på Arduino Mega 2560.

     

    Jeg har en SIM900 koblet til Serial1 den mottar sms fra min telefon.

    Det jeg ønsker er å kunne lagre telefonnr på en string "telefonnr" og vil at den skal søke etter ord i selve smsen.

    F.eks "dittpassord" LEDON, når han finner denne vil jeg at den skal sette LED som er på pin 12 høy.

     

    Noen som veit hvordan jeg skal gjøre dette?

  9. Her er en liten oppsummerings av hvor langt jeg har kommet til nå.
    * tegnet betyr at det vil ligge mer info lengre ned på denne kommentaren.

     

    SIM900

    • SMS - Jeg kan sende og motta data via sms, men Arduinoen kan kun sende til et fast telefon nummer. Skal endres.
    • GNSS - Ikke satt opp men jobber med det*
    • MMS - Vert vurdert men i fleste tilfeller ikke nødvendig.
    • HTTP/FTP - Vert vurdert men vil kreve data trafikk og batteri strøm, lite/ingen bruk.

     

     

    Adafruit Ultimate GPS

    • GPS Start og setup - Fullført
    • GPS Standby - Kode skrevet, ikke satt inn i drift
    • GPS Awake - Kode skrevet, ikke satt inn i drift
    • GPS NMEA logging - Flere kode utgaver skrevet, ikke fullført

     

     

    Adafruit MicroSD

    • GPSlog - Logger spesial utgave for Excel, fullført
    • GPSRAW - Logger RAW GGA og RMC data til .txt fil, noe justeringer trengs
    • SD kort - Ser etter om SD kort er tilstede før utføring av logging, ikke fullført men fungerer viss SD kort er tilstede.**

     

     

    *
    GNSS - Global Navigation Satellite System
    Denne ekstra funksjonen gir meg muligheter og finne ca. posisjon til det du tracker viss GPS modulen ikke går i fix.
    Ulempen er at denne er ikke nøyaktig og krever en del data trafikk, noe som kan koste penger viss ditt simkort ikke har data trafikk avtale.

     

     

    **
    Når SD kort mangler stopper hele Arduinoen og du må restarte med SD kort montert inn for å få den i drift igjen.

     

     

     

    Ekstra info GPS:
    GPS standby er ganske nyttig funksjon viss du vil at batteri pakken du bruker skal leve så lenge som muligt, men viss du ikke bryr deg om dette kan du la GPS stå på og heller bruke sleep funksjonen.
    Strøm trekket til GPS enheten er(MTK3339);

    • Aktiv = 20 til 35mA - avhengig om du står stille, signal styrke, om du har fix osv.
    • Sleep = 14mA
    • Standby = under 1mA - Må testes.

     

     

     

    Ekstra info SIM900:
    Den vil starte som aktiv, og viss ingen mottatt sms eller ordre via arduino går den i sleep og venter på ny sms.

    • Aktiv = 10mA
    • Sleep = 1.5mA
    • Sending av data = opp til 2Amp (dette er maks, og varer ett-to sekunder) - Må testes

    Kun 2G/EDGE

     

    Data overførings hastighet.
    WCDMA

    • Max.384Kbps(Nedlastning)
    • Max.384Kbps(Opplastning)

    EDGE

    • Max. 85.6Kbps(Nedlastning)
    • Max. 42.8Kbps(Opplastning)

     

    Ekstra støtter info.

    • TCP/IP
    • FTP/HTTP/HTTPS/SMTP/POP3

     

     

    Filens størrelse på Arduinoen er(Arduino Mega 2560):
    11% of program storage space
    31% of dynamic storage space - Skal endres
  10. Når du nå sender pos melding får du følgende i retur

     

    Tid UTC: 20:15:50

    Dato: 31/08/2014

    Fix: 1 GPS Kvalitet: 1

    Antall satellitter: 9

    Lokasjon: XXXX.XXXXN, XXXX.XXXXE - fjernet for å ikke vise min nåværende posisjon

    Fart (km/t): 0.70

    Retning: 340.98

    Hoyde: 21.40

     

     

    Har og gjort en liten ekstra ting. Hver gang du spør etter pos vil det legges til en text på ene gps log file som sier at pos sendt via sms. Jobber med å sette inn mobil nummer til den som spør etter pos.

     

    Men så er det neste "snag" hvordan sende pos respons til sender av sms og ikke fast telefon å sende pos til. Noen som veit?

     

     

    På grunn av jeg ikke veit hvordan å sette i æøå ble det byttet ut med ae, o, a.

×
×
  • Opprett ny...