Posted on

ตัวอย่างโค้ด Arduino รวมเซนเซอร์ 37 ชิ้น

ตัวอย่างโค้ดรวมเซนเซอร์ Arduino 37 ชิ้น  Arduino Example Code 37 Sensor Kit

ตัวอย่างโค้ด โมดูลเซ็นเซอร์อุณหภูมิ Temperature sensor module Arduino Example Code

รหัสนี้ใช้ไลบรารี OneWire และ DallasTemperature เพื่อสื่อสารกับโมดูลเซ็นเซอร์อุณหภูมิ ไลบรารี OneWire ใช้เพื่อสร้างการสื่อสารกับโมดูลเซ็นเซอร์อุณหภูมิผ่านบัสสายเดี่ยว และไลบรารี DallasTemperature มีอินเทอร์เฟซที่ใช้งานง่ายสำหรับการอ่านค่าอุณหภูมิ ในฟังก์ชันการตั้งค่า เราเริ่มต้นพอร์ตอนุกรมและเริ่มไลบรารี DallasTemperature ในฟังก์ชันลูป เราร้องขออุณหภูมิจากเซ็นเซอร์โดยใช้ฟังก์ชัน requestTemperatures จากนั้นพิมพ์ค่าอุณหภูมิโดยใช้ฟังก์ชัน getTempCByIndex โปรดทราบว่ารหัสนี้ถือว่าโมดูลเซ็นเซอร์อุณหภูมิเชื่อมต่อกับพิน 2 บนบอร์ด Arduino และใช้ดัชนีอุปกรณ์เริ่มต้น (0) คุณอาจต้องแก้ไขค่าเหล่านี้ขึ้นอยู่กับการตั้งค่าเฉพาะของคุณ

#include <OneWire.h>
#include <DallasTemperature.h>

// Data wire is plugged into pin 2 on the Arduino
#define ONE_WIRE_BUS 2

// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature. 
DallasTemperature sensors(&oneWire);

void setup(void)
{
  // start serial port
  Serial.begin(9600);
  Serial.println("Dallas Temperature IC Control Library Demo");

  // Start up the library
  sensors.begin();
}

void loop(void)
{
  // call sensors.requestTemperatures() to issue a global temperature 
  // request to all devices on the bus
  Serial.print(" Requesting temperatures...");
  sensors.requestTemperatures(); // Send the command to get temperatures
  Serial.println("DONE");

  // After we got the temperatures, we can print them here.
  // We use the function ByIndex, and as an example get the temperature from the first sensor only.
  Serial.print("Temperature for the device 1 (index 0) is: ");
  Serial.println(sensors.getTempCByIndex(0));
}

 

ตัวอย่างโค้ด Automatic flashing colorful LED module Arduino Example Code

#define RED_PIN 9
#define GREEN_PIN 10
#define BLUE_PIN 11

void setup() {
  // Set the pins as outputs
  pinMode(RED_PIN, OUTPUT);
  pinMode(GREEN_PIN, OUTPUT);
  pinMode(BLUE_PIN, OUTPUT);
}

void loop() {
  // Turn on red LED for 1 second
  digitalWrite(RED_PIN, HIGH);
  delay(1000);
  digitalWrite(RED_PIN, LOW);

  // Turn on green LED for 1 second
  digitalWrite(GREEN_PIN, HIGH);
  delay(1000);
  digitalWrite(GREEN_PIN, LOW);

  // Turn on blue LED for 1 second
  digitalWrite(BLUE_PIN, HIGH);
  delay(1000);
  digitalWrite(BLUE_PIN, LOW);
}

 

ตัวอย่างโค้ด Mini magnetic reed modules Arduino Example Code

#define REED_SWITCH_PIN 2

void setup() {
  // Set the reed switch pin as an input
  pinMode(REED_SWITCH_PIN, INPUT);
}

void loop() {
  // Read the state of the reed switch
  int reedSwitchState = digitalRead(REED_SWITCH_PIN);

  // Print the state of the reed switch
  if (reedSwitchState == HIGH) {
    Serial.println("Reed switch is closed");
  } else {
    Serial.println("Reed switch is open");
  }

  // Wait for 1 second before reading the reed switch again
  delay(1000);
}

 

ตัวอย่างโค้ด Hall Magnetic sensor module Arduino Example Code

 

ตัวอย่างโค้ด Infrared sensor receiver module Arduino Example Code

 

ตัวอย่างโค้ด Class Bihor magnetic sensor Arduino Example Code

 

ตัวอย่างโค้ด เซนเซอร์สวิตช์ปรอทกับหลอดไฟ LED KY-027 Magic light cup module Arduino Example Code

 

ตัวอย่างโค้ด Rotary encoder module Arduino Example Code

 

ตัวอย่างโค้ด Optical broken module Arduino Example Code

 

ตัวอย่างโค้ด Detect the heartbeat module Arduino Example Code

 

ตัวอย่างโค้ด Reed module Arduino Example Code

 

ตัวอย่างโค้ด Obstacle avoidance sensor module Arduino Example Code

 

ตัวอย่างโค้ด Hunt sensor module Arduino Example Code

 

ตัวอย่างโค้ด Mercury open optical module Arduino Example Code

 

ตัวอย่างโค้ด 3mm 2 Color LED module Arduino Example Code

 

ตัวอย่างโค้ด Active buzzer module

 

ตัวอย่างโค้ด Microphone sound sensor module

 

ตัวอย่างโค้ด Laser sensor module Arduino Example Code

 

ตัวอย่างโค้ด Temperature sensor module Arduino Example Code

 

ตัวอย่างโค้ด Magnetic Hall sensors Arduino Example Code

 

ตัวอย่างโค้ด Flame sensor module Arduino Example Code

 

ตัวอย่างโค้ด Sensitive microphone sensor module Arduino Example Code

 

ตัวอย่างโค้ด Temperature&humidity sensor module Arduino Example Code

 

ตัวอย่างโค้ด 3 Color full-color LED SMD modules Arduino Example Code

 

ตัวอย่างโค้ด Infrared emission sensor module Arduino Example Code

Posted on

การควบคุมรถบังคับดีซีมอเตอร์ผ่านสมาร์ทโฟนโดยใช้อาดูโน่ Arduino Car Robot Bluetooth Module

หลักการควบคุมไดรเวอร์มอเตอร์ L298 ด้วย Arduino และสมาร์ทโฟน จะต้องตั้งค่าการสื่อสาร Bluetooth ระหว่าง Arduino และสมาร์ทโฟน ติดตั้งโมดูล Bluetooth เช่น Bluetooth HC-05 (ZS-040) บน Arduino และต่อสายตามแผ่นข้อมูลของโมดูล ส่งคำสั่งจากสมาร์ทโฟนไปยัง Arduino เพื่อควบคุม L298 และมอเตอร์ที่เชื่อมต่ออยู่ ตัวอย่างเช่น ส่ง “F” เพื่อให้มอเตอร์เคลื่อนที่ไปข้างหน้า ส่ง “B” เพื่อให้มอเตอร์เคลื่อนที่ถอยหลัง และ ส่ง “S” เพื่อหยุดมอเตอร์ สามารถส่งคำสั่งเพื่อควบคุมความเร็วของมอเตอร์ เช่น “1” สำหรับความเร็วต่ำและ “9” สำหรับความเร็วสูง

รวบรวมวัสดุที่จำเป็น:

  1. BDMC04 บอร์ดอาดุยโน่ Arduino Uno R3 Compatible DIP IC CH340 USB Cable
  2. BDSP02 บอร์ดขับมอเตอร์ DC Motor Driver L298N
  3. BDBT01 โมดูลบลูทูธ Bluetooth Module HC-06 BT06 (ZS-040)
  4. DC Gear Motor พร้อมล้อ + โครงสร้างรถหรือตัวถังรถเพื่อประกอบฐานล้อ โครงรถอลูมิเนียม Aluminum Frame Robot Car Wheel TT DC Gear Motor
  5. เครื่องมือช่างที่จำเป็นได้แก่หัวแร้งและตะกั่วบัดกรี

แผนผังการต่อสายไฟ

ติดตั้งแอพเทอร์มินัล Bluetooth บนสมาร์ทโฟน

แอพ Android และ iOS ที่ให้เราส่งและรับข้อมูลผ่านบลูทูธ โดยใช้ Bluetooth terminal app, Serial Bluetooth Terminal, Bluetooth Terminal

ตั้งค่าฮาร์ดแวร์:

เชื่อมต่อโมดูลบลูทูธ เข้ากับ Arduino

  1. โมดูลบลูทูธ VCC  >> 3.3V Arduino
  2. โมดูลบลูทูธ GND >> GND Arduino
  3. โมดูลบลูทูธ RXD >> 11 Arduino
  4. โมดูลบลูทูธ TXD >> 10 Arduino

เขียน Code: arduino

เขียน Sketch สำหรับ Arduino เพื่อควบคุม L298 ตามคำสั่งที่ได้รับผ่านการเชื่อมต่อ Bluetooth Sketch นี้ใช้ไลบรารี software serial เพื่อตั้งค่าพอร์ตอนุกรมที่สองสำหรับ Bluetooth Module และรับฟังคำสั่งผ่านพอร์ตนี้ในฟังก์ชันลูป เมื่อได้รับคำสั่ง มันจะควบคุม L298 ตามอักขระที่ได้รับ L298 ถูกควบคุมโดยใช้ฟังก์ชันเอาต์พุตดิจิตอลเพื่อกำหนดทิศทางของมอเตอร์ และฟังก์ชันเอาต์พุตแบบอะนาล็อกเพื่อตั้งค่าความเร็วของมอเตอร์โดยใช้การมอดูเลตความกว้างพัลส์ (PWM)

#include <SoftwareSerial.h>

// Set up a software serial port for the HC-05, HC-06 Bluetooth module
SoftwareSerial BTserial(10, 11); // RX, TX

// Set up constants for the L298 control pins
const int in1 = 4; // MOTOR1 DIR
const int in2 = 5; // MOTOR1 DIR 
const int enA = 6; // MOTOR1 SPEED

const int in3 = 7; // MOTOR2 DIR
const int in4 = 8; // MOTOR2 DIR 
const int enB = 9; // MOTOR2 SPEED

void setup() {
  // Initialize serial communication with the computer
  Serial.begin(9600);
  // Initialize serial communication with the HC-05
  BTserial.begin(9600);

  // Set up the L298 control pins as outputs
  pinMode(enA, OUTPUT);
  pinMode(in1, OUTPUT);
  pinMode(in2, OUTPUT);
  pinMode(enB, OUTPUT);
  pinMode(in3, OUTPUT);
  pinMode(in4, OUTPUT);
}

void loop() {
  // Check if there is data available from the HC-05
  if (BTserial.available()) {
    // Read a single character from the HC-05
    char c = BTserial.read();
            Serial.print(c);
    
    // Check the character and control the L298 accordingly
    switch (c) {
      case 'f':
  // Forward
  digitalWrite(in1, HIGH);
  digitalWrite(in2, LOW);
  digitalWrite(in3, HIGH);
  digitalWrite(in4, LOW);
  analogWrite(enA, 255); // Full speed
  analogWrite(enB, 255); // Full speed
        break;
        
      case 'b':
  // Backward
  digitalWrite(in1, LOW);
  digitalWrite(in2, HIGH);
  digitalWrite(in3, LOW);
  digitalWrite(in4, HIGH);
  analogWrite(enA, 255); // Full speed
  analogWrite(enB, 255); // Full speed
        break;
        
      case 's':
  // Stop
  digitalWrite(in1, LOW);
  digitalWrite(in2, LOW);
  digitalWrite(in3, LOW);
  digitalWrite(in4, LOW);
  analogWrite(enA, 0); // 0% duty cycle
  analogWrite(enB, 0); // 0% duty cycle  
        break;
        
      case '1':
        // Low speed
        analogWrite(enA, 128); // 50% duty cycle
        analogWrite(enB, 128); // 50% duty cycle
        break;
      
      case '9':
        // High speed
        analogWrite(enA, 255); // 100% duty cycle
        analogWrite(enB, 255); // 100% duty cycle
        break;
      
      default:
        // Invalid command
        break;
    }
  }
}

 

Posted on

วิธีใช้อาดูโน่ควบคุมรถบังคับดีซีมอเตอร์ Arduino L298N DC Motor Car Robot

ในการควบคุมรถ RC โดยใช้ Arduino และไดรเวอร์มอเตอร์ L298N จะต้องทำตามขั้นตอนเหล่านี้

รวบรวมวัสดุที่จำเป็น:

  1. BDMC04 บอร์ดอาดุยโน่ Arduino Uno R3 Compatible DIP IC CH340 USB Cable
  2. BDSP02 บอร์ดขับมอเตอร์ DC Motor Driver L298N
  3. DC Gear Motor พร้อมล้อ + โครงสร้างรถหรือตัวถังรถเพื่อประกอบฐานล้อ RC4401 โครงรถอลูมิเนียม Aluminum Frame Robot Car 65mm Wheel TT DC Gear Motor
  4. เครื่องมือช่างที่จำเป็นได้แก่หัวแร้งและตะกั่วบัดกรี

ตั้งค่าฮาร์ดแวร์:

  1. เชื่อมต่อแหล่งจ่ายไฟเข้ากับโมดูลไดรเวอร์มอเตอร์ L298N
  2. โมดูล L298N จะต้องมีแหล่งจ่ายไฟแยกต่างหากจาก Arduino เนื่องจากจะต้องขับมอเตอร์ซึ่งต้องใช้กระแสไฟมาก
  3. เชื่อมต่อมอเตอร์เข้ากับโมดูลไดรเวอร์มอเตอร์ L298N โมดูล L298N มีเอาต์พุตมอเตอร์สองตัวสำหรับมอเตอร์ด้านซ้ายขวาของรถ RC
    1. เชื่อมต่อมอเตอร์ด้านซ้าย เข้า กับขั้วต่อ M1
    2. เชื่อมต่อมอเตอร์ด้านขวา เข้า กับขั้วต่อ M2
    3. เชื่อมต่อโมดูลไดรเวอร์มอเตอร์ L298N เข้ากับ Arduino เชื่อมต่อพิน ENA และ ENB ของโมดูล L298N
    4. เชื่อมต่อโมดูลไดรเวอร์มอเตอร์ L298Nเข้ากับพินดิจิทัล PWM ของ Arduino
    5. เชื่อมต่อพิน IN1, IN2, IN3 และ IN4 เข้ากับพินดิจิทัลเอาต์พุตของ Arduino

แผนผังการต่อสายไฟ

https://oshwlab.com/s2insupply/arduino-l298n-rc-robot-car

เขียน Code: arduino

  • เขียน Arduino Sketch เพื่อควบคุมมอเตอร์ ใช้ฟังก์ชัน digitalWrite() เพื่อตั้งค่าสถานะของพิน IN1, IN2, IN3 และ IN4 และใช้ฟังก์ชัน analogWrite() เพื่อตั้งค่าความเร็วของมอเตอร์โดยใช้พิน ENA และ ENB
  • อัปโหลด Sketch ไปยัง Arduino และทดสอบรถ RC ใช้ฟังก์ชัน digitalWrite() และ analogWrite() ใน Sketch เพื่อควบคุมทิศทางและความเร็วของมอเตอร์ และใช้รีโมทคอนโทรลหรืออุปกรณ์อินพุตอื่นๆ เพื่อส่งคำสั่งไปยัง Arduino

 

// Set up constants for the L298 control pins
const int in1 = 4; // MOTOR1 DIR
const int in2 = 5; // MOTOR1 DIR 
const int enA = 6; // MOTOR1 SPEED

const int in3 = 7; // MOTOR2 DIR
const int in4 = 8; // MOTOR2 DIR 
const int enB = 9; // MOTOR2 SPEED

void setup() {
  // Set up the L298 control pins as outputs
  pinMode(in1, OUTPUT);
  pinMode(in2, OUTPUT);
  pinMode(enA, OUTPUT);
  
  pinMode(in3, OUTPUT);
  pinMode(in4, OUTPUT);
  pinMode(enB, OUTPUT);
}

void loop() {
  // Forward
  digitalWrite(in1, HIGH);
  digitalWrite(in2, LOW);
  analogWrite(enA, 255); // Full speed
  digitalWrite(in3, HIGH);
  digitalWrite(in4, LOW);
  analogWrite(enB, 255); // Full speed
  
  // Wait for 1 second
  delay(1000);
  
  // Backward
  digitalWrite(in1, LOW);
  digitalWrite(in2, HIGH);
  analogWrite(enA, 255); // Full speed
  digitalWrite(in3, LOW);
  digitalWrite(in4, HIGH);
  analogWrite(enB, 255); // Full speed
  
  // Wait for 1 second
  delay(1000);  
  // Stop
  digitalWrite(in1, LOW);
  digitalWrite(in2, LOW);
  digitalWrite(in3, LOW);
  digitalWrite(in4, LOW);
  analogWrite(enA, 0); // 0% duty cycle
  analogWrite(enB, 0); // 0% duty cycle  
  
  // Wait for 1 second
  delay(1000);
}

 

Posted on

วิธีทำถังขยะอัตโนมัติใช้อาดูโน่เซอร์โวมอเตอร์และอัลตร้าโซนิคเซนเซอร์ Arduino automatic waste bin

ภาพรวมของระบบถังขยะควบคุมอัตโนมัติประกอบด้วยส่วนประกอบหลัก 3 ส่วนได้แก่ตัวควบคุมเซ็นเซอร์และมอเตอร์ควบคุมในที่นี้ส่วน input ให้มาจากเซ็นเซอร์เซ็นเซอร์อัลตร้าโซนิคและ output ที่สามารถควบคุมการเคลื่อนไหวนั่นคือมอเตอร์ขนาดเล็กนั่นเอง

วิธีทำถังขยะอัตโนมัติโดยใช้อาดูโน่และเซอร์โวมอเตอร์และอัลตร้าโซนิคเซนเซอร์ การทำถังขยะอัตโนมัติโดยใช้ Arduino เซอร์โวมอเตอร์ และเซ็นเซอร์อัลตราโซนิกเป็นโครงการง่ายๆ ที่สามารถทำได้ในไม่กี่ขั้นตอน นี่คือโครงร่างทั่วไปของวิธีเริ่มต้นใช้งาน: หลักการทำงานของ เซ็นเซอร์อัลตราโซนิก HC-SR04 เป็นอุปกรณ์ยอดนิยมและราคาไม่แพงที่สามารถใช้วัดระยะทางไปยังวัตถุได้ ทำงานโดยปล่อยคลื่นเสียงความถี่สูงและวัดเวลาที่คลื่นเสียงสะท้อนกลับหลังจากกระทบวัตถุ หากต้องการใช้เซ็นเซอร์อัลตราโซนิก HC-SR04 กับบอร์ด Arduino จะต้องเชื่อมต่อเข้ากับบอร์ดโดยใช้สายจัมเปอร์ HC-SR04 มี 4 พิน คือ Vcc, Trig, Echo และ GND

รวบรวมวัสดุที่จำเป็น:

  1. BDMC04 บอร์ดอาดุยโน่ Arduino Uno R3 Compatible DIP IC CH340 USB Cable
  2. MT0501 เซอร์โวมอเตอร์ RC Servo Motor Micro RC SG90 Black
  3. SSUS01 เซ็นเซอร์อัลตราโซนิก เซ็นเซอร์จับระยะ Ultrasonic Sensor HC-SR04
  4. แหล่งพลังงาน (เช่น แบตเตอรี่หรือแหล่งจ่ายไฟ DC 4.5 – 12V)
  5. รังถ่านใส่แบตเตอรี่ Battery Holder
  6. สายไฟจัมเปอร์ Jumper Wire
  7. ถังขยะขนาดเล็กตามแต่จะหาได้

ตั้งค่าฮาร์ดแวร์:

  1. เชื่อมต่อเซอร์โวมอเตอร์เข้ากับ บอร์ด Arduino UNO R3 โดยใช้สายจัมเปอร์
  2. เชื่อมต่อเซ็นเซอร์อัลตราโซนิกเข้ากับ บอร์ด Arduino UNO R3 โดยใช้สายจัมเปอร์
  3. เชื่อมต่อแหล่งจ่ายไฟ DC 4.5 – 12V เข้ากับ บอร์ด Arduino Uno R3 ผ่านทางขั้ว DC Jack 5.5×2.1mm
  4. Code นี้ เซอร์โวมอเตอร์เชื่อมต่ออยู่กับขา 8 ของ บอร์ด Arduino Uno R3
  5. ขา Trig Pin ของเซ็นเซอร์อัลตราโซนิกเชื่อมต่อกับขา 9 ของ บอร์ด Arduino Uno R3
  6. ขา echo Pin ของเซ็นเซอร์อัลตราโซนิกเชื่อมต่อกับขา 10 ของ บอร์ด Arduino Uno R3

How HC-SR04 Ultrasonic Module Distance Sensor works

เซ็นเซอร์จะส่ง Ping ที่เวลา t1 และรับการ Ping ที่เด้งที่เวลา t2 เมื่อทราบความเร็วของเสียง ความแตกต่างของเวลา Δt = t2 – t1 สามารถทำให้เราทราบระยะทางของวัตถุได้

  • D, distance = (t2 – t1/2)
  • D, distance = (Δt /2)
  • D, distance = (duration/2)

ตัวอย่างเช่น ถ้า Δt = 500us เรารู้ว่าต้องใช้เวลา 250us ในการส่ง Ping ไปกระทบวัตถุ และอีก 250us ในการกลับมา
ความเร็วเสียง c โดยประมาณในอากาศแห้งกำหนดโดย  สมการ:

  • c = 331.5 + 0.6 * [อุณหภูมิอากาศเป็นองศาเซลเซียส]
    ที่ 20°C,
  • c = 331.5 + 0.6 * 20
  • c = 343.5 m/s
    ถ้าเราแปลงความเร็วเป็นเซนติเมตรต่อไมโครวินาที เราจะได้:
  • c = 343.5 * (100/1000000)
  • c = 0.03435 cm./s

ระยะทางคือ

  • D, distance = (Δt/2)*c

หรือ

  • distance = 250*0.03435 = 8.6cm.

แทนที่จะใช้ความเร็วของเสียง เราสามารถใช้ “อัตราเร็วของเสียง” ได้เช่นกัน
อัตราเร็วของเสียง = 1 / c

อัตราเร็วของเสียง = 1 / 0.03435

อัตราเร็วของเสียง = 29.1ss/cm

ในกรณีนี้ สมการที่ใช้คำนวณระยะทางจะกลายเป็น:

  • distance = (Δt/2) / อัตราเร็วของเสียง

และสำหรับตัวอย่างด้านบน:

  • distance = 250 / 29.1
  • distance = 8.6 cm

https://www.instructables.com/Using-a-SR04/

 

แผนผังการต่อสายไฟ

https://oshwlab.com/s2insupply/arduino-automatic-waste-bin

เขียน Code: arduino Code เชื่อมต่ออัลตราโซนิคเซนเซอร์เพื่อควบคุมเซอร์โวมอเตอร์

  1. ใช้ Arduino Integrated Development Environment (IDE) เพื่อเขียนโปรแกรมที่จะควบคุมเซอร์โวมอเตอร์และเซ็นเซอร์อัลตราโซนิก
  2. กำหนดตัวแปร
    1. const int trigPin = 9; // define trigPin for ultrasonic sensor
    2. const int echoPin = 10; // define echoPin for ultrasonic sensor
    3. myservo.attach(8);  // attach the servo to pin 8
  3. ตั้งค่าเซอร์โวมอเตอร์และเซ็นเซอร์อัลตราโซนิก
  4. ในฟังก์ชันลูป ใช้เซ็นเซอร์อัลตราโซนิกเพื่อวัดระยะทางไปยังวัตถุ
  5. หากระยะทางต่ำกว่าเกณฑ์ที่กำหนด ให้เปิดใช้งานเซอร์โวมอเตอร์เพื่อเปิดถังขยะ
    1. เซ็นเซอร์อัลตราโซนิกจะใช้เพื่อวัดระยะทางไปยังวัตถุ หากระยะห่างน้อยกว่า 20 ซม. เซอร์โวมอเตอร์จะตั้งค่าเป็น 0 องศาเป็นเวลา 1 วินาที จากนั้นตั้งค่าเป็น 90 องศา
    2. หากระยะทางมากกว่า 20 ซม. เซอร์โวมอเตอร์จะตั้งค่าเป็น 90 องศา
  6. อัพโหลดโค้ดไปยังบอร์ด Arduino
  7. ทดสอบและดีบัก
  8. ทดสอบโปรแกรมโดยวางวัตถุไว้ด้านหน้าเซ็นเซอร์อัลตราโซนิก และตรวจสอบว่าเซอร์โวมอเตอร์เคลื่อนที่เพื่อเปิดถังขยะ
  9. ดีบักปัญหา ที่เกิดขึ้นโดยใช้เครื่องมือดีบักในตัว Arduino IDE และตรวจหาข้อผิดพลาดทางไวยากรณ์หรือข้อผิดพลาดเชิงตรรกะในโค้ดของเรา

ตัวอย่าง Arduino Code เชื่อมต่ออัลตราโซนิคเซนเซอร์เพื่อวัดระยะทางไปยังวัตถุ

// define the pins for Ultrasonic Sensor HC-SR04
const int trigPin = 9;  // define the trigPin and trigPin for the Ultrasonic Sensor HC-SR04
const int echoPin = 10; // define the trigPin and echoPin for the Ultrasonic Sensor HC-SR04

void setup() {
  // initialize the pins as outputs and inputs
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  
  // start the serial communication
  Serial.begin(9600);
}

void loop() {
  // send a pulse to the trigPin
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  
  // measure the time it takes for the pulse to return
  long duration = pulseIn(echoPin, HIGH);
  
  // calculate the distance based on the speed of sound
  int distance = duration * 0.034 / 2;
  
  // print the distance to the serial monitor
  Serial.println(distance);
  
  // wait a bit before taking the next measurement
  delay(100);
}

 

ตัวอย่าง Arduino Code เชื่อมต่ออัลตราโซนิคเซนเซอร์เพื่อวัดระยะทางไปยังวัตถุและควบคุมเซอร์โวมอเตอร์

#include <Servo.h> // include the Servo library

Servo myservo; // create a servo object

// define the pins for Ultrasonic Sensor HC-SR04
const int trigPin = 9;  // define the trigPin and trigPin for the Ultrasonic Sensor HC-SR04
const int echoPin = 10; // define the trigPin and echoPin for the Ultrasonic Sensor HC-SR04

void setup() {
  myservo.attach(8); // attach the servo to pin 8
  pinMode(trigPin, OUTPUT); // set the trigPin as an output
  pinMode(echoPin, INPUT); // set the echoPin as an input
  
  // start the serial communication
  Serial.begin(9600);

}

void loop() {
  long duration, distance; // create variables to store the duration and distance
  
  digitalWrite(trigPin, LOW); // set the trigPin low
  delayMicroseconds(2); // wait for 2 microseconds
  
  digitalWrite(trigPin, HIGH); // set the trigPin high
  delayMicroseconds(10); // wait for 10 microseconds
  
  digitalWrite(trigPin, LOW); // set the trigPin low
  
  duration = pulseIn(echoPin, HIGH); // read the duration of the pulse
  distance = (duration/2) / 29.1; // calculate the distance in centimeters
  
  if (distance < 20) { // if the distance is less than 20 cm
    myservo.write(0); // set the servo to 0 degrees
    delay(1000); // wait for 1 second
    myservo.write(90); // set the servo to 90 degrees
  }
  else { // if the distance is greater than 20 cm
    myservo.write(90); // set the servo to 90 degrees
        Serial.println(distance);
  }
}

 

Posted on

การต่อเซ็นเซอร์ที่มีเอาต์พุตเป็น NPN ร่วมกับอาดูโน่

เซ็นเซอร์ที่มี เอาต์พุต เป็นชนิด NPN
หมายความว่าในสถานะปกติที่ยังไม่พบชิ้นงานใดๆ
เอาต์พุต จะมีสถานะเป็น Logic High
เมื่อเซ็นเซอร์ตรวจพบชิ้นงานสถานะของ เอาต์พุต จะเปลี่ยน เป็น Logic Low

 

เราสามารถประโยช์การเปลี่ยนแปลงสัญยาณเอาต์พุตของเซ็นเซอร์ เอาไปใช้ในการควบคุมอุปกรณ์ เอาต์พุต อย่างเช่น  Rejector ได้

