autoworks24.com

Arduino Coin Validator เครื่องรับเหรียญ

Arduino Coin Validator เครื่องรับเหรียญ

Arduino Coin Validator เครื่องรับเหรียญ Multi Coin สร้างยากไหม การนำ Arduino มาร่วมงานกับเครื่องรับเหรียญ (Coin Validator) เป็นโปรเจกต์ที่ได้รับความนิยมในหมู่ผู้สร้างทั้งมือใหม่และมือโปร โดยเฉพาะอย่างยิ่งการสร้างตู้เกมหยอดเหรียญ เครื่องขายอัตโนมัติ หรือกระปุกออมสินอิเล็กทรอนิกส์ แต่สำหรับผู้ที่เพิ่งเริ่มต้น คำถามแรกที่มักผุดขึ้นคือ มันสร้างยากไหม บทความนี้จะพาคุณไปรู้จักอุปกรณ์นี้ วิเคราะห์ขั้นตอนการทำงาน และสรุปความยากง่าย พร้อมทั้งข้อมูลเชิงลึกจากงานวิจัยและแหล่งข้อมูลที่น่าเชื่อถือ Coin Validator คืออะไรและมีกี่ประเภท โดยหลักแล้วเครื่องรับเหรียญที่ใช้กับ Arduino จะแบ่งออกเป็น 2 ประเภทหลักตามจำนวนชนิดของเหรียญที่สามารถจดจำได้ แบบ 1 เหรียญ (Single Coin) ตั้งค่าให้รับเหรียญได้เพียงชนิดเดียว (เช่น รับเฉพาะเหรียญบาท) เมื่อหยอดเหรียญที่ถูกต้อง จะส่งสัญญาณพัลส์ (Pulse) ไปยัง Arduino แบบหลายเหรียญ (Multi Coin) เป็นรุ่นที่ได้รับความนิยมและมีความสามารถมากกว่า สามารถเรียนรู้และแยกแยะเหรียญได้สูงสุดถึง 4 ชนิดที่แตกต่างกัน (เช่น เหรียญ 1, 2, 5, และ 10 บาท) ระดับความยาก แยกเป็นขั้นตอน หากมองแยกเป็นส่วนๆ โปรเจกต์นี้ไม่ได้ยากอย่างที่คิด โดยสรุปคือ ระดับความยากระดับปานกลาง เหมาะสำหรับผู้เริ่มต้นที่ผ่านโปรเจกต์ LED หรือเซนเซอร์พื้นฐานมาแล้ว การเตรียมฮาร์ดแวร์และต่อวงจรง่าย ที่ต้องเตรียม ตัว Coin Acceptor, Arduino (เช่น UNO), แหล่งจ่ายไฟ 12VDC สายไฟ และตัวต้านทาน Pull-up (10kΩ) การต่อวงจร ข้อมูลจากหลายแหล่งระบุว่าการต่อวงจรตรงไปตรงมามาก เนื่องจากสายไฟบนตัวรับเหรียญมีสีและหน้าที่ระบุไว้ชัดเจน ซึ่งโดยทั่วไปคือ สายแดง (DC12V) ต่อกับไฟเลี้ยง 12V สายดำ (GND) ต่อกับกราวด์ร่วม (Common Ground) ของทั้ง Arduino และแหล่งจ่ายไฟ 12V สายขาว (COIN) เป็นสายสัญญาณ ต่อเข้ากับขา Digital ของ Arduino (เช่น ขา 2) พร้อมกับตัวต้านทาน Pull-up 10kΩ ต่อไปยังไฟ 5V ของ Arduino Arduino Coin Validator เครื่องรับเหรียญ

การเขียนโค้ดเพื่ออ่านค่าสัญญาณ

การโปรแกรม (Programming) การเขียนโค้ดเพื่ออ่านค่าสัญญาณอาจต้องใช้ความเข้าใจเพิ่มขึ้นเล็กน้อย แต่ก็มีตัวอย่างโค้ดสำเร็จรูปให้ศึกษาและนำไปปรับใช้ได้มากมาย หลักการทำงาน เมื่อผู้ใช้หยอดเหรียญที่ถูกต้อง ตัวรับเหรียญจะส่งสัญญาณพัลส์ (Pulse) ออกมาทางสายสีขาว โดยพัลส์นี้จะกว้างประมาณ 40 มิลลิวินาที สำหรับแบบ Multi Coin สิ่งที่น่าสนใจคือเหรียญแต่ละชนิดจะถูกกำหนดจำนวนพัลส์ที่แตกต่างกันออกไป เพื่อให้ Arduino แยกแยะมูลค่าได้ ตัวอย่างเช่น เหรียญ Nickel อาจกำหนดเป็น 1 พัลส์, Dime เป็น 2 พัลส์, และ Quarter เป็น 5 พัลส์ เป็นต้น การใช้ Interrupts เพื่อให้การตรวจจับเหรียญแม่นยำและไม่พลาดสัญญาณแม้โปรแกรมจะกำลังทำงานอื่นอยู่ ผู้เชี่ยวชาญแนะนำให้ใช้ฟังก์ชัน Interrupts ใน Arduino ซึ่งแม้จะเป็นแนวคิดที่ซับซ้อนกว่าเล็กน้อย แต่ก็มีตัวอย่างและคำอธิบายให้ศึกษาได้อย่างละเอียด 3. การตั้งค่าโปรแกรม (Programming the Validator) นี่เป็นขั้นตอนที่อาจสร้างความงุนงงให้มือใหม่ แต่จริงๆ แล้วทำได้ไม่ยาก โดยไม่ต้องเขียนโค้ดแม้แต่บรรทัดเดียว วิธีทำ เพื่อ สอน ให้ตัวรับเหรียญรู้จักเหรียญของเรา ให้กดปุ่ม Setup ค้างไว้ 5 วินาที (ไฟ LED จะติด) แล้วค่อยๆ หยอดเหรียญตัวอย่างลงไป 30 เหรียญ (ตามข้อมูลของผู้ผลิต) เพื่อให้เซนเซอร์วัดขนาด เส้นผ่านศูนย์กลาง และความหนา เมื่อไฟ LED ดับลง แสดงว่าการตั้งค่าเสร็จสมบูรณ์ งานวิจัยยืนยันประสิทธิภาพ อัตราสำเร็จสูง ที่สำคัญคืองานวิจัยจากวารสารวิชาการ JUPITER (2023) ที่ทดสอบประสิทธิภาพของเซนเซอร์นี้ในการพัฒนาเครื่องชงกาแฟอัตโนมัติพบว่ามี อัตราความสำเร็จในการตรวจจับเหรียญเฉลี่ย 97.7% และในโหมดความเร็วปานกลาง (Medium) ซึ่งเป็นค่าเริ่มต้น อัตราความสำเร็จพุ่งสูงถึง 99.2% ถือเป็นตัวเลขที่น่าเชื่อถือและยืนยันว่าเซนเซอร์นี้ทำงานได้เสถียรมาก

ข้อควรระวังและข้อจำกัด

ข้อควรระวังและข้อจำกัดแหล่งจ่ายไฟ ต้องใช้ไฟเลี้ยง 12VDC สำหรับตัวรับเหรียญโดยเฉพาะ เนื่องจากในขณะทำงานอาจมีการดึงกระแสไฟฟ้าสูงถึง 400mA เหรียญที่มีรู ตัวรับเหรียญรุ่นยอดนิยมอาจไม่สามารถใช้งานได้กับเหรียญที่มีรูตรงกลาง เพราะระบบกลไกอาจตรวจจับไม่ถูกต้อง โปรเจกต์สุดคุ้มสำหรับผู้ที่อยากลอง สรุปคือ การสร้างโปรเจกต์ Arduino ร่วมกับ Coin Validator ไม่ได้ยากอย่างที่คิด! แม้ต้องใช้ความพยายามในการศึกษาโค้ดและทำความเข้าใจการทำงานของ Interrupts บ้าง แต่ด้วยตัวอย่างโค้ดและแหล่งข้อมูลที่มีอยู่มากมายบนโลกออนไลน์ ทุกคนก็สามารถทำได้ หากคุณสนใจจะสร้างตู้เกมหรือเครื่องขายของอัตโนมัติ การเริ่มต้นจากตรงนี้ไม่ใช่เรื่องยาก และข้อมูลเชิงประจักษ์จากงานวิจัยก็ยืนยันว่าเซนเซอร์ประเภทนี้มีความแม่นยำสูงและน่าเชื่อถือ โค้ด Arduino สำหรับเครื่องรับเหรียญ Coin Validator บทความนี้จะนำเสนอโค้ด Arduino

