autoworks24.com

สอนการใช้งานบอร์ด Arduino 3-Axis Accelerometer (ADXL335) GY-61

สอนการใช้งานบอร์ด Arduino 3-Axis Accelerometer (ADXL335) GY-61

สอนการใช้งานบอร์ด Arduino 3-Axis Accelerometer (ADXL335) GY-61

โมดูล ADXL335 เป็นเซนเซอร์วัดความเร่ง 3 แกน สามารถวัดอัตราเร่งคงที่ของแรงโน้มถ่วงของโลก รองรับไฟ 3.3V ให้ค่าเซนเซอร์แกน x,y,z ออกมาเป็น Analog กรณีใช้งานกับบอร์ด Arduino สามารถต่อเข้ากับขาอะนาล็อก เช่น A0-A5 อ่านค่า Name: ADXL335 module (tri-axial accelerometer analog output) สอนการใช้งานบอร์ด Arduino กับ GY-61 3-axis Accelerometer Module แจ้งเตือนวัตถุเอียง พร้อมโค้ดตัวอย่าง GY-61 คือ โมดูล Accelerometer มีทั้งหมด 3 แกน x y และ z เอาต์พุตแบบ Analog แยกกันทั้น3แกน ต่อวงจรได้ง่าย ใช้งานไม่ยุ่งยาก ใช้ได้ทั้งไฟเลี้ยง 3.3 และ 5 โวลต์ นำไปประยุกต์ใช้งานได้ทั้ง Arduino esp8266 esp32 หรือบอร์ดอื่นๆ GY-61 Datasheet วิธีการใช้ Arduino IDE วิธีดาวน์โหลดและติดตั้งโปรแกรม Arduino IDE เริ่มต้นใช้งานบอร์ด Arduino UNO R3 วิธีิอัพโหลดโค้ด สอนการใช้งานบอร์ด Arduino 3-Axis Accelerometer (ADXL335) GY-61 สอน Image Processing

  • ตัวอย่างที่ 1

รายการอุปกรณ์ Aduino UNO R3 GY-61 3-axis Accelerometer Module (ADXL335) สายจั้มเปอร์ Breadboard 400 holes 5mm LED Pack (เขียว,เหลือง,แดง) 330 Ohm วิธีการต่อใช้งาน

GY-61 —-> Arduino UNO R3

VCC —-> 5V

X_OUT —-> A0

Y_OUT —-> A1

Z_OUT —-> A2

GND —-> GND

LED —-> Arduino UNO R3

Anode (+) —-> 330R —–> 13

Cathode (-) —-> GND

#define SENSOR_X A0

#define SENSOR_Y A1

#define SENSOR_Z A2

#define LED 13

void setup() {

Serial.begin(9600);

pinMode(LED, OUTPUT);

}

void loop() {

int analog_x = analogRead(SENSOR_X);

int analog_y = analogRead(SENSOR_Y);

int analog_z = analogRead(SENSOR_Z);

analog_x = map(analog_x, 271, 406, 0, 180);

analog_y = map(analog_y, 267, 403, 0, 180);

analog_z = analog_z > 330 ? 1 : 0;

Serial.println(“X : ” + String(analog_x));

Serial.println(“Y : ” + String(analog_y));

Serial.println(“Z : ” + String(analog_z));

Serial.println();

if (analog_x < 70 || analog_x > 110) {

digitalWrite(LED, HIGH);

}

else if (analog_y < 70 || analog_y > 110) {

digitalWrite(LED, HIGH);

}

else if (analog_z == 0) {

digitalWrite(LED, HIGH);

}

else{

digitalWrite(LED, LOW);

}

delay(500);

}

สอนการใช้งานบอร์ด Arduino 3-Axis Accelerometer (ADXL335) GY-61

การใช้งานเซนเซอร์วัดความเร่งแบบสามแกน 3-Axis Accelerometer (ADXL335) GY-61

โมดูลวัดความเร่งแบบสามแกน 3-Axis Accelerometer (ADXL335) GY-61 บอร์ดโมดูลที่กล่าวถึงในบทนี้คือ โมดูลวัดความเร่งแบบสามแกนแบบดิจิทัลที่ใช้ชิปเบอร์ ADXL345 เป็นเซนเซอร์วัดสัญญาณความเร่งในสามแกน ที่มีนิยามทิศทางแสดงอยู่บนบอร์ดอย่างชัดแจ้ง (รูปที่ 10.1) โดยโมดูลนี้ให้ให้สัญญาณขาออกเป็นข้อมูลดิจิทัลและติดต่อใช้งานผ่าน I2C ได้และสามารถกำหนดค่าความโน้มถ่วงสูงสุดที่อ่าน ได้สูงสุดถึง ±16g (±2g, ±4g, ±8g, และ ±16g) โดย g คือค่าความเร่งจากแรงดึงดูดของโลก (ประมาณ 10 m/s2) ชิป ADXL345 เป็นระบบวัดการเร่งความเร็ว แบบ 3 แกนที่ทำงานได้ในระดับการใช้พลังงานที่ต่ำมาก วัดได้ทั้งความเร่ง/ความเร็วแบบไดนามิกอันเป็นผลมาจากการเคลื่อนไหวหรือแรงกระแทกและการเร่งความเร็วแบบคงที่เช่นการเอียง ง่ายต่อการสื่อสารกับไมโครคอนโทรลเลอร์รุ่นใหม่ๆ ผ่านการสื่อสารแบบ I2C ที่ใช้เพียงขา SCL และ SDA คุณสมบัติของชิปวัดค่าความเร่ง ADXL345 ร้านขายบอร์ด Arduino ขอนแก่น

  • ใช้ไฟเลี้ยงในช่วงกว้าง 0 – 3.6 V
  • กินพลังงานต่ำมาก (23 µA ที่ไฟเลี้ยง 5 V)
  • สามารถเลือกความละเอียดในการวัดผ่านคำสั่งที่รับผ่านการสื่อสารแบบอนุกรมได้
  • ข้อมูลที่อ่านได้มีความละเอียดสูงถึง 004 g/LSB (13 บิต)
  • สามารถนำมาเชื่อมต่อได้ทั้งแบบแบบ SPI และ I2C

การวัดความเร่งแบบ 3 แกน 3-Axis Accelerometer (ADXL335) GY-61

การวัดมุมเอียงของเซนเซอร์สามารถทำได้โดยการวัดความเร่งในแต่ละแกน สอนการใช้งานบอร์ด Arduino 3-Axis Accelerometer (ADXL335) GY-61 โดยทั่วไปเราจะนิยามการเอียงเมื่อเทียบกับแกนหรือระบบพิกัดอ้างอิง โดยบอกความเอียงเป็นมุมที่หมุนเอียงไปในแกนหนึ่งๆ ซึ่งการเอียงในแต่ละทิศจะมีลักษณะการกำหนดทิศทาง โมดูลวัดความเร่งนี้จะวัดความเร่งในแต่ละแกน ก็คือ ขณะที่โมดูลอยู่นิ่งๆ ค่าความเร่งในแต่ละแกนน่าจะมีค่าเป็นศูนย์ แต่ในความเป็นจริงอย่าลืมว่ายังมีแรงโน้มถ่วงของโลกอยู่ด้วย ดังนั้นค่าที่อ่านได้จึงไม่ได้เป็นศูนย์ทั้งหมด คือ ถ้าเราตั้งเครื่องให้แกน Z ตั้งฉากกับพื้นโลก แกน X และ Y จะเป็น 0 แต่ว่าแกน Z จะไม่เป็น 0 เพราะมีแรงโน้มถ่วงของโลกกระทำอยู่ ดังนั้นค่าที่ได้จากแกน Z จึงมีค่า 9.81 m/s2 หรือประมาณ 10 m/s2 รูปที่ 10.3 แสดงลักษณะการวางโมดูลที่ทำให้อ่านค่าได้ค่าต่างๆ ในกรณีที่อยู่นิ่งๆ และแกน X, Y และ Z ไม่มีแกนใดตั้งฉากกับพื้นโลก แรงโน้มถ่วงของโลกที่กระทำกับแต่ละแกนของโมดูลวัดความเร่งก็จะกระจายออกไปในแต่ละแกน ขึ้นอยู่กับการเอียงของเซนเซอร์ แต่เมื่อคิดเวกเตอร์ลัพธ์ที่ตั้งฉากกับพื้นโลกก็มีค่าประมาณ 10 m/s2 สอนการใช้งานบอร์ด Arduino 3-Axis Accelerometer (ADXL335) GY-61  ร้านขาย Arduino ขอนแก่น

ไลบรารีและคำสั่งที่เกี่ยวข้อง 3-Axis Accelerometer (ADXL335) GY-61

ในขั้นแรกของการใช้งานโมดูล ADXL345 เราจะต้องดาวน์โหลดไลบรารีมาลงในโปรแกรม Arduino IDE เสียก่อน โดยผู้ใช้จะต้องดาวน์โหลดไลบรารีสองตัวคือ Adafruit_Sensor และ Adafruit_ADXL345 โดยหลังจากติดตั้งไลบรารีลงใน Arduino IDE แล้ว ผู้ใช้สามารถเรียกใช้งานโมดูล ADXL345 ได้โดยเริ่มจากการเพิ่มไลบรารี 3 ตัวได้แก่ Wire.h, Adafruit_Sensor.h และ Adafruit_ADXL345_U.h แล้วจึงกำหนดวัตถุคือ โมดูล ADXL345 ที่เชื่อมต่อ โดยใช้คำสั่งAdafruit_ADXL345_Unified accel = Adafruit_ADXL345_Unified(12345); โดย accel คือชื่อวัตถุที่สร้างจากคลาส Adafruit_ADXL345_Unified ซึ่งคลาสนี้เป็นคลาสที่ใช้งานได้อย่างหลากหลาย มีฟังก์ชันที่เป็นเมธอดที่อ่านค่าความเร่งอยู่ภายใน พร้อมให้เรียกใช้งาน โดยการเชื่อมต่อโมดูลนี้ ชิป ADXL345 กำหนดให้มีการเชื่อมต่อแบบ I2C โดยมี address คือ 0x53 และเชื่อมต่อผ่านขา D1 และ D2 ของ NodeMCU ฟังก์ชัน begin() เป็นฟังก์ชันที่เรียกเพื่อใช้ตรวจสอบการเชื่อมต่อของโมดูลและไมโครคอนโทรลเลอร์ โดยหลังจากที่เชื่อมต่อได้แล้ว เราจะสามารถกำหนดขอบเขตของการอ่านค่าได้โดยใช้คำสั่ง accel.setRange(ADXL345_RANGE_xx_G) โดย xx = 2, 4, 8, 16 และกำหนดอัตราเร็วในการส่งข้อมูล ด้วยคำสั่ง setDataRate(dataRate) โดยฟังก์ชันที่กล่าวถึงนี้ จะอยู่ในส่วนของ setup() ของโปรแกรมการเรียกใช้งาน (อ่านค่า) ความเร่งจากโมดูลทำได้โดยกำหนดตัวแปร เหตุการณ์ คือ sensors_event_t event; จากนั้นจึงใช้ฟังก์ชัน (เมธอด) getEvent เพื่ออ่านค่าความเร่งแล้วเราสามารถเรียกดูค่าความเร่งในแต่ละแกนได้จาก event.acceleration.x (.y และ .z) ในการใช้งานโมดูลนี้ หากเราต้องการค่าที่ถูกต้องแม่นยำ เราอาจจะทำการเทียบวัด (calibration) ก่อน ด้วยวิธีการทางซอฟต์แวร์ โดยผู้ที่สนใจวิธีการนี้ ก็สามารถศึกษาเพิ่มเติมได้จากแหล่งความรู้ในอินเทอร์เน็ตเช่น https://learn.adafruit.com/adxl345-digital-accelerometer/programming สำหรับขาที่ใช้ในการเชื่อมต่อเพื่อใช้งานโมดูล ADXL345 มีด้วยกัน 4 ขา คือ VCC, GND, SDA และ SCL โดยในการทดลองนี้ เราจะเชื่อมต่อขา D1 และ D2 ของ NodeMCU เข้ากับขา SCL และ SDA ตามลำดับ สอนการใช้งานบอร์ด Arduino 3-Axis Accelerometer (ADXL335) GY-61 คอร์สเรียน Image Processing

การทดลองวัดค่าความเร่ง 3-Axis Accelerometer (ADXL335) GY-61

วัตถุประสงค์ สามารถต่อวงจร NodeMCU v.3 กับโมดูลวัดความเร่ง 3 แกน ได้ สอนการใช้งานบอร์ด Arduino 3-Axis Accelerometer (ADXL335) GY-61 สามารถเขียนโปรแกรมแสดงผลการวัดความเร่งได้ สามารถเขียนโปรแกรมเพื่อนำค่าความเร่งที่วัดได้ไปใช้งานต่อไปได้อุปกรณ์ที่ใช้ในการทดลอง ทดสอบผลการวัดความเร่งในแนวแกน X, Y, และ Z โดยการหมุนเซนเซอร์ในทิศต่างๆ แล้วอ่านค่าที่แสดง เขียนโค้ดโปรแกรมเพื่อตรวจสอบเหตุการณ์การเคลื่อนที่อย่างรวดเร็ว ซึ่งเป็นเหตุการณ์ที่ทำให้มีขนาดความเร่งรวมเกิน 20 m/s2 และแสดงผลเป็นข้อความผ่านพอร์ตอนุกรม สอนการใช้งานบอร์ด Arduino 3-Axis Accelerometer (ADXL335) GY-61 ขายอุปกรณ์อิเล็กทรอนิกส์

ตัวอย่างการใช้งาน 3-Axis Accelerometer (ADXL335) GY-61

เมื่อเซนเซอร์อยู่แนวระนาบ ไฟจะดับ เมื่อแกน X หรือ แกน Y เอียง ไฟสว่าง เมื่อคว่ำเซนเซอร์ แกน Z มีค่าเป็น 0 ไฟสว่าง GY-61 เป็นโมดูลวัดค่าความเร่ง (Accelerometer) แบบ 3 แกน ใช้ชิพ ADXL335 จาก Analog Device มีช่วงการวัดน้อยสุดที่ +3g โมดูลทำงานที่ 3.3 ถึง 5 โวลต์ ให้ค่าเอาท์พุตเป็นแรงดันสามารถเชื่อมต่อกับไมโครคอนโทรลเลอร์ต่างๆ เช่น Arduino หรือ Raspberry Pi ผ่านทาง AnalogInput เหมาะสำหรับการวัดค่าความเร่งที่คงที่จากการเอียง หรือการวัดความเร่งที่เปลี่ยนแปลงไปจากการเคลื่อนไหว การกระแทก หรือการสั่นสะเทือน General specifications เชื่อมต่อผ่าน Analog input ใช้ไฟ +3.3 ถึง 5 VDC ใช้ชิป ADXL335 3-axis Accelerometer Module (ADXL335) เซนเซอร์วัดความเร่ง 3 แกน ADXL335 เป็นเซนเซอร์วัดความเร่งแบบ 3 แกน( 3-axis Accelerometer ) มีขนาดเล็กใช้พลังงานต่ำ เซนเซอร์วัดความเร่ง 3 แกน สามารถวัดอัตราเร่งคงที่ของเเรงโน้มถ่วงของโลก รองรับไฟ 3.3V ให้ค่าเซนเซอร์แกน x,y,z ออกมาเป็น Analog ถ้าต่อกับ Arduino ก็ใช้ ขาอะนาล็อกเช่น A0-A5 อ่านค่าเข้ามาได้ ตัวอย่างโคด Code Arduino ADXL335

int x, y, z;

void setup()

{

Serial.begin(9600);

}

void loop()

{

x = analogRead(A0); // อ่านค่าจากขาอะนาล็อก A0

y = analogRead(A1); // อ่านค่าจากขาอะนาล็อก A1

z = analogRead(A2); // อ่านค่าจากขาอะนาล็อก A2

Serial.print(“accelerations are x, y, z: “);

Serial.print(x, DEC); // แสดงค่าความเร่งแกน X เป็นเลขฐาน 10

Serial.print(” “);

Serial.print(y, DEC); //แสดงค่าความเร่งแกน Y เป็นเลขฐาน 10

Serial.print(” “);

Serial.println(z, DEC); // แสดงค่าความเร่งแกน Z เป็นเลขฐาน 10

delay(100); // หน่วงเวลา 100 มิลลิวินาที

}

ขายคอร์สเรียนการทำ SEO ตัวต่อตัว

ใส่ความเห็น

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