Talaan ng mga Nilalaman:

Kontrol ng Dami ng Vintage Rotary Phone Dial PC: 7 Hakbang (na may Mga Larawan)
Kontrol ng Dami ng Vintage Rotary Phone Dial PC: 7 Hakbang (na may Mga Larawan)

Video: Kontrol ng Dami ng Vintage Rotary Phone Dial PC: 7 Hakbang (na may Mga Larawan)

Video: Kontrol ng Dami ng Vintage Rotary Phone Dial PC: 7 Hakbang (na may Mga Larawan)
Video: Основной доклад: Построение вашей самой перспективной карьеры (официальное аудио) | ASJA 2023 2024, Hulyo
Anonim
Image
Image
Alisin ang Dial
Alisin ang Dial

Kung ikaw ay katulad ko, nahanap mo ang iyong sarili na binabago ang dami ng iyong computer nang madalas. Ang ilang mga video ay mas malakas kaysa sa iba, kung minsan gusto mo ang dami ng naka-mute sa iyong computer habang nakikinig ka ng mga podcast o musika, at maaaring kailanganin mong mabilis na i-down ang volume kung nakatanggap ka ng isang tawag sa telepono. Kung wala kang mga kontrol sa media na nakapaloob sa iyong computer, maaari mo nang gawing isang kontrol ng dami para sa iyong Windows PC ang isang vintage rotary phone dial.

Ang aparato ng control volume na ito ay naka-plug sa iyong computer sa pamamagitan ng USB, at awtomatikong itatakda ang dami ng bawat bukas na programa sa anumang numero na iyong dial. Kung nagdayal ka ng isang "2," ang dami ay maitatakda sa 20%. Mag-dial ng isang "8" at itatakda ito sa 80%. Ang pag-dial sa "0" ay nagtatakda sa 0% at kumikilos tulad ng pipi. Mabilis, kasiya-siya, at mas masaya kaysa sa pag-click sa paligid ng kontrol sa dami ng iyong taskbar.

Mga gamit

  • Rotary phone ng Vintage Bell Systems Trimline
  • Arduino Nano
  • Ang M3 na sinulid na mga pagsingit na naka-set na init
  • M3 screws ng makina
  • Mga resistorist (470 ohm at 10k ohm)
  • Kawad
  • Pag-access sa isang 3D printer

Hakbang 1: Teorya ng Pagpapatakbo

Ang mga rotary phone, kasama ang Bell Systems Trimline na ginamit sa proyektong ito, ay pulos mga analog electromekanical na aparato. Kapag pinaikot mo ang dial, isang spring ang umiikot sa dial pabalik sa orihinal na posisyon. Habang ipinapasa nito ang bawat numero ang isang switch ay naka-disconnect (o konektado) para sa isang maikling sandali, lumilikha ng isang pulso. Ang kailangan lang nating gawin ay bilangin ang mga pulso upang matukoy kung anong numero ang na-dial.

Ang guidomax ay may kamangha-manghang tutorial na Mga Tagubilin na lalalim sa kung paano eksaktong gumagana ito, at mahahanap mo ang higit pang detalye doon.

Para sa proyektong ito, ginagamit namin ang Arduino Nano upang mabilang ang mga pulso. Ipinadala ng Arduino ang numero sa PC sa pamamagitan ng serial connection. Sumulat ako ng isang pangunahing script ng Python na tumatakbo sa background at sinusubaybayan ang serial connection. Kapag nakakatanggap ito ng mga piraso, kukuha ng numero at ginagamit ang Python Core Audio Windows library upang maitakda ang naaangkop na dami.

Dahil sa mga limitasyon sa Windows at sa library na iyon, hindi itinatakda ng script ang pangkalahatang dami ng system (ang pangunahing slider sa iyong taskbar). Sa halip, itinatakda nito ang indibidwal na dami para sa bawat programa na kasalukuyang tumatakbo. Ang epekto ay pareho, maliban sa hindi mo mapapanatili ang iba't ibang mga antas ng kamag-anak na dami sa pagitan ng mga programa.

Hakbang 2: Alisin ang Dial

Alisin ang Dial
Alisin ang Dial

Ang hakbang na ito ay prangka: i-disassemble lamang ang iyong handset ng telepono ng Trimline upang alisin ang mekanismo ng pag-dial. Mahalaga na ito ay isang self-nilalaman na module, kaya kailangan mo lamang i-unscrew ito mula sa handset.

Pinili ko ang modelo ng Trimline para sa proyektong ito, dahil ang dial module na iyon ay mas compact kaysa sa makikita mo sa karamihan ng iba pang mga rotary phone.

Kung bibigyan mo ito ng ilang mga pagsubok na pagsubok, dapat mong marinig ang pag-click sa layo habang bumalik ito sa posisyon sa bahay.

Hakbang 3: I-print ang Enclosure

I-print ang Enclosure
I-print ang Enclosure

Gamitin ang dalawang ibinigay na mga file ng STL upang mai-print ang mga bahagi ng enclosure. Maaari mong gamitin ang anumang materyal na filament na gusto mo (Gumamit ako ng PLA). Ang mga partikular na setting na iyong ginagamit ay hindi ganoon kahalaga, ngunit inirerekumenda ko ang paggamit ng mga suporta para sa "Rotary_Top" na bahagi. Maaari mong i-print ang dalawang bahagi na ito habang nagtatrabaho ka sa natitirang proyekto.

Hakbang 4: I-program ang Iyong Arduino

I-program ang Iyong Arduino
I-program ang Iyong Arduino

Ang code na ia-upload mo sa iyong Arduino Nano ay deretso mula sa tutorial ng guidomax, dahil perpektong gumagana ito para sa proyektong ito:

int needToPrint = 0; int count; int sa = 2;

int lastState = LOW;

int trueState = LOW;

mahaba lastStateChangeTime = 0;

int cleared = 0;

// patuloy

int dialHasFinishedRotatingAfterMs = 100;

int debounceDelay = 10;

walang bisa ang pag-setup () {

Serial.begin (9600);

pinMode (sa, INPUT); }

void loop () {

int pagbabasa = digitalRead (sa);

kung ((millis () - lastStateChangeTime)> dialHasFinishedRotatingAfterMs) {// ang dial ay hindi na-dial, o katatapos lang ma-dial.

kung (needToPrint) {// kung katatapos lang nitong ma-dial, kailangan naming ipadala ang numero pababa sa serial // line at i-reset ang bilang. Binabago namin ang bilang ng 10 dahil ang '0' ay magpapadala ng 10 pulso.

Serial.print (bilangin ang% 10, DEC);

needToPrint = 0;

bilangin = 0;

nalinis = 0; }}

kung (nagbabasa! = lastState) {lastStateChangeTime = millis ();

}

kung ((millis () - lastStateChangeTime)> debounceDelay) {// debounce - nangyayari ito sa sandaling nasaksak ito

kung (nagbabasa! = trueState) {// nangangahulugan ito na ang switch ay maaaring nawala mula sa sarado-> bukas o kabaliktaran. trueState = nagbabasa; kung (trueState == MATAAS) {// dagdagan ang bilang ng mga pulso kung naging mataas ito.

bilangin ++;

needToPrint = 1; // kakailanganin naming i-print ang numerong ito (kapag natapos na ang pag-dial sa pag-ikot)

}

}

}

lastState = nagbabasa; }

Hakbang 5: Wire Lahat

Wire Lahat Up
Wire Lahat Up
Wire Lahat Up
Wire Lahat Up
Wire Lahat Up
Wire Lahat Up

Ang mga kable para sa proyektong ito ay talagang simple. Ang module ng pag-dial ay dapat magkaroon ng dalawang mga hexagonal post sa likod na may mga tornilyo sa kanila. Iyon ang mga koneksyon sa switch. Hindi mahalaga ang polarity.

Tandaan: Huwag pansinin ang mga kulay ng aking mga wire sa mga larawan. Naghalo ako ng lupa at 5V, kaya't ang mga ito ay talagang baligtad.

Ikonekta ang isang kawad mula sa Post A (GND) at ikonekta ito sa isang ground pin sa iyong Arduino Nano. Kumuha ng isang pangalawang kawad at solder ito at isang pangatlong kawad sa isang bahagi ng 470 ohm risistor. Ang pangalawang kawad ay pupunta sa Post B (+) sa dial. Ang pangatlong kawad ay makakakuha ng solder sa isang gilid ng 10k ohm risistor. Kumuha ng pang-apat na kawad at solder ito mula sa kabilang panig ng 470 ohm resistor hanggang sa Pin 2 sa Arduino Nano. Sa wakas, ang ikalimang kawad ay dapat na ikonekta ang kabilang panig ng 10k ohm risistor sa 5V pin sa Arduino Nano.

Ginagamit namin ang mga resistors at ang 5V pin upang hilahin ang pin sa mataas kapag bukas ang switch (tulad ng sa panahon ng bawat "pulso").

Hakbang 6: Assembly

Assembly
Assembly
Assembly
Assembly

Dapat mong mapansin na ang bahagi ng Rotary_Top ng enclosure ay may anim na maliliit na butas. Ito ay para sa iyong sinulid na pagsingit na naka-set na init. Ang nangungunang tatlong (sa ilalim ng tuktok na ibabaw) ay upang mai-mount ang rotary dial. Sa ilalim ng tatlo ay i-tornilyo ang Rotary_Base sa Rotary_Top.

Ang mga pagsingit na naka-set na init ay maaaring mapainit sa isang panghinang na bakal (o isang nakalaang tool) at pagkatapos ay itulak sa mga butas. Matutunaw ng init ang plastik, na magpapatigas pagkatapos na maalis ang init upang maingat na hawakan ang mga pagsingit. Ang paggamit ng mga pagsingit na naka-set na init ay mas kaaya-aya kaysa sa mga tornilyo na tornilyo nang direkta sa plastik.

Ipasok ang anim na pagsingit na itinakda ng init. Pagkatapos ay gumamit ng ilang maikling (10mm o higit pa) M3 machine screws upang mai-mount ang dial. Itala ang bingaw sa ginupit, kung saan pupunta ang paghinto ng metal na daliri. Pagkatapos ay maingat na ilagay ang Arduino Nano-na may USB cable na konektado-sa loob ng enclosure (maluwag ito, hindi naka-mount), at i-tornilyo ang base sa lugar.

Marahil ay gugustuhin mong gumamit ng double-sided tape o 3M Command Strips upang maikabit ang enclosure sa iyong mesa, kaya't hindi ito gagalaw kapag inikot mo ang dial.

Hakbang 7: I-setup ang Python Script

I-setup ang Python Script
I-setup ang Python Script

Una, tiyaking mayroon kang naka-install na Python (gamitin ang Python 3, tulad ng na-phase out ang Python 2).

Kakailanganin mong i-install ang dalawang kinakailangang aklatan: PyCAW at PySerial.

Gumamit ng:

"pip install pycaw" at "pip install pyserial" (mula sa window ng Python o Windows Powershell)

Pagkatapos suriin upang makita kung anong port ang nakakonekta sa iyong Arduino Nano. Maaari mong suriin iyon mula sa loob ng Arduino IDE. Tiyaking napili mo ang port na iyon, pagkatapos buksan ang serial monitor. Tiyaking ang iyong rate ng baud ay nakatakda sa 9600, at pagkatapos ay i-dial ang ilang mga numero upang matiyak na lalabas ang mga ito sa serial monitor.

Kung gagawin nila ito, i-edit ang "rotary.py" code sa iyong numero ng port. Kung pinatakbo mo ang script, dapat mo na ngayong baguhin ang dami sa pamamagitan ng pagdayal sa isang numero.

Ang pangwakas na hakbang ay ang pag-setup ng script upang awtomatikong tumakbo sa background kapag na-boot mo ang iyong PC.

Upang magawa iyon, palitan ang "rotary.py" sa "rotary.pyw" na papayagan itong tumakbo sa background. Pagkatapos ilagay ang script na iyon sa sumusunod na folder: C: / Users / current_user / AppData / Roaming / Microsoft / Windows / Start Menu / Programs / Startup

Malinaw na kakailanganin mong baguhin ang "current_user" sa iyong tunay na pangalan ng folder ng gumagamit.

Ayan yun! Kailan man magsimula ang iyong computer, magsisimulang tumakbo ang script ng Python na iyon. Susubaybayan nito ang koneksyon sa serial mula sa Arduino, at itatakda ang lahat ng mga volume ng programa sa kung ano man ang iyong na-dial!

Arduino Contest 2020
Arduino Contest 2020
Arduino Contest 2020
Arduino Contest 2020

Runner Up sa Arduino Contest 2020

Inirerekumendang: