Sadržaj:
- Korak 1: Pregled hardverskih elemenata
- Korak 2: Pregled softvera
- Korak 3: Lista dijelova
- Korak 9: Dizajn i pisanje koda
- Korak 10: Instalirajte program
- Korak 11: Sastavite mjerač vremena
- Korak 12: Integracijsko testiranje
- Korak 13: Završne misli
Video: Multi-timer W/ Vanjska kontrola: 13 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:05
Ovaj projekat Instructable je višenamjenski mjerač vremena
Tajmer može funkcionirati kao:
- Alarm opće namjene s mogućnošću odabira vremena između 1 sekunde i +90 sati. Odbrojavanje sa zvučnim alarmom i/ili kontrolom vanjskog uređaja do završetka, zatim odbrojavanje vremena od alarma.
- Tajmer za drijemanje sa 7 vremena za odabir, odbrojavanjem i alarmom po završetku.
- Tajmer za meditaciju s 4 vremena za odabir, s odbrojavanjem i kratkim cvrkutom po završetku, odbrojavanje s još jednim cvrkutom 5 minuta nakon toga.
Ovaj projekat može biti izgrađen na opisani način ili modifikovan tako da odgovara. Prethodno sam izgradio mjerač vremena s ovom funkcijom i koristio ga u svom prvom Instructable -u za kontrolu kutije za izlaganje UV zračenju.
Mislio sam da mogu samo objaviti originalne dizajne programa i ploča. Međutim, iz nekog razloga nisam mogao pronaći kod. Također sam želio poboljšati hardver kako bih upravljačke krugove učinio fleksibilnijim i smanjio trošenje baterije. Dobiveni redizajn glavne ploče i ponovno pisanje koda pruža priliku za raspravu o pristupu programiranju i dizajnu hardvera.
Kad god stvorim pločicu, često ustanovim da postoje nedostaci u dizajnu ili postavljanju komponenti. Ploče koje gradim također su jedna od dvije mogućnosti. Osim toga, samo volim biti uključen u sve aspekte projekta od početka do kraja. Ovo su neki od razloga zašto ja izrađujem vlastite ploče radije nego da šaljem Gerberove datoteke u inozemstvo na proizvodnju. Možda sam samo star i zaglavljen u svojim putevima. Ovaj projekat odražava ovu pristrasnost. Budući da izrađujem vlastite ploče, moji dizajni i datoteke Gerber ne zadovoljavaju proizvodne standarde, nisam uključio ove datoteke. Oni koji ne žele urezati i dovršiti ploče, dobrodošli su da pripreme vlastite dizajne i objave Gerber datoteke u odjeljku za komentare. Molimo vas da vaše ploče budu proizvedene i testirane prije objavljivanja.
Korak 1: Pregled hardverskih elemenata
Uređaj se napaja sa 4 AAA baterije i kontrolira ga Arduino Pro Mini 5V.
Mali zvučni signal/zvučnik daje zvučni alarm.
Minijaturni relej od 5 V osigurava upravljačke napone vanjskim uređajima. Fleksibilnost je osigurana u izvoru ovog izlaza upravljačkog napona.
Rotacijski davač s pritiskom na gumb omogućuje izbor menija.
OLED ekran i trenutni prekidač za pokretanje/zaustavljanje upotpunjuju korisničko sučelje.
Dodatni elektronički hardver sastoji se od SPDT prekidača za napajanje i minijaturne telefonske utičnice za povezivanje s vanjskim uređajima.
Osim toga, nalaze se i datoteke koje će vam pomoći u ovom projektu:
STL datoteke za 3D štampani kovčeg projekta.
Slike maski od bakra i lemljenja za jetkanje i završnu obradu upravljačke ploče i rotacijskog davača.
Šematski prikaz i slike na ploči kao referenca za one koji žele izmijeniti moj dizajn.
Možda ćete htjeti pregledati moj Instructable o stvaranju dvostranih ploča kao primjer kako se to radi.
Korak 2: Pregled softvera
Uz izvorne datoteke Arduina, neke dodatne informacije koje bi mogle biti korisne.
Biblioteke za kontrolu hardvera koriste se kada su dostupne (odbijanje gumba, OLED kontrola, očitavanje rotacijskog kodera).
Program implementira jednostavnu mašinu konačnih stanja (FSM) za kontrolu izvršavanja koda kao naredbe switch u funkciji petlje.
Klasa menija je definirana tako da dopušta odabir prikazanih opcija na OLED -u i odabir pomoću rotacijskog kodera.
Unos se implementira direktnim prozivanjem (bez prekida) jer nije vremenski kritičan i čini kod jasnijim.
Ispisi ispisa na Serial se koriste za pomoć u praćenju izvršavanja koda i otklanjanja grešaka
Različite vrste elemenata programske strukture, uključujući:
- Više kartica koda za izolaciju nekih hardverskih kontrolnih funkcija i varijabli.
- Prebacite naredbe za postavljanje vrijednosti stanja (FSM) i kontrolnih varijabli.
- Definicija strukture
- Nabrajanja za omogućavanje dodjeljivanja vrijednosti stanja kao teksta.
- #define predprocesorske definicije za hardverske pin i standardne vrijednosti.
Korak 3: Lista dijelova
Nisam bio siguran gdje bih stavio ovaj korak jer se to može učiniti u bilo kojem trenutku. Koristio sam kutiju sa 3D printanim kućištem. Možda nemate pristup 3D pisaču ili preferirate drugu vrstu kućišta, poput aluminijske kutije, laserski rezane plastike, ručno rezbarenog drva ili druge vrste koju koristite za svoje elektroničke projekte. Uključio sam STL datoteke za gornju, donju, okretnu tipku kodera i OLED okvir. Pomoću ovih datoteka i rezača po vašem izboru stvorite gcode datoteke za svoj pisač.
Ispisujem sve dijelove koristeći PLA nit, jednu boju za gornju i donju stranu kućišta, drugu kontrastnu za gumb i okvir (koji je zalijepljen na vrh.) Neću navoditi sve postavke rezača, već upotrijebite Tri -Šesterokutna ispuna od najmanje 35% kako bi se omogućilo lupkanje kutnih vijaka i postavka "bez oslonca" za čitanje urezanih slova. Štampao sam kutiju koristeći normalnu visinu sloja svojih štampača.
Korak 9: Dizajn i pisanje koda
Ovaj korak nije obavezan, ali se preporučuje za bolje razumijevanje.
Najveći dio napora u smislu sati je pisanje koda. Ovaj korak možete preskočiti ako priložen program koristite kao -is. Predlaže se, međutim, da odvojite vrijeme za pregled koda radi boljeg razumijevanja ili izmjena kako biste zadovoljili svoje potrebe.
Sljedeći komentari mogu biti od pomoći u razumijevanju ovog procesa.
- Komentari- Opširno komentirajte dok idete - često pišem komentare prije nego što napišem kôd.
- Podijeli i osvoji - koristi funkcije, klase i module (tabovi.) Koristi česte kompilacije (Provjeri) za provjeru sintakse. Otklanjanje grešaka - Koristite ispisne izjave za provjeru protoka i vrijednosti ispitivanja i hardverskih sučelja. Ne bojte se riješiti probleme dok idete, nitko ne piše kôd bez grešaka!
- Konstante - #define upute predkompilatora dodjeljuju imena pin brojevima. Definicije varijabli const s komentarima smanjuju ili eliminiraju "čarobne" brojeve. Upotreba konstanti koje se nalaze na početku programa ili funkcije omogućuju promjenu parametara bez prepisivanja koda
- Unaprijed definirane biblioteke - Korištenje unaprijed definiranih biblioteka smanjuje opterećenje programiranja i vrijeme otklanjanja grešaka.
- Dizajn blokovi - Kreirani korištenjem funkcija, izoliranje koda u zasebnim karticama (pridruženi programi i.h datoteke), nabrajanja, klase i strukture. Fokusirajte svoju pažnju na svako od njih kako biste razumjeli kako oni rade u odnosu na ostatak koda.
- Državni strojevi - Ovo je programski uzorak koji odlično funkcionira s Arduinosom ili bilo kojim programom koji se koristi za kontrolu izlaza ili reagiranje na ulaze. Postoji nekoliko okusa državnih mašina. Ovaj kôd koristi stroj stanja na temelju naredbe switch u funkciji petlje. Ovaj obrazac je jednostavan za razumijevanje i otklanjanje grešaka.
- Zaslon i izbornici - OLED izlaz je sažet, ali pruža dovoljno povratnih informacija za obične korisnike i podržava odabir opcija. Dobro se integrira sa državnom mašinom (gotovo sve države imaju pridruženi OLED ekran). Klasa Menu je bila od pomoći pri izolaciji koda za prikaz i odabiru opcija menija
Pročitajte program nekoliko puta. Pomaže pri preuzimanju jedne funkcije ili odjeljka odjednom. Često ne razumijem kod koji sam napisao ako ga nisam pročitao barem dva puta!
Korak 10: Instalirajte program
Kopirajte priloženu datoteku na računalo, a zatim je otpakirajte u direktorij Sketches
Povežite Arduino s računalom i preuzmite programski kod na uobičajen način. Otvorite Arduino IDE serijski monitor da provjerite radi li program i pomozite u otklanjanju grešaka.
Korak 11: Sastavite mjerač vremena
Nakon što se gornji i donji dio kućišta odštampaju i očiste, komponente se mogu pričvrstiti malim samoreznim plastičnim vijcima. Prvo se držač baterije ugura u stražnju stranu. Ostali dijelovi su pričvršćeni na vrh kućišta sljedećim redoslijedom:
- OLED i kabl
- Start/stop prekidač i ožičenje
- Rotacijski davač i kabel
- Zvučnik / zujalica i ožičenje
- Vanjska upravljačka utičnica i ožičenje
- Klizni prekidač za uključivanje/isključivanje i ožičenje (provjerite da li je orijentacija u željenom smjeru
Ako lemite kabele direktno na ploču, učinite to nakon što su svi dijelovi pričvršćeni na kućište kako biste smanjili prekid žice. Sačekajte da se kablovi povežu sa glavnom pločom pre nego što je pričvrstite sa zadnje strane.
Ako koristite pin zaglavlja i Dupont konektore, prvo pričvrstite matičnu ploču na stražnju stranu pomoću vijaka, a zatim spojite komponente. Budite oprezni kada priključujete bateriju na glavnu ploču i pazite na pravilan polaritet. U tom trenutku trebate postaviti i kratkospojnike za upravljanje relejem ili ožičenje.
Donji dio kućišta povezuje se s vrhom pomoću 4-40 vijaka za okrugle glave, po jedan u svakom kutu. Četiri rupe na vrhu treba ili lupkati slavinom 4/40 ili ako koristite 4-40 umetka s navojem, morat ćete izbušiti rupe da biste ih prihvatili. Također je potrebno izbušiti 4 rupe za montažu glavne ploče na dnu. Pričvrstite ovu ploču na držač za bateriju i označite lokacije rupa. Izbušite prema potrebi za svoje pričvrsne vijke.
Korak 12: Integracijsko testiranje
Konačno (integracijsko) testiranje postiže se isprobavanjem svih opcija izbornika i provjerom radi li s hardverom kako je dizajnirano. Za kôd koji sam naveo to bi trebalo biti dovoljno. Ako ste napisali vlastiti kôd ili izmijenili moj, vaše će testiranje morati biti opsežnije. Ne vjerujem da je potrebno izvršiti sve odabire vremena, ali morate isprobati sve standardne opcije alarma i potvrditi da alarmi za spavanje i meditaciju rade kako je dizajnirano.
Korak 13: Završne misli
Čestitam na uspješnom, nadam se, projektu. Siguran sam da ste na putu naišli na probleme koje ste trebali riješiti. Takođe sam siguran da su neka moja uputstva mogla biti potpunija ili jasnija. Obavijestite me kroz odjeljak komentara koji su vaši rezultati i dajte prijedloge kako se ova uputstva mogu poboljšati.
Hvala vam na vremenu pregledavanja i/ili izgradnje ovog projekta.
Preporučuje se:
NEVEROVATNA DIY vanjska LED lampa sa solarnim napajanjem: 9 koraka
NEVEROVATNA DIY vanjska LED lampa sa solarnim napajanjem: Zdravo! U ovom Instructable-u možete naučiti kako izgraditi jeftinu i laku LED lampu na solarni pogon! Puni bateriju danju, a noću pali jako jarku LED diodu! Samo slijedite korake! Možeš ti to! Zaista je jednostavno i zabavno! Ovaj des
Vanjska litij-ionska baterija za digitalne fotoaparate: 12 koraka (sa slikama)
Vanjska litij-ionska baterija za digitalne fotoaparate: Vanjska baterija je korisna za snimanje dodatnih fotografija i video zapisa jer imaju veći kapacitet od LiPo baterija koje se isporučuju s fotoaparatom. Oni također mogu zamijeniti teško pronaći baterije u vašim rezervnim kamerama, koje ponekad možete koristiti
Vanjska meteorološka stanica pomoću Arduina: 7 koraka
Vanjska meteorološka stanica koja koristi Arduino: Korišteni materijali: Cijene su približne i po memoriji. NodeMCU V3 Lua - 3 € Digitalna temperatura i vlažnost DTH 22 - 2 € Senzorski modul fotootpornika (LDR) detektira svjetlo osjetljivu fotodiodu za Arduino - 0,80 € 1 set/lot Senzor za otkrivanje snijega/kišnih kapi
Kontrola svjetline PWM LED kontrola zasnovana na tipkama, Raspberry Pi i grebanju: 8 koraka (sa slikama)
Kontrola svjetline Kontrola LED -a zasnovana na PWM -u pomoću tipki, Raspberry Pi i grebanja: Pokušavao sam pronaći način da svojim učenicima objasnim kako PWM radi, pa sam sebi postavio zadatak da pokušam kontrolirati svjetlinu LED -a pomoću 2 tipke - jedno dugme povećava svjetlinu LED -a, a drugo ga prigušuje. Za program
Pan-Tilt Multi Servo kontrola: 11 koraka (sa slikama)
Pan-Tilt Multi Servo Control: U ovom vodiču ćemo istražiti kako kontrolirati više servo-a koristeći Python na Raspberry Pi-u. Naš cilj će biti PAN/TILT mehanizam za postavljanje kamere (PiCam). Ovdje možete vidjeti kako će funkcionirati naš konačni projekt: Control Servo Test Control loop: