Vojtěch Vosáhlo
Vytvořené odpovědi
-
AutorPříspěvky
-
Vojtěch VosáhloÚčastník
I když už to máte vyřešené, mohlo by být zajímavé to zkusit čistě přes assembler i když jde o arduino. Jedna instrukce by měla při 16MHZ trvat asi jen 62,5ns takže by se dalo docílit i zajímavých frekvencí. Ale to be spíš taková volovina 🙂
Vojtěch VosáhloÚčastníkU těhle dvou arduin se prakticky nespleteš, obě jsou totiž identický. Jen nano nemá 328p ale 328, takže trošku energeticky náročnější procesor (ale malinko). Jde tam třeba i o to, jak rychle chceš aby se obnovoval display, těmhle základním 8bitům to bude trvat déle než něčemu na vyšší frekvenci, třeba m0. Na netu se dají najít videa pro srovnání. Dá se třeba dokoupit i rychlejší čip pro ten display a mohl by si zůstat u Una/Nana.
Ty moduly jsou asi dobrá volba.Vojtěch VosáhloÚčastníkJak psal Luke, lokálně to je úplně bez problému, webovky by v tomhle případě běželi přímo na ESP. A bez veřejné ip by mohla být řešením nějaká jednoduchá stránka třeba na webzdarma. Něco ve smyslu ovládací stránky. Modul by se potom mohl periodicky připojovat na tento web a číst nějaký soubor do kterého by bylo uloženo vaše nastavení a stavy když jste to na webu zadala. Stejně tak by mohl někam i zapisovat a stránky by ukazovala jeho stav. Odezva by sice asi nebyla dokonalá ale dá se to řešit i takhle.
Vojtěch VosáhloÚčastníkJe napájený pouze z 1 zdroje a to VCC IN. Na desce je regulátor který vstupní napětí shodí na 3,3V a to je pak na VCC 3V. Aspoň tak je to ve schématu.
Vojtěch VosáhloÚčastníkAha. Díky za opravu, to jsem si nedohledal 😉
Vojtěch VosáhloÚčastníkJako převodník hledejte něco v podobě tohoto: https://www.adafruit.com/products/757
V těch článcích taky píšou že DS musí být napájený z 3,3V a pak zmiňuje že arduino mu to neodpálilo. Abych řekl pravdu, o odpálení duina bych se nebál. Osobně nevidím důvod. Jirka mě kdyžtak opraví ale pokud celé duino běží na 5V tak by mu to nemělo vadit. 5V bude spíš vadit tomu DS které je na 3,3V. Pokud by na jeho pinu bylo 5V tak by mohl být problém na světě.Podle mě by to mohlo být zapojené takto:
Arduino (5V level) <–> LCD (5V level) <–> Převodník z 5V na 3,3V <–> DS3231 (3,3V level)
Vojtěch VosáhloÚčastníkTrochu mi nedošlo to se serverem a klientem. Máte tedy čidlo na nějakém místě připojené na wi-fi a pak motor na jiném místě taky připojený. Motor se řídí buď z dat a nebo z web GUI. Můžu se zeptat jestli v tomhle projektu hraje arduino. Espčka se dají programovat přímo a to příkazy stejnými jako arduino. Proč teda nezredukovat cenu a velikost a rozjet to na ESP samotném, třeba 12F, to má hodně pinů.
Popřemýšlejte o tom a ozvěte se.Vojtěch VosáhloÚčastníkTo je tou konverzí, itoa prostě nezachová čárku. Pokud vám nevadí knihovny, zkuste třeba toto: https://playground.arduino.cc/Main/FloatToString
Vojtěch VosáhloÚčastníkEdit: Sorry za sprintf, to neni ono 😉 ty posledni řádky ignoruj
Vojtěch VosáhloÚčastníkUrčitě by měl být použit ftoa() vzhledem k tomu že u int nemůžete nikam naprat desetinou čárku (aspoň co já vim). Co to vypíše? Např. teplota je 20.38C
Zobrazí to jen 20C nebo 2038C nebo vubec nic?Mimo toto můžete zkusit itoa/ftoa nahradit sprintf. Tady je doku. https://www.tutorialspoint.com/c_standard_library/c_function_sprintf.htm
Je tam mnoho dostupných formátů tak jich pár zkuste.
Vojtěch VosáhloÚčastníkHledám právě komponent, né modul. Modulů v ČR seženu dost ale ty precizní OP zesilovače tu skoro nejsou…
Vojtěch VosáhloÚčastníkJasně. Na tohle jsem přišel už předtím. Tak aspoň vím že to není ve mě ale v ČP.
DíkVojtěch VosáhloÚčastníkDík moc, jsem na tohle asi blbej, nemohl by jsi mě nasměrovat jak číslo zjistit, kde najít? Předělává se to podle prefixů? Já fakt nevim 😀
Tady je příklad čísla jedné ze zásilek: BZ000526631CN
Díky mocVojtěch VosáhloÚčastníkZkuste použít inquiry. Mělo by to snad fungovat. Zde je docu: https://www.itead.cc/wiki/BTBee_Pro#28._Inquiry_Bluetooth_Device
Vojtěch VosáhloÚčastníkPokud vím tak žádný levnější arduino to neumí, pokud potřebujete zvuk jiný než jen nějakou frekvenci, např hlas, zkuste použít jeden z těch „levných“ audio modulů pro arduino. Kdyby šlo o malý kód, použil bych třeba nějaké levné attiny místo arduina. Šetřit kde se dá… ?
Vojtěch VosáhloÚčastníkTo ano, a sledovat je můžu např pře 17track. Spíš mi šlo o to jestli jde nějak zjistit poloha v ČR. Např celnice/lokální pošta… Pokud vím tak by tohle mělo fungovat u EMS ale ani to mi nejde 🙁 Asi si holt počkám
Vojtěch VosáhloÚčastníkMimochodem T&T české pošty.
Vojtěch VosáhloÚčastníkPředpokládám že máte klon s CH340. Zkuste omrknout toto: http://www.instructables.com/id/Arduino-Nano-CH340/
Vojtěch VosáhloÚčastníkK počítání rezistoru určitě doporučuju nějaký kalkulátor online. Jinak by to bylo asi hodně počtů. Např: http://www.petervis.com/GCSE_Design_and_Technology_Electronic_Products/transistor_base_resistor_calculator/transistor_base_resistor_calculator.html
Vše co to chce by jste měl mít v datasheetu tranzistoru. Pokud vím tak s úbytkem napětí se nepočítá. Taková zažitá věc je dávat rezistory 10k, to většinou funguje ale lepší je to propočítat. Ten R2 je podle využití pullup nebo pulldown. Zajišťuje aby byla např báze tranzistoru vždy v nějakém stavu a nejen „floating“. Tzn tento rezisto dostává na pin pozitivní napětí nebo zemi i pokud mikrokontolér na pin nic nepouští. U avr může být tento rezistor nahrazen nastavením stavu pinu místo INPUT na INPUT_PULLUP. Většinou je ale lepší řešit to extérně.
Vojtěch VosáhloÚčastníkChce to vědět jaký proud bude tranzistor/fet spínat. To je základ. Pro menší proudy a napětí se dá použít menší tranzistor, např BD140 a nebo další řady. Ty dokáží spínat až 1,5A. Varianta pro vyšší proud a napětí jsou darlingtonovy tranzistory, např TIP120 spínající až 5A. Poté pro ještě větší zátěže se dá použít FET. U led si tedy zjistěte proud a napětí, poté se dá počítat.
Vojtěch VosáhloÚčastníkEDIT: Není to foreach ale jen FOR, omlouvám se. Doporučuju inspirovat se třeba tady: https://www.arduino.cc/en/Tutorial/ForLoopIteration
Vojtěch VosáhloÚčastníkŠlo by to zkrátit na pár řádek pomocí foreach a někde bitshiftováním ale foreach by mělo stačit. Doporučuju zkouknout si nějaké ukázky. Na večer můžu přidat i kód.
Vojtěch VosáhloÚčastníkKód mi přijde správně a zapojení taky, jen bych dal rezistory trochu větší 1k/4k7/10k nebo další. Funguje pin pokud přes něj např. blikáte ledku? Předpokládám že magnetický spínač je ok. Jediná reálnější možnost je že je pin poškozený nebo něco na desce… Zkuste tu ledku a uvidíme.
Vojtěch VosáhloÚčastníkRozhodně by se šiklo info o vašem programu a I2C čipu displeje.
Vojtěch VosáhloÚčastníkAno, je to 10k.
Vojtěch VosáhloÚčastníkDobrý den,
hlavně nezoufat. To co jste odpálil je schottkyho dioda která by podle schémata arduina měla vybírat zdroj napětí. Jsou tu dvě možnosti, můžete diodu vyměnit (ta na origo. arduinech je MBR0520 a dá se sehnat třeba na GME) a budete mít vystaráno. Další možnost je prostě jí odpájet. Pokud by jste jí odpájel a nechal piny nespojené, znamenalo by to, že nebude moct být napájené z USB. Pokud ale spojíte oba kontakty kde byla dioda, bude fungovat vše v normálu, jen si musíte dávat velký pozor abyste neměl zapojené arduino do USB a zároveň extérního napájení. To by vám nevykouzlilo hezký den.Vojtěch VosáhloÚčastníkAsi bych vzal něco jako starý konektor z IDE kabelů, ale je to blízko dupontu tak nevím jak vám to sedne… Nový konektor jsem nepoužíval, jen ten z IDE kabelu a ten drží na fest. Z nabídky eshopů asi něco takového https://www.gme.cz/konektor-pfl26
Vojtěch VosáhloÚčastníkUdělejte si 2 proměnné – tlacitko a tlacitkoOld
A do smyčky pro lcd to pusťte pouze pokud se liší. Tzn.if(tlacitko != tlacitkoOld){ //něco se ukáže na lcd tlacitkoOld = tlacitko; }
Do tlacitko zapisujete jaké tlačítko bylo stisknuto a tlacitkoOld by mělo stačit inicializovat jako nulu, samozřejmě podle toho jak získáváte názvy tlačítek, takocý typ proměnné to bude. Taky kdyby jste měl na ovladači tlačítko 0 tak se musí tlacitkoOld nastavit na -1. Hodně štěstí
Vojtěch VosáhloÚčastníkDo setupu přidáte znovu toto: `pinMode(d1, INPUT);
pinMode(prehravaciPin2, OUTPUT);
digitalWrite(prehravaciPin2, HIGH);attachInterrupt(1, detekce2, FALLING);
`
místo těch názvů si buď dosaďte piny a interrupty nebo si vytvořte proměnné jako je to v původním kódu.
Pak jen vytvoříte funkci detekce2 (kopii detekce) a pozměníte piny které se nastavují.
Snad pomůžu…
Vojtěch VosáhloÚčastníkJasně, asi by se to dalo udělat nejlépe přes odebrání a zase přidání přerušení. `void detekce(){
digitalWrite(prehravaciPin, LOW);
delay(100);
digitalWrite(prehravaciPin, HIGH);
detachInterrupt(0); // odebereme preruseni aby se nam nevyvolalo pokud by se něco hýblo pred senzorem
delay(60000); //pauza na x vterin, cas po ktery je senzor vyrazen
attachInterrupt(0, detekce, FALLING); // opet preruseni zprovoznime}`
Kdyby bylo potřeba arduino používat i v době vyřazení, daly by se počítat cykly procesoru ale to je další téma…
-
AutorPříspěvky