Arduino micro + RTC

  • Keskustelun aloittaja Keskustelun aloittaja Sepi_
  • Aloitettu Aloitettu
Liittynyt
15.02.2021
Viestejä
20
Morjens. Ensimmäiseksi haluan sanoa että en edes omista ainuttakaan arduinoa, mutta tarkoitus olisi hankkia. Opiskelen ohjelmointia ja Javascript sekä Pythonin kirjoitus onnistuu joten uskon että ohjelmoinnin osalta saan kyllä lopulta homman toimimaan.

Törmäsin tämmöiseen ohjeeseen

Kyseinen setup kiinnostaisi sen edullisuuden takia, hintaa näyttäisi äkkiseltään tulevan n. 20€ ilman kaukosäätimiä ym.
Ainoana erona olisi että itse haluaisin tehdä tuon verhohjen noston ja laskun tiettyyn kellon aikaan ja tähän tarkoitukseen varmaan sopisi RTC moduuli? (Vaihtoehtoisesti hämäräkytkin? Voiko herkkyyttä säätää)?

Onko kukaan tehnyt vastaavaa RTC moduulilla joka on yhdistetty arduinon pro microon?
Teoreettisesti senhän ei tarvitse kuin lukea asetettu kellonaika RTC moduulista ja, kun kello lyö esim. 16.00 --> suorita funktio joka laskee verhot, ja sama toisinpäin aamulla, joten micron ei tarvitse koko ajan pyörittää while if loopia.

Mietin myös että mikä olisi paras tapa päivittää kellonaikaa jolloin haluaa verhojen laskevan ja nousevan, erityisesti kellojen siirto, ja talvella/kesällä saa olla kovasti eri aika nousulle ja laskulle.
 
Viimeksi muokattu:
Vähän sekalaisia ajatuksia tuohon:

Joissakin RTC-piireissä on hälytysmahdollisuus eli RTC ilmoittaa kun joku sille määritelty aika on ja sillä voi herättää mikrokontrollerin, muuten kontrollerin voi vaikka olla virransäästötilassa. Tuossa lähinnä voisi toimia sellainen että: Odota RTC:n hälytystä -> aja verho auki -> määritä uusi hälytysaika ja mene nukkumaan -> RTC herättää -> aja verho kiinni -> määritä hälytys jne.

Auringon nousu- ja laskuajoille on jotain laskentakaavojakin mutta voisi esimerkiksi tehdä jonkun lookup-taulun jossa olisi vaikka joka kuukaudelle tai viikolle omat ajat ja vaikka aina verhon ajelun jälkeen katsottaisiin taulukosta seuraava aika.

Tietty valoisuuden perusteellakin voisi tuota ajella, lukee ADC:lla LDR-vastuksen arvoa ja sen perusteella päättelee onko valoisaa vai pimeää. Tuohon kannattaa toki tehdä joku hystereesi ettei esim jonkun ötökän kävely anturin päältä tai ohiajavan auton valot saa verhoja heti liikkeelle.
 
Joissakin RTC-piireissä on hälytysmahdollisuus eli RTC ilmoittaa kun joku sille määritelty aika on ja sillä voi herättää mikrokontrollerin, muuten kontrollerin voi vaikka olla virransäästötilassa. Tuossa lähinnä voisi toimia sellainen että: Odota RTC:n hälytystä -> aja verho auki -> määritä uusi hälytysaika ja mene nukkumaan -> RTC herättää -> aja verho kiinni -> määritä hälytys jne.
Kuulostaa ihan hyvältä idealta virrankulutuksen suhteen. Luin myös lisäksi tuosta RTC moduulista ja se ilmeisesti pystyy myös lukemaan päivämääriä ja kuukausia joten sen voisi ns. hard koodata niin, että suurinpiirtein pimeinä kuukausina menee aikaisemmin kiinni
 
Toinen idea:
Unohda arduino ja laita esp8266.
Tässä helpottaa se että espn saa kiinni wifiin ja sitä kautta toimivan ntp:n jolloin ei tarvita rtc kelloa.
Plussana myös että voi tehdä setup- weppisivun jonka kautta syötetään asetukset ja voi vaikka säätää puhelimella verhoja niin kauan kuin on kiinni samassa wifissä esp:n kanssa.
Miinuksena vähän isompi virrankulutus jos pitää wifin koko ajan päällä.
Vaihtoehtoja tietysti löytyy, voi vaikka laittaa kytkimen joka kääntää wifin päälle/pois asetuksia varten tai ajastaa sen päälläolon hetkeksi kellon päivitystä varten.

Jos pysyt avr/arduino linjalla niin yksi mahdollisuus asetusten päivitykseen on sarjaportin kautta. Kännykällä onnistuu esim sarja-bluetooth adapterilla jolloin laite näkyy bt-sarjaporttina. Tässä pitää koodastaa sopiva "sarjakäyttöliittymä" asetuksille.
 
Toinen idea:
Unohda arduino ja laita esp8266.
Tässä helpottaa se että espn saa kiinni wifiin ja sitä kautta toimivan ntp:n jolloin ei tarvita rtc kelloa.
Plussana myös että voi tehdä setup- weppisivun jonka kautta syötetään asetukset ja voi vaikka säätää puhelimella verhoja niin kauan kuin on kiinni samassa wifissä esp:n kanssa.
Miinuksena vähän isompi virrankulutus jos pitää wifin koko ajan päällä.
Vaihtoehtoja tietysti löytyy, voi vaikka laittaa kytkimen joka kääntää wifin päälle/pois asetuksia varten tai ajastaa sen päälläolon hetkeksi kellon päivitystä varten.

Jos pysyt avr/arduino linjalla niin yksi mahdollisuus asetusten päivitykseen on sarjaportin kautta. Kännykällä onnistuu esim sarja-bluetooth adapterilla jolloin laite näkyy bt-sarjaporttina. Tässä pitää koodastaa sopiva "sarjakäyttöliittymä" asetuksille.
Ja itseasiassa esp32 ja muistaakseni myös esp8266 voi ohjelmoida samalla Arduino IDEllä kuin tuota Arduino Pro:ta joten jos haluaa käyttää pohjana tuota ohjetta niin sama koodi hyvinkin pitkälti käy. Toki jos tuon haluaa esim HomeAssistantin ohjaukseen niin noihin esp:ihin menee aika kivasti vaikkapa ESPhome.
 
Ja itseasiassa esp32 ja muistaakseni myös esp8266 voi ohjelmoida samalla Arduino IDEllä kuin tuota Arduino Pro:ta joten jos haluaa käyttää pohjana tuota ohjetta niin sama koodi hyvinkin pitkälti käy. Toki jos tuon haluaa esim HomeAssistantin ohjaukseen niin noihin esp:ihin menee aika kivasti vaikkapa ESPhome.

Sama ide käy, tosin kannattaa vaihtaa se arduinon oma johonkin vähän käyttökelpoisempaan :)

Ja jos esphome ei suoraan taivu tarpeeseen niin HA- integraation voi tehdä monella tavalla itsekin.
 
Espi keskusteluun lisäten Home Assistentin kanssa Tasmota -firmis (esp8266 laitteissa) ollut ehdoton jo vuosien ajan itsellä.
 
Tässä yksi ohje kaihdinohjauksen rakenteluun ESP-kontrollerilla. Tosin ei ole suoraan käyttökelpoinen, mutta voi siitä jotain ideaa repiä. Minulle mielenkiintoinen oli SDR-modulin käyttö.

Controlling Somfy roller shutters using an ESP32 and ESPHome

Tarjoaisin toisenkin linkin, jos vain nopeasti muistaisin sopivat hakusanat lähteen löytymiselle. Jokunen vuosi sitten tiirailin koodiesimerkkejä mikrokontrollerille, kuinka kontrollerin kellolla ("tickseillä") saa tehtyä ajastuksia. En muista enää edes, mikä kontrolleri oli kyseessä, mutta periaatteessa kontrolleri kuin kontrolleri ticksejä voi laskea, kontrollerin tiloista riippuen ticksit ovat eri pituisia ja kontrolleri tarjoaa ohjelmallisen herätyksen ticksien arvoilla, jos kontrolleri on ylipäätään herätettävissä.

Koodi sisälsi myös tapaukset, että kontrolleri ajetaan syvään virransäästötilaan. Periaate ilman RTC:tä olevalle kontrollerille on tietysti se, että ensimmäinen aikaan sidottu tapahtuma (event) täsmäytetään. Siitä eteenpäin kontrolleriohjelma laskee tickseillä ajastukset. Eli joko mikrokontrollerin käynnistyksen yhteydessä annat jollakin tapaa syötteen, kuinka pitkä aika on seuraavaan kääntöön, tai kontrolleri olettaa tapahtuma-ajan vaikka kontrollerin resetistä.

Tuosta tulee helposti vähän liikaa koodia ja mahdollisuuksia virheille, mutta onpahan todettu että ilman RTC:täkin voisi toteutuksen tehdä. Mielestäni jos tarve on toteuttaa vain yhden tai parin kaihtimen ohjaus, niin HA:t, MQTT:t ym. ovat täyttä overkilliä.

Auringon nousu- ja laskuaikojen laskenta on oma juttunsa. Itse olen käyttänyt avointa GitHub - risacher/sunwait: Sunwait calculates sunrise or sunset times with civil, nautical, astronomical and custom twilights, for use with Windows Task Scheduler or 'cron' on Linux. ohjelmaa omiin ohjauksiini. Ainakin siitä saa mallia ja on toimiva. Kesätalviaika laskennassa on pieni virhe.

Omien kokemusten perusteella auringon nousu- ja laskuaikojen käytöstä kaihtimien ohjaukseen (siis omaa kokemusta ei ole kaihtimien ohjaamisesta), että auringon nousu- ja laskuajat ovat liian epätarkka ohjaustieto. Joku kaihdin voi olla aamuauringossa ja toinen ilta-auringossa, mutta nousu- ja laskuaikojen laskenta todennäköisesti sulkee kaihtimet tai pitää niitä suljettuna, kun ihminen jo haluaa kaihtimet auki nauttiakseen auringon säteistä. Siksi hämäräanturi voisi olla parempi, mikä tekee myös toteutuksesta paljon helpomman (koodirivit). Tosin vaatinee enemmän kokeilua ja sopivien arvojen hakemista anturin arvoista tai jopa kahden anturin käyttöä.
 
Kiitokset ideoista, niitä tulikin sen verran että loppuviikko menee googletellessa ja muistiinpanoja kirjoitellessa. :thumbsup:
 
Yksi vaihtoehto on STM32F103C8T6 "Bluepill" joka sisältää RTC:n, hintaa kortilla Aliexpressistä 2,27€ vs. Pro Micro clone 5€. Bluepill ei sisällä bootloaderia, joten tarvii kaveriksi ohjelmointiin ST-Link V2 minin tai sitten ajaa bootloaderin sisään jolloin ohjelmointi Arduino IDE:llä usb:n kautta. ST Link V2 maksaa n.3€.
 

Statistiikka

Viestiketjuista
261 791
Viestejä
4 547 285
Jäsenet
74 849
Uusin jäsen
ookooo

Hinta.fi

Back
Ylös Bottom