Lekce 13 - Arduino a SD karta - ukládáme data
24.03.2013 09:36Dneska si povíme něco o spojení Arduina a SD karet. Já jsem si pro dnešní ukázku vybral Ethernet Shield, který obsahuje již slot na microSD. Sehnat samotný slot jak vidíte na obrázku dole také není problém a je velmi levný. Ethernet Shield také není nejdražší, mě vyšel ze zahraničí asi na 150Kč. Kdo hledá najde :-).
Ethernet Shield se slotem na microSD |
Samostatný slot na SD karty |
Jak jsem již řekl, v dneším díle budeme pracovat s Ethernet Shieldem a nasadíme si ho na Arduino UNO (ještě jsem ho v tutoriálu nepoužil, tak aby jsme mu nekřivdili).
Chtěl jsem také ukázat, použití samostatného slotu na karty SD jak vidíte na horním obrázku, ale nenašel jsem doma standardní kartu SD a ani adaptér na tuto velikost. Použil jsem tedy microSD od firmy Kingston o kapacitě 2GB. Nevím, zda Arduino podporuje větší kapacity, nutno vyzkoušet. Ukážeme si tedy použítí Ethernet Shieldu z něhož použijeme pouze slot na karty. Pro kominikaci s kartou je používáno SPI (Serial Peripheral Interface - 4 vodičová seriová komunikace). Na tomto Shieldu je již slot připojen k pinúm na Arduinu a to:
MOSI - pin 11 na Arduino Uno/Duemilanove/Diecimila
MISO - pin 12 na Arduino Uno/Duemilanove/Diecimila
CLK - pin 13 na Arduino Uno/Duemilanove/Diecimila
CS - pin 4 na Arduino Uno/Duemilanove/Diecimila
Takže Shield nasadíme na Arduino nebo použijeme a zapojíme samostatný modul slotu SD a nahrajeme si do něj program, který zatím jen vypíše info o kartě:
Program odesílá výsledky na seriový port. Proto si otevřeme po nahrátí programu Serial Monitor (nezapomeňte nastavit správnou rychlost seriového portu). Výsledek by měl vypadat nějak takhle:
Pokud vidíte podobný výsledek, gratuluji. V opačném případě a při zobrazení hlášky "Pametova karta nebyla detekovana" musíte najít, kde je zakopaný pes. Ve většině případů by to mělo fungovat, v případě opaku zkuste zkontrolovat zapojení (v případě modulu slotu SD karty) nebo použijte kartu jinou.
Nyní, aby jsme kartu nějakým způsobem k něčemu využili, vypsání infa o kartě je zajímavé, ale pouze demostruje její funkčnost. V minulých návodech jsme k Arduino připojovaly různá čidla, ze kterých jsme informace četli na nějakém displeji nebo sériovém portu. Ale co když si chceme postavit zařízení, které bude sledovat nějaké hodnoty a tyto ukládat. Data z těhto čidel budeme tedy zapisovat na SD kartu do nějakého souboru. No jo, ale na co nám bude nějaká řada hodnot, když nevíme kdy tyto hodnoty byly měřeny. Pomuže nám tedy v tomto případě RTC modul (modul reálného času) připojený přes I2C. Toto si zařídíme jako první. Můžeme se odrazit od lekce 11, kde je vše vysvětleno a s cenou modulu cca 50 Kč není co řešit. Nejprve se tedy k Arduinu připojíme RTC modul. Na Arduinu UNO je I2C na pinech A4 (SDA) a A5 (SCL).
Z obrázku je vidět, že napojení hodinového modulu je naprostá hračka pomocí 2 vodičů I2C a napájení (5V a GND)
Kdo si chce zapojení hodinové modulu zkontrolovat, může zkusit tento prográmek, který po nahrání do Arduina odesílá každou vteřinu čas na sériový port.:
Ale vše bylo již vysvětleno v lekci 11 a půjdeme dál. Rozhodl jsem se pro demostraci připojit modul světelného senzoru, který převádí světlo na analogovou hodnotu, kterou přivedeme na A0 a tuto budeme zapisovat do souboru na SD kartu. Je ale samozřejmně na Vás jakou hodnotu budete zapisovat a z jakého senzoru nebo čidla. Můžete použít DHT11 nebo i jiné čidlo. Náš příklad bude ovšem se světelným senzorem. Tento si tedy zapojíme. Já již mám vše v modulu, ale jde to snadno vyrobit i pomocí součástek.
Teď k samotnému programu. Úkol je jasný. Z modulu času získat čas, potom zjistit hodnotu z analogového portu A0 na Arduinu a tyto údaje zapsat do souboru na paměťové kartě, který nazveme třeba data.txt. Zvolíme si také interval zápisu hodnot a to cca každých 5 sekund. Zdrojový kód je zde:
Jak vidíte opět nic složitého, Kód není dlouhy většina jsou komentáře. Pro kontrolu jsem ponechal výstup na sériový port. Výsledek by měl vypada v Serial Monitoru asi takle. Jak vidíme vše bez problémů funguje.
Teď příde to hlavní. Arduino vypneme a vyndáme kartu ze slotu a vložíme např do čtečky karet nebo jiného zařízení, které nám umožní podívat se na soubory na kartě. Soubor data.txt si otevřeme v poznámkovém bloku a můžeme se tešit z výsledku :-). Soubor naleznete v kořenovém adresáři.
Pokud máte v souboru zapsaná data, gratuluji :-). V případě, že budeme chtít data nějakým způsobem využít a dále zpracovávat, poradím Vám jeden z mnoha způsobú jak toho dosáhnout. Data budeme zapisovat do souboru data.cvs. Jde o formát, který při dodržení několika pravidel v pohodě přečtě Microsoft Excel a data zobrazí už v tabulce. Odkaz na podrobnou specifikaci souboru csv je zde. Zkoumat do podrobna to nemusíme. Upravený program je zde:
Změny v programu nejsou markantní. Z RTC modulu času jsme navíc vzali datum a hodnotu jsme oddělili " ; " středníkem. Měla by fungovat i čárka. Změnili jsme také název souboru na data.csv a frekvenci zápisu na 20 sekund. Když si poté soubor otevřeme v Excelu krásně vidíme seřazené hodnoty a já jsem si z těhto hodnot vytvořil i graf.
Aby nám ovšem Excel vykreslil graf, změnil jsem formát 1. sloupce na čas. Jinak to bere jako datum a stejnou hodnotu, a graf se nezobrazí správně. Modul senzoru dává tím vetší napětí, čím menší je světlo. Jak je vidět pomalu se stmívalo a jelikož byl senzor umístěn na stole před monitorem, skoky hodnot zaznamenaly několik zapnutí a vypnutí spořiče obrazovky. Data byla sbírána něco přes 1 hodinu. V připadě umístění senzoru ven za okno a delším zaznamenání hodnot by jsme získali určitě daleko zajímavější data.
———
ZpětDiskusní téma: Lekce 13 - Arduino a SD karta - ukládáme data
Datum | 04.10.2018 |
---|---|
Vložil | VadimProSEO |
Titulek | Продвижение сайта в поисковиках |
Приветствую Вас! Хочу Вам предложить свою услугу в помощи продвижения вашего сайта в поисковых системах, недорого, всего лишь за 9700 руб.
От Вас необходимо лишь ссылка на сайт и ключевые слова в текстовом файле, по которым Вы хотите продвинуться в выдаче поисковиков (пример вышлю по электр. почте, если Вам нужно продвижение). Я размещаю вечные ссылки на форумах и сайтах, которые ведут на Ваш интернет-сайт. Мною будет написана статья (грамотно размноженная и "заточенная" под Ваш ресурс), а в ней будут анкорные или безанкорные ссылки передавать Вам свой траст, "вес", и ссылочную массу. Тем самым увеличивая траст, доверие поисковиков, быстрое индексирование, рост позиций в поиске, рост ссылочной массы и т.д...
Работа займет по времени 2-3 недели и Вы увидите положительный результат! Ваш сайт "оживет" в сети интернет!
100% предоплата (Принимаю по карте, Вебмани, ЯДеньги, Киви).
Списаться со мной Вы можете уже прямо сейчас по почте proxrum$@$mail.ru с темой "ПРОДВИЖЕНИЕ САЙТА ПО СКИДКЕ" (удалите пожалуйста два символа $). У меня нет выходных, я не компания. Я частник! И работаю, стараюсь, как для себя!
P.S. Будет хорошо, если у вас на сайте стоит счетчик Яметрики (там есть важные ключевые фразы) и у Вас есть оперативная связь (аська, скайп, или вайбер). Спасибо!
С Уважением!
———
Datum | 13.05.2018 |
---|---|
Vložil | Bobbysaize |
Titulek | Jarle Thorsen SiteTalk Community Inc. |
Jarle Thorsen Unaico Reviews, Jarle Thorsen SiteTalk Community Inc., Jarle Thorsen itel global group, Jarle Thorsen Swietokrzyskie, Jarle Thorsen GLOBAL POWER PTE LTD
———
Datum | 14.12.2016 |
---|---|
Vložil | Ján novak |
Titulek | Mega |
Mám otázku. Co keď MM obsadene pony 50 51 52 53 atď snímačom rc 522 da sa zapojiť aj na iné?
———
Datum | 08.11.2016 |
---|---|
Vložil | Ludvík |
Titulek | datum a cas souboru |
Zdfravím všechny. Nevíte proč mi to ukládá soubory na sd kartu s nějakým nesmyslným datem a časem? Myslím, že je to 1.1. rok si nepamatuju. Nevíte jak docílit toho, aby to ukládalo se správným časem a datumem? Jde to vůbec? Dík za radu.
———
Datum | 29.12.2016 |
---|---|
Vložil | Jakub |
Titulek | Re: datum a cas souboru |
Není nastavený čas na RTC?
———
Datum | 26.01.2017 |
---|---|
Vložil | Ludvík |
Titulek | Re: Re: datum a cas souboru |
Není to špatně nastaveným časem. Do souboru to zapisuje čas korektně. Ale datum a čas založení(vzniku nebo změny) souboru, tedy to, co ukazuje každý souborový manažer se nezapisuje. Já nenašel nikde, kde by to ta knihovna obsluhovala. Ona snad vůbec tohle neumí.
———
Datum | 02.05.2015 |
---|---|
Vložil | Gregory |
Titulek | delší zapis |
Zdravím, mám problém s ukládáním na kartu. problém je v tom , že když chci uložit v jednom cyklu na kartu hodnoty třeba z 10 různých čidel tak mě to hned od začátku hodí "Chyba - nemohu otevrit soubor !!!" nevím kde je chyba... cca 3-4 čidla to uloží v pořádku, ale třeba 8 už hází tuhle chybu. mám arduino mega tak s pamětí by snad neměl byt problém. Nevíte někdo co to dělá? Jinak ty hodnoty se ukládají postupně a pokaždé se přepíše dataString.
———
Datum | 02.05.2015 |
---|---|
Vložil | Gregory |
Titulek | Re: delší zapis |
tak jsem zjistil že občas to zapisuje a občas ne. Když to nezapisuje tak je potřeba restartovat arduino a pak se to vetšinou chytne. Ale nevím proč se to děje...
———
Datum | 03.04.2015 |
---|---|
Vložil | MartinP |
Titulek | Několik čteček najednou |
Je nějaká možnost využít více čteček SD karet najednou? Jednu čtečku mám na ethernet modulu a druhá je na displeji. Budou se nějak hádat (o piny o SD objekt, ...) nebo je možné použít třeba SD.begin(...) pro první čtečku SD a SD1.begin(...) pro druhou, ...?
———
Datum | 20.01.2015 |
---|---|
Vložil | MiregSan |
Titulek | upload error |
Zdravím, při zkoušce tohoto tutoriálu jsem narazil na problém při uploadování programu do arduina s nasazeným ethernet shieldem. Vždy jsem dostal hlášku <b>"avrdude: stk500_getsync(): not in sync: resp=0x00".</b> Trochu jsem googlil a našel jsem řešení. Na vině je SMD kondenzátor na desce ethernet shieldu, který je zapojený u resetovacího tlačítka. Stačí ho vypájet a vše funguje jak má. Shield jsem koupil v číně čili kdovíjaká je to revize. Vzhledově je podobný tomu z tohoto článku jen tam mám místo dvou rezistorů jeden. Mrkněte na https://www.hobbyist.co.nz/?q=ethernet-shield-w5100 nebo třeba https://forum.arduino.cc/index.php?topic=99880.msg1037580#msg1037580. Není se čeho bát, kondenzátor se dá kdykoliv připájet zpět...