สำหรับใช้งานร่วมกับเครื่องรับเหรียญแบบ Multi Coin พร้อมคำอธิบายการทำงานและการต่อวงจร โดยอ้างอิงจากข้อมูลและตัวอย่างโค้ดจากหลายแหล่ง หลักการทำงานของ Coin Validator เครื่องรับเหรียญแบบหลายชนิด (Multi Coin) จะตรวจจับเหรียญที่ผ่านเข้าไปและส่งสัญญาณพัลส์ (Pulse) ออกมาทางสายสัญญาณ โดยเหรียญแต่ละชนิดจะถูกกำหนดจำนวนพัลส์ที่แตกต่างกัน เช่น เหรียญ A อาจส่ง 1 พัลส์ เหรียญ B ส่ง 5 พัลส์ และเหรียญ C ส่ง 10 พัลส์ Arduino จะนับจำนวนพัลส์ที่ได้รับเพื่อระบุว่าเป็นเหรียญชนิดใด การต่อวงจร (Wiring) การต่อวงจรสำหรับเครื่องรับเหรียญแบบ Multi Coin มีดังนี้

  • DC12V แดง ต่อกับแหล่งจ่ายไฟ 12V
  • COIN ขาว ต่อกับขา Digital Pin 2 ของ Arduino (พร้อมตัวต้านทาน Pull-up 10KΩ ต่อไปยัง 5V)
  • GND ดำ ต่อกับกราวด์ร่วมของ Arduino และแหล่งจ่ายไฟ 12V
  • COUNTER เทา ไม่ต้องต่อ (ใช้งานไม่จำเป็น)

โค้ดพื้นฐานสำหรับนับจำนวนพัลส์

โค้ดตัวอย่างโค้ดพื้นฐานสำหรับนับจำนวนพัลส์ โค้ดนี้ใช้ Interrupt ในการตรวจจับพัลส์จากเครื่องรับเหรียญ ซึ่งช่วยให้การตรวจจับแม่นยำแม้ Arduino กำลังทำงานอื่นอยู่

cpp

const int coinIntPin = 2;          // Interrupt Pin 0 คือ Digital Pin 2

volatile int pulseCount = 0;       // นับจำนวนพัลส์ที่ได้รับ

volatile unsigned long lastPulseTime = 0; // เวลาของพัลส์ล่าสุด

// ฟังก์ชัน Interrupt ทำงานทุกครั้งที่ได้รับสัญญาณจากเครื่องรับเหรียญ

void coinInserted() {

  pulseCount++;

  lastPulseTime = millis();

}

 

void setup() {

  Serial.begin(9600);

  pinMode(coinIntPin, INPUT_PULLUP);  // เปิด Pull-up resistor ภายใน

  attachInterrupt(digitalPinToInterrupt(coinIntPin), coinInserted, RISING);

  // ใช้ RISING เพราะเครื่องรับเหรียญจะส่งสัญญาณ HIGH เมื่อมีพัลส์

  Serial.println(Ready…);

}

void loop() {

  // หากมีพัลส์เกิดขึ้น (pulseCount > 0) และไม่มีพัลส์ใหม่เกิน 500ms

  // ให้ถือว่าการหยอดเหรียญสิ้นสุดแล้ว

  if (pulseCount > 0 && (millis() – lastPulseTime > 500)) {

    // กำหนดมูลค่าให้กับแต่ละจำนวนพัลส์

    float coinValue = 0;

    if (pulseCount == 1) {

      coinValue = 1.00;   // เหรียญชนิดที่ 1 (1 พัลส์)

    } else if (pulseCount == 2) {

      coinValue = 2.00;   // เหรียญชนิดที่ 2 (2 พัลส์)

    } else if (pulseCount == 5) {

      coinValue = 5.00;   // เหรียญชนิดที่ 3 (5 พัลส์)

    } else if (pulseCount == 10) {

      coinValue = 10.00;  // เหรียญชนิดที่ 4 (10 พัลส์)

    } else {

      // กรณีพัลส์ไม่ตรงกับที่ตั้งค่าไว้

      Serial.print(Unknown pulse count );

      Serial.println(pulseCount);

      pulseCount = 0;

      return;

    }

 

    Serial.print(Coin Value );

    Serial.println(coinValue);

   

    // reset ค่าเพื่อรอเหรียญถัดไป

    pulseCount = 0;

  }

}

โค้ดแบบใช้ Interrupt กับ timeout ที่ปรับได้

สำหรับการใช้งานที่ต้องการความแม่นยำสูงขึ้น และสามารถกำหนดจำนวนพัลส์สูงสุดได้

cpp

const int coinIntPin = 2;         

volatile int pulseCount = 0;      

volatile unsigned long firstPulseTime = 0;

volatile bool newCoin = false;

 

void coinInserted() {

  if (pulseCount == 0) {

    firstPulseTime = millis();  // บันทึกเวลาของพัลส์แรก

  }

  pulseCount++;

  newCoin = true;

}

สำหรับการใช้งานที่ต้องการความแม่นยำสูงขึ้น และสามารถกำหนดจำนวนพัลส์สูงสุดได้

cpp

const int coinIntPin = 2;         

volatile int pulseCount = 0;      

volatile unsigned long firstPulseTime = 0;

volatile bool newCoin = false;

 

void coinInserted() {

  if (pulseCount == 0) {

    firstPulseTime = millis();  // บันทึกเวลาของพัลส์แรก

  }

  pulseCount++;

  newCoin = true;

}

      Serial.print(Inserted Money = );

      Serial.println(coinValue);

     

      // reset ค่า

      pulseCount = 0;

      newCoin = false;

    }

  }

}

การตั้งค่าเครื่องรับเหรียญ (Programming)

ก่อนใช้งาน ต้องทำการ สอน เครื่องรับเหรียญให้รู้จักเหรียญที่ต้องการ โดยทำตามขั้นตอน ต่อไฟ 12V ให้เครื่องรับเหรียญ กดปุ่ม Setup ค้างไว้ 5 วินาที (ไฟ LED จะติด) หยอดเหรียญตัวอย่างประมาณ 30 เหรียญ (ตามที่ผู้ผลิตกำหนด) ลงไป เมื่อไฟ LED ดับ แสดงว่าการตั้งค่าเสร็จสมบูรณ์ กำหนดจำนวนพัลส์ที่ต้องการให้กับแต่ละเหรียญ ข้อควรระวัง แหล่งจ่ายไฟ ต้องใช้ไฟ 12VDC อย่างน้อย 400mA เนื่องจากตัวรับเหรียญอาจดึงกระแสสูงเมื่อทำงาน เหรียญที่มีรู เครื่องรับเหรียญรุ่นนี้ไม่สามารถใช้งานกับเหรียญที่มีรูตรงกลางได้ Pull-up Resistor ควรใช้ตัวต้านทาน 10KΩ ต่อจากสายสัญญาณ (สีขาว) ไปยัง 5V ของ Arduino Interrupt ควรใช้เฉพาะ Digital Pin 2 หรือ 3 บอร์ด Arduino Uno เท่านั้นที่รองรับ Interrupt โค้ดที่นำเสนอใช้ Interrupt ในการตรวจจับพัลส์จากเครื่องรับเหรียญ ซึ่งช่วยให้การนับพัลส์มีความแม่นยำและไม่พลาดสัญญาณ แม้ Arduino จะกำลังทำงานอื่นอยู่ การตั้งค่าเครื่องรับเหรียญต้องทำก่อนใช้งานโดยการหยอดเหรียญตัวอย่างเพื่อ สอน ให้เครื่องจดจำเหรียญแต่ละชนิด จากนั้น Arduino จะนับจำนวนพัลส์และแปลงเป็นมูลค่าเหรียญตามที่กำหนดในโค้ด

Arduino IDE, Arduino UNO คือ, Arduino โค้ด, Arduino โหลด, Arduino คือ, Arduino ต่อ Relay, Arduino บอร์ด, Sensor ตรวจจับวัตถุ Arduino, เขียน Arduino, เขียน Code Arduino, เซ็นเซอร์ Arduino, เซ็นเซอร์อุณหภูมิ Arduino, เรียน Arduino, โค้ด Arduino, โค้ด Arduino เซ็นเซอร์, โค้ด Arduino ง่ายๆ, โปรเจค Arduino เซ็นเซอร์อุณหภูมิ, โปรแกรม Arduino, โปรแกรม Arduino IDE, โปรแกรม Arduino UNO, ใช้ Arduino, กล้อง Arduino, ข้อมูล Arduino, ขาย Arduino, คู่มือ Arduino, ซอฟต์แวร์ Arduino, ซื้อ Arduino, ต่อ Arduino, ต่อ LCD กับ Arduino, นวัตกรรม Arduino, บอร์ด Arduino, ร้าน Arduino, ร้านขายอุปกรณ์อิเล็ค, วงจร Arduino, สอน Arduino, ออกแบบ Arduino, อุปกรณ์ Arduino, อุปกรณ์ Sensor Arduino

คู่มือพื้นฐานบอร์ด Arduino ต่อ Relay

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *