Paměťový modul

Patrik
Příspěvky: 137
Registrován: 02 dub 2020, 09:58
Reputation: 0

Paměťový modul

Příspěvek od Patrik » 13 led 2021, 13:59

Ahoj,

dokoupil jsem si k Arduinu Mega 2560 paměťový modul MH-SD Card (+ 2 GB paměťovou kartu).
Oveřil jsem zapojení a funkčnost čtení a zápisu - vše jde bez problémů.

Nyní přemýšlím nad tím, zda je možno číst strukturu z SD karty.

Např. ve flashpaměti (pomocí progmem mám):

vstruct Uzivatel {
const PROGMEM char *jmeno;
const PROGMEM unsigned long card;
byte total_time;
boolean blokovan;
boolean trvale_blokovan;
};

Uzivatel user []
{
{"Novák", 1388059, 50, 0, 0},//0
a další....
};

A právě mě zajímá, jestli je nějak možné si toto jméno a ty údaje uložit na paměťovou kartu a poté z ní to číst a ukládat do proměnných...
Např. konstanta jméno je neměnná (ale chci jí vypsat na LCD displej)
konstanta card je také neměnná a maximálně jí chci vypsat na LCD displej.

Hodnotu 50 (to je čas - ten chci mít jako proměnou int nebo byte) Jedná se o čas v sekundách, který se odpočítává... Tzn.. pokud uživatel třeba ukončí svůj přístup ve 30 sekundách, tak by se mu na paměťovou kartu k jeho jménu a číslu karty uložilo místo 50 sekund jen 30... A mohl by tak přistupovat znova, ale s tím, že již se 30 sekundami..

Další parametr blokovan je pouze true nebo false... A jedná se pouze o to, že pokud uživateli se sníží čas až ma 0, tak se mu automaticky přiřadí 1 a je jeho přistup na 12 hodin blokován...

Poslední parametr trvale_blokován.. Je neměnný programem, ale měnil bych ho pouze v počítači (např. ztráta karty) - takhle tu kartu třeba blokuji.

Děkuji za nějakou vzácnou radu... :P

Uživatelský avatar
pavel1tu
Příspěvky: 1876
Registrován: 26 říj 2017, 08:28
Reputation: 1
Bydliště: Trutnov
Kontaktovat uživatele:

Re: Paměťový modul

Příspěvek od pavel1tu » 13 led 2021, 14:30

Z karty vyčítám jak uživatele, tak čísla karet.
Nejprve jsem chtěl používat formát JSON, pak nakonec dopadl XML

Na netu je spousta příkladů jak číst XML,
kod bohužel už asi nemám, pohrabu zálohy, loni jsem přešel na databázi na WWW serveru.
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

ondraN
Příspěvky: 466
Registrován: 08 srp 2019, 20:01
Reputation: 1

Re: Paměťový modul

Příspěvek od ondraN » 13 led 2021, 15:10

Hodně záleží na tom, jak chceš ten soubor použít. Jestli je to jen pro arduino a nikdo jiný s tím nebude pracovat, tak může být ten soubor binární a strukturu uložíš v pohodě jako blok bytů. Pokud budeš chtít SD občas vyndat a data nějak zpracovávat, je nutné tomu dát nějakou formu, se kterou si programy na PC poradí, nebo nějakou vlastní formu, když to budeš zpracovávat ve vlastní aplikaci (ale i tady je rozumné se podržet nějakého standartizovaného formátu).

Patrik
Příspěvky: 137
Registrován: 02 dub 2020, 09:58
Reputation: 0

Re: Paměťový modul

Příspěvek od Patrik » 13 led 2021, 15:15

Děkuji Vám za rady kluci.

No, určitě bych tu paměťovou kartu občas chtěl vytahovat... Zejména, pokud bych chtěl přidávat nového uživatele.. Tzn.. Musel bych zadat jméno, číslo čipu karty, čas, přístupy na 0, 0...

Když to teď provádím, tak musím vlastně do jádra programu a uložit to tam a přehrát program. Chtěl bych to zjednodušit i kvůli toho, abych dané úpravy nemusel provádět jen já... Například by jiný správce chtěl přidat uživatel (či ho zablokovat).. Tak by měl prostě přístup do skříňky, kterou si odemče, vytáhne paměťovou kartu.. Přidá uživatele pomocí třeba tabletu, nebo mobilu.. to je jedno... Dá kartu zpět, pokud je potřeba, tak restartuje Arduino a hotovo... Prostě zabráním tomu, aby někdo nutně zasahoval do programu... Posléze bych chtěl také udělat, pokud bych to zvládl, že bych si koupil Bluetooth modul a úpravy by mohl provádět přímo přes Bluetooth... Nebo Wifi modul?

ondraN
Příspěvky: 466
Registrován: 08 srp 2019, 20:01
Reputation: 1

Re: Paměťový modul

Příspěvek od ondraN » 13 led 2021, 15:29

