Hur använda Arduino UNO för att sampla och lägga i databas?

Planering och tankar kring eventuella framtida projekt.
Användarvisningsbild
Spisblinkaren
EF Sponsor
Inlägg: 12990
Blev medlem: 13 december 2012, 21:41:43

Re: Hur använda Arduino UNO för att sampla och lägga i datab

Inlägg av Spisblinkaren »

Ja, jag är 100% säker.

Satte nämligen en 1000uF rätt över matningen tidigare och det hjälpte inte.

Dessutom är det tämligen omöjligt att hur man än gör få dom stora skillnaderna jag ramat in.

Jag menar, det är ju liksom störningar på 300LSB/1024 a' 5V ref dvs 1,5V!!

Jag begriper inte det här!

Observera också att det är andra UNO som beter sig på precis samma sätt (>20LSB avvikelse vid upprepad sampling iaf).

MVH/Roger
Användarvisningsbild
Spisblinkaren
EF Sponsor
Inlägg: 12990
Blev medlem: 13 december 2012, 21:41:43

Re: Hur använda Arduino UNO för att sampla och lägga i datab

Inlägg av Spisblinkaren »

Såhär ser min output ut om jag får bestämma.

Jag har skapat ett gäng variabler istället för "konstiga" funktionsanrop.

Meningen med variablerna är att var och en skall hamna i en separat kolumn i Excel (in my dreams :D)

Endast numeriska värden i output är av intresse (så "kg" går bort).

Men strukturen är precis den jag vill ha.

Dvs värde, år, dag, timma, minut, sekund i var sin kolumn.

Frågan är nu "bara" hur jag åstadkommer detta vid skrivning till SD.

Har ingensomhelst susning :D

MVH/Roger
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
j.po
Inlägg: 279
Blev medlem: 24 november 2008, 20:40:19
Ort: Halmstad
Kontakt:

Re: Hur använda Arduino UNO för att sampla och lägga i datab

Inlägg av j.po »

Användarvisningsbild
Spisblinkaren
EF Sponsor
Inlägg: 12990
Blev medlem: 13 december 2012, 21:41:43

Re: Hur använda Arduino UNO för att sampla och lägga i datab

Inlägg av Spisblinkaren »

Jag tackar dig j.po för den informationen.

Om man struntar i menlös dialog-information som t.ex att läsning lyckats eller inte så är det inte många rader kod som behövs.

Det mest intressanta för mig som amatör är att allt verkar behöva gå via monitorn.

Så man måste alltså läsa in värden till monitorn (från A/D & RTC) för att sen kunna skriva till SD (SD.open+SD.write+SD.close).

Själva värdena behöver jag inte läsa då jag helt enkelt flyttar SD till datorn.

Där är tanken att värdena från SD skall kunna läsas av Excel eller Wordpad.

Hur mycket är jag ute och cyklar nu? :)

MVH/Roger
Användarvisningsbild
Spisblinkaren
EF Sponsor
Inlägg: 12990
Blev medlem: 13 december 2012, 21:41:43

Re: Hur använda Arduino UNO för att sampla och lägga i datab

Inlägg av Spisblinkaren »

Nu har jag dock behövt använda "menlös dialoginformation" :D

Jag får nämligen inte initialiseringen av SD att fungera.

Det är nåt med Chip Select (Pin 4) som inte verkar fungera (ty "Initialization failed").

Alternativt är SD oformaterad (vilket jag dock starkt betvivlar).

Kommer studera Adafruit's manual lite närmare.

MVH/Roger
PS
Idag upptäckte jag att den splirrans nya potentiometern som simulerar givaren är kass.

Jag uppmätte stundtals uppemot 20M Ohm över löpare relativt GND.

Dessutom satte jag min DVM (Ri>10M) som övervakare och efter att jag applicerat 22uF så sjönk, och sjönk spänningen dvs det var i princip avbrott i potentiometern.

Jag tycker jag är rent ut sagt en sopa som inte upptäckt det tidigare.

Å andra sidan, splirrans ny potentiometer...

Jag kan dock meddela att efter 22uF beter den sig bättre.

Får köpa ny pot i veckan.

Kod: Markera allt

#include <SD.h>

File myFile;

