สารบัญ:
วีดีโอ: วิธีสร้าง Cubesat ด้วย Arduino และ Accelerometer: 5 ขั้นตอน
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
เราชื่อ บร็อก เอ็ดดี้ และดรูว์ เป้าหมายหลักสำหรับคลาสฟิสิกส์ของเราคือการเดินทางจากโลกไปยังดาวอังคารในขณะที่จำลองวงโคจรรอบดาวอังคารโดยใช้ Cube Sat และรวบรวมข้อมูล เป้าหมายกลุ่มของเราสำหรับโครงการนี้คือการรวบรวมข้อมูลโดยใช้เซ็นเซอร์มาตรความเร่งที่จะแนบกับ Arduino ของเราภายใน Cube Sat ซึ่งจะโคจรรอบ "ดาวอังคาร" เพื่อค้นหาแรงโน้มถ่วงบนดาวเคราะห์ดวงนั้น ข้อจำกัดที่เป็นไปได้บางประการสำหรับงานเฉพาะนี้คือโค้ดทำงานไม่ถูกต้อง มาตรความเร่งไม่รวบรวมข้อมูล และขีดจำกัดที่ CubeSat สามารถชั่งน้ำหนักได้ แม้ว่าจะมีคนอื่นอีกมากมายที่สามารถพบเจอได้ แต่ก็เป็นคนที่กลุ่มของเราเผชิญอยู่ วิดีโอของโครงการสุดท้ายและการทดสอบของเราสามารถพบได้ที่นี่ https://www.youtube.com/embed/u1_o38KSrEc -Eddie
ขั้นตอนที่ 1: รายการวัสดุ
วัสดุทั้งหมดที่ระบุไว้ เข้าไปที่ CUBESAT
1. Arduino & Power Cable https://www.amazon.com/Elegoo-EL-CB-001-ATmega328…: Arduino ได้รับการออกแบบมาเพื่อให้อุปกรณ์อิเล็กทรอนิกส์สามารถเข้าถึงได้มากขึ้นสำหรับศิลปิน นักออกแบบ นักงานอดิเรก และใครก็ตามที่สนใจในการสร้างวัตถุหรือสภาพแวดล้อมแบบโต้ตอบ
: ให้พลังงานเข้าและออกจาก Arduino และคอมพิวเตอร์ของคุณ
2. เขียงหั่นขนม
: บอร์ดสำหรับทำโมเดลทดลองวงจรไฟฟ้า
วัสดุที่แนบมากับเขียงหั่นขนม
1. Arduino Accelerometer
:เครื่องมือสำหรับวัดอัตราเร่งหรือสำหรับตรวจจับและวัดแรงสั่นสะเทือน
2. โมดูลการ์ด SD Arduino
:มันช่วยให้คุณเพิ่มที่เก็บข้อมูลขนาดใหญ่และการบันทึกข้อมูลในโครงการของคุณ
3. สาย Arduino
:โอนรหัสทั่วทั้ง Arduino และเขียงหั่นขนม
4. ไฟ LED
:LED เป็นไฟขนาดเล็ก (ย่อมาจาก "light emitting diode") ที่ใช้พลังงานค่อนข้างน้อย
-ดรูว์
ขั้นตอนที่ 2: เครื่องมือที่จำเป็นและแนวทางปฏิบัติด้านความปลอดภัย
เครื่องมือที่จำเป็น
1. มีดที่แน่นอน
- เราใช้มีดที่แน่นอนเพื่อตัดและติดตามรูปร่างของ Arduino และ Breadboard ผ่าน Styrofoam เพื่อปกป้อง Arduino และ Breadboard ในกรณีที่เกิดอุบัติเหตุ
2. ปืนกาวร้อน
- เราใช้ปืนกาวร้อนติดโฟมที่ด้านข้างของ Cubesat เพื่อให้แน่ใจว่า Arduino และ Breadboard ของเราปลอดภัย
3. โฟม
- เราใช้ชิ้นส่วนของโฟมเพื่อยึด Arduino และเขียงหั่นขนมไว้กับด้านข้างของ Cubesat ของเรา และเพื่อให้รองรับในกรณีที่ Cubesat หล่นหรือเขย่าไปรอบๆ
แนวทางปฏิบัติด้านความปลอดภัย
1. แนวทางปฏิบัติด้านความปลอดภัยข้อแรกที่เราบังคับใช้คือทำให้แน่ใจว่าเราไม่ได้สัมผัสเครื่องพิมพ์ 3 มิติในขณะที่กำลังพิมพ์ Cubesat เครื่องพิมพ์ 3 มิติจะร้อนจัด และสิ่งสำคัญคือต้องไม่แตะต้องเครื่องพิมพ์ 3 มิติ
2. เมื่อใช้มีดที่แน่นอนเพื่อตัดชิ้นส่วนของโฟม เราต้องวางกระดาษแข็งไว้ด้านล่างเพื่อให้แน่ใจว่าโต๊ะจะไม่ได้รับความเสียหาย เราต้องสวมแว่นตาเมื่อใช้มีดด้วย เผื่อว่ามีอะไรลอยขึ้นมาบนใบหน้าหรือรอบๆ พื้นที่ทำงานของเรา
3. เมื่อใช้เครื่องมือใดๆ ที่ต้องใช้แรงงานหนัก ควรสวมแว่นตาเพื่อความปลอดภัย
4. เมื่อคุณติด Cubesat เข้ากับยานอวกาศ อย่าลืมเตือนผู้คนรอบๆ ยานอวกาศว่าคุณจะทำการทดสอบ Cubesat ของคุณและสวมแว่นตาเพื่อให้แน่ใจว่าส่วนต่างๆ ของร่างกายและผู้คนทั้งหมดปลอดภัย
-ดรูว์
ขั้นตอนที่ 3: วิธีการ:
วิธีสร้าง CubeSat
1. เพื่อเริ่มกระบวนการสร้าง CubeSat คุณต้องค้นหาโมเดลของ CubeSat ที่มีขนาด 10x10x10 และมีไฟล์ STL อยู่ในมือ
2. เมื่อคุณพบโมเดลที่จะทำงานในการถือเขียงหั่นขนมและ Arduino ได้อย่างปลอดภัย คุณต้องดาวน์โหลดไฟล์ในแฟลชไดรฟ์ เพื่อให้คุณสามารถเข้าถึงไฟล์บนเครื่องพิมพ์ 3 มิติได้
3. หลังจากดาวน์โหลดไฟล์ที่ถูกต้องในแฟลชไดรฟ์แล้ว คุณสามารถต่อแฟลชไดรฟ์เข้ากับคอมพิวเตอร์ที่ต่อกับเครื่องพิมพ์ 3 มิติ
4. เมื่อคุณกำลังพิมพ์ ตรวจสอบให้แน่ใจว่าคุณได้เลือกไฟล์ที่ถูกต้อง และสายไฟ รหัส และอินพุตทั้งหมดเชื่อมต่อระหว่างคอมพิวเตอร์และเครื่องพิมพ์ 3D อย่างถูกต้อง เพื่อให้แน่ใจว่า CubeSat ถูกพิมพ์อย่างถูกต้อง และทุกอย่างเป็นไปตามแผน
5. กำหนดเวลาให้สมาชิกกลุ่มแต่ละคนเพื่อตรวจสอบเครื่องพิมพ์และความคืบหน้าของ CubeSat อย่างมีประสิทธิภาพเพื่อตรวจจับปัญหาที่คุณอาจพบ ให้สมาชิกในทีมตรวจสอบความคืบหน้าทุกๆ 2-3 ชั่วโมง จะให้ความช่วยเหลือเพียงพอในการแก้ไขปัญหาและติดตามความคืบหน้า
-เอ็ดดี้
รหัส:
#รวม #รวม #รวม #รวม
const int MPU=0x68; int16_t AcX, AcY, AcZ, Tmp, GyX, GyY, GyZ; สนามคู่, ม้วน;
ข้อมูลไฟล์;
การตั้งค่าเป็นโมฆะ (){
โหมดพิน (10, เอาต์พุต); // ต้องตั้งค่าพิน 10 ให้เป็นเอาต์พุตแม้ว่าจะไม่ได้ใช้; //ตั้งค่าพิน 7 เพื่อเปิดไฟ LED SD.begin(4); // เริ่มต้นการ์ด sd โดยตั้งค่า CS เป็นพิน 4 Serial.begin(9600); Serial.println(F("ทดสอบ BMP280")); Wire.begin(); Wire.beginTransmission(MPU); Wire.write(0x6B); Wire.write(0); Wire.endTransmission(จริง); Serial.begin(9600); } วงเป็นโมฆะ () { Wire.beginTransmission (MPU); Wire.write(0x3B); Wire.endTransmission (เท็จ); Wire.requestFrom(MPU, 14, จริง);
ใน AcXoff, AcYoff, AcZoff, GyXoff, GyYoff, GyZoff; อุณหภูมิภายใน, ทอฟฟ์; ดับเบิล t, tx, tf;
//การแก้ไขข้อมูลการเร่ง AcXoff = -950; AcYoff = -300; แอคซอฟ = 0;
//toff การแก้ไขอุณหภูมิ = -1600;
//การแก้ไขไจโร GyXoff = 480; GyYoff = 170; จิซอฟ = 210;
//อ่านข้อมูลการเร่ง AcX=(Wire.read()<<8|Wire.read()) + AcXoff; AcY=(Wire.read()<<8|Wire.read()) + AcYoff; AcZ=(Wire.read()<<8|Wire.read()) + AcYoff;
//read temperature data temp=(Wire.read()<<8|Wire.read()) +toff; tx=อุณหภูมิ; เสื้อ = tx/340 + 36.53; tf = (t * 9/5) + 32;
//อ่านข้อมูลไจโร GyX=(Wire.read()<<8|Wire.read()) + GyXoff; GyY=(Wire.read()<<8|Wire.read()) + GyYoff; GyZ=(Wire.read()<<8|Wire.read()) + GyZoff;
ข้อมูล = SD.open("Log.txt", FILE_WRITE); //เปิดไฟล์ชื่อ "บันทึก"
// รับ pitch/roll getAngle(AcX, AcY, AcZ);
//ส่งข้อมูลออกพอร์ตอนุกรม Serial.print("มุม: "); Serial.print("Pitch = "); Serial.print(พิทช์); Serial.print(" | ม้วน = "); Serial.println(ม้วน);
Serial.print("อุณหภูมิ: "); Serial.print("อุณหภูมิ(F) = "); Serial.print(tf); Serial.print(" | อุณหภูมิ (C) = "); Serial.println(t);
Serial.print("มาตรความเร่ง: "); Serial.print("X = "); Serial.print(AcX); Serial.print(" | Y = "); Serial.print(AcY); Serial.print(" | Z = "); Serial.println(AcZ);
Serial.print("ไจโรสโคป: "); Serial.print("X = "); Serial.print(GyX); Serial.print(" | Y = "); Serial.print(GyY); Serial.print(" | Z = "); Serial.println(GyZ); Serial.println(" ");
Data.print(พิทช์); Data.println(ม้วน);
Data.print(tf); Data.println(t); Data.print(AcX); //เขียนข้อมูล acel ลงในไฟล์ Data.print(", "); //พิมพ์เครื่องหมายจุลภาคในไฟล์ Data.print(AcY); Data.print(", "); Data.print(AcZ); Data.print(", "); Data.print(GyX); Data.print(", "); Data.print(GyY); Data.print(", "); Data.println(GyZ);
ล่าช้า (1000); }
// แปลงข้อมูลการเร่งความเร็วเป็น pitch/roll void getAngle (int Vx, int Vy, int Vz) { double x = Vx; สองเท่า y = Vy; ดับเบิ้ล z = Vz;
}
}
รหัส (ต่อ):
-นี่คือรหัสที่เราใช้ในการรวบรวมข้อมูลจากมาตรความเร่งและการ์ด SD
- หลังจากเดินสาย Arduino และ Breadboard ของเราเพื่อให้ดูเหมือนกับแผนภาพ เราเสียบการ์ด SD เข้ากับโมดูลอะแดปเตอร์การ์ด SD และเตรียมพร้อมสำหรับการทดสอบขั้นสุดท้ายของเราต่อไป
- เรามีปัญหากับรหัสมาเป็นเวลานาน แต่รหัสที่ให้ไว้ด้านบนเป็นรหัสสุดท้ายที่เราใช้ซึ่งให้ข้อมูลที่เราใช้สำหรับการนำเสนอของเรา
- รหัสนี้รวบรวมข้อมูลจากมาตรความเร่งและถ่ายโอนข้อมูลไปยังการ์ด SD
- เสียบการ์ด SD เข้ากับ USB และเสียบเข้ากับคอมพิวเตอร์ จากนั้นข้อมูลก็ถูกใส่ลงในคอมพิวเตอร์ของเรา
-Brock
การเดินสายไฟ ARDUINO:
- ขณะเดินสาย Arduino เราต่อสู้กับ dud wire และ dud Arduinos
- เราต้องแก้ไขการเดินสายของ Arduino หลายครั้งเนื่องจากการเดินสายไม่ถูกต้อง
- เพื่อให้แน่ใจว่าการเดินสายและการเข้ารหัสที่ถูกต้อง ตรวจสอบให้แน่ใจว่าสายไฟของคุณได้รับการรักษาความปลอดภัยอย่างสมบูรณ์และประมวลผลรหัสของคุณอย่างถูกต้อง
แผนภาพ Fritzing:
- แผนภาพฟริทซ์นั้นตรงไปตรงมาและง่ายต่อการปฏิบัติตาม
- เราประสบปัญหาเกี่ยวกับไดอะแกรมเมื่อโมดูลการ์ด SD ไม่ได้เป็นส่วนหนึ่งของโปรแกรม fritzing ด้วยเหตุนี้เราจึงต้องค้นหาออนไลน์เพื่อหาส่วนที่ดาวน์โหลดได้เพื่อรวมไว้ในไดอะแกรม
- เราได้ทำไดอะแกรมเสร็จแล้วโดยรวมส่วนและโปรแกรมที่ถูกต้องลงในไดอะแกรม
-ดรูว์
ขั้นตอนที่ 4: ผลลัพธ์/บทเรียนที่ได้รับ
กราฟของเราแสดงอุณหภูมิที่เพิ่มขึ้นอย่างชัดเจน ซึ่งน่าจะเกิดจากฮีตเตอร์ใช้เวลาในการไปถึงอุณหภูมิสูงสุด
สำหรับโครงงานนี้ ฟิสิกส์ที่เราพบคือแรงสู่ศูนย์กลางที่ทำให้ CubeSat โคจรอยู่
-Brock