Ceko
Vytvořené odpovědi
-
AutorPříspěvky
-
johnyhol
Účastníkpoužil jsem tento kód přímo z IDE (příklady -> Exosite -> ESP8266OccupancySensor):
//***************************************************************************** // // ESP8266OccupancySensorNoSleepProvision - An example of how to use the Exosite // library on the Sparkfun ESP8266 Thing // with a PIR motion sensor to detect the // occupancy status of a room. // // Requires the ESP8266 Arduino Library // // You MUST use the staging version of the ESP8266 library (or the stable version // if newer than Aug 10, 2015) so that method strtoul is compatible // // Copyright (c) 2015 Exosite LLC. All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // * Neither the name of Exosite LLC nor the names of its contributors may // be used to endorse or promote products derived from this software // without specific prior written permission. // // THIS SOFTWARE IS PROVIDED "AS IS" AND WITH ALL FAULTS. // NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT // NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR // A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. TI SHALL NOT, UNDER ANY // CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR CONSEQUENTIAL // DAMAGES, FOR ANY REASON WHATSOEVER. // //***************************************************************************** #include <EEPROM.h> #include <SPI.h> #include <ESP8266WiFi.h> #include <Exosite.h> #include <OneWire.h> #include <DallasTemperature.h> const int MOTION_PIN = 13; const int MOTION_POWER_PIN = 4; const int ONEWIRE = 12; const int LED_PIN = 5; /*============================================================================== * Configuration Variables * * Change these variables to your own settings. *=============================================================================*/ const char ssid[] = "SSID HERE"; const char password[] = "PASSWORD HERE"; char macString[18]; // Used to store a formatted version of the MAC Address byte macData[WL_MAC_ADDR_LENGTH]; const int REPORT_TIMEOUT = 30000; //milliseconds period for reporting to Exosite.com // Use these variables to customize what datasources are read and written to. String readString = "occupancyint"; String writeString = "occupancyint="; String returnString; String writeString5 = "temp="; String readString5 = "temp"; /*============================================================================== * End of Configuration Variables *=============================================================================*/ WiFiClient client; Exosite exosite(&client); // Set up which Arduino pin will be used for the 1-wire interface to the sensor // Be sure to use OneWire library from Arduino Library Manager, not from the included // library in the ESP8266 Board package OneWire oneWire(ONEWIRE); DallasTemperature DS18B20(&oneWire); int motionState = 0; int movementCounter; // Use to count number of times movement is detected in the intervals float tempF, tempC; unsigned long checkPrevTime = 0; /*============================================================================== * setup * * Arduino setup function. *=============================================================================*/ void setup(){ initHardware(); delay(100); connectWifi(); movementCounter = 0; exosite.begin(); ESPprovision(); Serial.println("Calibrating..."); delay(30000); // Calibration time Serial.println("Ready to detect motion."); delay(50); } /*============================================================================== * loop * * Arduino loop function. *=============================================================================*/ void loop() { checkPrevTime = millis(); while(millis() - checkPrevTime < REPORT_TIMEOUT){ // Read the state of the motion sensor value motionState = digitalRead(MOTION_PIN); // Check if the motion sensor is activated // If it is, the motionState is LOW (with 10K resistor) if (motionState == LOW) { movementCounter++; Serial.println("Motion Detected."); delay(2000); } else delay(100); } // Read temperature sensor DS18B20.requestTemperatures(); // Send the command to get temperatures tempC = DS18B20.getTempCByIndex(0); Serial.println("Temperature in degrees C is " + String(tempC)); tempF = DallasTemperature::toFahrenheit(tempC); Serial.println("Temperature in degrees F is " + String(tempF)); delay(100); reportToExosite(); } /*============================================================================== * initHardware * * Use in setup to initialize pins and Serial port *=============================================================================*/ void initHardware(){ Serial.begin(112500); delay(10); pinMode(MOTION_PIN, INPUT); pinMode(MOTION_POWER_PIN, OUTPUT); digitalWrite(MOTION_POWER_PIN, HIGH); DS18B20.begin(); EEPROM.begin(40); pinMode(LED_PIN, OUTPUT); digitalWrite(LED_PIN, LOW); delay(1000); } /*============================================================================== * connectWifi * * Use in setup to connect to local Wifi network *=============================================================================*/ void connectWifi(){ WiFi.mode(WIFI_STA); // Need for deepSleep // Connect to WiFi network Serial.println(); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); byte ledStatus = LOW; while (WiFi.status() != WL_CONNECTED) { Serial.print("."); // Blink the LED digitalWrite(LED_PIN, ledStatus); // Write LED high/low ledStatus = (ledStatus == HIGH) ? LOW : HIGH; delay(100); } digitalWrite(LED_PIN, HIGH); Serial.println(""); Serial.println("WiFi connected"); Serial.print("IP Address: "); Serial.println(WiFi.localIP()); delay(100); // Create MAC Address String in the format FF:FF:FF:FF:FF:FF WiFi.macAddress(macData); snprintf(macString, 18, "%02X:%02X:%02X:%02X:%02X:%02X", macData[5], macData[4], macData[3], macData[2], macData[1], macData[0]); // Print Some Useful Info Serial.print(F("MAC Address: ")); Serial.println(macString); } /*============================================================================== * ESPprovision * * Activate the ESP8266 to specified vendor and model and get a CIK *=============================================================================*/ void ESPprovision(){ byte ledStatus = HIGH; while(client.connected()==0){ if(exosite.provision("exosite", "arduinoyun-generic", macString)) EEPROM.commit(); digitalWrite(LED_PIN, ledStatus); // Write LED high/low ledStatus = (ledStatus == HIGH) ? LOW : HIGH; delay(500); } digitalWrite(LED_PIN, HIGH); delay(100); } /*============================================================================== * reportToExosite * * Write number of motions detected in period as well as awake status to dataports *=============================================================================*/ void reportToExosite(){ while(!exosite.writeRead(writeString+String(movementCounter)+"&"+writeString5+String(tempF), readString + "&" + readString5, returnString)) { Serial.println("Retrying connection"); delay(1000); } movementCounter = 0; delay(1000); }
Zbyšek Voda
ÚčastníkPodle té chyby to opravdu vypadá, že bude chyba v knihovně. Někde tam asi dochází k tomu, že se nějaký soubor vloží dvakrát – odsud také chyba „redefinition of classs…“.
Ještě pro jistotu prosím pošlete použitý kód, ale tím to asi nebude.
posjirka
Účastníktak jsem se na ten modul díval a je tam použit IRF520. Ten má při Ugs =4V proud cca 0,2A až od Ugs = 5V má skoro 3A. viz datasheet
https://arduino-info.wikispaces.com/file/view/irf520.pdf
list č.4 vpravo nahoře. Proto to nefunguje jak má.
Vidím 2 cesty:
Buď použít jiný modul např. ten 4. na tomto odkazu:
https://arduino-info.wikispaces.com/Brick-4ChannelPowerFetSwitch
má vstupy řešeny přes optočlen a tím spíná vyšší napětí než toje 3,3V.
Druhá varinata je udělat vlastní modul. ćetl jsem že si nevěříš v dělání tiš´táků, ale věř mi že pomocí univerzálního PCB ( třeba http://www.santy.cz/vyvojove-desky-c3/pcb-otvory-1mm-oboustranna-deska-30x70mm-i161/ ) by jsi to zvládnul v pohodě. koupit pár součástek za cca 30kč, k tomu tu univ. desku 2x dvojsvorky do tiš´táku a za chvilku máš hotovo. Kliděn udělaj 1 část té 4 desky. jestli se na to necítíš, tak určitě najdeš v okolí nějákého bastlíře, nebo střední školu, kde se s nějákým mistrem určitě domluvíš…hcdady
ÚčastníkDobrý den, potřebuji ovládat hydrauliký elektroventil. Cívka je na stejnosměrných 24V a potřebuje necelé 3A. A musím říct, že uno si s tím mosfetem poradilo bezproblémově. Jenže jsem software trochu vylepšil použil dotykový display a unu už se nechtělo tak moc pracovat. Due moji modernizaci zvládá levou zadní, jenže já bohužel nezvládám přechod z 5 na 3,3v. A tak jsem si říkal, že nejsnažší cesta pro amatéra bude převodník. Všude je samý obrázek se zapojením, ale mě to nějak nefunguje. A pro vysvětleni ten mosfet jsem použil, protože to je hotový obvod který si koupím. Kdyby se prodával podobný obvod s bipolárním tranzistorem, rád si ho koupím. Ale navrhnout ho sám to je pro mě vysoká dívčí.
Každopádně za jakoukoliv radu děkuji, protože sem v koncích.posjirka
Účastníkmyslim ze je na miste otazka na co to potrebujes. jestli pro pwm regulacu jak z textu dedukuji tak je treba uvest i o jakych vykonech se bavime. ve vetsine pripadu staci obycejny bipolarni tranzistor a lidi tam cpou fety ktere se stejne naplno neotevrou.
jardik
ÚčastníkZdravím Míru a ostatní,
viděl jsem jeho výtvor a musím ho pochválit !!!
Je pravda, že pro Arduino IDE existuje mnoho podobných nadstaveb a některé jsou opravdu profi a také zdarma, ale Edruino má několik předností.
Je to čistě česká tvorba a podpora včetně námětů bude jednoduší než u zahraničních programů !!!
Je absolutně free, žádný skrytý poplatky a omezení
Je to teprve Beta verze a autor je otevřen různým připomínkám a návrhum jak by mělo toto IDE vypadat. To znamená, že je možné při spolupráci s autorem vytvořit opravdu zajimavé IDE, které ještě neexistuje, navíc s podporou českého jazyka.
Kvalita IDE je vcelku na dobré úrovni v porovnání s podobnýma. Oproti klasickému Arduino IDE je opravdu mnohem lepší a přitom jednoduchý.A teď pár nápadů a postřehů co by se dalo zlepšit pro samotného tvůrce:
podpora dalších desek nejen klasického Arduina. Myslím, že by to nemusel být problém protože Edruino je vlastně jen nadstavba Arduino IDE a pokavaď jsou další desky nainstalovány v Arduino IDE ve složce Hardware, mělo by je i EDRUINO umět využít. Je škoda, že to zatim Beta neumí, protože mnoho lidí jíž využívá desky STM32, které poskytují větší výkon než klasické Arduino desky a jsou přitom i levnější.
V cečku už programuju asi deset let, ale dřív jsem byl spíš zarytým příznivcem Basicu a i dnes se kněmu rád vracím. Co na cečku a podobných jazycích se mi vůbec nelíbí a mám pocit, že více než aby zpřehlednovalo kod, tak způsobuje chaos a ztrátu času při ladění kodu, jsou složené závorky procedur a středníky na konci řádků. Před časem jsem, ale objevil jedno IDE pro Javu, které tento problém oproti jiným IDE řešilo geniálním způsobem a psaný kod se hned stával naprosto přehladný jako v žádným jiným IDE. Jedná se o BlueJ IDE pro Javu, které celý problém se závorky řeší, tak, že všechny procedůry označí modrým barevným pozadím, výsledek je nečekaně dobrý !!! Zde je odkaz na wiki o BlueJ, kde je i screenshot tohoto vývojového prostředí.: http://www.bluej.org/about.html . Některé IDE používají i odlišné barevné pozadí pro oblast definice proměných a INCLUDE, výsledný IDE pak bývají velice pěkný a přehledný. Mam tedy na autora EDRUINA otázku, zda by toto šlo aplikovat do jeho výtvoru ????
Zavedení Code Foldingu pro zobrazení struktůry programu, ale to je asi samozřejmost v přiští verzi IDE. Zde bych měk také návrh zkusit i zde použít různé barvy a tlustší čáry.
V menu IDE bych možná volil o něco jemnější ikony
Možnost vypnout zobrazování čísel řádků programu
V budoucích verzích by nebylo špatný zobrazovat i pinout vývojových desek s jednoduchým popisem pinůTo je zatim ode mě vše, ale hlavně držím autorovi při dalším vývoji palce a přeju, aby na tento vývoj našel nějaký volný čas.
Jardik
hcdady
ÚčastníkDobrý den, tak mě dorazily převodníky sice ty samé co už mám, ale to nevadí. Chtěl bych se zeptat jestli s nimi někdo nemá zkušenosti. Zapojil jsem je takto LV – 3.3V, HV – 5V, GND -GND, LV1 – 3,3V, a na HV1 když nic nepřipojím tak to ukazuje 5, ale když připojím mosfet tak mě to ukazuje jen 2,5V, ale mosfet to samozřejmě nesepne.
Nevíte náhodou co dělám špatně Davidtyp mosfetu
http://www.santy.cz/moduly-rele-c33/sa0269-i277/ (jen podotýkám, že sice píšou, že se dá ovládat 3,3V, ale podle mě to nejde, protože na unu to běží bez problémů ale na due ne a ne)posjirka
Účastníktady máš několik možností:
– buď jej vzít někde jako MP3 nahrávku a tu pak arduinem spouštět a výsledek měřit
– vygenerovat nějákým jednoduchým zapojením (te´d nevím jestli se šum na diodě projevuje jako růžový nebo bílý)
– vygenerovat jej z arduina pomocí nějákého algoritmu změny frekvence (nastavení čítače)
pár rychlých nálezů na netu:
http://www.instructables.com/id/White-noise-sound-machine-for-under-20/step3/Create-custom-white-noise/
http://arduino.stackexchange.com/questions/6715/audio-frequency-white-noise-generation-using-arduino-mini-pro
http://fritzing.org/projects/sleepduinojen poznámka: pokud použije arduino na generovaní šumu asi mu nezbude moc prostoru pro analýzu. Stejně bych radši použil Raspberry PI
BlindP
Účastník+1 Spuštění nového fóra, čím dřív tím líp.
Aleš
ÚčastníkJá to psal hned na začátku. Začněte s prázdným phpBB. Do starých témat už stejně nikdo nic nepíše, a nová témata se rozjedou na phpBB.
Zbyšek Voda
ÚčastníkMáte pravdu, tohle fórum není ideální.
S převodem jsme uvízli na mrtvém bodě.Taková teoretická otázka – jak moc by bylo user-unfriendly, kdybychom začali phpBB fórum úplně na novo a tohle fórum udělali jenom read-only?
BlindP
ÚčastníkProblém přetrvává, ukazuje to jiný čas na hlavní stránce, pod-stránce. Celé to vypisování posledních příspěvků je nešťastné. 🙂 Chybí celkový přehled nových příspěvků… btw jak dopadla nedávná anketa okolo fóra? Nějak to utichlo. 😀 Já jsem pro phpBB.
BlindP
ÚčastníkAhoj, tohle mi taky dělalo (arduino pro mini) – použil jsem jinou kartu, popř. adaptér. Na mega používám SD modul s default knihovnou bez problémů.
Attachments:
posjirka
Účastníkzátěž byl 1k takže cca 1mA ale nepředpokládám zhoršení když je jako oddělovač použitý OZ ze zpětnou vazbou
posjirka
Účastníktady je fotka pro 150/255 zvlnění tu velké, ale jak říkám stavěl jsem to z toho co bylo po ruce.
Attachments:
posjirka
Účastníktak jsem to dnes odzkoušel :
http://www.mikrocontroller.net/attachment/10061/pwm_to_analog.jpgzapojení jsem výrazně zjednodušil pro rychlou zkoušku (nebyl tam trimr, kapacity co přišli pod ruku, OZ by TL072, …) Trochu jsem měl strach z toho abych neodpáli Arduino, když PWM signál je spojný přes odpor z výstupem až 10V.
No výsledek je, že se mi to jevý jako funkční řešení, jen oddělit vstup arduinu od zbytku zapojení pomocí optočlenu.
dosáhl jsem rozsahu 0-9V (12V nájení) což při podmínkách testu je zcela vyhovující.
Linearitu jsem netestoval ale šlo mi o výslednou křivku. Testoval jsem nastavení 80/255, 150/255, 250/255 .
Zvlnění tam je Při 3 V to bylo cca 0,5V zvlnění ale používal jsem vstup s 500Hz PWM signálem. Se zvyšujícím se napětím zvlnění mizelo až při 9V mělo cca 0,1V.Attachments:
krkstex
ÚčastníkDobrý den,
co se týče Eurosteru tak mám kotel Atmos a ten má také odtahový ventilátor a je to OK.
V konstrukci řízení kotle jsem už postoupil. Zvolil jsem jinou platformu než Arduino ( Siemens Logo). Finišuji s programováním a pořád sháním někoho, kdo by mi pomohl se zbastlením čidel. Vím jaká čidla použít, ale nevím jak je pořádně zapojit a uchodit.posjirka
Účastníkřekl bych, že ten kondenzátor dělal impulz na zavření tranzistoru méně strmý/šikmý a tím pádem to mělo takový pozvolnější průběh. Je třeba to vyzkoušet, ale když jsem se díval na ten převodník na ebay tak mi připadjí ty součástky velmi podobné tomu c jsem zkoušel simulovat. Ono se to totiž prodává i u nás v ČR. :
http://www.c-n-c.cz/viewtopic.php?f=56&t=8650
http://www.cncshop.cz/prevodnik-pwm-na-0-10vv podstatě podle součástek podobné zapojení jako toto:
http://www.mikrocontroller.net/attachment/10061/pwm_to_analog.jpgjen to má navíc optočlenem oddělené .
Aleš
ÚčastníkNa pinech 5 a 6 je PWM 1kHz, na 9, 10, 11, a 3 jenom 500Hz takže by to teoreticky fungovat mohlo. I když mi teď osciloskop ukazuje na UNO jenom 977Hz 🙁
S tím zapojením kondenzátoru v bázi tranzistoru jsi měl pravdu. Napětí je stejné, mění se jenom šířka pulzů. Zajímavé ale je, že když ten kondenzátor vyhodím, tak se mi ventilátor z PC při některých hodnotách PWM netočí (zřejmě když jsem na nějaké harmonické frekvenci oscilátoru větráku), kdežto s kondenzátorem se točí plynule.
posjirka
Účastníkvšechno jde. Jen když se dívám na to řešení je docela „not friendly“ pro tuto funkci.
Kdyby spoužil celý krok pro otáčení a né půl kroky mohls to vše dělat ve smyčce Loop, jen posunem bitu a reagovalo by ti to kdy budeš potřebovat. Takto musíš použít před definicí proměnné příkaz „volatile“ ( https://www.arduino.cc/en/Reference/Volatile ) aby ti reagoval i v případě přerušení hlavní smyčky a nastavit přerušení na pin tlačítka ( https://www.arduino.cc/en/Reference/AttachInterrupt ). Toto přerušení přeruší hlavní program a vykoná funkci, na kterou se v definici přerušení odkazuješ. Až skončí tato funkce, smyčka hlavního programu se opět rozjede tam, kde skončila a v klidu pokračuje. Jen musíš hlídat aby se ti nezacyklila. To nastane, kdy funkce volaná přerušení trvá déle než interval mezi přerušeními. Můžeš dokonce ragovat zvlášť na na změnu stavu, na přechod na log. 0 a na přechod na log.1.posjirka
Účastníkto bude asi něco podobného. jen mám trochu obavy z té nominální frekvence. Tady uvádí 1-3kHz, arduino má defaultně cca 450Hz.
posjirka
Účastníkrád jsem pomohl 🙂
Aleš
ÚčastníkMyslím, že by to mělo fungovat. Tady je to za nějakých 125Kč, tak to kupte. To zase není tolik peněz. http://www.ebay.com/itm/172379919799
romansis
ÚčastníkPárové značky opraveny. SUPER, změna rychlosti funguje, ale projeví se až po projetí cyklu tam a zpět. Já bych potřeboval aby reakce na tlačítko byla okamžitá. Zatím díky moc.
Oldast
ÚčastníkDisplej začal fungovat,ale zobrazil číslo 255 a při minusových teplotách odečítal 255-teplotu čídla(-1=254).Tak jsem se podíval do příručky a změnil byte na int a už to jede tak jak má.Díky za vysvětlení a jdu pokračovat!
posjirka
Účastníkto bohužel není muj boj. Tuto část jsem převzal z tveho kodu.
NAUČTE SE POUŽÍVAT PÁROVÉ ZNAČKY „CODE“romansis
Účastníkzdravím, když nechám zkontrolovat tento kód tak sketch hlásí chybu.
for(int i=0;i<(uhel*64/45);i++){sutneosv
ÚčastníkDobrý den, omlouvám se, ale mám asi podobný problém s řízení kotle na tuhá paliva. Toto forum jsem našel náhodou, jak jste dopadl? povedlo se vám nějaké řízení dát zprovoznit?
Mám kotel Viessmann Vitoligno 100 (asi 7 roklů) odešlo řízení a obchodní zastoupení v Praze kde jsem poptával opraVU MLČÍ A MLČÍ, ZATÍM ŘÍDÍM KOTEL MANUELNĚ (TERMOSTAT NA ČERPADLO, REGULÁTOR OTÁČEK NA VENTILÁTOR) Ten regulátor Euroster 11 W jsem našel taky, mě by stačil ale podle popisu řídí dmychadlo, já mám odtahový ventilátor. Tak nevím, šlo by to „překopat“
děkuji za odpověď
SutnerZbyšek Voda
ÚčastníkNení zač, mějte se 🙂
Jerry
ÚčastníkOndro díky moc. Knihovnu jsem ani měnit nemusel jen jsem přepsal řádek
return 0; na 1 a displej funguje. Moje více něž týdenní trápení skončilo. Nevím jestli je to chyba i ostatních knihoven (ale asi ano protože jsem jich postahoval fůru), ale důležitý je, že se to vyřešilo a snad to pomůže i dalším se stejným problémem. Ještě jednou díky 🙂 -
AutorPříspěvky