Změna parametrů prorgamu se dá udělat třeba přes sériový port a obyčejný terminál. Parametry můžou být uložené v EEPROM a přes terminál se můžou dát změnit. Výhoda je, že není potřeba žádný SW na PC nebo tabletu, kromě terminálového programu. Na druhou stranu je to trochu nepohodlné a i uživatelsky ne moc přívětivé :mrgreen: Hlavní výhoda je jednoduchost. A můžeš tam mít třeba i funkci, která log z SD karty přelouská do xml nebo jiného formátu a pošle přes terminál, kde si to můžeš odchytat do souboru. Ale jak už jsem psal, uživatelská přívětivost je nízká.

Uživatelský avatar
pavel1tu
Příspěvky: 1876
Registrován: 26 říj 2017, 08:28
Reputation: 1
Bydliště: Trutnov
Kontaktovat uživatele:

Re: Paměťový modul

Příspěvek od pavel1tu » 13 led 2021, 16:49

Já souhlasím, je to takové nic moc.

Nejprve jsem to ukládal oddělené ",", po řádcích.
"CisloKarty,Uzivatel,PravaUzivatele"

Pak jsem to chtěl měnit jako ty odjinud, JSON jsem nepochopil, tak XML.
Ten se generoval na WWW serveru a při změně se přetáhl i na SD kartu.

Pak jsem to úplně zrušil - jelikož změn je málo, a chci fungovat i nezávisle na serveru,
používám externí EEPROM AT24C256 - místo té SD karty.
Ukládám data jako "string", kdy vím jakou délku nikdy nepřesáhne.

Vycházel jsem z těchto kodu
https://mindeon.com/posts/coding-journa ... te-eeprom/
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

Patrik
Příspěvky: 137
Registrován: 02 dub 2020, 09:58
Reputation: 0

Re: Paměťový modul

Příspěvek od Patrik » 13 led 2021, 17:41

Dkěuji za rady. Uvažoval jsem o zápisu hodnot do EEPROM paměti, ale uvažoval jsem také nad tím, že do budoucnosti budu chtít množství zápisů... Tzn. nejlépe zapisovat čas.. Hodnoty a minuty každého dne (pak přístup uživatele, kdy byl atd)... No a tak jsem chtěl mít pokud by to šlo nejlépe vše pohromadě. Navíc častými zápisy do paměti EEPROM bych jí zachvilku odrovnal... A nevím, jak je to s hodnotami long do EEPROM... Možná zkusím a uvidím, no :-)

Patrik
Příspěvky: 137
Registrován: 02 dub 2020, 09:58
Reputation: 0

Re: Paměťový modul

Příspěvek od Patrik » 13 led 2021, 18:08

Pouvažuji. Určitě to nějak půjde udělat a tu extérní paměť bych nechal třeba jen jako paměť pro ukládání chybových hlášení... Nebo třeba mám bezkontaktní čidlo na vodu, kde jsem si pomocí tranzistorů udělal signalizaci - Kapalina je, není.. A zkusil bych to později třeba propojit nějak s Arduinem, aby se to zapsalo třeba na kartu a já tak mohl poznat i vzdáleně, že chybí to a to :)... Bylo by to zajímavé... Jinak jsem si uvědomil, že long hodnotu do EEPROM vůbec nemusím ukládat... Ale říkal jsem si, jestli i těch např. 100 zápisů do EEPROM paměti za den by nebylo extra...

Uživatelský avatar
pavel1tu
Příspěvky: 1876
Registrován: 26 říj 2017, 08:28
Reputation: 1
Bydliště: Trutnov
Kontaktovat uživatele:

Re: Paměťový modul

Příspěvek od pavel1tu » 13 led 2021, 18:10

Není to pro časté zápisy.

Dle mne ideál bude dát to do sítě (klidně WiFi) a prostě to ukládat na server do databáze.
Vyřešíš si tím spousty problémů.

Já to mám v EEPROM jen jako seznam uživatelů.
Eventy (co se kde děje, kdo kdy co odmkl/zamkl) jedou komunikačně do centrály (485, LAN, nRF24) a ta to ukládá do databáze na server.

Kromě toho ti doporučím jedno - ať to budeš ukládat kamkoliv - já u každého uživatele mám i CRC, jednoduchý OR kontrolní součet, protože kdyby se něco posr...., tak se třeba děti po škole nedostanou do baráku.
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

Patrik
Příspěvky: 137
Registrován: 02 dub 2020, 09:58
Reputation: 0

Re: Paměťový modul

Příspěvek od Patrik » 13 led 2021, 18:17

Děkuji za rady...

No s tím WiFi modulem jsem dlouhodobě bojoval a nějak mi to nešlo zprovoznit... Mám tento modul ESP8266. Wifi jsem viděl, připojil jsem se na ní... Modrá LED na modulu začala blikat... Ale to bylo tak všechno.. Pak jsem někde četl na Internetu, že k tomu modulu ještě něco potřebuji (programátor - adaptér)... A ten jsem neměl, tak jsem to odložil a řekl jsem si, že to až tak extrémně důležité není a vrátím se k tomu, až udělám podstatnější věci... :D

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Bing [Bot] a 2 hosti