สารบัญ:

ที่ชาร์จโทรศัพท์อัตโนมัติ: 6 ขั้นตอน (พร้อมรูปภาพ)
ที่ชาร์จโทรศัพท์อัตโนมัติ: 6 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: ที่ชาร์จโทรศัพท์อัตโนมัติ: 6 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: ที่ชาร์จโทรศัพท์อัตโนมัติ: 6 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: รีวิว แท่นชาร์จมือถือแบบไร้สาย ราคาไม่ถึง100 ใช้ได้จริง - Wireless Charger QI 2024, กรกฎาคม
Anonim
ที่ชาร์จโทรศัพท์อัตโนมัติ
ที่ชาร์จโทรศัพท์อัตโนมัติ

"คำแนะนำนี้ถูกสร้างขึ้นเพื่อตอบสนองความต้องการของโครงการ Makecourse ที่มหาวิทยาลัยเซาท์ฟลอริดา (www.makecourse.com)"

แนวคิดเบื้องหลังโครงการนี้คือการสร้างอุปกรณ์ที่สามารถชาร์จโทรศัพท์ได้ จากนั้นจึงถอดปลั๊กเมื่อโทรศัพท์ถึง 100% สิ่งนี้จะหยุดปัญหาการชาร์จเกิน

ขั้นตอนที่ 1: ส่วนประกอบพลาสติก

ส่วนประกอบพลาสติก
ส่วนประกอบพลาสติก
ส่วนประกอบพลาสติก
ส่วนประกอบพลาสติก
ส่วนประกอบพลาสติก
ส่วนประกอบพลาสติก
ส่วนประกอบพลาสติก
ส่วนประกอบพลาสติก

มีส่วนประกอบบางอย่างที่ใช้พิมพ์ 3 มิติ ส่วนประกอบเหล่านี้ประกอบด้วยฐาน ตัวยึดสำหรับแท่นชาร์จ ชุดแร็คแอนด์พิเนียน (เกียร์ธรรมดาและชิ้นส่วนเชิงเส้นที่เปลี่ยนการหมุนเป็นการเคลื่อนที่เชิงเส้น) และฐานสำหรับการทำงานทุกอย่าง องค์ประกอบเหล่านี้จะอธิบายในย่อหน้าต่อไปนี้ ตามลำดับการปรากฏตัว

ที่ชาร์จ

จุดประสงค์ของสิ่งนี้คือเพื่อเก็บที่ชาร์จโทรศัพท์หรืออย่างน้อยก็ให้ฐานที่ดีกว่าและอยู่ในระดับที่เหมาะสม

ฐาน

ฐานมีวงแหวนสำหรับที่วางโทรศัพท์และรางสำหรับชุดเกียร์

ที่วางโทรศัพท์

ถือโทรศัพท์ชัดๆ

แขนโทรศัพท์

เคลื่อนย้ายและถือโทรศัพท์

ชุดเกียร์แร็คแอนด์พิเนียน

ใช้สำหรับย้ายที่ชาร์จโทรศัพท์ไปมา

ขั้นตอนที่ 2: แบ่งส่วนประกอบที่ไม่ใช่ 3D ที่พิมพ์ออกมา

เหล่านี้เป็นส่วนประกอบที่ซื้อสำหรับโครงการหรือเป็นเจ้าของแล้ว สำหรับบางส่วนที่ฉันเชื่อมโยงกับพวกเขา/รายการที่คล้ายกันใน Amazon แต่อย่าลังเลที่จะซื้อได้ทุกที่

ไมโครเซอร์โว:https://www.amazon.com/J-Deal-Micro-Helicopter-Air…

เซอร์โว 0-180 มาตรฐาน:https://www.amazon.com/Futaba-FUTM0031-S3003-Stand…

โมดูลอนุกรมบลูทูธ HC-05:https://www.amazon.com/HC-05-Bluetooth-Pass-throug…

โทรศัพท์และที่ชาร์จโทรศัพท์

Arduino

เขียงหั่นขนม

กล่องหรือถังสำหรับฐาน

เซ็นเซอร์สัมผัส:https://www.amazon.com/Digital-Sensor-capacitive-s…

ขั้นตอนที่ 3: อุปกรณ์อิเล็กทรอนิกส์

อิเล็กทรอนิกส์
อิเล็กทรอนิกส์

วงจรสำหรับโครงการนี้อาจต้องใช้บ้าง ส่วนใหญ่เป็นเพราะโมดูล HC-05 โมดูลประเภทนี้จำนวนมากมีอัตราประมาณ 3.3V ถึง 6V ซึ่งอยู่ในช่วงการทำงานของ Arduino แต่สำหรับการสื่อสารแบบอนุกรม บางครั้งพิน Rx ก็ทำงานได้ดีกว่าด้วยแรงดันไฟเพียง 3.3V เท่านั้น ดังที่เห็นในแผนภาพด้านบน เซอร์โวสองตัวเชื่อมต่อกับพิน Vin บน Arduino แรงดันไฟฟ้าพิเศษนี้สามารถจ่ายได้ทุกอย่าง ฉันใช้แบตเตอรี่ขนาด 9 โวลต์ เซ็นเซอร์สัมผัสถูกเสียบเข้ากับ 5V บน Arduino เนื่องจากส่วนประกอบทั้งหมดมีปัญหาในการใช้แรงดันไฟฟ้าเดียวกัน เซ็นเซอร์สัมผัสติดอยู่กับพิน 2 ดังนั้นจึงสามารถใช้เป็นพินอินเทอร์รัปต์ได้ จากนั้นโมดูลบลูทู ธ จะเชื่อมต่อกับหมุด Rx และ Tx สำหรับการสื่อสารแบบอนุกรม ระหว่างพิน Rx บนโมดูลและ Tx บน Arduino เป็นตัวต้านทาน 2 กิโลโอห์มพร้อม 1 กิโลโอห์มที่เชื่อมต่อกับกราวด์ ซึ่งจะช่วยควบคุมแรงดันไฟที่เข้ามา

ขั้นตอนที่ 4: การประกอบ

การประกอบ
การประกอบ

การประกอบค่อนข้างง่าย

  1. ด้วยกาวซุปเปอร์กาวติดเซอร์โวของคุณในตำแหน่ง อันหนึ่งสำหรับเฟืองโดยคัตเอาท์บนฐาน และอีกอันใกล้กับฐานของโทรศัพท์
  2. ติดเซ็นเซอร์สัมผัสเข้ากับที่วางโทรศัพท์ เพื่อให้สามารถรู้ได้ว่าโทรศัพท์อยู่ที่ใด
  3. จากนั้นติดเกียร์และแขนเข้ากับเซอร์โวที่เกี่ยวข้อง
  4. ตรวจสอบให้แน่ใจว่าสายไฟไม่รบกวนส่วนประกอบอื่นๆ ในขณะที่คุณเติมอุปกรณ์อิเล็กทรอนิกส์ของคุณลงใน

ขั้นตอนที่ 5: รหัส

มีรหัสสามชุดที่จะนำเสนอ หนึ่งรหัสสำหรับ Arduino ที่สร้างขึ้นใน Arduino IDE และสองรหัสที่สร้างขึ้นใน Android Studio แอป Android จะเหมือนกัน ยกเว้นแอปหนึ่งเป็นแอปตัวเต็มที่ติดตามอายุการใช้งานแบตเตอรี่และอีกแอปหนึ่งไม่ติดตาม อันที่สองมีไว้สำหรับการทดสอบ

รหัส Arduino

จุดหลักของรหัสนี้คือการใช้งานเซ็นเซอร์สัมผัสและมอเตอร์ โดยจะได้รับคำสั่งจากโทรศัพท์และดำเนินการตามนั้น

#include //เรียกไลบรารีเซอร์โวเพื่อให้เราสามารถควบคุมเซอร์โวสองตัวServo servo1; เซอร์โวเซอร์โว2;//สร้างสองอ็อบเจ็กต์เซอร์โวสำหรับแต่ละเซอร์โวมอเตอร์ int a=0;//ตัวแปรการติดตามสำหรับการทดสอบ int q=0;//ตัวแปรที่ยอมให้มีความล่าช้าก่อนที่กระบวนการเสียบปลั๊กจะเริ่มต้นขึ้น char c;// ตัวแปรที่มีข้อความซีเรียลจากการตั้งค่าโมฆะของโทรศัพท์ () { attachInterrupt(digitalPinToInterrupt(2), AH, FALLING); // ติดอินเตอร์รัปต์ที่ตกลงมาเพื่อให้รู้ว่าเมื่อใดที่เซ็นเซอร์สัมผัสเห็นเมื่อโทรศัพท์อยู่ในเซอร์โว1.attach (10); servo2.attach(9); // เริ่มต้นสองเซอร์โว Serial.begin(9600); // เริ่มการสื่อสารแบบอนุกรมในอัตราที่ใกล้เคียงกับโมดูลบลูทูธ servo2.write(20); // ตั้งค่าเซอร์โวเป็นอัตโนมัติ ตำแหน่งเริ่มต้น servo1.write (180); }

