GabrielM
Vytvořené odpovědi
-
AutorPříspěvky
-
koldavideo
ÚčastníkAha jasně. Pomalinku si to dávám dohromady. Asi půjdu postupně, nejprve web server a pak mp3 modul. Moduly mám objednané, takže musím počkat než dorazí. Zatím mockrát děkuji.
Aleš
ÚčastníkPetře, Ethernet shield nebo ethernet modul W5100 používá MOSI a MISO signály, což je něco jiného, než sériová linka. I tak, kdyby bylo třeba, tak si můžeš vytvořit klidně i několik Software Serial portů.
mydra
ÚčastníkShield je W5500 s PoE – . Budu to napájen maximálně na vzdálenost 10m.
darira
ÚčastníkPro napájení sítě mám doma adaptér, který napájí přes RJ45 switch. Pro arduino jsem to ale nikdy nepoužil. Shield máš s W5100 s PoE – https://www.arduino.cc/en/uploads/Main/PoE-datasheet.pdf? Třeba by ti to tenhle adaptér mohl napájet – https://www.i4wifi.cz/PoE/PoE-napajeni-48-V-0-5-A-Gbit.html. Radši se ale poptej u dodavatele, případně u někoho chytřejšího :). Na jakou vzdálenost to budeš napájet? Těch 36-57V je celkem dost, zvládne to 100m.
Bivoj
ÚčastníkStrejda google ví všechno. Jen je v poslední době problém mu vysvětlit, co vlastně hledám. V každém případě dík za snahu, asi není moc lidí, co se honěj jako já za tak velkou přesností, ale potřebuju měřit DC proudy v dost velkým rozsahu, a na to ten vestavěnej 10bit AD převodník nestačí.
Aleš
ÚčastníkKde byl problém?
Luke_CZ
ÚčastníkJeště pro doplnění, ten SW520s je na principu kuličky v pouzdře, která spíná kontakty, jistě si na videu všimneš, že pokud se natočí senzor do limitní pozice, tak ta výchylka pro sepnutí/rozepnutí již tak velká není. Jsou i citlivější snímače otřesů, třebas 801s, SW-420, prostě ty, co jsou na principu pružiny, nebo piezzo (ty ale fungují na změnu zatížení). Jde mi o proudovou spotřebu zapojení, páč s mechanickým senzorem můžeš vypnout mimo ADC všechny periferie.
Luke_CZ
ÚčastníkTak to potem ja, na tak maličkou záležitost ti bude stačit i:
https://www.aliexpress.com/item/Smart-Electronics-GY-Digispark-Kickstarter-Miniature-Minimal-Development-Board-TINY85-Module-for-Arduino-USB-DIY-Starter/32315722719.html?ws_ab_test=searchweb0_0,searchweb201602_2,searchweb201603_1&btsid=2077f23c-b5c2-4dfd-b250-6177129c8b87Pro měření teploty by ti stačil i obyčejný termistor(ten opravdu moc nežere):
https://www.aliexpress.com/item/20pcs-Thermistor-NTC-MF52-103-3950-10K-ohm-B-Value-3950k-5-Thermal-Resistor/32738569518.html?ws_ab_test=searchweb0_0,searchweb201602_2,searchweb201603_1&btsid=cd682224-fc3b-4f7a-a012-14f67d67b2dbCo se týče 433MHz RX TX, tak raději nějaké kvalitnější, ty hodně levné jsou nic moc 🙁
Tyhle mi jedou do cca 50m bez výpadků:
https://www.aliexpress.com/item/433-Mhz-Superheterodyne-RF-Receiver-and-Transmitter-Module-ASK-low-power-kits-For-Arduino-ARM-MCU/32728352611.html?ws_ab_test=searchweb0_0,searchweb201602_2,searchweb201603_1&btsid=a8636d2d-da5c-48a0-af17-4825ddc91b5dPro pokusy bych vzal třeba tuhle krabičku, dáš jen jednu 18650 a do druhé půlky dáš mcu, (dole je místo na TX)a spol(máš to i s nabíjecím modulem :-))
https://www.aliexpress.com/item/hot-Portable-Universal-USB-2X-2-18650-Battery-Charger-DIY-Power-Bank-Box-Case-5600mAh-5V/32756814681.html?ws_ab_test=searchweb0_0,searchweb201602_2,searchweb201603_1&btsid=d8b1d595-0e0d-4dfb-899a-81f6fafb964aCelkově bych to směřoval do 3.3V logiky a napájení jedním LiPol 18650 (či podobným).
L.
Kdyžtak Skype: velky_ujezdAxamith
ÚčastníkAhoj, díky za reakci. Pochopil jsi o co mi jde. Komunikační vzdálenost by byla cca do 20 metrů, spíše méně. Vyčetl jsem že 433 MHz Rx, Tx jede za ideálních podmínek do cca 50 metrů, takže by to bylo dostačující. Tady je slušný popis s příkladem. Arduino Mini či nějaké jiné mrňavé jako mozek.
Jen ten otřesový snímač vidím jako problém. Jde o jeho citlivost. Na videu je vidět, jak moc musí být nakloněn, aby dal signál. Takhle nikdo úl při krádeži nebude nakláněk. Někdy se také kradou jen rámky s medem, takže otevře úl, vybere co chce a zavře. Otřesové čidlo by nemuselo vůbec zareagovat. Výše navrhovaný MPU-6050 je mnohem citlivější. Určitě by bylo dobré SW vyřešit falešné poplachy, drobné otřesy. V podstatě by fungoval jako spínač, vyhodnocování náklonů jednotlivých os není třeba, prostě stav 0/1, s vyhodnocením fal. poplachů.
Jednotlivé satelity by tedy pouze čekaly na narušení a následně odeslaly info základní jednotce. 1x za 24 hod. info o svém stavu a stavu baterie.
Základní jednotka by čekala na info o narušení a již zmíněné hlášení o stavu satelitů + meteo hlášení. Napájení přes FV panel vidím jako problém. Jsou to dráty, které musí vést do dna úlu, ty mohou být v průběhu sezón různě vysoké. Nabízí se možnost nalepit FV na přední čelo první bedny nade dnem. Ale úly jsou často v zarostlém prostředí, takže slunce se nemusí k panelu dostatečně dostat. Toto bych řešil asi až podle otestované výdrže konkrétní baterie. Určitě bych nepřipojoval zbytečné periferie, které nejsou nutné a žerou baterii.Axamith
Luke_CZ
ÚčastníkTož, hlavně když se podařilo. Těžko radit, když toho švába nemáš… 🙂
Bivoj
ÚčastníkDík za snahu. Tyhle odkazy znám. Všechny používají nefunkční kód ze stejného zdroje. Nicméně já se mezitím dobral fungujícího kódu a návodu. Tak pro všechny, kteří s tím bojují jako já:
http://foro.adre-es.org/index.php?topic=9.0
Mějte se. Bivoj.Vojtěch Vosáhlo
ÚčastníkOk, určitě sem pak dejte výsledek 😉
Luke_CZ
ÚčastníkTakže, abychom si to ujasnili:
Máš centrální jednotku a jí posílají jednotlivé satelity (úly) signál v případě inicializace čidla.
Já bych navrhoval následující:
HW – stanice
A, určitě nepoužívat WiFi – tvůj návrh přepokládá trvalé připojení klienta (úlu) k serveru (centrální jednotce), což baterií neuživíš, tedy ne na dlouho
B, jako čidlo pohybu bych dal jednoduché otřesové, na mechanickém principu fungující, čidlo, třeba (je i s debounce obvodem): https://www.aliexpress.com/item/1pcs-lot-Tilt-Switch-Module-Angle-Sensor-Module-for-Arduino-SW520D-Free-Shipping/32753355271.html?spm=2114.01010208.3.18.KKwaKO&ws_ab_test=searchweb0_0,searchweb201602_3_10065_10068_10069_10084_10083_10086_10017_10080_10082_10081_10060_10061_10062_10056_10055_10054_10059_10078_10079_10073_10070_10052_10053_422_10050_10051,searchweb201603_9&btsid=193be5ad-a605-4259-bff0-af44ec715b03
C, coby mcu pro úl bych dal malé arduino (nano, nebo pro mini)
D, k němu 433MHz TX
E, volitelně třeba nějaký levný snímač vlhkosti a teploty (může jich být víc) třeba DHT-11 (pro tvoji potřebu bude stačit)
F, do budoucna třeba i ten tvůj RFID, či cokoliv jiného
G, co se týká napájení, tak co dát na střechu úlu FV panel a tím nabíjet akumulátor?HW – centrála
A, 433MHz RX
B, GPRS modul
C, cokoliv dalšího, na co si vzpomeneš (TFT, LCD, buzzer)
D, coby mcu může být jakékoliv arduinoSW – stanice
A, snímat
– stav otřesového čidla
– napětí akumulátoru
– teplotu a vlhkost z čidla
B, v případě normálního stavu posílat ve zvoleném čase data do centrály
třebas:
UL01;OK;07,14;20,2;60 (číslo úlu;stav otřes.čidla;napětí aku;teplota;vlhkost)
C, v případě aktivace otřesového čidla poslat ihned
UL01;AL; (číslo úlu;stav otřes.čidla;)SW – centrála
A, čekat na data ze stanic a dle potřeby posílat přes GPRS info
B, dělat cokoliv jiného (zobrazení stavů na displeji, siréna, osvětlení, odpálení náloží…)Určitě je klíčové vědět maximální vzdálenost stanice – centrála a podle toho zvolit vhodný TX RX
L.
KallEll
ÚčastníkDíky, ten článek je zajímavý, zkusím se pohrát s tím PI. Díky.
Vojtěch Vosáhlo
ÚčastníkSpíš mě šlo o to jestli je to s arduinem vůbec možné. U PI musím nabootovat linux a pak nějakou aplikaci, což mě nepřipadá moc efektivní. Šlo mě s píš o něco jednodužšího. Navíc u toho linuxu je spoustui jiných služeb které primárně nepotřebuju.
Je pravda že bootnout Pi trvá, ale než by arduino dostalo stream dat a začalo je zpracovávat… No to by žádná sláva nebyla, nejspíš horší než Pi. V Linuxu se dá samozřejmě nastavit vše automaticky tzn. po zapnutí systému se zapne aplikace X a zobrazí obsah Y. To vše bez vnější pomoci. s arduinem by to bylo nejspíše i několikrát těžší… Během několika vteřin by se to asi nezaplo.
U Linuxu by mělo jít hodně dodatkových služeb vypnout.
Lze ovládat pomocí PI i elektronický zámek(bzučák ve dveřích)?
Jistě, Pi je obyčejný procesor a můžete s ním vše ovládat jak se vám zachce.
Třeba tento tutoriál vám může pomoct jak začít. https://learn.sparkfun.com/tutorials/raspberry-gpioKallEll
ÚčastníkNo PI se mě tu jedno válí, tak zkusím něco vymyslet. Spíš mě šlo o to jestli je to s arduinem vůbec možné. U PI musím nabootovat linux a pak nějakou aplikaci, což mě nepřipadá moc efektivní. Šlo mě s píš o něco jednodužšího. Jako že to zapnu a během pár vteřin to pojede. Navíc u toho linuxu je spoustui jiných služeb které primárně nepotřebuju. Lze ovládat pomocí PI i elektronický zámek(bzučák ve dveřích)?
maxus.aurelius
Účastník🙂 díky!
Nasranek
Účastníkok nic se neděje já na to jen lehce mrknul po šichtě a ani jsem to prakticky nezkoušel to až v pátek jak budu mít volno
Vojtěch Vosáhlo
ÚčastníkTak načítej ten čas ve smyčce while a když překročí ten limit, zavolej si brake ať se ti uvolní…
Vojtěch Vosáhlo
ÚčastníkAhoj,
je ro určitě realizovatelná věc ale musel by si mít hodně výkonný HW, nějaké arduino založené na ARMu. Nepřemýšlel si spíš o Raspberry Pi? Dělat tohle přes arduino by bylo asi přece jen zbytečně drahé a komplikované. Navíc by si potřeboval i shieldy, možná několik. Pi by tě vyšlo určitě lépe.
Držim palce
Vojtamaxus.aurelius
Účastníkdiky za tipy.
Jen mám trochu problém s tím, že pokud nedojedou dvirka ke koncaku, tak se neukonci smycka while a tim padem je arduino „mrtve“. Urcite je resim koncak na spodni hrane dvirek – zkusim neco vymyslet.
posjirka
Účastníkjo sorry, já jsem si to zkusil na simulatoru a pak jsem to na hulvata prasknul do tvého kodu … jinak svetlo a svetlo1 jsou rozdílné proměnné. svetlo je doba za jak dlouho ma prejit z 0 na 255 (v minutách) a svetlo1 je pin kde je PWM výstup.
Ještě me pak napadlo jiné řešení, jednodušší a pro nastavení v menu jednodušší ale nevím kdy se na ně dostanu. …Nasranek
Účastníkvypadá to zajímavě určitě až budu mít volno vyzkouším prototyp mám pořád ještě v celku,
mán Arduin několik tak mi nevadí mít něco hotového na stole
V programu je hodně chyb s promněnnýma(někde používáš jas pak brightness, ale neva poperu se s tím uvídíme potom světlo1 – nahrazuješ světlo
mně šlo hlavně o vzorec a ten vypadá funkčně,až dohodím vsutupy čidel
a grafický výstup dám vědětposjirka
Účastníksouhasl s vojtěchem. dej si proměnnou „chyba=0“ a „close_time = 0“ pro záznam času při spuštění povelu k zavření. Tam si zapiš čas při zavření a změř si jak dlouho jede motor. Když to překročí čas, všechno vypni a zapiš si chybu + signalizuj chybu…
posjirka
Účastníkto nasranek:
onečně jsem dokopal k tomu abych někde ukazal jak jsem myslel linearni rozložení rozsvěcení/zhasnutí na základě času. Trachu jsem upravil/zjednodušil tvůj program a mírně z přeházel některé funkce. Ta uprava co jsem udělal by měla odstranit ten neduh o zpožděné reakci v důsledku dlouhého delay(). Zjednodušil jse to proto aby bylo poznat co se tam měnilo. Jestli máš chut tak to prosím vyzkoušej. krok se mění 1x za minutu a funkcí map() se přepočítává na rozsah 0-255.#include <Wire.h> #include <DS3231.h> #define DS3231_I2C_ADDRESS 0x68 DS3231 rtc(SDA, SCL); int svetlo1 = 11;//pwm vystup int den = 9*60; // od kdy je den int noc = 21*60;// od kdy je noc int svetlo = 42; // doba rozsveceni/zhasnuti int cas = 0; // nasobek aktualnich hodin a minut byte jas = 0; // velikost jasu 0-255 byte second, minute, hour, dayOfWeek, dayOfMonth, month, year; void setup() { rtc.begin(); lcd.clear();//smaže obrazovku lcd.setContrast(30);//nastavení kontrastu je to individuální, mám jich několik a každý chce něco jiného ale je to v rozmezí 30-60 Wire.begin(); pinMode(svetlo1, OUTPUT); } byte decToBcd(byte val){ return ( (val / 10 * 16) + (val % 10) ); } byte bcdToDec(byte val){ return ( (val / 16 * 10) + (val % 16) ); } void readDS3231time(byte *second, byte *minute, byte *hour, byte *dayOfWeek, byte *dayOfMonth, byte *month, byte *year) { Wire.beginTransmission(DS3231_I2C_ADDRESS); Wire.write(0); // set DS3231 register pointer to 00h Wire.endTransmission(); Wire.requestFrom(DS3231_I2C_ADDRESS, 7); *second = bcdToDec(Wire.read() & 0x7f); *minute = bcdToDec(Wire.read()); *hour = bcdToDec(Wire.read() & 0x3f); *dayOfWeek = bcdToDec(Wire.read()); *dayOfMonth = bcdToDec(Wire.read()); *month = bcdToDec(Wire.read()); *year = bcdToDec(Wire.read()); } void loop() { delay(1000); byte s, m, h, dvt, dvm, mesic, r; readDS3231time(&s, &m, &h, &dvt, &dvm, &mesic, &r); analogWrite(svetlo1, brightness); cas = h*m; // nasobek minut a hodin if (cas < den) { jas = 0; // jeste neni den tak nesvit } else { if(cas < (den+svetlo)}{ jas = map(cas, den, (den+svetlo), 0, 255); // rozsveceni } } if (cas > (noc + svetlo)) { jas = 0; // jeste neni den tak nesvit } else { if (cas > noc){ jas = map(cas, noc, (noc+svetlo), 255, 0); // zhasnuti } } }
Vojtěch Vosáhlo
ÚčastníkTakže pokud jsem to dobře pochopil tak chcete nějak opatřit situaci že se ve dveřích naskytne překážka a koncák se nespustí. V kódu toho asi moc neuděláme, jediné co mě napadá je počítat si čas za kterej by se měli koncáky sepnout a pokud se do té doby nespustí tak provést nějakou rutinu. Mohli by se dveře třeba znovu otevřít a pokusit se o zavření/ zahlásit error… Prakticky cokoliv. Lepší řešení by bylo asi přidělat na dvířka (na spodní část) lištičku právě s nějakým spínačem tzn. když by dvířka do něčeho po cestě narazili, spínač by se epl a dal vám vědět.
Držim palce
Nasranek
ÚčastníkMinulý týden jsem dodělal a teď je už je i odzkoušen Led pásek/stmívač/teplota vody/hodiny/Displej Nokia 5110(čekám na 4×20 I2C displej pak předělám na něj).
Program má nějaké nedostatky – mám ho ve dvou verzích jedna vypíná/zapíná podsvícení displeje mechanicky (Pod světlení je rozpojované spínačem) tu tady dám, pod světlení přes tlačítko řešeno výstupem s Arduina, má tu nevýhodu – pří startu pásku nereaguje hned ale od 1-10 sekund protože Led postupně rozsvěcuje cca 42 minut a krok je po 10 sekundách.
Sériový výstup je vypnut(žere moc prostředků pro lokální proměnné)
budete potřebovat 2 knihovny a to tyto:
#include <DallasTemperature.h> #include <Nokia_5110.h> //https://github.com/baghayi/Nokia_5110 const int pinCidlaDS = 2;//teplotní čidlo vody je připojeno k Digitálním pinu D2 OneWire oneWireDS(pinCidlaDS); DallasTemperature senzoryDS(&oneWireDS); //nastavení pinu pro displej, můžou být skoro všechny digitální, ale jeden pwm musíte nechat pro řízení mosfetu (pwm 11,10,9,6,5,3) // BL - podsvícení rozpojit přes spínač jinak bude v kuse svítit ve verzi 1.3 je napojen na D10,ale zpožďuje #define RST 4 #define CE 5 #define DC 6 #define DIN 7 #define CLK 8 Nokia_5110 lcd = Nokia_5110(RST, CE, DC, DIN, CLK); #include <Wire.h> #include <DS3231.h> //http://www.rinkydinkelectronics.com/library.php?id=73 DS3231 rtc(SDA, SCL); #define DS3231_I2C_ADDRESS 0x68 // Convert normal decimal numbers to binary coded decimal byte decToBcd(byte val) { return ( (val / 10 * 16) + (val % 10) ); } // Convert binary coded decimal to normal decimal numbers byte bcdToDec(byte val) { return ( (val / 16 * 10) + (val % 16) ); } int svetlo1 = 11;//pwm vystup int sviti = 0; int den = 0; byte second, minute, hour, dayOfWeek, dayOfMonth, month, year; void setup() { rtc.begin(); lcd.clear();//smaže obrazovku lcd.setContrast(30);//nastavení kontrastu je to individuální, mám jich několik a každý chce něco jiného ale je to v rozmezí 30-60 Wire.begin(); // Nastavení hodin a datumu po nastavení dát do poznámek v mění se jen to co jen odemknuto //rtc.setDOW(3); // Den v tydnu- mozno napsat jako cislo nebo jako den -- rtc.setDOW(1) //rtc.setTime(17, 31, 20); // Nastaveni Casu 12:00:00 (24hod format) po nastavení dát "//" a znovu nahrát jinak při resetu se znovu nastaví // rtc.setDate(21, 10, 2016); // Nastaveni datumu den/mesic/rok } void readDS3231time(byte *second, byte *minute, byte *hour, byte *dayOfWeek, byte *dayOfMonth, byte *month, byte *year) { Wire.beginTransmission(DS3231_I2C_ADDRESS); Wire.write(0); // set DS3231 register pointer to 00h Wire.endTransmission(); Wire.requestFrom(DS3231_I2C_ADDRESS, 7); // request seven bytes of data from DS3231 starting from register 00h *second = bcdToDec(Wire.read() & 0x7f); *minute = bcdToDec(Wire.read()); *hour = bcdToDec(Wire.read() & 0x3f); *dayOfWeek = bcdToDec(Wire.read()); *dayOfMonth = bcdToDec(Wire.read()); *month = bcdToDec(Wire.read()); *year = bcdToDec(Wire.read()); } void displayTime() { // příjem dat z DS3231 readDS3231time(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year); senzoryDS.requestTemperatures();//při stmívání nebo svítání obnovuje co 10 sekund jinak co 1 sekundu lcd.setCursor(0, 0); lcd.print ("Cas: "); lcd.print(rtc.getTimeStr(1));// v zavorce 1 bez sekund, prazdna ukaze sekundy,ale při startu LED skače o 11 a je to ... lcd.print(" hod."); lcd.setCursor(0, 2); // pokud máte teplotní čidlo napevno a nevypadává Vám není potřeba lcd.print("T. Vody: "); // já mám prototyp který nebude použit tak to řeším přepsáním lcd.setCursor(0, 2); lcd.print("T. Vody: "); lcd.print(senzoryDS.getTempCByIndex(0)); lcd.setCursor(0, 1); lcd.print("Dat. "); lcd.print(rtc.getDateStr()); lcd.setCursor(0, 3); lcd.print("T. Okoli: "); lcd.print(rtc.getTemp()); //Hodiny real.času ds3231 mají v sobě teploměr - teplotni cidlo obnovuje co 64 sekund dá se to zkrátit, ale nebudu zbytečně zvětšovat program lcd.setCursor(0, 4); lcd.print(" ------------"); } void loop() { senzoryDS.requestTemperatures(); pinMode(svetlo1, OUTPUT); displayTime(); delay(1000); byte s, m, h, dvt, dvm, mesic, r; readDS3231time(&s, &m, &h, &dvt, &dvm, &mesic, &r); if (h >= 9 && h < 21) den = 1; // nastaveni intervalu sviceni else den = 0; for (byte brightness = 0; den == 1 && sviti == 0 && brightness <= 255; brightness ++) { displayTime(); analogWrite(svetlo1, brightness); if (brightness == 255) sviti = 1; lcd.setCursor(0, 5); lcd.print("Stav Led: "); lcd.setCursor(0, 5); lcd.print("Stav Led: "); lcd.print(brightness); delay(10000); } for (byte brightness = 255; den == 0 && sviti == 1 && brightness >= 0; brightness --) { displayTime(); analogWrite(svetlo1, brightness); if (brightness == 0) sviti = 0; lcd.setCursor(0, 5); lcd.print("Stav Led: "); lcd.setCursor(0, 5); lcd.print("Stav Led: "); lcd.print(brightness); delay(10000); } }
Luke_CZ
ÚčastníkJediný na netu?
http://henrysbench.capnfatz.com/henrys-bench/arduino-voltage-measurements/ltc2400-arduino-voltmeter-module-user-manual/
http://www.eevblog.com/forum/projects/ppmgeek!-5-5-digit-dvm-volt-ref-cal-%28for-arduino-or-any-uc-w-spi%29/A tady máš diskuzi k tvému zdrojáku:
http://forums.netduino.com/index.php?/topic/1831-netduino-with-24bit-adc-ltc2400-help/ArduXPP
ÚčastníkLuke_CZ
ÚčastníkTO Leo:
Fóra jsou i od toho, aby se v nich dala najít řešení problémů, nebylo by tedy od věci, pokud jsi ten TFT rozchodil, napsat v jakém zapojení a SW jsi ho rozchodil…
Jistě by to pomohlo i dalším kolegům, ono prohlášení „Už funguje“ je dost na nic 🙁L:
-
AutorPříspěvky