void setup()
{
  Serial.begin(57600);
  pinMode(10, OUTPUT);
  
  //debug
  Serial.print("Initializing SD card...");  
  if (!SD.begin(4)) {
    Serial.println("initialization failed!");
    return;
  }
  Serial.println("initialization done.");
  //debug
  
  myFile = SD.open("test.txt", FILE_WRITE);
  if (myFile) {
    Serial.print("Writing to test.txt...");
    myFile.println("testing 1, 2, 3.");
    myFile.close();
  } 
  myFile = SD.open("test.txt");
  if (myFile) {
    Serial.println("test.txt:");
    while (myFile.available()) {
     Serial.write(myFile.read());
    }
  myFile.close();
  } 
}

void loop()
{
Serial.println("test");
delay(3000);
}

j.po
Inlägg: 279
Blev medlem: 24 november 2008, 20:40:19
Ort: Halmstad
Kontakt:

Re: Hur använda Arduino UNO för att sampla och lägga i datab

Inlägg av j.po »

känns inte som om programmet själv skapar filen test.txt, du måste kanske ha en fil som heter test.txt på kortet från start
Användarvisningsbild
Spisblinkaren
EF Sponsor
Inlägg: 12990
Blev medlem: 13 december 2012, 21:41:43

Re: Hur använda Arduino UNO för att sampla och lägga i datab

Inlägg av Spisblinkaren »

Jo, programmet skapar dom filerna.

Nedan följer beviset.

Vad jag hade gjort fel var att jag satt chipSelect till 4 (default) utan att förstå varför.

Arduino i sig använder pinne 4 men Adafruit's logger-shield använder pinne 10.

Så jag chansade och ändrade en synlig fyra i nån funktion kallad SD.begin() enligt ovan och då blev det att fungera!!

Fast innan jag fick det att fungera läste jag alltså i Adafruit's manual och jag fick tacksam hjälp därifrån i form av exempelkod som bara checkar SD-status. Filen kallas Cardinfo som finns färdig i Arduino-miljön vilket jag sparade som SD_Cardinfo för att ha som egen lek-kopia (bifogar den också).

Så först ändrade jag CS, sen laddade jag ovanstående program (skapade totalt 5st test-filer) och kollade på monitorn där "testing 1, 2, 3." syntes och sen laddade jag SD_Cardinfo och fick upp nedanstående resultat till min stora glädje.

Dock är jag mycket snopen över tiderna för filen. Verkar vara rena dummys :D

Jag tror det har att göra med variabeln/funktionen (whatever :D) FILE_WRITE som alltså skickas med öppnandet/skapandet av testfilen (SD.open).

Förutom det problemet är jag just nu överlycklig över mina små, men inte obetydliga, framgångar!!

MVH/Roger
PS
Jag har också satt allt till 9600 baud. Att använda andra baud-rate fungerar men det är irriterande när baud-rate defaultar till 9600 vid uppstart av utvecklingsmiljön och man inte har det i alla sina program...

Kod: Markera allt

/*
  SD card test 
   
 This example shows how use the utility libraries on which the'
 SD library is based in order to get info about your SD card.
 Very useful for testing a card when you're not sure whether its working or not.
 	
 The circuit:
  * SD card attached to SPI bus as follows:
 ** MOSI - pin 11 on Arduino Uno/Duemilanove/Diecimila
 ** MISO - pin 12 on Arduino Uno/Duemilanove/Diecimila
 ** CLK - pin 13 on Arduino Uno/Duemilanove/Diecimila
 ** CS - depends on your SD card shield or module. 
 		Pin 4 used here for consistency with other Arduino examples

 
 created  28 Mar 2011
 by Limor Fried 
 modified 9 Apr 2012
 by Tom Igoe
 */
 // include the SD library:
#include <SD.h>

// set up variables using the SD utility library functions:
Sd2Card card;
SdVolume volume;
SdFile root;

// change this to match your SD shield or module;
// Arduino Ethernet shield: pin 4
// Adafruit SD shields and modules: pin 10
// Sparkfun SD shield: pin 8
const int chipSelect = 10;    

void setup()
{
 // Open serial communications and wait for port to open:
  Serial.begin(9600);
   while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }


  Serial.print("\nInitializing SD card...");
  // On the Ethernet Shield, CS is pin 4. It's set as an output by default.
  // Note that even if it's not used as the CS pin, the hardware SS pin 
  // (10 on most Arduino boards, 53 on the Mega) must be left as an output 
  // or the SD library functions will not work. 
  pinMode(10, OUTPUT);     // change this to 53 on a mega


  // we'll use the initialization code from the utility libraries
  // since we're just testing if the card is working!
  if (!card.init(SPI_HALF_SPEED, chipSelect)) {
    Serial.println("initialization failed. Things to check:");
    Serial.println("* is a card is inserted?");
    Serial.println("* Is your wiring correct?");
    Serial.println("* did you change the chipSelect pin to match your shield or module?");
    return;
  } else {
   Serial.println("Wiring is correct and a card is present."); 
  }

  // print the type of card
  Serial.print("\nCard type: ");
  switch(card.type()) {
    case SD_CARD_TYPE_SD1:
      Serial.println("SD1");
      break;
    case SD_CARD_TYPE_SD2:
      Serial.println("SD2");
      break;
    case SD_CARD_TYPE_SDHC:
      Serial.println("SDHC");
      break;
    default:
      Serial.println("Unknown");
  }

  // Now we will try to open the 'volume'/'partition' - it should be FAT16 or FAT32
  if (!volume.init(card)) {
    Serial.println("Could not find FAT16/FAT32 partition.\nMake sure you've formatted the card");
    return;
  }


  // print the type and size of the first FAT-type volume
  uint32_t volumesize;
  Serial.print("\nVolume type is FAT");
  Serial.println(volume.fatType(), DEC);
  Serial.println();
  
  volumesize = volume.blocksPerCluster();    // clusters are collections of blocks
  volumesize *= volume.clusterCount();       // we'll have a lot of clusters
  volumesize *= 512;                            // SD card blocks are always 512 bytes
  Serial.print("Volume size (bytes): ");
  Serial.println(volumesize);
  Serial.print("Volume size (Kbytes): ");
  volumesize /= 1024;
  Serial.println(volumesize);
  Serial.print("Volume size (Mbytes): ");
  volumesize /= 1024;
  Serial.println(volumesize);

  
  Serial.println("\nFiles found on the card (name, date and size in bytes): ");
  root.openRoot(volume);
  
  // list all files in the card with date and size
  root.ls(LS_R | LS_DATE | LS_SIZE);
}


void loop(void) {
  
}
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
Spisblinkaren
EF Sponsor
Inlägg: 12990
Blev medlem: 13 december 2012, 21:41:43

Re: Hur använda Arduino UNO för att sampla och lägga i datab

Inlägg av Spisblinkaren »

Två menlösa bilder till sen skall det bli allvar ;)

Den första visar alltså filen test.txt öppnad med Wordpad (efter att jag flyttat SD till datorn ;)).

Den har exakt samma disponering som "Monitor-filen" ovan (möjligtvis med undantag för en skum extra tredje rad).

Den andra bilden föreställer min virade och primitiva, men fina, LED-modul "By Night" :)

Kameran ljuger dock lite för det är ännu vackrare (och tydligare, obs) IRL.

MVH/Roger
PS
Nu ska jag koncentrera mig på att generera riktiga data.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
Spisblinkaren
EF Sponsor
Inlägg: 12990
Blev medlem: 13 december 2012, 21:41:43

Re: Hur använda Arduino UNO för att sampla och lägga i datab

Inlägg av Spisblinkaren »

Okej, nu börjar jag få ordning på grejerna :)

Eller vad sägs om dom här bilderna?

Jag har alltså lekt lite med givar-ratten för att simulera faktisk patient.

Sen har jag stoppat lagringen till SD genom att trycka på knappen "New User" vilket genererar en "Closing File"-funktion.

Därefter har jag tagit ur SD ur UNO och stoppat in det i datorn.

Sen har jag dubbelklickat på filen (varvid min standardläsare Wordpad öppnar den).

Sen har jag öppnat min fantastiska Excel-97 :D

I Excel har jag sedan försökt öppna text-filen.

Excel klagar inte så högljutt utan ber mig bara definiera lite typ tabbar.

Excel är dock så smart att den fattar mina tabbar så det är bara att klicka OK (för att skryta lite hade jag faktiskt det här på känn :))

Sen får jag alltså upp mina värden i Excel :D

Där skriver jag manuellt in headerna (som den annars får problem med).

Slutligen kastar jag bara om värde-kolumnen så att den hamnar närmast TILL HÖGER om sekunder och plottar grejerna.

Fantastiskt, va :)

MVH/Roger
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
nifelheim
Den första
Inlägg: 2484
Blev medlem: 27 mars 2008, 22:31:16
Ort: stockholm

Re: Hur använda Arduino UNO för att sampla och lägga i datab

Inlägg av nifelheim »

grattis :tumupp:
Användarvisningsbild
orvar-e
EF Sponsor
Inlägg: 5973
Blev medlem: 9 mars 2007, 09:01:32
Ort: Borlänge

Re: Hur använda Arduino UNO för att sampla och lägga i datab

Inlägg av orvar-e »

Vilken utveckling sedan första inlägget. :tumupp:
Användarvisningsbild
Spisblinkaren
EF Sponsor
Inlägg: 12990
Blev medlem: 13 december 2012, 21:41:43

Re: Hur använda Arduino UNO för att sampla och lägga i datab

Inlägg av Spisblinkaren »

nifelheim skrev:grattis :tumupp:
Jag tackar och bockar!

MVH/Roger
Användarvisningsbild
Spisblinkaren
EF Sponsor
Inlägg: 12990
Blev medlem: 13 december 2012, 21:41:43

Re: Hur använda Arduino UNO för att sampla och lägga i datab

Inlägg av Spisblinkaren »

orvar-e skrev:Vilken utveckling sedan första inlägget. :tumupp:
Jag tackar och bockar för detta erkännande!

MVH/Roger
Användarvisningsbild
Spisblinkaren
EF Sponsor
Inlägg: 12990
Blev medlem: 13 december 2012, 21:41:43

Re: Hur använda Arduino UNO för att sampla och lägga i datab

Inlägg av Spisblinkaren »

Vad jag gillar gamla grejer och gamla principer!!

Jag sitter alltså här och försöker få ordning på min UNO.

Jag får hjälp av Arduinos mycket trevliga forum (och av min kompis RBM).

Experterna där talar om för mig hur jag ska göra.

Man kan alltså inte rätt upp och ner ändra "standardtidsinställningen" som är den som Windows sorterar efter.

Däremot kan man manipulera filens namn så att det får en tidsstämpel.

Det är sedan nästan ännu enklare att sortera filerna efter det.

Men nu till kråksången.

I Monitorn kunde jag se att jag lyckats tidstämpla filnamnet enligt YYYYMMDD_HHMMSS.

Vad jag däremot inte kunde se var vart filen tog vägen nånstans :D

Allt verkade stämma men när jag sniffar SD finns filerna helt enkelt inte med.

Jag fattade ingenting men lyckades efter mycket trevande komma fram till att anledningen till att filerna inte fanns på SD var helt enkelt att filnamnen var för långa :D

Det visade sig nämligen att de inte kunde vara längre än 8 tecken.

Vilket var standard när jag först började greja med datorer :D

Jag gillar sånt här.

Enkelt och utan komplikationer.

Jag blir mer och mer imponerad över hur bra Arduino är!

Det är faktiskt mycket enkelt upplagt och dessutom med mycket lite luddig C++.

Min tidsstämpel har alltså 15 tecken.

Måste krympa dom till 8.

Vad sägs om: DDHHMMSS där man inte kan vänta längre än en månad för att analysera resultaten?

MVH/Roger
PS
Sekunder bör stå där för det kan hända att en annan användare vill använda enheten inom en minut från det den första användaren använt den.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
ronnylov
Inlägg: 987
Blev medlem: 23 februari 2012, 12:06:19
Ort: Borås

Re: Hur använda Arduino UNO för att sampla och lägga i datab

Inlägg av ronnylov »

Det är väl 8.3 tecken, alltså 8 tecken följt av en punkt samt 3 ytterligare tecken.
Filerna kanske inte måste sluta med .txt?
Kanske 3 siffror i stället motsvarande vilken dag på året det är.
Då borde man kunna få med år med 2 siffror, 3 siffror för dag på året och sedan resterande 6 siffror för tiden.

Idag är det 1:a april 2015 vilket motsvarar dag nr 091.
http://disc.gsfc.nasa.gov/julian_calendar.shtml
Klockan är 11:03:50

Filnamn: 15091110.350

Nackdel är att man inte får med århundradet.
Skriv svar