กลับไปหน้ารวมไฟล์
control-coin-acceptor-with-arduino-36e871.md

เป้าหมายของโปรเจคนี้คือเขียนโค้ดควบคุมเครื่องรับเหรียญ (Coin Acceptor) ด้วย Arduino เพื่อเอาไปใช้ในงานอื่นๆ ต่อได้ จริงๆ พี่คิดไว้จะทำกระปุกออมสินอัจฉริยะที่รู้ยอดให้ลูกสาวน่ะ แต่น้องเอาไปประยุกต์ได้เต็มที่เลย

Vending Telemetry: ต่อวงจรเครื่องรับเหรียญระดับโรงงาน

การแปลงเงินเหรียญโลหะเป็นเครดิตดิจิทัลต้องอาศัยความแม่นยำระดับนาโนวินาที! โปรเจคนี้จะต่อเครื่องรับเหรียญระดับตู้เกม/ตู้กดน้ำ (แบบ CH-926) เข้ากับ Arduino โดยตรง! ฟังพี่ให้ดี ห้ามใช้ digitalRead() ใน loop() ธรรมดามาตรวจสอบเด็ดขาด! เพราะเครื่องรับเหรียญมันยิงสัญญาณเป็นพัลส์เร็วปรี๊ดแค่ 20 มิลลิวินาที ถ้า Arduino กำลังยุ่งวาดภาพ LCD อยู่ สัญญาณหาย! ตู้จะกลายเป็นขโมยเงินลูกค้าไปซะงั้น!

กฎเหล็กของ Hardware Interrupt (attachInterrupt)

เพื่อความแม่นยำ 100% ไร้ข้อผิดพลาด ระบบต้องใช้ Interrupt จากซิลิคอนโดยตรง!

  1. สายสัญญาณจากเครื่องรับเหรียญ ต้องต่อตรงเข้า Arduino ขา 2 หรือ ขา 3 (บน Uno มีแค่สองขานี้แหละที่รองรับ Hardware Interrupt!)
  2. Interrupt Service Routine (ISR) จะหยุดการทำงานทุกอย่างในตัวประมวลผลหลักทันทีที่เหรียญตก!
volatile int totalCredits = 0; // ต้องใส่ volatile! เพราะค่าจะถูกเปลี่ยนจากที่อื่นโดยไม่รู้ตัว!

void setup() {
  // ถ้าสัญญาณจากเครื่องรับเหรียญเปลี่ยนจาก 5V ลงมา 0V:
  attachInterrupt(digitalPinToInterrupt(2), coinInsertedISR, FALLING);
}

// ฟังก์ชันนี้จะทำงานทันทีแบบแบ็กกราวนด์ ไม่สน delay() ใน loop()!
void coinInsertedISR() {
  totalCredits++; // จับตังค์ให้มั่น!
}

อันตรายจากสัญญาณ 12V ลง 5V (Level Shifting)

เครื่องรับเหรียญระดับโรงงาน ใช้ไฟเลี้ยงหลัก 12 โวลต์ เพื่อขับโซลินอยด์ป้องกันเหรียญติดและระบบตรวจสอบภายใน

  • สายสัญญาณมันจะส่งพัลส์ออกมาแรง 12V!
  • อันตรายสูง: ถ้าน้องต่อสายสัญญาณ 12V เข้า Arduino ขา 2 โดยตรง ชิป ATmega328P จะไหม้เป็นจุณทันที!
  • น้องต้องสร้าง วงจรแบ่งแรงดัน (Voltage Divider) (ใช้ตัวต้านทาน 10K กับ 4.7K) หรือใช้ Logic Level Converter เพื่อลดสัญญาณจาก 12V ให้เหลือ 5V ที่ปลอดภัย ก่อน เข้าขา Interrupt!

อุปกรณ์ที่ต้องมี (จัดเต็ม)

  • Arduino Uno/Nano (สำหรับความสามารถ Hardware Interrupt)
  • เครื่องรับเหรียญหลายชนิด (CH-926 / JY-926) (โปรแกรมไว้แล้วให้จับค่า น้ำเหรียญ/เส้นผ่านศูนย์กลาง/คุณสมบัติโลหะ ได้เอง)
  • ชิ้นส่วนวงจรแบ่งแรงดัน (ตัวต้านทาน 10K / 4.7K โอห์ม)
  • Adaptor ไฟเลี้ยง 12V ตัวเบิ้ม (ใช้เลี้ยงเครื่องรับเหรียญโดยเฉพาะ ห้ามเอาไฟจาก Arduino 5V ไปเลี้ยงเด็ดขาด!)
  • รีเลย์โมดูล (สำหรับสั่งจ่ายสินค้าหรือเปิดเกมเมื่อตัวแปร totalCredits ครบตามที่ตั้งไว้! สู้งานนะน้อง!)

ข้อมูล Frontmatter ดั้งเดิม

apps:
  - "1x Arduino IDE"
author: "Dziubym"
category: "Gadgets, Games & Toys"
components:
  - "1x 4 Digit TM1637 LED Display"
  - "1x Arduino Nano R3"
  - "1x Coin Acceptor"
description: "Vending machine architecture! Harness extreme high-speed microsecond interrupts on an Arduino to explicitly count fast optical pulses firing from a commercial coin acceptor, securely transforming physical currency into precise digital credits."
difficulty: "Intermediate"
documentationLinks: []
downloadableFiles: []
encryptedPayload: "U2FsdGVkX1/OqdvN+7VaJ6Qb1vMYuXbTRVYnykY0xGcWKifoekQBrS3Qwj8ggFQ3FXnYhLTIyxIlrGHfdzUK/BoHlmhxz4Pfu5+pVddO5jQ="
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/control-coin-acceptor-with-arduino-36e871_cover.jpg"
lang: "en"
likes: 20
passwordHash: "3de39fe1d23514d572bf1d44137918d395de67b76c4febdd0465dafc6ab7d8bf"
price: 2450
seoDescription: "Learn how to write Code to Control a Coin Acceptor with Arduino for use in various DIY projects."
tags:
  - "nano"
  - "display"
  - "eeprom"
  - "coin acceptor"
  - "tm1637"
  - "interrupt"
  - "4 digit"
  - "arduino"
title: "ควบคุม Coin Acceptor ด้วย Arduino งานง่ายแต่หล่อ!"
tools: []
videoLinks:
  - "https://www.youtube.com/embed/sfE7yqtd8TA"
views: 62653