Talaan ng mga Nilalaman:

Timer ng Orasan ng Arduino / madaling araw: 15 Hakbang
Timer ng Orasan ng Arduino / madaling araw: 15 Hakbang

Video: Timer ng Orasan ng Arduino / madaling araw: 15 Hakbang

Video: Timer ng Orasan ng Arduino / madaling araw: 15 Hakbang
Video: 7 projects Build LED LCD Alarm Clock using DS1307 with Arduino | Lesson 105 2024, Hulyo
Anonim
Arduino Dusk / madaling araw na Orasan ng Orasan
Arduino Dusk / madaling araw na Orasan ng Orasan

Buod:

Ang timer na nakabatay sa Arduino ay maaaring lumipat ng isang 220V na ilaw sa takipsilim, bukang-liwayway o tinukoy na oras.

Panimula:

Ang ilan sa mga ilaw sa aking bahay ay awtomatikong nakabukas sa takipsilim, hanggang sa isang paunang itinakdang oras o hanggang sa bukang-liwayway (buong gabi).

Ang lokasyon ng mga ilaw ay hindi pinapayagan ang paggamit ng isang light sensor. Ang regular na magagamit na mga timer ng orasan ay nakabukas sa isang tukoy na oras. Upang mag-on sa paligid ng takipsilim samakatuwid ay nangangailangan ng regular na pag-aayos ng setting ng timer program.

Bilang isang magandang hamon, nagpasya akong bumuo ng isang pasadyang Arduino batay sa stand alone na timer sa halip. Gumagamit ito ng isang real time na orasan at ang Dusk2Dawn library upang matukoy ang oras kung saan dapat buksan o patayin ang mga ilaw. Ang enclosure para sa timer na ito ay naka-print na 3D at maaaring matagpuan sa Thingiverse. Ang Arduino code para sa proyektong ito ay matatagpuan sa GitHub.

Sa paglikha ng timer na ito nakakuha ako ng inspirasyon mula sa maraming mga disenyo at circuit sa internet. Salamat sa lahat ng mga nag-ambag na hindi malinaw na nabanggit.

Para sa kakayahang mabasa ang bahagyang mga diagram ay ipinapakita sa mga hakbang kung saan kinakailangan, sa halip na isang kumpletong diagram ng circuit.

Mga kahaliling solusyon:

Sa halip na isang solong timer, maraming mga solusyon kung saan ang isang matalinong sistema ng pag-aautomat sa bahay ang pinapatnubayan ang mga ilaw. Ang layunin ko ay magkaroon ng isang independiyenteng solusyon, hindi iyon nakasalalay sa pagkakakonekta ng WIFI (o iba pa).

Mga Paghihigpit:

Ang code na ibinigay kasama ng proyektong ito ay may kasamang isang pagpapatupad ng mga pagbabago sa pag-save ng daylight batay sa European daylight save system.

Hakbang 1: Listahan ng Mga Bahagi at Mga Tool

Listahan ng Mga Bahagi at Mga Tool
Listahan ng Mga Bahagi at Mga Tool

Mga Bahagi:

Kabuuang mga gastos sa bahagi (hindi kasama ang 3d print) humigit-kumulang € 30, -.

  • Arduino Nano V3 (katugma) nang walang mga header
  • Pag-supply ng kuryente 5V 0.6A (34 x 20 x 15mm)
  • Solid-state relay 5V - Aktibo na mababa - 2A 230VAC
  • Oras ng real time DS3231 (maliit)
  • 0.96”OLED display SPI 128 * 64 pixel
  • Rotary encoder - EC11 - 20mm
  • Knob 6mm shaft 15mm * 17mm
  • Naka-print na circuit board ng Breadboard,
  • 4 * M3x25mm screws
  • 3d na naka-print na enclosure
  • Heat-shrink tubing
  • Mga wire
  • Screw terminal block (upang ikonekta ang mga walang kinikilingan na mga wire)

Mga kinakailangang tool:

  • Panghinang
  • Wire ng Solder
  • Bumabagsak na bomba
  • Mga Striper ng Wire
  • Mga pamutol
  • 3D printer (upang mai-print ang enclosure)
  • Iba't ibang Maliit na Kasangkapan

BABALA

Gumagana ang circuit na ito sa 230v AC at kung hindi ka sanay sa pagtatrabaho sa boltahe ng mains o walang sapat na karanasan sa pagtatrabaho sa 230v AC Mains Voltage mangyaring manatili ka sa proyektong ito

Ipinapalagay kong walang responsibilidad para sa anumang pagkawala o pinsala na nagmumula nang direkta sa labas o bilang isang resulta ng pagsunod sa proyektong ito

Palaging pinapayuhan na mag-ingat ng wasto at pag-iingat habang nagtatrabaho sa AC Mains

Hakbang 2: Maghanda ng OLED Display at Real Time Clock

Maghanda ng OLED Display at Real Time Clock
Maghanda ng OLED Display at Real Time Clock

Ang naka-print na enclosure ng 3D ay dinisenyo para sa kaunting sukat. Bilang isang resulta, ang mga header ng OLED display at real time na orasan ay kailangang alisin.

Bilang paghahanda para sa susunod na hakbang, limasin ang anumang natitirang panghinang mula sa mga butas gamit ang namamalaging pump.

Hakbang 3: Maghanda ng Rotary Encoder

Maghanda ng Rotary Encoder
Maghanda ng Rotary Encoder

Ang rotary encoder ay may mga mahihinang konektor. Upang maiwasan ang pinsala, i-mount ang isang piraso ng naka-print na circuit board sa encoder.

Sa larawan ang koneksyon sa lupa (sa itaas na kanan at gitnang ilalim) ay handa na rin.

Tandaan: Tiyaking ang rotary encoder na may naka-print na circuit board ay umaangkop sa enclosure nang hindi hinawakan ang Arduino. Maaaring kailanganin upang gilingin ang naka-print na circuit board upang makakuha ng isang masarap na sukat.

Hakbang 4: Enclosure

Enclosure
Enclosure
Enclosure
Enclosure

I-print ang tatlong bahagi ng enclosure gamit ang isang 3d printer. Sumangguni sa mga tagubilin sa Thingiverse.

Hakbang 5: Huwag paganahin ang Arduino Power LED (opsyonal)

Huwag paganahin ang Arduino Power LED (opsyonal)
Huwag paganahin ang Arduino Power LED (opsyonal)

Upang maiwasan ang pagkakaroon ng isang berde na glow sa timer, ang LED power ng Arduino ay maaaring hindi paganahin.

Tandaan na ang pagbabago na ito ay opsyonal.

Ang pagbabago sa Arduino Nano ay binubuo ng pag-alis ng resistor sa tabi ng pinangungunahan ng kuryente (tingnan ang pulang bilog sa larawan).

Hakbang 6: Power Supply + Solid State Relay

Power Supply + Solid State Relay
Power Supply + Solid State Relay

Sa hakbang na ito ang power supply at solid-state relay ay pinagsama at naka-mount sa ilalim na bahagi ng enclosure.

Ang mga koneksyon sa pagitan ng suplay ng kuryente at ng relay ay ginagawa sa ilalim ng mga sangkap na ito. Ang block terminal block ng relay ay gagamitin upang kumonekta sa Arduino.

Tandaan: Kapag gumagawa ng mga koneksyon, tiyakin na ang mga tumataas na butas ng solidong estado na relay ay pinananatiling libre.

  • Maghinang ng isang koneksyon wire sa pagitan ng solidong estado ng relay A1 sa isa sa mga koneksyon ng AC ng suplay ng kuryente
  • Maghinang ng isang kawad sa iba pang koneksyon sa AC ng suplay ng kuryente (makakonekta ito sa walang kinalaman sa terminal ng terminal ng tornilyo sa hakbang 7)
  • Maghinang ng isang wire sa pagitan ng power supply -Vo upang i-relay ang DC-
  • Maghinang ng isang kawad upang ikonekta ang supply ng kuryente + Vo upang i-relay ang DC +

Tandaan: Maaaring kailanganin upang paikliin ang mga lead sa supply ng kuryente at i-relay upang magkasya sa enclosure.

Hakbang 7: Arduino Nano + Power Supply + Solid-state Relay

Arduino Nano + Power Supply + Solid-state Relay
Arduino Nano + Power Supply + Solid-state Relay

Sa hakbang na ito, ang Arduino Nano ay konektado sa power supply at solid-state relay.

  • Gupitin ang dalawang wires na humigit-kumulang na 70mm ang haba. I-strip ang 30mm ng paghihiwalay sa isang gilid, at 4mm sa kabilang panig.
  • Paghinang sa gilid na may 30mm na hinubaran na paghihiwalay sa Arduino + 5V at GND, na may dumikit na kawad
  • Gupitin ang dalawang tubong nagpapababa ng init na may haba na 20mm at i-mount ang mga ito sa 25mm na natanggal na bahagi. Inihihiwalay nito ang mga wire hanggang sa koneksyon sa mount screw terminal block DC + at DC- ng solid-state relay.
  • Tandaan na ang mga wire para sa GND at + 5V ay kailangang tumawid upang kumonekta nang tama sa relay screw terminal block.
  • Gupitin ang isang kawad na humigit-kumulang na 40mm haba at i-strip ang 4mm ng paghihiwalay ng parehong mga dulo. Maghinang ng isang gilid sa koneksyon ng A2 sa BACKSIDE ng Arduino, at ikonekta ang kabilang panig sa koneksyon ng CH1 ng solid-state mount terminal block.

