Webster.K
Vytvořené odpovědi
-
AutorPříspěvky
-
Luke_CZ
ÚčastníkPísni na Skype: velky_ujezd
tribal.cz
ÚčastníkMohl by jsi mi sem dát nějaký příklad z tou tvojí funkcí?
tribal.cz
ÚčastníkŠlo pouze o teorii jinak je mi jasný že výsledek bude vypadat jinak teorie byla toto => jedno centrální zařízení (mega) a tři klientské (uno) každé přijímá z centrály data ty pak vypisuje na svůj displej + centrála vše ukládá na sd a zobrazuje na svém displeji jako celkový přehled toť vše
Luke_CZ
ÚčastníkKdyž už jsme u toho,tak na to, abys zobrazoval různé hodnoty na LCD, tak nepotřebuješ TŘI arduina, ale stačí ti naprosto jedno na který pověsíš x kusů I2C LCD, na těch se dá měnit I2C adresa. Navíc I2C má velmi limitovanou délku propojení.
hefi
ÚčastníkDíky za odpovědi.
Zkusím dát na + článku diodu, za ni měřící PIN a přes velký odpor na zem. Musím změřit, o kolik posouvá napětí. U tak malých proudů se budu pohybovat v tom koleni charakteristiky, tak uvidíme.
Alternativou by bylo dát diodu v závěrném směru paralelně k článku. Ta by žádný úbytek nezpůsobovala. Jenže když to nějaké trdlo otočí, ochráním sice procesor, ale nemohu zaručit, že mu článek ve zkratu třeba nebouchne.Ta druhá věc, vypnutí napájecího napětí, teď jsem k tomu viděl hezkou aplikaci u LM317 zdroje. Mezi vstupní napětí přes 30V a výstupní napětí regulované od 2V byla zapojena dioda v závěrném směru. Normálně zavřená. Pokud se ale odpojí napájecí napětí a kapacita na výstupu je vyšší než ta na vstupu, klesá napětí vstupu pod výstupní, otevře se dioda a vstup je „živen“ z výstupních kondenzátorů. Na elektronice zůstává pouze napětí diody 0,7V a nic se nezničí.
Petrs
ÚčastníkDobrý den,
na ten článek Waveform Generator jsem narazil, ale nedokázal jsem si z toho vytáhnout pouze tu sinusovku, musím to ještě jednou projít a snad se povede když si přečtu ještě něco o tom rezistorovém žebříku.Tento zdroj napětí by měl sloužit pro napětím řízený zdroj proudu pomocí, který bude připojen na neznámou impedanci, tak se chci ještě zeptat, dá se analogové usměrnění napětí nahradit digitálním tím, že využiji umocnění na 2?
děkuji Petr
lukbe
ÚčastníkJinak to odpojení by bylo možné realizovat pomocí relé, tak že po spuštění arduina se relé hned sepne–>> měří se U baterie a po odpojení arduina od napájení se relé odepne.
lukbe
ÚčastníkV případě problému č. 1 by se dala použít již zde zmiňovaná dioda. A jinak u problému 2, mne napadá použít nějaký obvod, kdy v případě že vstupní napětí klesne = vypnutí tak se i odpojí připojená baterie. Ale osobně si myslím že připojená baterie na analogový pin v případě vypnutí arduina ničemu neuškodí.
JakubD
Účastníkzkouším tě a nic 😀
tribal.cz
Účastníkok takže cele to bude vypadat nějak takto
mega
#include <Wire.h> #include <dht.h> dht sensor String vystup; int dht[] = {7, 8}; int temp1; int temp2; int hum1; int hum2; void setup() { Serial.begin(9600); Wire.begin(); } void loop() { sensor.read(dht[0]); temp1 = sensor.temperature; hum1 = sensor.humidity; sensor.read(dht[1]); temp2 = sensor.temperature; hum2 = sensor.humidity; Wire.beginTransmission(1) // prvni uno Wire.write(temp1#hum1); Wire.endTransmission(); Wire.beginTransmission(2) // Druhe uno Wire.write(temp2#hum2); Wire.endTransmission(); }
uno
#include <Wire.h> string value; int tempghum[]; void setup(){ Wire.begin(1); } void loop(){ while(!Wire.available()) { } value = Wire.read(); // do proměnné value se uloží příchozí hodnoty tedy teplota a vlhkost z jednoho ze senzorů getValue(var, '#', tempghum ) TFTscreen.println (tempghum[0]); //a zobrazíme pouze teplotu pro obě hodnoty... TFTscreen.print (tempghum[0]); TFTscreen.println (tempghum[1]); } 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]) : ""; }
příklad píšu jen pro to zda jsem správně pochopil tvojí funkci, takže jako parametry tovjí funkce je řetězec přijatý z megy, následně znak kterým původní proměnné odděluji a poslední parametr je výstupní proměnná do které se vše uloží resp do pole. Výsledné hodnoty potom poté mohu zobrazit například na displeji. je mi jasné že program na unu nejspíš ani nebude fungovat napsal sem to jen jako ukázku. Býval bych to hned vyzkoušel ale bohužel momentálně nejsem doma takže nemám přístup k arduinu. Pokud se pletu prosím oprav mne
Luke_CZ
ÚčastníkTak kolem šesté mě zkus na : velky_ujezd
Teď jdu na zahrádku.
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.
-
AutorPříspěvky