MiK
Vytvořené odpovědi
-
AutorPříspěvky
-
Luke_CZ
ÚčastníkA co takhle využít hledání na webu? Máš to od 1Hz-50kHz.
http://www.instructables.com/id/Arduino-Waveform-Generator/Zbyšek Voda
ÚčastníkDobrý den,
to jenom s Arduinem nepůjde. I funkce analogWrite() totiž generuje PWM signál, což je taky digitál. Umí na pinu poslat buď 0, nebo 5V. Nic mezi.
Budete tedy potřebovat nějaký HW, například odporový žebřík.
Luke_CZ
ÚčastníkChápu-li to dobře, tak:
1, Mega bude číst data ze senzorů a ty posílat do dvou UNO
2, na UNO budeš číst sériová data a zobrazovat pouze vybrané hodnotyPokud to tak je, tak poskládej v MEGA načtená data do řetězce např:
#teplota1#teplota2#vlhkost1#vlhkost2 = na port pošleš tedy řetězec #20.5#21.4#62.7#58.4V každém UNO potom načteš z RX celej řetězec a ten zase rozebereš na jednotlivé hodnoty. Potom si jen zobrazíš ty, které budeš chtít.
Tady máš na to funkci:
String getValue(String data, char separator, int index) { int found = 0; int strIndex[] = { 0, -1 }; int maxIndex = data.length()-1; for(int i=0; i<=maxIndex && found<=index; i++){ if(data.charAt(i)==separator || i==maxIndex){ found++; strIndex[0] = strIndex[1]+1; strIndex[1] = (i == maxIndex) ? i+1 : i; } } return found>index ? data.substring(strIndex[0], strIndex[1]) : ""; }
tribal.cz
Účastníktak řekněme dvě dht22 jedna mega a dvě una spodní uno zobrazuje pouze teplotu z pravého sensoru a horní uno zobrazuje teplotu i vlhkost z levého sensoru.
ve výsledku půjde úplně o jiné zařízení ale pro příklad je následující situace více než dostačujícíhttps://drive.google.com/file/d/0B_QUj2kCn2H3U0lfZFFjNzlUWE0/view?usp=sharing
JakubD
Účastníkmno tak to asi nevyjde 😀 ICQ nepoužívám tak 6 let 😀 Skype nemáš ?
Luke_CZ
ÚčastníkHoď sem nějakou malůvku, jak to chceš mít zapojený a co to má dělat. Jinak ti nikdo nedokáže dobře poradit.
tribal.cz
ÚčastníkS i2c nemám moc zkušenosti ale jak koukám na článek který si dal do odpovědi bude to lepší. Jen je zde co se I2C týče pro mne pár nejasností. Takže předpokládám že I2c sběrnice zvládne třeba 10 zařízení najednou z toho dvě desky + mega a další třeba displej, hodinový modul atd. le problém vydím v připojení více zařízení na pin scl a sda samozřejmě se dá vše řešit pomocí nepájivého pole kde scl asd napojím na řady 1 a 2 a ty náledně rozvedu do několika dalších chápu to takhle správně pro zjednodušení přiložím obrázek.
https://drive.google.com/file/d/0B_QUj2kCn2H3NGpEeE5Jajd4M1E/view?usp=sharing
budu vycházet nyní z tohoto prikladu
ve zdrojaku budu mit
/* nejedna se o proměnné ale pouze poznámku czech = 1 london = 2 */ komunikaci nastaruji, odešlu proměnnou a ukončím takto Wire.beginTransmission(1); Wire.write(czech); Wire.endTransmission(); Wire.beginTransmission(2); Wire.write(london); Wire.endTransmission(); a na jedné z desek přijmu while(!Wire.available()){ a = Wire.read(); }
Následně proměnnou a vypíši. Ale nebudu se potýkat s obdobným problémem v případě že po itc mezi dvěma arduiny pošlu hodnotu třeba z pěti senzorů stále nebudu vědět co je co takže opět budu muset přidat nějaký nečíselný znak nebo se pletu?
Luke_CZ
ÚčastníkPísni na ICQ 343122384, nějak to dáme dohromady.
Luke_CZ
ÚčastníkZkušenosti mám, jde o to, že deklarovaný ST7781 řadič tam není, místo něj je S6D0154. Možno použít modifikovanou Adafruit TFT knihovnu. Kdyžtak napiš na ICQ 343122384
Snad pomohlo.
LukášZbyšek Voda
ÚčastníkDobrý den,
když pošlete po sériové lince například:
Serial.println(hodnotaA) Serial.println(hodnotaB)
tak zařízení, které tyto hodnoty čte nemá šanci poznat, že se jednalo ho proměnné hodnotaA a hodnotaB. Přijatá data jsou to pro něj jenom série nul a jedniček (resp. bytů).
Při sériové komunikaci se většinou postupuje tak, že za číslem vždy následuje nějaký nečíselný znak. Na tento znak čeká program přijímající data. Podle toho pozná, že už číslo přišlo celé a z přijatých bytů poté poskládá přijaté číslo.
Druhou (a jednodušší) možností je použití Serial.parseInt(). Z Arduina, které data odesílá se pošle např.
Serial.print(hodnotaA); Serial.print('a') Serial.print(hodnotaB); Serial.print('a')
Kdy na místě ‚a‘ může být libovolný nečíselný znak.
Funkce Serial.parseInt() čeká, dokud neobdrží nějaký nečíselný znak a po jeho přijetí poskládá číslo z bytů přijatých před ním. Tedy v programu Arduina, které data přijímá by mělo být něco jako:int hodnotaA = Serial.parseInt() int hodnotaB = Serial.parseInt()
Každopádně bych ale asi zvážil, jestli je opravdu vhodné použití sériové linky v případě, když budete mít propojeno více Arduin než dvě. Někdy to nemusí vadit, ale mohlo by to dělat problémy. Možná by bylo lepší použít sběrnici i2c. Ta umožňuje přímé adresování jednotlivých desek.
tomajstr
Účastníktam můžeš dát diodu, když to tam uživatel narve obrácené, dioda se zavře a arduino bude zachráněno 🙂
Aleš
ÚčastníkJak jsem psal. Teplotní čidlo DS18B20 není problém, o RHT03 jsem nic nenašel. Hledej „NodeMCU LUA“
tribal.cz
ÚčastníkJeště k ESP8266 koukal jsem na specifikace a chápu to dobře že tento wifi modul lze použít i jako mikrokontrolér. připojit k němou třeba teplotně vlhkostní čidlo třeba RHT03 a odesílat tak data do jiného zařízení?
tribal.cz
ÚčastníkTakhle dá se to rozdělit na server a klient. Server se skládá ze dvou částí, backend(arduino mega) a frontend(RPI) které jsou na pevno spojeny usb kabelem. Dále jsou zde klienti v podobě arduino pro mini které odesílají surová data( + mají další funkce) která výkonnější a na paměť bohatší mega zpracuje a odešle za a) do RPI kde se data ukládají do logů a za b) zpět do klientů kde se na displeji zobrazují již zpracovaná data. Vím odesílání zpět klientům je možná zbytečné ale je to kvůli úspoře kódu aby v mini pro zbyl dostatek prostoru na vše ostatní. A dostupnost wifi je po celém prostoru na vynikající úrovni klesne maximálně na nějakých 75 – 80%. Takže ano jednotlivé moduly se budou připojovat samostatně
Aleš
ÚčastníkMyslím, že propojit to pomocí modulů ESP8266 nebude vůbec žádný problém (pokud tedy nebude problém s dostupností WiFi signálu). Ty moduly dokonce umí po aplikaci příslušného firmware a připojení DS18B20 načítat údaje z tohoto čidla a odesílat je přes WiFi (bez Arduina). Jednotlivé moduly se budou připojovat k nějakému AP, ze kterého to půjde do počítače, který to bude zpracovávat (RPi?).
tribal.cz
ÚčastníkV první řadě napřed zjišťovat pak kupovat
Scherby
ÚčastníkDobře, tak dík moc 🙂 Bál jsem se, aby mi tam nescházela nějáká důležitá funkce vzhledem k tomu, že jde o klon.
Zbyšek Voda
ÚčastníkAha. Nemyslím ale, že je to něco, čeho byste se měl obávat 🙂
Scherby
ÚčastníkPřímo u toho Arduina, co jsem posílal. Ještě předevčírem to tam bylo. Museli upravit popisky.
Zbyšek Voda
ÚčastníkTak to nevím, co by to mohlo být. Kde to psali?
Scherby
ÚčastníkKonkrétně tam bylo bez ISP download funkce. Nikde jsem nenašel, o co se jedná. Vím, že to má něco společného s programováním chipu, ale to je vše
Zbyšek Voda
ÚčastníkPopravdě moc nevím, co tím „bez ISP“ myslíte.
Pokud by to bylo bez ICSP, tak by se jednalo o to, že na desce není připájená programovací hlavice, ale takhle nevím.
Myslím, že se jako začátečník nemusíte ničeho obávat 🙂
Zbyšek Voda
ÚčastníkNejsem si jistý, jestli to vůbec jde.
Každopádně to určitě půjde udělat přes pole.Zbyšek Voda
ÚčastníkCo mě tak narychlo napadá…
Na Arduinu bude program, který se při překročení dané teploty na čidle pokusí připojit na adresu ve tvaru např.:
www.server.cz/mail.php?cidlo=cislo_cidla&teplota=namerena_teplota
Na dané adrese pak musí být soubor mail.php, který bude číst data z URL pomocí GET (to jsou ty údaje za otazníkem). Ty pak jen vezme a například pomocí funkce mail() je odešle.
Aleš
ÚčastníkDíval jsem se na nějaké příklady odesílání emailu z Arduina, a všude používají nešifrované odesílání přes port 25, bez přihlašovacího jména a hesla. A takový SMTP server asi nenajdeš 🙁 Jedině že by sis ho vytvořil sám na nějaké lokální síti, do které bude připojeno i to Arduino, a nebude do ní přístup zvenku.
Veškeré SMTP servery přístupné z internetu používají minimálně autorizaci pomocí jména a hesla, a potom ještě šífrování (TLS, SSL, atd.) a to zase asi nezvládne Arduino (nebo jsem to nikde nenašel).Aleš
ÚčastníkPC potřebuješ jenom k naprogramování (a ani to ne, program jde do Arduina nahrát i z mobilu nebo tabletu). Potom už může jet Arduino jenom samo, s připojeným napájením.
Atrey
ÚčastníkZdravim vsechny, dneska zrejme panbuh nebyl doma a vsechni elementalove byly nakloneni – funguje to.
Sice absolutne netusim v cem byl problem, ale to nevadi.
Mam jen maly dotaz jeste – lze slozit Arduino tak, aby se dalo pouzivat bez podpory PC?
Diky
Atrey
ÚčastníkTo all, tak mi to nedalo.
Od posledniho prispevku sedim u kompu a nejradsi bych to rozslapal.
Ted uz teda vidime CH340, no a to je prosim vsechno.
O nejakem rozsviceni oranzove LED … si muzu akorat nechat zdat.
Vic pruchozi asi bude vyndat v dilne oranzovou LEDku za 1Kc a poradne se opit nad vlastni blbosti.
Atrey
ÚčastníkZdravim ,
tak jsem vse udelal dle Vaseho navodu – chvilku to fungovalo, asi tak 5 minut.
Sice jsem pocitacova mastenka, ale takhle problematickej kram, jsem v zivote nevidel.
Sice na vsech webovejch strankach pisou jak uzasny a jednoduchy to je, Hmmmm realita je zel bohu uplne jina.
Skoda penez a toho casu.
zabzoun@seznam.cz
ÚčastníkZdravím,
dneska se celý den potýkám s obdobným problémem. Po aktualizaci ovladače mi to hlásilo chybu kód 10. Chvilku jsem hledal a tady https://forum.arduino.cc/index.php?topic=90409.0 jsem našel řešení. Stáhl jsem si ovladač CH340 USB-to-serial. Soubor byl zazipovaný. Rozbalil jsem jej. Poté jsem spustil správce zařízení a na zařízení COMxx Arduino Uno, u kterého byl vykřičník, jsem klikl pravým tlačítkem, dal jsem aktualizovat ovladač, vyhledat ovladač v počítači, vybrat ovladač ze seznamu, z disku, proklikal jsem si cestu do rozzipovaného souboru s ovladačem a ovladač nainstaloval. Vykřičník zmizel a vše komunikuje jak má.Jen v sekci COM a LPT porty není COMxx Arduino Uno,ale USB-SERIAL CH340 (COMxx)Používám Win7 64bit
Martin -
AutorPříspěvky