Arduino met SD-kaart en MYSQL

Arduino specifieke Software
Gebruikers-avatar
Berichten: 102
Geregistreerd: 26 Okt 2015, 16:07

Arduino met SD-kaart en MYSQL

Berichtdoor Atwist » 04 Dec 2015, 10:56

Het is misschien voor jullie een rare vraag maar het volgende.

Heb nu op mijn Arduino Mega een SD-kaart module met een webpagina wat ook draait maar ik wil nu ook dat de gegevens (gegevens van storing enz.) worden opgeslagen op de SD-kaart.
Dit zou volgens mij met MYSQL moeten maar in mijn beleving kan MYSQL niet zonder besturing (Linux,......) draaien.
Of zit ik nu helemaal verkeert, kan namelijk niet zo snel iets vinden met een voorbeeld hoe het werkt.

Heeft iemand een kleine uitleg.
Ik ben niet de slimste maar doe wel mijn best.
Andreas

Advertisement

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Arduino met SD-kaart en MYSQL

Berichtdoor nicoverduin » 04 Dec 2015, 13:23

Je kan toch gewoon een log file creeren en appenden aan die file.
zie: https://www.arduino.cc/en/Reference/SDopen

Als je een bestand opent met FILE_WRITE mode, dan wordt de data automatisch aan het einde van het bestand toegevoegd. Als je daarna flush() doet wordt het direct op de SD kaart gezet in het door jouw gegeven log bestand. Je kan het dus gewoon zien als een harddisk.
Daar kun je ook meer dan een paar HTML pagina's opslaan.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Gebruikers-avatar
Berichten: 102
Geregistreerd: 26 Okt 2015, 16:07

Re: Arduino met SD-kaart en MYSQL

Berichtdoor Atwist » 04 Dec 2015, 13:39

Dat geeft de burger moet.

Ga hier eens mee stoeien om te kijken hoe ik de gegevens naar een log krijg en via de website er weer uithaal.

Mijn dank is groot Nico
Ik ben niet de slimste maar doe wel mijn best.
Andreas

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Arduino met SD-kaart en MYSQL

Berichtdoor nicoverduin » 04 Dec 2015, 15:38

Atwist schreef:Dat geeft de burger moet.

Ga hier eens mee stoeien om te kijken hoe ik de gegevens naar een log krijg en via de website er weer uithaal.

Mijn dank is groot Nico
Soms helpt het om te kijken op de Arduino reference. Daar wordt veel energie in gestopt door vrijwilligers. En als we daar niet kijken.....
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Gebruikers-avatar
Berichten: 102
Geregistreerd: 26 Okt 2015, 16:07

Re: Arduino met SD-kaart en MYSQL

Berichtdoor Atwist » 05 Dec 2015, 16:16

Ben nu druk bezig met het inlezen en uitpluizen van de codes.
Loop tegen en probleem aan en dat zal aan mijn gebrek aan kennis

Wat ik niet begrijp is hoe leest de Arduino een bepaalde waarde bv. ik heb 10 items die ik kan wijzigen via mijn webtool.
Hoe weet de Arduino dat bv de tijd van item 6 is gewijzigd en dat de Arduino nu deze moet nemen.

Pluis nu deze code uit.

cpp code
#include <SD.h>


void setup()
{
// Open serial communications and wait for port to open:
Serial.begin(9600);

Serial.print("Initializing SD card...");
// make sure that the default chip select pin is set to
// output, even if you don't use it:
pinMode(10, OUTPUT);

// see if the card is present and can be initialized:
if (!SD.begin(chipSelect)) {
Serial.println("Card failed, or not present");
// don't do anything more:
return;
}
Serial.println("card initialized.");
}

void loop()
{
// make a string for assembling the data to log:
String dataString = "";

// read three sensors and append to the string:
for (int analogPin = 0; analogPin < 3; analogPin++) {
int sensor = analogRead(analogPin);
dataString += String(sensor);
if (analogPin < 2) {
dataString += ",";
}
}

// open the file. note that only one file can be open at a time,
// so you have to close this one before opening another.
File dataFile = SD.open("datalog.txt", FILE_WRITE);

// if the file is available, write to it:
if (dataFile) {
dataFile.println(dataString);
dataFile.close();
// print to the serial port too:
Serial.println(dataString);
}
// if the file isn't open, pop up an error:
else {
Serial.println("error opening datalog.txt");
}

dataFile = SD.open("test.txt");
if (dataFile) {
Serial.println("test.txt:");

// read from the file until there's nothing else in it:
while (dataFile.available())
{
Serial.write(dataFile.read());
}
// close the file:
data.close();
} else
{
// if the file didn't open, print an error:
Serial.println("error opening test.txt");
}
}


Heeft iemand een kleine beschrijving of een klein stukje code waarmee ik weer verder kan ??
Ik ben niet de slimste maar doe wel mijn best.
Andreas

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Arduino met SD-kaart en MYSQL

Berichtdoor nicoverduin » 06 Dec 2015, 12:52

Dan moet je dat meegeven in het bestand. Dus als jij wilt dat er voor verschillende types iets moet gebeuren, moet je dat opnemen in het bestand.
In dit voorbeeld worden de 3 analoge waarden achter elkaar geschreven als string met een komma ertussen.
Je zou er ook voor kunnen kiezen om voor elke waarde eerst het analoge poortnummer te schrijven met een komma. Zoals dit bijvoorbeeld:
cpp code
// read three sensors and append to the string:
for (int analogPin = 0; analogPin < 3; analogPin++) {
int sensor = analogRead(analogPin);
//
// eerst het analoge poortnummer wegschrijven
//
dataString += String(analogPin);
dataString += ",";
dataString += String(sensor);
if (analogPin < 2) {
dataString += ",";
}
}