BABALA

Ang Arduino ay pinalakas nang direkta mula sa matatag + 5V power supply sa halip na gamitin ang Arduino internal power regulator. Samakatuwid, hindi ligtas na ikonekta ang USB kapag ang Arduino ay tumatanggap ng lakas mula sa power supply.

Palaging idiskonekta ang mga mains ng 230VAC bago gamitin ang koneksyon ng Arduino USB.

Hakbang 8: Arduino Nano + Real Time Clock

Arduino Nano + Real Time Clock
Arduino Nano + Real Time Clock

Sa hakbang na ito ang real time na orasan ay konektado sa Arduino, bahagyang sa pamamagitan ng paggamit ng mga kable na inihanda sa nakaraang hakbang.

  • Paghinang ng kawad na nagmumula sa Arduino GND (nakakonekta din sa DC- ng relay) sa ‘-‘ng real time na orasan.
  • Paghinang ng kawad na nagmumula sa Arduino + 5V (nakakonekta din sa DC + ng relay) sa ‘+’ ng real time na orasan.
  • Gupitin ang dalawang mga wire na humigit-kumulang na 40mm haba at i-strip ang 4mm ng paghihiwalay ng parehong mga dulo.
  • Maghinang ng isang kawad sa pagitan ng Arduino A4 at real time na orasan D (SDA).
  • Maghinang ng isang kawad sa pagitan ng Arduino A5 at real time na orasan C (SCL).
  • Ihugis ang mga wire ng real time na orasan upang matiyak na hindi sila makagambala sa rotary encoder. Para sa mga ito, ang mga wire ay kailangang nasa ilalim ng enclosure.

Hakbang 9: Ikonekta ang OLED Display

Ikonekta ang OLED Display
Ikonekta ang OLED Display

Sa hakbang na ito ang display ng OLED SPI ay idinagdag sa Arduino.

  • Gupitin ang 2 wires na haba ng 65mm at i-strip ang 4mm ng paghihiwalay ng parehong mga dulo.
  • Maghinang ng isang kawad sa koneksyon ng GND ng OLED display. Ihihinang ang kawad na ito sa tubong nakahiwalay sa init na nakahiwalay na wire na nagmumula sa Arduino GND (sumangguni sa hakbang 4) at ikonekta ang parehong mga wire sa DC-mount screw terminal block ng solid-state relay.
  • Maghinang ng isang wire sa koneksyon ng VCC ng OLED display. I-solder ang kawad na ito sa tubong nakahiwalay sa init na nakahiwalay na wire na nagmumula sa Arduino + 5V (sumangguni sa hakbang 4) at ikonekta ang parehong mga wire sa DC + mount screw terminal block ng solid-state relay.
  • Gupitin ang 5 mga wire na 65mm ang haba at i-strip ang 4mm ng paghihiwalay ng parehong mga dulo.
  • Maghinang ng isang kawad upang ikonekta ang D0 (CLK) sa Arduino D10
  • Maghinang ng isang kawad upang ikonekta ang D1 (MOSI / DATA) sa Arduino D9
  • Maghinang ng isang kawad upang ikonekta ang RES (RT) sa Arduino D8
  • Maghinang ng isang kawad upang ikonekta ang DC sa Arduino D11
  • Maghinang ng isang kawad upang ikonekta ang CS sa Arduino D12

Tandaan: Ang pagkakasunud-sunod ng mga display wire ay hindi lohikal. Ito ang resulta ng unang paggamit ng halimbawa ng Adafruit, at pagkatapos ay pagbabago ng mga koneksyon dahil ang paggamit ng mga resulta ng D13 sa isang pulang LED sa Arduino sa lahat ng oras.

Kahalili

Posibleng gumamit ng isang 'normal' na order para sa mga koneksyon sa SPI. Para sa mga ito, ang kahulugan ng digital na output ng programa ng Arduino sa oledcontrol.cpp dapat ayusin nang naaayon:

// Paggamit ng software SPI

// mga kahulugan ng pin

# tukuyin ang CS_PIN 12

# tukuyin ang RST_PIN 8

# tukuyin ang DC_PIN 11

# tukuyin ang MOSI_PIN 9

# tukuyin ang CLK_PIN 10

Hakbang 10: Rotary Encoder

Rotary Encoder
Rotary Encoder

Ipinapakita ng diagram ang mga koneksyon ng Arduino sa rotary encoder (nakikita ang encoder mula sa itaas).

  • Gupitin ang 4 na mga wire ng 45mm at i-strip ang 4mm ng paghihiwalay ng parehong mga dulo.
  • Ikonekta ang Arduino GND sa kanang tuktok at ibabang gitnang konektor ng encoder
  • Ikonekta ang Arduino D2 sa ibabang kaliwa ng encoder
  • Ikonekta ang Arduino D3 sa kanang ibaba ng encoder
  • Ikonekta ang Arduino D4 sa kaliwang tuktok ng encoder

Hakbang 11: Pag-install sa Enclosure

Pag-install sa Enclosure
Pag-install sa Enclosure

I-install ang lahat ng mga electronics sa ilalim na bahagi ng enclosure:

  • I-slide ang Arduino sa patayong slot
  • I-slide ang real time na orasan sa ilalim ng kompartimento
  • I-slide ang supply ng kuryente at i-relay sa tuktok na kompartimento, tiyakin na ang relay ay nakaupo sa mga bundok nito.

Hakbang 12: Kumokonekta sa Mains / Light na Mapapalitan

Kumokonekta sa Mains / Light na Mapapalitan
Kumokonekta sa Mains / Light na Mapapalitan
Kumokonekta sa Mains / Light na Mapapalitan
Kumokonekta sa Mains / Light na Mapapalitan

BABALA

Siguraduhin ang pagkuha ng wastong pangangalaga at pag-iingat habang nagtatrabaho sa AC Mains, tiyakin na ang AC Mains ay naka-disconnect

Ipinapalagay kong walang responsibilidad para sa anumang pagkawala o pinsala na nagmumula nang direkta sa labas o bilang isang resulta ng pagsunod sa proyektong ito

  • Ikonekta ang yugto ng AC Mains sa A1 (kaliwa) na tornilyo ng terminal block ng relay.
  • Ikonekta ang yugto ng ilaw upang mailipat sa B1 (kanan) tornilyo terminal block ng relay.
  • Gumamit ng isang hiwalay na bloke ng terminal ng tornilyo upang ikonekta ang AC mains neutral wire, ang light neutral wire at ang neutral wire ng power supply.
  • Para sa kaluwagan sa pilay, i-mount ang isang balot ng kurbatang sa paligid ng bawat isa sa mga kable ng kuryente.

Hakbang 13: Tinatapos ang Enclosure

Tinatapos ang Enclosure
Tinatapos ang Enclosure

Sa hakbang na ito ang pag-mount sa enclosure ay nakumpleto

  • I-slide ang OLED display sa pamamagitan ng display mounting hole sa gitnang bahagi ng enclosure.
  • I-slide ang rotary encoder sa butas sa gitnang bahagi, tiyakin na ang mga linya ng anti-rotation ay pataas. I-mount ang rotary encoder gamit ang kasama na washer at nut.
  • I-mount ang tuktok na bahagi ng enclosure at isara ang enclosure sa pamamagitan ng pag-mount ng apat na M3x25mm na mga tornilyo mula sa ibaba.

Hakbang 14: Programming ang Arduino

BABALA

Ang Arduino ay direktang pinalakas mula sa matatag + 5V power supply sa halip na gamitin ang Arduino internal power regulator. Samakatuwid, hindi ligtas na ikonekta ang USB kapag ang Arduino ay tumatanggap ng lakas mula sa power supply.

Palaging idiskonekta ang mga mains ng 230VAC bago gamitin ang koneksyon ng Arduino USB.

Kunin ang Arduino timer program mula sa GitHub.

Ang program na ito ay gumagamit ng Arduino IDE, na maaaring makuha rito.

Gumagamit ang programa ng sumusunod na karagdagang mga aklatan:

SSD1303Ascii

Aklatan ng Arduino Wire

Tandaan na ang dusk2dawn library ay ginagamit din, ngunit kasama bilang code dahil sa isang pagbabago sa interface nito.

Upang matiyak ang tamang pagkalkula ng takipsilim / madaling araw, dapat itakda ang longitude at latitude at time zone.

Tulad ng inilarawan sa halimbawa ng dusk2dawn, isang madaling paraan upang mahanap ang longitude at latitude para sa anumang lokasyon ay upang mahanap ang lugar sa Google Maps, i-right click ang lugar sa mapa, at piliin ang "Ano ang narito?". Sa ibaba, makakakita ka ng isang card na may mga coordinate.

Angitude at latitude ay hardcoded sa programa, sa Dusk2Dawn.cpp linya 19 at 20:

/ * Dapat itakda dito ang latitude at longtitude ng iyong lokasyon.

* * Pahiwatig: Ang isang madaling paraan upang mahanap ang longitude at latitude para sa anumang lokasyon ay * upang mahanap ang lugar sa Google Maps, i-right click ang lugar sa mapa, at * piliin ang "Ano ang narito?". Sa ibaba, makakakita ka ng isang card na may mga * coordinate. * / # tukuyin ang LATITUDE 52.097105; // Utrecht #define LONGTITUDE 5.068294; // Utrecht

Ang time zone ay hardcoded din sa linya ng Dusk2Dawn.cpp 24. Bilang default na nakatakda ito sa Netherlands (GMT + 1):

/ * Ipasok ang iyong timezone (offset sa GMT) dito.

* / # tukuyin ang TIMEZONE 1

Kapag pinaprogram ang Arduino sa kauna-unahang pagkakataon, ang memorya ng EEPROM ay kailangang gawing una. Para sa mga ito, baguhin ang linya ng timer.cpp 11 upang gawin ang pagsisimula ng EEPROM:

// baguhin sa totoo para sa first time program

# tukuyin ang INITIALIZE_EEPROM_MEMORY mali

I-upload ang programa sa Arduino at i-boot ang Arduino.

Huwag paganahin ang pagsisimula ng EEPROM at i-upload muli ang programa sa Arduino. Matatandaan ngayon ng timer ang mga setting ng oras ng switch kapag na-reboot.

Hakbang 15: Pag-set up ng Oras at Paglipat ng Oras

Mga konsepto ng pakikipag-ugnayan ng gumagamit:

  • Ginagamit ang maikling press upang kumpirmahin ang mga napili. Bukod dito, sa pangunahing screen ng timer ang isang maikling pindutin ang nagpapalit ng ilaw o naka-off.
  • Ginamit ang mahabang pindutin upang ipasok ang menu mula sa pangunahing screen ng timer. Kahit saan sa menu, ang isang mahabang pindutin ay babalik sa pangunahing timer screen.
  • ‘>’ Seleksyon cursus. Ipinapahiwatig ng cursor na ito ang napiling pagpipilian sa isang menu.

Pangunahing timer screen

Ipinapakita ang pangunahing screen ng timer:

Araw ng linggo Su

Kasalukuyang oras 16:00

Kasalukuyang estado ng timer at susunod na oras ng switch Timer OFF hanggang 17:12

Dawn at dusk time Dawn 08:05 Dusk 17:10

Ang pagtatakda ng tamang oras

Pindutin nang matagal upang ipasok ang menu. Ipinapakita ang mga sumusunod na pagpipilian:

BackSet timeWeek day programWeekend programOptions

Piliin ang itinakdang oras upang maitakda ang petsa at oras ng real time na orasan. Ipasok ang mga tamang halaga para sa:

YearMonthDayTime

Awtomatikong tinutukoy ng timer ang araw ng linggo. Ang paglipat ng oras ng pag-save ng daylight ay awtomatiko ring tapos. Ang pag-save ng daylight ay ipinatupad para sa European timezone lamang.

Pagtatakda ng timer program

Ang timer ay mayroong 2 mga programa, isa para sa mga araw ng linggo, isa para sa katapusan ng linggo. Tandaan na ang Biyernes ay itinuturing na bahagi ng katapusan ng linggo, ang mga ilaw ay maaaring manatili nang medyo mas mahaba.

Ang bawat timer ay may switch on at patayin ang sandali. Ang sandali ay maaaring maging:

  • Oras: Eksaktong tinukoy na oras
  • Dawn: Lumipat batay sa kinakalkula na oras ng madaling araw
  • Dusk: Lumipat batay sa kinakalkula na oras ng takipsilim

Para sa dapit-hapon at bukang-liwayway posible na magpasok ng halaga ng pagwawasto ng 59 minuto bago o pagkatapos.

Mga halimbawa:

Upang patayin ang isang ilaw sa buong gabi, piliin ang switch on (dusk + 10min), patayin sa (madaling araw - 10min)

Upang buksan ang isang ilaw sa gabi, piliin ang pag-on sa takipsilim, patayin sa oras: 22:30.

Mga pagpipilian

Sa screen ng mga pagpipilian ang isang pag-timeout ay maaaring itakda para sa paglipat ng screen.

Kapag ang screen ay naka-off, ang pagpindot sa rotary encoder knob ay babalik sa pangunahing screen ng timer.

Inirerekumendang: