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

เริ่มต้นใช้งาน Mixly กับ Robot Biped หุ่นยนต์เดิน 2ขา ด้วย Arduino Nano

เริ่มต้นใช้งาน Mixly

Mixly เป็นฟรีโอเพ่นซอร์สซอฟต์แวร์กราฟิกภาษา Visual Arduino ซึ่งจะทำให้การเขียนโปรแกรมทำได้ง่ายเหมือนกับการสร้างบล็อค Mixly GUI ได้รับการพัฒนาบนพื้นฐานของ Blockly และ Java8 ซึ่งสามารถทำงานได้บน OS Win7 หรือสูงกว่า มีไฟล์การติดตั้ง Arduino IDE รวมถึงโค้ดตัวอย่าง

1. ดาวน์โหลด โปรแกรม mixly ได้ที่ http://wiki.sunfounder.cc/index.php?title=Get_started_with_Mixly

อินเทอร์เฟซหลักของ Mixly

1 ด้านซ้าย พื้นที่ Blocks หมวดหมู่ บล็อก สำหรับเขียนโปรแกรม

2 ตรงกลาง พื้นที่เขียนโปรแกรม วาง Blocks

3 ด้านขวา เพื่อซูมเข้าหรือซูมออกและลบ

4 แถบสีเทาที่ด้านล่างสุดเป็นแถบเครื่องมือรวมถึงเมนูฟังก์ชันทั้งหมด

5 ด้านล่างสุดคือแถบแสดงข้อความ

 

Blocks

Mixly วางการเขียนโปรแกรมให้อยู่ในรูป Block ซึ่งได้แก่ In / Out, Control, SerialPort และ Block หมวดหมู่บล็อกอื่น ๆ ที่จำเป็นต้องใช้คำนวณทางคณิตศาสตร์ เช่น Math, Block ที่จำเป็นต้องใช้สำหรับ Biped Robot หุ่นยนต์เดิน 2ขา นั้นมีดังนี้

  • In/Out: DigitalRead, DigitalWrite, AnalogRead, AnalogWrite, attachInterrupt, detachInterrupt, ShiftOut, etc.
  • Control: Delay, if…do…, repeat…do…, System running time, setup, etc.
  • Math: Map, Constrain, operations like +/-, sin/cos, random integer from…to… etc.
  • Logic: if conditional statement, logical operations
  • SerialPort: set baud rate, print data, read data
  • Communicate: IR receive, IR send, I2C read/write device, to SPI, etc.
  • Sensor: ultrasonic, DHT11, DS18B20
  • Actuator: Tone control, servo and stepper control.
  • Monitor: setup LCD pin, LCD print data, set LCD I2C address
  • Variables: High/Low, True/False, float, integer, Boolean, string variables, etc.
  • Functions: define function, do procedure with, etc.

ไดร์เวอร์

เมื่อเราเชื่อมต่อบอร์ด Arduino Nano เข้ากับคอมพิวเตอร์ คอมพิวเตอร์อาจแสดง “Unknown Device” หรือ “USB Serial Port” ด้วยเครื่องหมายอัศเจรีย์สีเหลือง ให้เราทำการตติดตั้งไดรเวอร์ให้เรียบร้อย โดยการ คลิกขวาที่ “Unknown Device” หรือ “USB Serial Port” พร้อมเครื่องหมายอัศเจรีย์สีเหลืองและคลิก “Update Driver Software” จากนั้นคลิก “Browse my computer for driver software”

ตัวอย่าง การเขียนโปรแกรม Mixly ควบคุมหุ่นยนต์ 

  1. ให้เชื่อมต่อบอร์ด Arduino Nano กับคอมพิวเตอร์ ด้วยสาย USB ที่เตรียมไว้ให้
  2. จากนั้นเปิด โปรแกรม Mixly เลือกประเภทของบอร์ดเป็น (Arduino Nano) และเลือกพอร์ต Com Port ให้ตรง
  3. จากนั้นไปที่ Open เพื่ออัพโหลดไฟล์โปรแกรม เราจะเห็นผลลัพธ์ของแต่ละโปรแกรม ว่า Biped Robot ทำงานตามโปรแกรมอย่างไร

1. ตัวอย่าง โปรแกรมการปรับเซอร์โวทั้ง 4 ตัว ของหุ่นยนต์แบบเดินสองขา

2. ตัวอย่าง โปรแกรมหุ่นยนต์เดินสองขา เดินหน้าถอยหลัง เลี้ยวซ้ายเลี้ยวขวา

3. ตัวอย่าง โปรแกรมหุ่นยนต์แบบสองขาเต้น

4. ตัวอย่าง โปรแกรมหุ่นยนต์เดินสองขา หลบหลีกสิ่งกีกขวาง โดยใช้อัลตราโซนิคเซนเซอร์

5. ตัวอย่าง โปรแกรมควบคุมหุ่นยนต์ไร้สายด้วยรีโมทอินฟราเรด

 

ดาวน์โหลด

Posted on

ตัวอย่างโปรแกรมใช้ Arduino + Photoelectric Sensor

ตัวอย่างโปรแกรมใช้ Arduino 
เมื่อไม่มีวัตถุใดๆอยู่ตรงหน้าเซนเซอร์ เอาต์พุตเป็น 1 เมื่อมีวัตถุใดๆอยู่ตรงหน้าเซนเซอร์ เอาต์พุตเป็น 0

int sensorValue_Proximity_Photoelec = 0; 
int sensorValue_Proximity_Inductive = 0; 
void setup() {
  // put your setup code here, to run once:
  //start serial connection
  Serial.begin(9600);
  //configure pin2 as an input and enable the internal pull-up resistor
  pinMode(9, INPUT_PULLUP);//Photo
  pinMode(10, INPUT_PULLUP);//Metal sensor
  
  pinMode(2, OUTPUT); //CLK step
  pinMode(3, OUTPUT); //DIR step
  pinMode(4, OUTPUT); //IN1 L298
  pinMode(5, OUTPUT); //IN2 L298
}

void loop() {
  // put your main code here, to run repeatedly:
sensorValue_Proximity_Photoelec = digitalRead(9);
sensorValue_Proximity_Inductive = digitalRead(10);

  Serial.print("Photoelec D9 = ");
  Serial.print(sensorValue_Proximity_Photoelec);
  
  Serial.print("t Inductive D10 = ");
  Serial.println(sensorValue_Proximity_Inductive);
}

 

Posted on

การติดตั้งไลบรารี่ Library สำหรับ Arduino IDE

การติดตั้งไลบรารี่ Library สำหรับ Arduino IDE

Library คืออะไร?
Library คือชุดของ Code ที่ช่วยให้เราติดต่อกับเซนเซอร์ จอแสดงผล โมดูล ฯลฯ ได้ง่าย ตัวอย่างเช่น Library LiquidCrystal ช่วยให้ติดต่อกับจอ LCD แบบตัวอักษรเป็นเรื่องง่าย Library มีให้ดาวน์โหลดบนอินเทอร์เน็ต มากมาย

วิธีการติดตั้ง Library
การติดตั้ง Library ใหม่ใน  ให้เปิด Arduino IDE และคลิกไปที่เมนู “Sketch” จากนั้นเลือก Include Library >> Add.ZIP Library…

จากนั้นทำการเลือก Library .ZIP ที่ดาวน์โหลดมา

 

 

Posted on

การเขียนโปรแกรมเชิงภาพสำหรับ Arduino ใช้ ardublockly

การเขียนโปรแกรมเชิงภาพสำหรับ Arduino ใช้การสร้างโค้ด Arduino และอำนวยความสะดวกในการอัปโหลดโปรแกรมโดยอิงตามบล็อก

คุณสมบัติ
สร้างโค้ด Arduino พร้อมบล็อกแบบลากแล้วปล่อย
โหลดโค้ดลงบอร์ด Arduino
“คำเตือนการบล็อกโค้ด” ที่เป็นประโยชน์
ใช้งานร่วมกับบอร์ด Arduino อย่างเป็นทางการได้หลากหลาย
รันบน Windows / Linux / Mac OS X
Ardublockly ยังอยู่ในระหว่างการพัฒนาและยังไม่ได้ใช้งานคุณสมบัติบางอย่าง คุณสามารถดูรายการสิ่งที่ต้องทำได้ในไฟล์ TODO.md

ปัจจุบันทดสอบภายใต้ Windows ด้วย Python 2.7 และ 3.4 และใน Linux และ MacOS X ด้วย Python 2.7

 

ข้อมูลเพิ่มเติม

  • https://ardublockly.embeddedlog.com/demo/index.html#
  • https://github.com/carlosperate/ardublockly
  • https://developers.google.com/blockly/
Posted on

เริ่มต้นใช้งานระบบ DAQ อย่างง่ายโดยใช้ parallax.com PLX-DAQ Excel & Arduino from