สารบัญ:

เชื่อมต่อแป้นหมุนโทรศัพท์กับ Arduino: 6 ขั้นตอน (พร้อมรูปภาพ)
เชื่อมต่อแป้นหมุนโทรศัพท์กับ Arduino: 6 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: เชื่อมต่อแป้นหมุนโทรศัพท์กับ Arduino: 6 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: เชื่อมต่อแป้นหมุนโทรศัพท์กับ Arduino: 6 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: สอน เขียนโปรแกรม ภาษาซี Arduino | Uno R3 การต่อ และควบคุม มอเตอร์ 1 ตัว #EP11 2024, พฤศจิกายน
Anonim
เชื่อมต่อแป้นหมุนโทรศัพท์กับ Arduino
เชื่อมต่อแป้นหมุนโทรศัพท์กับ Arduino
เชื่อมต่อแป้นหมุนโทรศัพท์กับ Arduino
เชื่อมต่อแป้นหมุนโทรศัพท์กับ Arduino

โทรศัพท์แบบโรตารี่รุ่นเก่าสามารถนำมาใช้เพื่อวัตถุประสงค์หลายประการในโครงการ Arduino ของคุณ - ใช้เป็นอุปกรณ์อินพุตแบบใหม่ หรือใช้ Arduino เพื่อเชื่อมต่อโทรศัพท์แบบหมุนกับคอมพิวเตอร์ของคุณ นี่เป็นคำแนะนำพื้นฐานที่อธิบายวิธีเชื่อมต่อแป้นหมุน ไปยัง Arduino และรับหมายเลขที่โทรเข้าสู่คอมพิวเตอร์ผ่านลิงก์ซีเรียลของ Arduino

ขั้นตอนที่ 1: ถอดหน้าปัดออกจากโทรศัพท์

ถอดหน้าปัดออกจากโทรศัพท์
ถอดหน้าปัดออกจากโทรศัพท์
ถอดหน้าปัดออกจากโทรศัพท์
ถอดหน้าปัดออกจากโทรศัพท์
ถอดหน้าปัดออกจากโทรศัพท์
ถอดหน้าปัดออกจากโทรศัพท์

ขั้นตอนแรกคือการถอดหน่วยการโทรออกจากโทรศัพท์ ฉันใช้โทรศัพท์ GPO บางอย่างจากปี 1970 ในโทรศัพท์เครื่องนี้ แป้นหมุนก็โผล่ออกมาตรงๆ ฉันแค่ต้องดึงมันออก หากไม่เป็นเช่นนั้น คุณอาจต้องเปิดโทรศัพท์และหาวิธีถอดออก มีสายห้าเส้นที่ต่ออยู่ที่ด้านหลังของชุดปุ่มหมุน บนโทรศัพท์ของฉัน นี่เป็นข้อต่อแบบจอบปกติ ดังนั้นฉันจึงคลายสกรูและดึงออกมา หากคุณต้องการประกอบโทรศัพท์อีกครั้ง อย่าลืมบันทึกว่าสายสีใดที่เชื่อมต่อกับการเชื่อมต่อใด

ขั้นตอนที่ 2: ระบุสวิตช์

ระบุสวิตช์
ระบุสวิตช์

เมื่อหมุนแป้นหมุนออกแล้ว ควรจะค่อนข้างง่ายที่จะเห็นว่าแป้นหมุนเปลี่ยนการเคลื่อนที่แบบหมุนเป็นพัลส์ได้อย่างไร ลองหมุนแป้นหมุนด้วยมือและดูการเคลื่อนไหวที่ด้านหลัง คุณควรเห็นสวิตช์สร้างและทำลายวงจรอย่างรวดเร็ว ดังนั้น หากคุณกด '9' สวิตช์ควรทำงานเก้าครั้ง สำหรับบรรดาผู้ที่อาจไม่เคยใช้แป้นหมุนมาก่อน - โปรดจำไว้ว่าการโทรจะเกิดขึ้นเมื่อคุณปล่อย ไปที่หมายเลขและปล่อยให้มันม้วนกลับ ฉันได้บันทึกวิธีการทำงานสำหรับโทรศัพท์ของฉันในหมายเหตุของรูปภาพด้านล่าง นอกจากนี้ยังมีวิดีโอที่ไม่ชัดเจนของกลไกการทำงาน

ขั้นตอนที่ 3: สร้างวงจร

สร้างวงจร
สร้างวงจร
สร้างวงจร
สร้างวงจร

เมื่อคุณพบสวิตช์ที่ทำและชำรุดแล้ว คุณจะสามารถระบุการเชื่อมต่อได้โดยทำตามสายไฟกลับไปที่ขั้วต่อการเชื่อมต่อ ในกรณีของฉัน สวิตช์ทั้งสองด้านเชื่อมต่อกับขั้วซ้ายสุดสองขั้ว ต่อขั้วเหล่านี้กับสายจัมเปอร์ แล้วสร้างต้นแบบ! สวิตช์ในแป้นหมุนของฉันเปิดตลอดเวลา และพังในแต่ละพัลส์เมื่อโทรออก ดังนั้นฉันจึงใช้วงจรง่ายๆ ด้านล่างนี้ พิน 2 จะไปสูงสำหรับแต่ละพัลส์เมื่อแป้นหมุนหมุน เมื่อไม่ได้โทรออก สวิตช์ในหน่วยหมุนจะปิด (สวิตช์ที่เรียกว่า NORMALLY CLOSED ด้วยเหตุผลที่ชัดเจน) ดังนั้นวงจรจะเชื่อมต่อพิน 2 กับกราวด์ (ซึ่ง Arduino มีค่าต่ำ) เนื่องจากตัวต้านทาน 470 โอห์มมีความต้านทานน้อยกว่าตัวต้านทาน 10K มาก เมื่อโทรออก สวิตช์จะเปิดและปิดอย่างรวดเร็ว (สำหรับ 9 ตัวจะเปิดและปิดอีกครั้งเก้าครั้ง จำไว้) เมื่อเปิดสวิตช์ พิน 2 จะไม่เชื่อมต่อกับกราวด์ แต่จะเชื่อมต่อกับแหล่งจ่ายไฟ 5V ผ่านความต้านทาน 10470 โอห์ม สิ่งนี้ถูกตีความโดย Arduino ว่าเป็น HIGH หากหน้าปัดของคุณมีสวิตช์เปิดตามปกติ ให้สลับตำแหน่งของตัวต้านทาน 10K และแป้นหมุนควรทำตามเคล็ดลับ

ขั้นตอนที่ 4: พัฒนารหัส

พัฒนารหัส
พัฒนารหัส

ตอนนี้เราต้องการรหัสสำหรับ Arduino เพื่อนับพัลส์และส่งจำนวนทั้งหมดต่อหมายเลขที่โทรกลับผ่านพอร์ตอนุกรม รหัสของฉันอยู่ด้านล่าง ในขณะที่เรากำลังจัดการกับกลไกที่นี่ ของคุณอาจแตกต่างกัน ลองเล่นกับค่าคงที่ดีบักซ์และค่าคงที่ 'เรารอนานแค่ไหนกว่าที่ปุ่มหมุนจะหมุนเสร็จแล้ว' ฉันพยายามแสดงความคิดเห็นให้ละเอียดที่สุดเท่าที่จะทำได้ หวังว่ามันจะค่อนข้างง่าย 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; การตั้งค่าเป็นโมฆะ () { Serial.begin (9600); pinMode(in, INPUT);}void loop(){ int reading = digitalRead(ใน); if ((millis() - lastStateChangeTime) > dialHasFinishedRotatingAfterMs) { // ไม่ได้หมุนหมายเลข หรือเพิ่งจะหมุนเสร็จ if (needToPrint) { // หากเพิ่งโทรออก เราจำเป็นต้องส่งหมายเลขลงบรรทัดซีเรียล // และรีเซ็ตการนับใหม่ เราปรับการนับด้วย 10 เพราะ '0' จะส่ง 10 พัลส์ Serial.print (นับ 10%, ธ.ค.); needToPrint = 0; นับ = 0; เคลียร์ = 0; } } if (อ่าน != lastState) { lastStateChangeTime = millis(); } if ((millis() - lastStateChangeTime) > debounceDelay) { // debounce - สิ่งนี้จะเกิดขึ้นเมื่อเสถียรแล้ว if (reading != trueState) { // หมายความว่าสวิตช์เพิ่งหายไปจาก closed->open หรือกลับกัน. trueState = การอ่าน; if (trueState == HIGH) { // เพิ่มจำนวนพัลส์ถ้ามันสูง นับ++; needToPrint = 1; // เราจะต้องพิมพ์หมายเลขนี้ (เมื่อหมุนเสร็จแล้ว) } } } lastState = reading;}

ขั้นตอนที่ 5: ตรวจสอบว่าใช้งานได้

ตรวจสอบว่าใช้งานได้โดยเปิดหน้าต่างซีเรียล (ฉันใช้หน้าจอบนเครื่องยูนิกซ์ คุณอาจต้องการใช้ Hyperterm หรือที่คล้ายกันใน Windows) แล้วลองโทรออกบางหมายเลข ตรวจสอบให้แน่ใจว่าโปรแกรมซีเรียลได้รับการตั้งค่าให้อ่านจาก USB- >อะแดปเตอร์อนุกรมใน Arduino ของคุณ (ตรวจสอบเครื่องมือ->เมนูพอร์ตอนุกรมในซอฟต์แวร์ Arduino หากคุณลืมว่านั่นคืออะไร) และอัตราบอดที่ 9600 bps คุณควรเห็นหมายเลขที่ถูกต้องปรากฏขึ้นเมื่อโทรออก

ขั้นตอนที่ 6: ผูกติดกับสิ่งที่มีประโยชน์

ขอสิ่งที่มีประโยชน์!
ขอสิ่งที่มีประโยชน์!

ฉันสร้างไฟล์ Quartz Composer บน Mac เพื่อรับอินพุตและแสดงผลอย่างสวยงามบนหน้าจอ เมื่ออยู่ในเครื่องเป็นข้อมูลอนุกรม คุณสามารถทำอะไรกับมันได้ รอฟังความคิดของคุณ! ฉันจะทำวิดีโอ 'ใช้งานจริง' และพิมพ์ตัวเลขไปที่หน้าจอทันทีที่หาคนได้ ถือกล้องให้ฉัน - ฉันหวังว่าฉันจะมีสามมือ

แนะนำ: