Close

Simakai

Vytvořené odpovědi

Aktuálně jsou na stránce zobrazeny 4 příspěvky - 1. až 4. (celkem z 4)
  • Autor
    Příspěvky
  • Simakai
    Účastník

    Ahoj všem,

    narazil jsem na problém s napájením. Natočil jsem krátké video, kde je to ukázané

    https://youtu.be/pK4rGK4NWjo

    Jde o to, že když zahýbu s napájecím kabelem, tak se megaduino resetne, vypne, protože mu vypadne „šťáva“. Koncovka adaptéru se v „zástrčce“ trochu hýbe.

    Jak se to dá řešit?

    Problém je, že deska je součástí krabice, ke které je připojených několik termočlánků, a loguje z nich teploty. Krabice by právě měla být napájená z adaptéru. Ale pokud do ní někdo drbne, což se „v provozu“ může stát, tak se megaduino resetne a je to v čudu.

    Simakai
    Účastník

    Projekt mám víceméně hotový. Nepodařilo se mi rozběhnout MicroSD modul na klasickém SPI rozhraní spolu s termočlánky (MAX6675), tak jsem na to musel od lesa. Stáhl jsem si SDfat knihovnu a použil tam SoftwareSPI definici pro objekt SD a drátově jsem zapojil MicroSD modul na jiné piny než mám termočlánky. Pak zbývalo jen poladit správné příkazy pro SDfat a fičí to. Po hardwarových SPI pinech 50, 51, 52 mi jedou termočlánky a po softwarových SPI pinech 10, 11, 12 mi jede SD karta.

    Simakai
    Účastník

    Ahoj všem,

    zatím na projektu pracuju a hotový ještě není. Tento příspěvek píšu jednak proto, abych vykázal nějakou aktivitu, jednak proto, aby posjirka věděl, že tohle vlákno nepošlo : a jednak proto, že zrovna mám čas hodit sem pár postřehů.

    1) Peklo s diodou: Koupil jsem si několik diod, k nim dle rad na internetu dopočítal rezistory, zapojil do kontaktního nepájivého pole a nic. Zkoušel jsem s rezistorem, bez, tak či onak, otočit atd a nesvítila. Jen se mi podařilo pár diod rozsvítit na jejich poslední cestu do křemíkového nebe (red dwarf spoiler 😉 při jejich odvaření. Řešení se nakonec ukázalo samo – já pakoš jsem zapojoval kaskádu rezistor + dioda do jedné řady v breadboardu a tedy jsem všechny nožičky napojoval do jednoho uzlu obvodu :-D. Po elementárním uvědomění jak vlastně pozapojovat obvod na breadboardu to již fičí.

    2) Peklo s SD kartou 1: občas to kartu detekovalo, občas ne. V celém cyklu dělám totiž několik testů, zda je SD karta dostupná, abych buď diodou signalizoval že je či není, nebo před samotným zápisem dat. Nakonec jsem vygooglil, že SD knihovna má v sobě elementární chybu a musel jsem upravit SDClass::begin proceduru a přidat tam něco jako if(root.isOpen()) root.close(). Pak to začlo fungovat dobře a test přítomnosti SD karty je možno volat opakovaně.

    3) Peklo s SD kartou 2: při zahájení měření se prohledá SD karta, zda tam existuje soubor typu mer00001.csv a pokud ne, tak ho založí, pokud jo, tak se zjistí nejvyšší číslo v souborech a vytvoří se nový soubor s číslem o jedna vyšším, tedy například při existenci mer000001.csv se vytvoří mer000002.csv. Nu a občas to správně našlo všechny soubory a propočítalo z jejich názvů jméno nového souboru a někdy to nenašlo nic a tedy mi to otevřelo základní mer000001.csv. Po několika probrečených večerech jsem přišel na to, že v proceduře pro procházení souborů musím za root = SD.open(„/“); přidat příkaz root.rewindDirectory(); a pak prohledávat soubory, neboť SD knihovna si bez rewindu pamatovala konec řady prohledávaných souborů a tedy nic neobjevila. Rewindem se to vyřešilo.

    4) Peklo s časem: po startu logování se mi na LCD display ukazuje čas ve formátu hh:ii:ss a i se to zapisuje na SD kartu. K mému údivu při testu mi to po cca 5 hodinách a 47 minutách začlo čas počítat opět od začátku. Čas odvozuju od millis a ty se mi logovaly správně (stále narůstaly). Po deseti hrstích vytrhaných vlasů jsem zjistil, že v proceduře pro formát času z hodnoty millis (kterou jsem převzal z internetu), musím nahradit řádek days = inttime / (24 * 3600); jiným zápisem a sice days = inttime / 86400; a pak to funguje dobře. To mě, věru, překvapilo nejvíc. Nakonec jsem zjistil, že tam vlastně dny ani nepotřebuju a rovnou tam hledám hodiny pomocí řáku hours = inttime / 3600; a to funguje bezpečně dobře. Krásně mi to loguje i 31:25:13 atd, tedy vím, že od startu logování uběhlo 31 hodin.

    Jiné 1): LCD display se mi podařilo připojit napoprvé, resp. velmi rychle, dokonce jsem tam zapojil i potenciometr na nastavení kontrastu a taktéž to funguje dobře.

    Jiné 2): Malý senzor s na teplotu se mi taktéž podařilo zprovoznit rychle, za využití knihoven OneWire.h a DallasTemperature.h

    Co mě čeká: stále mi nedorazily termočlánky a k nim objednané převodníkové moduly, takže se těším, co mě překvapí. Už teď vím, že budu muset vyřešit více zařízení na SPI sběrnici, ale teoreticky to zmáknuté mám, SD čtečku už na SPI vlastně taky mám a funguje, takže jsem skoro v závěru.

    Snad mé postřehy uvedené výše pomůžou i dalším při řešení problémů s arduinem.

    Martin

    Simakai
    Účastník

    Ahoj

    objednal jsem si funduino mega plus hromadu komponent a už se těším, až to budu dávat dohromady. Některé komponenty mi půjdou bůhví odkud, protože jsem objednával z http://www.dx.com což je nějaký zahraniční obchod.

    Nastudoval jsem si příslušnou problematiku, tak snad mě nic nezaskočí.

    Pokud bych chtěl projekt do budoucna rozšířit, určitě by se mi hodilo vyřešit bezdrátový přenos z čidel, protože občas by se hodilo měřit povrchovou teplotu na kamnech a uvnitř kamen, které mohou být rozlezlé přes několik místností (i do patra) a pak je problematické použít od teplotních čidel kabely až k duinu. Nevíte o nějakém řešeném případu, že by k jednomu duinu bylo připojeno bezdrátově několik čidel? Samotné čidlo by sestávalo ze senzoru, driveru, vysílače a baterie. A tedy na duinu by byl buď 1 přijímač nebo několik přijímačů (nevím, jak se toto řeší).

Aktuálně jsou na stránce zobrazeny 4 příspěvky - 1. až 4. (celkem z 4)