วงเป็นโมฆะ () {

if (Serial.available()){// ตรวจสอบว่ามีสิ่งใดมาจากโทรศัพท์ผ่านพินอนุกรม Tx และ Rx c=Serial.read();// อ่านว่ามีอะไรมาจาก if (c== 't'){//หากอุปกรณ์ซีเรียลอ่านเวลานั้น แสดงว่าโทรศัพท์ชาร์จเต็มแล้ว กระบวนการถอดปลั๊กจะเริ่มขึ้น servo2.write(120);//ถอดปลั๊กเครื่องชาร์จล่าช้า (5000);//รอเพื่อให้แน่ใจว่า มีเวลาสำหรับการลบ servo1.write(110);// ย้ายโทรศัพท์ไปยังตำแหน่งตั้งตรงเพื่อส่งสัญญาณ //Serial.println("ที่นี่"); AttachInterrupt(digitalPinToInterrupt(2), AH, FALLING);//reattaches the interrupt } } if (q==1){// ถ้าเงื่อนไขของการเสียบปลั๊กเป็น ture ให้เริ่มด้วยการต่ออุปกรณ์ชาร์จล่าช้า(10000); servo2.write(0);//ย้ายเซอร์โวไปที่ตำแหน่ง q=0; //รีเซ็ตเงื่อนไข } }

โมฆะ AH(){

//Serial.println("ใน"); servo1.write(180);// วางแพลตฟอร์มโทรศัพท์ลงในตำแหน่งการชาร์จ q=1;// เริ่มเงื่อนไขเพื่อดำเนินการตามขั้นตอนต่อไป //a=1; detachInterrupt (digitalPinToInterrupt(2));// แยกการขัดจังหวะออกเพื่อไม่ให้เกิดปัญหาใด ๆ กับการขัดจังหวะที่เริ่มต้นเมื่อไม่ควร }

แอพ Android

ที่นี่ฉันจะแสดงเฉพาะแอพที่เหมาะสม แต่จะได้รับไฟล์รหัสทดสอบ ข้อแตกต่างเพียงอย่างเดียวคือการลบคลาส runnable และ getBattery รหัสซีเรียลที่กล่าวถึงเป็นรหัสมาตรฐานสำหรับโทรศัพท์ที่เชื่อมต่อกับอุปกรณ์ต่างๆ เช่น โมดูล

แพ็คเกจ com.example.daniel.make; นำเข้า android.bluetooth. BluetoothAdapter; นำเข้า android.bluetooth. BluetoothDevice; นำเข้า android.bluetooth. BluetoothSocket; นำเข้า android.os. Handler; นำเข้า android.support.v7.app. AppCompatActivity; นำเข้า android.os. Bundle; นำเข้า android.content. Intent; นำเข้า android.content. IntentFilter; นำเข้า android.os. BatteryManager; นำเข้า java.io. IOException; นำเข้า java.io. OutputStream; นำเข้า java.util. Set; นำเข้า java.util. UUID;

MainActivity คลาสสาธารณะขยาย AppCompatActivity {

// การสร้างตัวจัดการตัวจัดการวัตถุที่จำเป็น // ช่วยด้วยลูป Runnable runnable; // ทำงานอย่างต่อเนื่อง BluetoothAdapter mBluetoothAdapter; บลูทูธซ็อกเก็ต mmSocket; BluetoothDevice mmDevice; OutputStream mmOutputStream; ตัวหยุดบูลีนที่ระเหยได้ ส่วนตัว OutputStream outputStream; สตริงสุดท้ายส่วนตัว DEVICE_NAME="HC-05"; UUID สุดท้ายส่วนตัว PORT_UUID=UUID.fromString("00001101-0000-1000-8000-00805f9b34fb"); อุปกรณ์ BluetoothAdapter ส่วนตัว ซ็อกเก็ต BluetoothSocket ส่วนตัว; @Override ป้องกัน void onCreate(Bundle savedInstanceState) {// เป็นชุดคำสั่งที่ทำงานเมื่อสร้างแอป super.onCreate(savedInstanceState);//displya การสร้าง setContentView(R.layout.activity_main); runnable = new Runnable () { @Override public void run () {// เรียกใช้ int ซ้ำ ๆ ระดับ = (int) getBattery ();// รับระดับแบตเตอรี่ปัจจุบันหาก (ระดับ = = 100) {// ถ้าระดับแบตเตอรี่ ถึง 100% ลอง { getBT();// เชื่อมต่อกับโมดูลบลูทู ธ openBT();// เปิด sendData();// ส่งข้อมูลที่จำเป็น closeBT();// ปิดวัตถุ } catch (IOException เช่น) { } } handler.postDelayed(runnable, 5000);//a delay } }; ตัวจัดการ = ตัวจัดการใหม่ (); handler.postDelayed (รันได้, 0); }

โฟลตสาธารณะ getBattery () {

Intent batteryIntent= registerReceiver(null, new IntentFilter(Intent. ACTION_BATTERY_CHANGED));// สร้างการดำเนินการที่เชื่อมต่อกับระดับ int ของแบตเตอรี่ = batteryIntent.getIntExtra(BatteryManager. EXTRA_LEVEL, -1); // รับระดับ int ระดับดีกว่า = batteryIntent.getIntExtra(BatteryManager. EXTRA_SCALE, -1);// รับมาตราส่วนของแบตเตอรี่ถ้า (ระดับ == -1 || มาตราส่วน == -1) {// ในกรณีของขั้นตอนที่ผิดพลาดคืน 50.0f; } float batt = (ระดับ/(float)scale)*100.0f;//รับสเกลที่เหมาะสม return batt;//กลับระดับ }

ถือเป็นโมฆะ getBT(){// รับการเชื่อมต่อบลูทูธที่เป็นไปได้

mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();// รับอะแดปเตอร์ if(!mBluetoothAdapter.isEnabled()) {// ตรวจสอบให้แน่ใจว่าโทรศัพท์มีฟันสีน้ำเงินบน Intent enableBluetooth = เจตนาใหม่ (BluetoothAdapter. ACTION_REQUEST_ENABLE); // ขอให้เป็น เปิดหากไม่ startActivityForResult (เปิดใช้งาน Bluetooth, 0); } Set pairedDevices = mBluetoothAdapter.getBondedDevices();// รับรายการบลูทู ธ ที่ถูกผูกมัด if(pairedDevices.size() > 0) {// ตรวจสอบให้แน่ใจว่ามีอุปกรณ์บางอย่างสำหรับ (อุปกรณ์ BluetoothDevice: pairedDevices) {// วนซ้ำผ่าน อุปกรณ์ if(device.getName().equals("HC-05")) {// ตรวจสอบว่าอุปกรณ์ mmDevice = ถูกต้องหรือไม่ } } } }

เป็นโมฆะ openBT () พ่น IOException {

UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805f9b34fb"); //มาตรฐาน //SerialPortService ID mmSocket = mmDevice.createRfcommSocketToServiceRecord(uuid);//เชื่อมต่อกับอุปกรณ์ด้วยรหัส mmSocket.connect();//connects mmOutputStream = mmSocket.getOutputStream();// เริ่มความสามารถในการส่ง ข้อมูลไปยังโมดูล Arduino }

เป็นโมฆะ sendData () พ่น IOException {// คลาสที่ส่ง t ไปยัง arduino

mmOutputStream.write('t'); }

ถือเป็นโมฆะ closeBT () พ่น IOException {// ปิดการเชื่อมต่อทั้งหมดไปยัง arduino

stopWorker = จริง; mmOutputStream.close(); mmSocket.close(); } }

ขั้นตอนที่ 6: ไฟล์

ขอบคุณที่เข้ามาอ่านนะครับ ไฟล์แนบเป็นไฟล์ที่ใช้ในโครงการครับ

แนะนำ: