Arduino met SD-kaart en MYSQL
11 berichten
• Pagina 1 van 2 • 1, 2
Arduino met SD-kaart en MYSQL
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.
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
Andreas
Advertisement
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: Arduino met SD-kaart en MYSQL
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.
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.
Re: Arduino met SD-kaart en MYSQL
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
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
Andreas
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: Arduino met SD-kaart en MYSQL
Soms helpt het om te kijken op de Arduino reference. Daar wordt veel energie in gestopt door vrijwilligers. En als we daar niet kijken.....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
Re: Arduino met SD-kaart en MYSQL
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
Heeft iemand een kleine beschrijving of een klein stukje code waarmee ik weer verder kan ??
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
Andreas
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: Arduino met SD-kaart en MYSQL
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
Verder is dit voorbeeld wel erg inefficient, maar probeer dit eerst maar te begrijpen.
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.
Re: Arduino met SD-kaart en MYSQL
Heb een klein voorbeeldje gemaakt om te kijken of ik het snap wat jij bedoeld Nico
cpp code
Ik hoor graag of ik het door heb, wat er moet staan in de test.txt file zodat de juiste waarde gelezen wordt.
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
Andreas
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: Arduino met SD-kaart en MYSQL
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.
En wat jij verstaat onder time_1 = datastring(time_1). Want dat zegt mij ff niets.
Re: Arduino met SD-kaart en MYSQL
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
void Setup
cpp code
void loop
cpp code
cpp code
Ik hoop dat ik het een beetje duidelijk heb kunnen maken.
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
Andreas
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: Arduino met SD-kaart en MYSQL
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.
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.
11 berichten
• Pagina 1 van 2 • 1, 2
Wie is er online?
Gebruikers in dit forum: Google [Bot], opoguhi en 91 gasten