Verder is dit voorbeeld wel erg inefficient, maar probeer dit eerst maar te begrijpen.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Gebruikers-avatar
Berichten: 102
Geregistreerd: 26 Okt 2015, 16:07

Re: Arduino met SD-kaart en MYSQL

Berichtdoor Atwist » 06 Dec 2015, 16:35

Heb een klein voorbeeldje gemaakt om te kijken of ik het snap wat jij bedoeld Nico

cpp code
#include <SPI.h>
#include <SD.h>

File myFile;

int time_1 = dataString (time_1);--------------------------------------------------//Hier initialiseren

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


Serial.print("Initializing SD card...");

if (!SD.begin(4)) {
Serial.println("initialization failed!");
return;
}
Serial.println("initialization done.");

// open the file. note that only one file can be open at a time,
// so you have to close this one before opening another.
myFile = SD.open("test.txt", FILE_WRITE);

// if the file opened okay, write to it:
if (myFile) {
Serial.print("Writing to test.txt...");
myFile.println("testing 1, 2, 3.");
// close the file:
myFile.close();
Serial.println("done.");
} else {
// if the file didn't open, print an error:
Serial.println("error opening test.txt");
time_1 = dataString (time_1);--------------------------------------------------// hier wordt de standaard waarde in test.txt gezet zodat deze kan worden aangepast
}

// re-open the file for reading:
myFile = SD.open("test.txt");
if (myFile) {
Serial.println("test.txt:");

// read from the file until there's nothing else in it:
while (myFile.available()) {
Serial.write(myFile.read());

time_1 = dataString (time_1);---------------------------------------------------// hier wordt de waarde van time_1 uit de test.txt gelezen
} // in de test.txt moet dus staan
// close the file: // time_1 = 10 ( dit is mij nog niet duidelijk)
myFile.close();
} else {
// if the file didn't open, print an error:
Serial.println("error opening test.txt");
}
}

void loop() {

}

delay( time_1 * 1000);------------------------------------------------------------// nu kan er een vertraging worden gemaakt aan de hand van de time_1 waarde = 10 * 1 dus 10 sec.


Ik hoor graag of ik het door heb, wat er moet staan in de test.txt file zodat de juiste waarde gelezen wordt.
Ik ben niet de slimste maar doe wel mijn best.
Andreas

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Arduino met SD-kaart en MYSQL

Berichtdoor nicoverduin » 06 Dec 2015, 17:45

Het is niet duidelijk omdat je niet begrijpt wat het programma doet. Ik stel voor dat je in je eigen woorden commentaar toevoegt om te begrijpen wat het programma doet.
En wat jij verstaat onder time_1 = datastring(time_1). Want dat zegt mij ff niets.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Gebruikers-avatar
Berichten: 102
Geregistreerd: 26 Okt 2015, 16:07

Re: Arduino met SD-kaart en MYSQL

Berichtdoor Atwist » 06 Dec 2015, 19:19

Wat ik probeer te bereiken op mijn manier is.
Als de Arduino Mega wordt opgestart dan moet deze een paar waardes naar test.txt schrijven dus de waardes die ik al in de Arduino Mega heb gezet via een *.ino bestand.
Dus de Arduino Mega schrijft gegevens weg 1 keer weg (void Setup) bv time_1=10 naar test.txt.
Het programma gaat verder en nu moet er in de (void Loop) in test.txt worden gekeken naar de waarde van time_1 met deze waarde moet worden rekenend voor een vertraging.
Oke de Arduino Mega leest nu de waarde die het er zelf is in gezet dus dit heeft nu nog geen zin dat weet ik.
Via de website die ook op de SD kaart staat wil de deze waarde kunnen veranderen, dit werkt allemaal al kan het bestand uitlezen wijzigen en opslaan.
Kan dus de time_1=10 wijzigen in time_1=20.
In het programma gaat dus met deze waarde worden gerekend zoals bv delay( time_1 * 1000);
En zo heb ik nog een paar waardes die op deze manier zouden moeten.

time_1 is door mij verzonnen.

Voor de Setup
cpp code
int time_1 = dataString (time_1);--------------------------------------------------//Hier initialiseren

void Setup
cpp code
time_1 = dataString (time_1);--------------------------------------------------// hier wordt de standaard waarde in test.txt gezet zodat deze kan worden aangepast

void loop
cpp code
time_1 = dataString (time_1);---------------------------------------------------// hier wordt de waarde van time_1 uit de test.txt gelezen

cpp code
delay( time_1 * 1000);------------------------------------------------------------// nu kan er een vertraging worden gemaakt aan de hand van de time_1 waarde = 10 * 1000 dus 10 sec


Ik hoop dat ik het een beetje duidelijk heb kunnen maken.
Ik ben niet de slimste maar doe wel mijn best.
Andreas

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Arduino met SD-kaart en MYSQL

Berichtdoor nicoverduin » 07 Dec 2015, 08:16

Als het maar een paar parameters zijn, waarom niet:
a) eeprom gebruiken (100000x wijzigen)?
b) waarden alleen naar SD kaart schrijven als deze wijzigen. En als het altijd in het begin van het bestand moet staan zie dan de seek() functie.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Volgende

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: Google [Bot], opoguhi en 91 gasten