เซ็นเซอร์ที่มี เอาต์พุต เป็นชนิด PNP
หมายความว่าในสถานะปกติที่ยังไม่พบชิ้นงานใดๆ
เอาต์พุตจะมีสถานะเป็น Logic Low
เมื่อเซ็นเซอร์ตรวจพบชิ้นงานสถานะของ เอาต์พุต จะเปลี่ยน เป็น Logic High

*การใช้งานเซ็นเซอร์ที่มี เอาต์พุต เป็นชนิด PNP
ต้องระวังเรื่องแรงดัน เราควรจะเลือกรุ่นที่มีแรงดันเป็น 5 โวลท์

* หากใช้เซ็นเซอร์ที่รับไฟเลี้ยง 12 โวลท์ หรือ 24 โวลท์สถานะ เอาต์พุต
จะเท่ากับแหล่งจ่ายนั่นคือ 12 โวลท์หรือ 24 โวลท์
จะทำให้อาดูโน่เกิดความเสียหาย

* หากมีความจำเป็นต้องใช้เซนเซอร์ที่ใช้แรงดัน 12 หรือ 24 โวลท์

แนะนำให้ต่อตัวต้านทาน 2K อนุกรม

 

 

 

 

 

 

Posted on

โหลดเซล สเตนเกจ Stain gauge Weight Sensor (Load Cell)

โหลดเซล Weight Sensor (Load Cell) เป็นเซนเซอร์สำหรับชั่งน้ำหนัก ประกอบด้วยสเตนเกจ หรือเซนเซอร์แบบใช้แรงกด (ความเครียด) 4 ตัว ซึ่งจัดเรียงวงจรในรูปแบบของวงจรวิจสโตนบริดจ์ โหลดเซล จะแปลงค่า ความเครียด เป็นสัญญาณแรงดันไฟฟ้าแบบ Differential โดยใช้สายสัญญาณ (+) และสายสัญญาณ (-) แรงดันไฟฟ้าที่ได้มีขนาดเพียงไม่กี่มิลลิโวลต์ ต้องนำสัญญาณเข้าโมดูลขยายสัญญาณและแปลงเป็นสัญญาณ Digital เช่นโมดูล HX711 ก่อนเข้าสู่ ไมโครคอนโทรลเลอร์ เพื่อนำสัญญาณไปแปลงเป็นน้ำหนัก

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

  1. โหลดเซลล์ ประเภท คลาสความแม่นยำ D1 – C2 มีความแม่นยำค่อนข้างต่ำใน สำหรับเครื่องชั่งวัสดุก่อสร้างทั่วไปที่ใช้ชั่งน้ำหนักทราย ซีเมนต์ หรือน้ำ
  2. โหลดเซลล์ ประเภท คลาสความแม่นยำ C3 มีความแม่นยำสูง (0.0230%) – accuracy class ใช้ในการใช้งานทั่วไป ได้แก่ เครื่องชั่งแบบสายพาน เครื่องชั่งแบบตั้งพื้น และอุปกรณ์ชั่งน้ำหนักอิเล็กทรอนิกส์อื่นๆ เครื่องชั่ง เครื่องบรรจุ เครื่องชั่งในส่วนการประกันคุณภาพ ที่ต้องระบุหน่วยเป็น กรัม หรือไมโครกรัม
  3. โหลดเซลล์ ประเภท คลาสความแม่นยำ C4 – C5 (0.0174% – 0.0140%) ใช้สำหรับเครื่องชั่งที่ใช้สำหรับเครื่องชั่งแบบนับเคาน์เตอร์ในร้านค้า เครื่องบรรจุ การตรวจสอบการชั่งน้ำหนักแบบไดนามิก ตลอดจนเครื่องชั่งแบบตั้งพื้นและแบบสายพานที่ต้องการความแม่นยำสูง
  4. โหลดเซลล์ ประเภท คลาสความแม่นยำ C6 (0.0116%) มีความแม่นยำสูงสุด ใช้ในเครื่องชั่งแบบพิเศษ หรือในเครื่องตรวจสอบน้ำหนักบนสายพาน บรรจุภัณฑ์อาหาร และการทดสอบยานพาหนะ

Single Point Load Cells

LCA001 โหลดเซลล์/สเตรนเกจ Load Cell Strain Gauge Weighing Sensor AT8500-0.3kg C3 1mV/V