Turinys:
2025 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2025-01-23 14:59
Žodis į priekį
Mačiau daug pamokų, kaip automatizuoti rankinius atspalvius ir žaliuzes, o šiame mes automatizuosime elektrinius atspalvius. Mes apimsime elektros atspalvius, kuriuos valdo nuolatinės srovės (DC) elektros varikliai, kurie atsidaro arba užsidaro, pakeisdami srovės poliškumą.
Nors jei perkate elektrinius atspalvius, jūs gausite automatizavimą, yra priežastis, kodėl turite atlikti automatizavimą patys:
* šalia jų gali būti tik jungiklis, skirtas valdyti aukštyn/žemyn
* tai pigiau (kai kurios įmonės siūlo pažangią automatizavimą už daug papildomų USD $)
* lankstesni, galite užprogramuoti, kad jie būtų atidaryti ar uždaryti įvairiomis aplinkybėmis, mes sužinosime, kaip sukurti žiniatinklio serverį „python“, kuris prisijungs prie atspalvių „Bluetooth“sąsajos, ir parodysime API, kuri valdys atspalvius, taip pat integruosime su daiktų kalbėjimu ir ten galite atlikti tokius veiksmus kaip atspalvių valdymas pagal tvarkaraštį arba valdymas per jutiklio įvestį
Tai bus tarpinė pamoka, jums reikės tokių įgūdžių kaip litavimas, „arduino“programavimas, pagrindinis elektroninis supratimas ir tam, kaip įdiegti paslaugas serveryje, jas paleisti ir konfigūruoti.
Jei jums patiko „YouTube“vaizdo įrašai, galite užsiprenumeruoti čia.
1 žingsnis: reikalingi dalykai
Patarimas: padidinkite paveikslėlius, kad pamatytumėte jų aprašomąsias etiketes
Dalys:
1. arduino pro mini 16Mhz 5V tipo (eBay) 2 $
2. „Bluetooth“modulis „HC-05“(„eBay“) 3,3 USD
3. 5 V Dviejų kanalų relės („eBay“) 1,6 $
4. NPN tranzistorius, skirtas bent keliems stiprintuvams, naudoju „Tip142T“<1 $
5. 220 omų, 0,25 W rezistorius <1 $
6. diodas, 1N4004 <1 $
7. laidai dalims prijungti <1 $
8. PCB („eBay“) <1 $ už gabalą
9. 2 x KF301-2P kištukinis varžtas (eBay) <1 $ už gabalą
10. vyriškos ir moteriškos jungties laidai („eBay“) 1,2 USD x 2 už krūvą
11. L7805CV 5V reguliatorius („eBay“) <1 $ už vnt
12. 5,5 mm nuolatinės srovės kištukinio lizdo patinas ir patelė („eBay“) <1 $ už gabalą
13. Termiškai susitraukiantis vamzdelis arba izoliacinė juosta
14. Maitinimas, maitinimas turi būti 12V ir 2-3A.
Aš išgelbėjau savo iš 12 V 2 A įkroviklio („eBay“) 3,2 USD
14. Gnybtų juostos blokas („eBay“) 15c
15. saugiklių laikiklis („Aliexpress“) 1 USD už gabalą
16. saugiklis („eBay“) <1 $ už gabalą
17. vyrų ir moterų PCB jungtys („eBay“) <1 $ už tai, ko mums reikia
18. Kintamosios srovės maitinimo kabelis
19. plastikinės dėžutės gaubtas, mano buvo 6 x 19 cm
Įrankiai:
1. Lituoklis su lituokliu
2. Vielos pjaustytuvas
3. Įvairūs atsuktuvai
4. Pjaustytuvas
5. elektrinis gręžtuvas ir 8,5 mm grąžtas
6. USB į nuoseklųjį FTDI adapterį FT232RL programuoti arduino pro mini
7. Nešiojamasis kompiuteris su „ArduinoIDE“įdiegtas programuoti arduino
8. Lengvesnis, jei naudojate termiškai susitraukiantį vamzdelį
9. Išmanusis telefonas, galintis prijungti „Bluetooth“(pavyzdyje naudoju „Android“) su įdiegta „Bluetooth“programine įranga
10. Pasirinktinai: didinamasis stiklas, multimetras, replės
2 žingsnis: Paruošimas
Maitinimo šaltinio ir plastikinės dėžutės pasirinkimas
Pirmas dalykas yra nustatyti, kiek srovės ir kokios įtampos veikia atspalvių varikliai.
Tai galima padaryti skaitant specifikacijas arba atliekant matavimus naudojant multimetrą. Paprastai jie veikia 12 V ir 1-3 amperų (mano yra 2,5 A ir 12 V). Padauginkite srovę iš to, kiek iš jų turite važiuoti vienu metu (aš vairuoju du), kad sužinotumėte maksimalią reikalingą srovę. Turėtumėte rasti maitinimo šaltinį, kurio įtampa yra tokia pati, o idealiu atveju - tos pačios srovės stipris arba šiek tiek didesnis.
Šiame žingsnyje aš šiek tiek sukčiavau, naudodamas 12 V ir 2,5 A maitinimo šaltinį, kad galėčiau valdyti du 12 V ir 2,5 A variklius, o tai reiškia, kad varikliai sunaudoja dvigubai daugiau energijos, nei gali duoti maitinimo šaltinis. Tačiau naudojant techniką, vadinamą PWM (norėdami sužinoti daugiau informacijos, patikrinkite nuorodą), man pavyko vienu metu varyti variklį mažesniu greičiu.
Priežastis, kodėl tai padariau, yra sutaupyti vietos dėžutėje (pasirinkau mažesnę dėžutę).
Plastikiniame korpuse reikės maitinimo šaltinio, dviejų relių, mažos plokštės su elektronika ir laidais, todėl pasirinkite dydį, kad viskas tilptų.
Mano maitinimo šaltinis turėjo plastikinį korpusą, kurį suplėšiau naudodamas „dremel“įrankį, nutraukiau esamus laidus ir tokiu būdu turiu pigų ir mažą maitinimo šaltinį, tinkantį mano projektui (žr. Paveikslėlius).
Paruoškite variklio kabelius
Turite apskaičiuoti, kiek laiko truks variklio kabeliai, tai yra, kol jie pasieks valdymo skydelį, kurį mes skleidžiame. Yra tikimybė, kad esami kabeliai nėra pakankamai ilgi, todėl turėsite juos prailginti, nuimti abu laidus (esamą ašmenų kabelį ir ilginimo kabelius) iš vieno galo, uždėti termiškai susitraukiančius vamzdžius, lituoti laidus, tada kaitinti lengviau izoliuoti.
Prailginimo kabelio gale bus 5,5 mm nuolatinės srovės kištukinis lizdas. Turite lituoti du laidus prie lizdo, galutinis rezultatas bus toks, kaip nuotraukose.
5,5 mm nuolatinės srovės kištukinio lizdo įdėjimas į dėžutę
Naudodami gręžimo mašiną, išgręžkite dvi pakankamai dideles skylutes, kad kėliklis galėtų slysti. Įkiškite maitinimo kištukinius lizdus, prisukite veržlėmis. Tada lituokite storus juodus ir raudonus laidus prie kiekvieno lizdo, tada izoliuokite juos termiškai susitraukiančiu vamzdžiu. Laidai turi būti pakankamai ilgi, kad lengvai patektų į gnybtų juostos bloką, bet ne per ilgi, kad užimtų per daug vietos.
Saugiklių laikiklio pritvirtinimas prie saugiklio
Vienoje dėžutės pusėje išgręžkite mažą skylę, kad uždėtumėte mažą veržlę, laikančią saugiklių laikiklį. Tada, naudodamiesi replėmis, atsuktuvu ir veržle, tvirtai įsukite į vietą. Saugiklių laikiklis turi būti šalia maitinimo šaltinio ir dėžutės viduje. Dar kartą patikrinkite nuotraukas.
3 žingsnis: PCB kūrimas naudojant elektroniką
PCB laikys mikrovaldiklį, „Bluetooth“ryšį, RTC modulį, maitinimo tranzistorių su diodu apsaugai ir nedidelį rezistorių, jungčių laidus ir 5 V reguliatorių.
Pridedu „Fritzig“schemą, kad viskas būtų paprasta. Pirmasis paveikslėlis rodo eksportuotą schemos vaizdą, taip pat pridėjau sketch.fzz (originalų failą, galite jį atidaryti naudodami šį įrankį)
Litavimo žingsniai:
1. Iškirpkite moterų PCB jungtis, yra dvi 12 kontaktų jungtys mikrovaldikliui, taip pat yra 6 kontaktų „Bluetooth“jungtis ir dar 12 kontaktų jungtys dešinėje mikrovaldiklio pusėje ir dviejų kontaktų jungtis, skirta relės neigiamam ir teigiama galia
2. Nupjovus visas jungtis, jie turi būti lituoti PCB gale
3. Lituokite dvi KF301-2P kištukines jungtis
4. Įdėkite L7805CV 5V reguliatorių ant PCB. Sulenkite kojas ir lituokite kitoje pusėje, tada perpjaukite kojų perteklių kabelių pjaustytuvu
5. Lituokite tranzistorių NPN Tip142T ir apsauginį diodą 1N4004, nupjaukite perteklines kojas.
6. Lituokite 220 omų rezistorių tarp atitinkamo skaitmeninio kaiščio 5 ir tranzistoriaus pagrindo kaiščio
7. Lituokite storesnius laidus tarp tranzistoriaus ir KF301-2P kištukų (raudona ir juoda, kaip jie pažymėti paveikslėliuose)
8. Lituokite visus raudonus (+), juodus (-) ir baltus (signalinius) plonus laidus pagal Fricigo schemą
9. Lituokite kaiščius ant mikrovaldiklio, šonuose reikia dviejų 12 kaiščių
10. Užmegzkite ryšius tarp kiekvieno mikrovaldiklio dešinės pusės atitinkamų kaiščių (tai geriau paaiškinta paveikslėliuose). Sujungimai bus atliekami naudojant tik lydmetalį (kaiščiai bus uždaryti)
11. Pasirinktinai: su padidinamuoju stiklu patikrinkite, ar nėra lydmetalių, ar nėra trumpojo jungimo, ir patikrinkite, ar laidai tinkamai prilituoti PCB gale, taip pat galite patikrinti multimetru (atsparumo nustatymas), ar nėra trumpojo jungimo tarp teigiamo ir neigiami ryšiai. Kitas bandymas - maitinti grandinę be mikrovaldiklio „Bluetooth“
12. Įdėkite mikrovaldiklį ir „Bluetooth-Bluetooth“ant PCB
4 žingsnis: laidai ir surinkimas
Iki šiol mes turime paruoštą savo PCB, plastikinę dėžę, kurioje yra prijungti kabeliai ir kiti komponentai. Viskas, ką mums dabar reikia padaryti, tai prijungti sistemą prie laido.
1. per viršutinę dėžutės šoninę angą įkiškite kintamosios srovės maitinimo kabelį, nuimkite laidą ir prilituokite prie maitinimo šaltinio (jei jūsų maitinimo šaltinyje yra varžtai, tada užsukite)
2. naudodami raudonos vielos lydmetalį, maitinimo šaltinio išėjimą (+) į vieną iš saugiklių pusės, naudokite šiek tiek termiškai susitraukiančio vamzdelio, kad paslėptumėte atvirą atplėštą laidą.
3. lituokite kitą raudoną laidą kitoje saugiklio pusėje, uždėkite susitraukimo vamzdelį, kitą laido pusę reikia įkišti ir įsukti į KF301-2P varžto jungties įvestį (+)
4. lituokite juodą laidą prie maitinimo šaltinio išvesties (-) pusės ir prisukite prie PCB įvesties KF301-2P varžto jungties
4. Naudodami vyriškos ir moteriškos plokštės jungtis, prijunkite teigiamą ir neigiamą relę prie PCB teigiamų ir neigiamų jungčių. Taip pat prijunkite mikrovaldiklio 8 ir 9 kaiščius (naudodami PCB pagrindines jungtis kairėje nuo PCB) prie relės paleidimo kaiščių
5. vieną gnybtų juostos bloko pusę prijunkite prie raudonų atitinkamai juodų laidų, einančių iš 5,5 mm DC maitinimo kištukinių jungčių. Turite daugiau nei vieną 5,5 mm jungtį, kaip aš, tada visi raudoni laidai atsidurs viršutinėje kairėje gnybtų bloko pusėje, o visi juodi laidai - viršutinėje dešinėje gnybtų bloko pusėje (žr.). Kai valdysite atspalvius, jei jie nejuda ta pačia kryptimi, mes pakeisime laidus čia (daugiau apie tai vėliau)
6. prijunkite teigiamus ir neigiamus laidus, gaunamus iš varžtinės jungties KF301-2P (išėjimo), prie relės gnybtų vidurio. Gnybtų vidurys vadinamas bendru.
7. prijunkite kairę kairės relės pusę (nesvarbu, kaip jūs žiūrite iš tikrųjų) prie kairės dešinės relės pusės prie apatinės kairės gnybtų bloko pusės. Tada prijunkite dešinę kairės relės pusę prie dešinės relės pusės prie apatinės dešinės gnybtų bloko pusės. Gnybtų bloko viršutinė pusė bus prijungta prie 5,5 mm jungčių (žr. 5 veiksmą).
Pastaba: aprašiau gnybtų bloką, kurio viršutinė ir apatinė pusės turi kairę ir dešinę. Nesvarbu, kaip laikote gnybtų bloką, kol prisimenate, kokia pusė yra. Galite patikrinti paveikslėlius ir ypač „Fritzig“schemą.
5 žingsnis: „Arduino“kodas
Kodą reikia įkelti į arduino pro mini naudojant USB į nuoseklųjį FTDI adapterį FT232RL.
Prie arduino pro mini turėsite prijungti GND, VCC, Rx, Tx ir DTR kaiščius. Tada atidarykite „arduino“programinės įrangos pasirinkimo įrankius/prievadą ir bet kurį naudojamą prievadą. Tada įrankiai/lenta/„Arduino Pro“arba „Pro Mini“. Tada įrankiai/lenta/procesorius/ATmega328 (5V 16Mhz).
Galiausiai atidarykite toliau pateiktą eskizą ir paspauskite „Įkelti“.
Koregavimai: Vienintelis dalykas, kurį galima sureguliuoti eskize, yra „pwmPower“. Vertė gali būti nuo 0 iki 255 ir ji apytiksliai parodo, kiek energijos tiekia varikliai. Tai iš esmės greitai įjungia ir išjungia maitinimą. Aš tai įdiegiau daugiausia tam, kad galėčiau naudoti mažesnį maitinimo šaltinį neperkaitęs ar neišjungęs. Jei jūsų maitinimo šaltinis turi didesnę galią nei varikliai, galite nustatyti „pwmPower“į 255.
Taigi, kaip ši programa veikia: pirmiausia ji klauso serijinės linijos (antrinės programinės įrangos serijos), skirtos gaunamiems perdavimams. Kai gaunamas perdavimas, pranešimas skaitomas buferiu, kol „;“yra arba buferio pabaiga pasiekta. Tada jis yra išanalizuotas ir, jei jis yra tinkamo formato (pvz., O45;), funkcija toggleState iškviečiama su pirmojo parametro būsena, o paskui - trukme.
Norint pasiekti poliškumo jungiklį, abi relės yra atidarytos arba uždarytos. Tranzistorius įjungiamas ir išjungiamas naudojant PWM nurodytą laiką. O45 reiškia atidarymą 45 sekundes.
Vykdžius komandą buferis išvalomas.
6 žingsnis: naudojimas
Valdiklius galime naudoti daugiau nei vienu būdu
1. Per „Android“arba „iPhone“„Bluetooth“programą (paprasčiausia)
Savo demonstracijoje pasirinkau „Android“programą, pavadintą „Bluetooth“valdiklis. Ši programa leis jums pritaikyti mygtukus, kurie siunčia serijinius duomenis. Sukūriau du mygtukus aukštyn ir žemyn, susiejau aukštyn su kodu "C40;" ir žemyn su „O35;“.
„C40“; reiškia, kad aš uždarysiu (atitrauksiu) atspalvius 40 sekundžių, „035“reiškia, kad jis atsidarys (jie pakils) 35 sekundes. ";" yra komandos eskizas, kurį pasirinkau eskize, tai reiškia, kad jis signalizuoja komandos pabaigą.
2. Per python scenarijų, kuris nuolat veikia fone
Tai yra papildoma pamokos dalis. Turiu „mande a python“scenarijų, kuris veiks tokiame serveryje kaip „aviečių pi“ar nešiojamasis kompiuteris su prieiga prie interneto. Jis prisijungs prie „Bluetooth“valdymo skydelyje ir parodys http API. API galima pasiekti tiesiogiai arba per dalykų kalbą.
Žingsnis po žingsnio paaiškinsiu, ką reikės daryti
a. pirmas dalykas yra suporuoti „Bluetooth“
jūs naudosite „bluetoothctl“komandą iš konsolės, įveskite vidinį tipą
įjunkite maitinimą
aptinkamas agentas pagal numatytuosius agentus suporuojamas nuskaitant porą xx: xx: xx: xx: xx: xx (ir įveskite slaptažodį) pasitikėkite xx: xx: xx: xx: xx: xx (jei nėra slaptažodžio):
tada atidarykite „Bluetooth“konfigūracijos failą
vim /etc/bluetooth/rfcomm.conf
viduje turėsite konfigūruoti „Bluetooth“įrenginį taip:
rfcomm1 {
įrišti taip; įrenginys your_bluetooth_mac_address kažkas panašaus į 97: D3: 31: 21: A0: 51; 1 kanalas; komentaras "Ryšys su mano atspalviais bt"; }
susieti, iš naujo paleiskite „Bluetooth“paslaugas
sudo rfcomm bind allsudo /etc/init.d/bluetooth iš naujo paleiskite sudo hciconfig hci0 up
b. įdiegti kolbą, kolbos pagrindinį autentifikavimą:
sudo -H pip įdiegti „Flask Flask -BasicAuth“
c. sukurkite failą server.py naudodami šį kodą ir paleiskite serverį:
# naudojimas: „python“„Bluetooth“vartotojo vardo slaptažodis „bluetooth_address“
# Pastaba: naudojamas vartotojo vardas, slaptažodis
importuoti OS, „Bluetooth“, „sys“, „threading“
iš kolbos importavimo Kolba iš kolbos_basicauth importas „BasicAuth“iš eilės importavimo Eilės programa = Kolba (_ name_) configuration = sys.argv app.config ['BASIC_AUTH_USERNAME'] = configuration [1] app.config ['BASIC_AUTH_PASSWORD'] = konfigūracija [2] eilė = Eilė () basic_auth = „BasicAuth“(programos) klasė „BluetoothBackground“(threading. Thread): def _init _ (self, bluetooth_address, queue): threading. Thread._ init _ (self) self._ bluetooth_address = bluetooth_address self._ queue = queue self.shutdown = False def run (self): self._ bluetooth = self.get_bluetooth () while not self.shutdown: message = self._ queue.get () self._ bluetooth.send (message) self._ bluetooth.close () def get_bluetooth (self)): ryšys = „Bluetooth“. „BluetoothSocket“(„Bluetooth. RFCOMM“) ryšys.settimeout (Nėra) pabandykite: connection.connect ((sava ._ bluetooth_address, 1)), išskyrus išimtį, e: spausdinti „Klaida prisijungiant prie„ Bluetooth “+ str (e) ryšys.setblocking (False) grąžinimo ryšio klasė Webserver (threading. Thread): def run (self): port = in t (os.environ.get ('PORT', 5000)) app.run (host = '0.0.0.0', port = port, debug = True, use_reloader = False) @app.route ("/send_to_serial/") @basic_auth.required def send_to_serial (komanda): queue.put (command) return „ok“threads = threads.append („BluetoothBackground“(konfigūracija [3], eilė)) threads.append (Webserver ()) [thread.start () siūlams siūluose]
paleisti serverį vykdyti:
python server.py vartotojo slaptažodis 97: D2: 31: 20: A0: 51
Gerai, todėl serveris.py yra mūsų scenarijus, naudotojas ir slaptažodis yra jūsų autentifikavimo duomenys, o „97: D2: 31: 20: A0: 51“yra jūsų „Bluetooth“MAC adresas.
d. naudokite savo serverį komandoms siųsti iš bet kurios pasaulio vietos
iš naršyklės tipo: https:// your_ip: 5000/send_to_serial/C30;
- įveskite naudotoją ir slaptažodį, kuriuos anksčiau nustatėte paleidę „python“serverį
- „C30“; yra komanda, kuri bus persiųsta į „Bluetooth“įrenginį (mūsų dėžutė, kuri valdys atspalvius)
- patikrinkite, ar jūsų užkarda neužblokavo prievado 5000 (mes naudojame tą prievadą)
- jei esate už maršrutizatoriaus (pvz., aviečių pi), turite nukreipti prievadą iš maršrutizatoriaus iš 5000 prievado į 5000
e. Galite naudoti „Speakspeak“, kad galėtumėte valdyti atspalvius pagal tvarkaraštį arba kai pasikeičia kai kurių kanalų jutiklių duomenys. Pavyzdžiui, galite prikabinti šviesos jutiklį (lauke), kad galvotumėte, o kai šviesos lygis sumažėja iki tam tikro lygio (vakaras), galite uždaryti atspalvius, kad lauke esantys žmonės jūsų nematytų.
Naudodami „ThingHTTP“galite atspalvius („python“serverį, kurį nustatėme anksčiau) prijungti prie dalykų kalbėjimo.
Aš įtraukiau „ThingHTTP“formos paveikslėlį su užpildytais duomenimis kaip pavyzdį ir paveikslėlį su „TimeControl“. Taigi, norint kuo didesnio lankstumo, „Speak“turėtų daryti viską, ko jums reikia.
3. Per mano namų automatizavimo programą
Tai yra šiek tiek sudėtingiau, mano namų automatizavimo programa daro daug daugiau nei valdo atspalvius.
Jis taip pat valdo žibintus, duris, turi kelis jutiklius, integruotas su jungikliais ir turi sudėtingas vartotojo nustatytas taisykles, kurios, pavyzdžiui, gali atverti atspalvius, jei viduje yra žemas šviesos lygis arba yra rytas.
Galite patikrinti mano „github“saugyklą ir, jei turite klausimų, mielai į juos atsakysiu.
Jei mano pamoka jums pasirodė naudinga, pasidalykite ja arba pridėkite prie mėgstamiausių. Ir aš noriu pamatyti įdomių komentarų:)
Rekomenduojamas:
Pasidaryk pats - RGB LED atspalviai, valdomi „Arduino“: 5 žingsniai (su nuotraukomis)
Pasidaryk pats | RGB LED atspalviai, valdomi „Arduino“: Šiandien aš jus išmokysiu, kaip galite labai lengvai ir pigiai pasigaminti savo RGB LED akinius. Tai visada buvo viena didžiausių mano svajonių ir pagaliau išsipildė! Didžiulis šauksmas „NextPCB“už rėmimą Šis projektas. Jie yra PCB gamintojas
RGB LED pikselių atspalviai: 17 žingsnių (su nuotraukomis)
RGB LED pikselių atspalviai: Sveiki visi, šioje instrukcijoje aš jums parodysiu, kaip sukurti porą LED pikselių atspalvių. Iš pradžių sukūriau juos dėvėti aplink namus per Kalėdas / Naujuosius metus, tarsi mobilųjį papuošalą, bet galų gale jie buvo šiek tiek labiau kibernetiniai
„Arduino“pagrindu veikiantys LED „kruvini raudoni“automatiniai laiptai: 5 žingsniai (su nuotraukomis)
„Arduino“pagrindu veikiantys LED „kruvini raudoni“automatiniai laiptai: KAS? Sveiki! Aš padariau kraujuojančius LED laiptus! Tai naujas „Instructables“, kuriame panaudotas tam tikras aparatūros diegimas, kurį jau padariau iš ankstesnio „Ible from mine“. Aš sukūriau raudoną animaciją, panašią į kraujo lašus, puikiai tinkančią automatiškai suaktyvinti
„Arduino“atspalviai: 8 žingsniai (su nuotraukomis)
„Arduino“atspalviai: norėdami gauti anglišką versiją, spustelėkite čia Svarbiausia: „Parametrinė 3D rutulinių grandinių krumpliaračio CAD byla su John Abella Adafruit motor shie
Automatiniai vamzdiniai varpai: 6 žingsniai (su nuotraukomis)
Automatiniai vamzdiniai varpai: šioje instrukcijoje paaiškinami pagrindiniai žingsniai, kurių aš ėmiausi, kad galėčiau sukurti pirmąjį automatinių vamzdinių varpelių, sukurtų 2006 m., Prototipą. Automatinio muzikos instrumento savybės yra: - 12 varpelių (12 vamzdinių varpų) - ne