Talaan ng mga Nilalaman:

Mag-interface ng isang Rotary Phone Dial sa isang Arduino: 6 Mga Hakbang (na may Mga Larawan)
Mag-interface ng isang Rotary Phone Dial sa isang Arduino: 6 Mga Hakbang (na may Mga Larawan)

Video: Mag-interface ng isang Rotary Phone Dial sa isang Arduino: 6 Mga Hakbang (na may Mga Larawan)

Video: Mag-interface ng isang Rotary Phone Dial sa isang Arduino: 6 Mga Hakbang (na may Mga Larawan)
Video: Siakol - P.I. (Lyric Video) 2024, Hulyo
Anonim
Mag-interface ng isang Rotary Phone Dial sa isang Arduino
Mag-interface ng isang Rotary Phone Dial sa isang Arduino
Mag-interface ng isang Rotary Phone Dial sa isang Arduino
Mag-interface ng isang Rotary Phone Dial sa isang Arduino

Ang isang lumang paikot na telepono ay maaaring magamit para sa isang bilang ng mga layunin sa iyong mga proyekto sa Arduino - gamitin ito bilang isang nobelang input aparato, o gamitin ang Arduino upang i-interface ang isang umiinog na telepono sa iyong computer. Ito ay isang napaka pangunahing gabay na naglalarawan kung paano i-interface ang dial sa isang Arduino, at makuha ang na-dial na numero na ipinasa sa isang computer sa serial link ng Arduino.

Hakbang 1: Alisin ang I-dial Mula sa Telepono

Alisin ang Dial Mula sa Telepono
Alisin ang Dial Mula sa Telepono
Alisin ang Dial Mula sa Telepono
Alisin ang Dial Mula sa Telepono
Alisin ang Dial Mula sa Telepono
Alisin ang Dial Mula sa Telepono

Ang unang hakbang ay alisin ang dial unit mula sa telepono. Gumagamit ako ng isang teleponong GPO ng ilang uri mula pa noong dekada 1970. Sa teleponong ito, ang pag-dial ay lumabas nang diretso - Kailangan ko lamang itong bigyan ng isang tug. Kung hindi, maaaring buksan mo ang telepono at mag-ehersisyo kung paano ito mapapatay. Mayroong limang mga kable na nakakonekta sa likuran ng dial unit. Sa aking telepono, ang mga ito ay regular na koneksyon ng pala, kaya't binitawan ko ang mga tornilyo at hinugot ito. Kung nais mong muling tipunin ang iyong telepono, tandaan na i-record kung aling kulay ang wire na papunta sa kung aling koneksyon.

Hakbang 2: Kilalanin ang Lumipat

Kilalanin ang Lumipat
Kilalanin ang Lumipat

Sa sandaling ang dial ay out, dapat itong medyo madali upang makita kung paano ang pag-dial ng pag-on ng rotary na kilusan sa pulso. Subukang paikutin ang dayal sa pamamagitan ng kamay at panoorin ang paggalaw sa likod. Dapat mong makita ang isang paggawa ng switch at mabilis na pagsira ng isang circuit - kaya't kung i-dial mo ang '9', ang switch ay dapat na umaakit ng siyam na beses. Para sa iyo na maaaring hindi kailanman gumamit ng isang rotary dial bago - alalahanin na ang pagdayal ay nangyayari lamang kapag hinayaan mo go the number and let it spool back. Naitala ko kung paano ito gumagana para sa aking telepono sa Mga Tala ng larawan sa ibaba. Mayroon ding isang malabo na video ng paggana ng mekanismo.

Hakbang 3: Gawin ang Circuit

Gawin ang Circuit
Gawin ang Circuit
Gawin ang Circuit
Gawin ang Circuit

Kapag nahanap mo na ang switch na ginagawa at nasira, dapat mong makilala ang mga koneksyon sa pamamagitan ng pagsunod sa mga wire pabalik sa mga terminal ng koneksyon. Sa aking kaso, ang dalawang panig ng switch ay konektado sa dalawang kaliwang terminal. Tingnan ang mga terminal na ito sa ilang mga wire ng jumper, at makakuha ng prototyping! Ang switch sa aking dial ay palaging nasa, at nasira para sa bawat pulso kapag nagdayal, kaya ginamit ko ang napaka-simpleng circuit sa ibaba. Ang Pin 2 ay magiging TAAS para sa bawat pulso habang umiikot ang dial. Kapag ang telepono ay hindi na-dial, ang switch sa dial unit ay sarado (isang tinatawag na NORMAL NA NAGSARAD na switch, para sa halatang mga kadahilanan) kaya ang circuit ay nag-uugnay sa pin 2 sa lupa (na sa Arduino ay LOW). Ito ay dahil mayroong mas kaunting paglaban sa pamamagitan ng 470 ohm resistor kaysa sa 10K risistor. Kapag ang telepono ay na-dial, ang switch ay bubukas at magsasara nang mabilis (para sa isang 9, ito ay bubuksan at isara muli ng siyam na beses, tandaan). Kapag bukas ang switch, ang pin 2 ay hindi konektado sa lupa - sa halip ay konektado ito sa supply ng 5V sa pamamagitan ng paglaban ng 10470 ohms. Ito ay binibigyang kahulugan ng Arduino bilang isang TAAS. Kung ang iyong pag-dial ay may isang NORMAL NA BUKAS na switch, pagkatapos ay ipinagpapalit ang mga posisyon ng 10K risistor at ang dial ay dapat gumawa ng trick.

Hakbang 4: Paunlarin ang Code

Paunlarin ang Code
Paunlarin ang Code

Ngayon kailangan namin ng ilang code para sa Arduino upang mabilang ang mga pulso at ipadala ang kabuuang numero bawat numero na naka-dial pabalik sa pamamagitan ng serial port. Nasa ibaba ang aking code. Habang nakikipag-usap kami sa mga mekanikal dito, maaaring magkakaiba ang iyo. Subukang maglaro tungkol sa patuloy na pag-debounce at ang 'gaano katagal kami maghihintay bago ipalagay na natapos na ang pag-rotate ng' pare-pareho. Sinubukan kong puna ito nang maayos hangga't makakaya ko. Inaasahan kong medyo simple.int needToPrint = 0; int count; int in = 2; int lastState = LOW; int trueState = LOW; long lastStateChangeTime = 0; int cleared = 0; // Constantsint dialHasFinishedRotatingAfterMs = 100; int debounceDelay = 10; void setup () {Serial.begin (9600); pinMode (in, INPUT);} void loop () {int reading = digitalRead (in); 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 na-stablize ito kung (nagbabasa! = trueState) {// nangangahulugan ito na ang switch ay maaaring nawala mula sa sarado-> bukas o kabaligtaran. 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 = pagbabasa;}

Hakbang 5: Suriing Gumagana Ito

Suriing gumagana ito sa pamamagitan ng pagbubukas ng isang serial window (Gumagamit ako ng screen sa isang unix machine, baka gusto mong gumamit ng Hyperterm o katulad sa Windows), at subukang i-dial ang ilang mga numero. Tiyaking nakatakda ang serial program upang mabasa mula sa USB- > serial adapter sa iyong Arduino (suriin ang Tools-> Serial Port menu sa Arduino software kung nakalimutan mo kung ano ito), at isang baud rate na 9600 bps. Dapat mong makita ang tamang numero na pop up habang naka-dial ito.

Hakbang 6: I-hook Ito Sa Isang Bagay na Kapaki-pakinabang

I-hook Ito Sa Isang Bagay na Kapaki-pakinabang!
I-hook Ito Sa Isang Bagay na Kapaki-pakinabang!

Nakakuha ako ng isang Quartz Composer file sa aking Mac upang kunin ang input at maibigay ito nang maayos sa screen. Kapag nasa makina na ito bilang serial data, maaari kang gumawa ng kahit ano dito. Naghihintay na marinig ang iyong mga ideya! Makakakuha ako ng isang video na 'ito sa aksyon' at i-print ang mga numero sa screen sa lalong madaling makakuha ako ng isang tao upang hawakan ang camera para sa akin - nais kong magkaroon ng tatlong mga kamay.

Inirerekumendang: