Daftar Isi:

Pengisi Daya Telepon Otomatis: 6 Langkah (dengan Gambar)
Pengisi Daya Telepon Otomatis: 6 Langkah (dengan Gambar)

Video: Pengisi Daya Telepon Otomatis: 6 Langkah (dengan Gambar)

Video: Pengisi Daya Telepon Otomatis: 6 Langkah (dengan Gambar)
Video: PENJELASAN PENGISIAN DAYA OPTIMAL DI IPHONE #shorts #short 2024, Juli
Anonim
Pengisi Daya Telepon Otomatis
Pengisi Daya Telepon Otomatis

"Instruksi ini dibuat untuk memenuhi persyaratan proyek Makecourse di University of South Florida (www.makecourse.com)"

Ide di balik proyek ini adalah untuk membuat perangkat yang dapat mengisi daya telepon, dan kemudian mencabutnya ketika telepon mencapai 100%. Ini akan menghentikan masalah pengisian berlebih.

Langkah 1: Komponen Plastik

Komponen Plastik
Komponen Plastik
Komponen Plastik
Komponen Plastik
Komponen Plastik
Komponen Plastik
Komponen Plastik
Komponen Plastik

Ada beberapa komponen yang digunakan yang dicetak 3D. Komponen-komponen ini terdiri dari alas, dudukan untuk pengisi daya, satu set roda gigi rak dan pinion (roda gigi normal dan bagian linier yang mengubah rotasi menjadi gerakan linier), dan alas untuk segala sesuatu untuk beroperasi. Komponen-komponen ini akan dijelaskan dalam paragraf berikut. Dalam urutan penampilan

Pemegang pengisi daya

Tujuan dari ini adalah untuk menahan pengisi daya telepon, atau setidaknya memberikannya basis yang lebih baik dan rata.

Basis

Basis memiliki cincin untuk dudukan telepon serta trek untuk set roda gigi.

Pemegang Telepon

Memegang telepon, jelas

Lengan Telepon

Memindahkan dan memegang telepon

Set Perlengkapan Rak dan Pinion

Digunakan untuk memindahkan pengisi daya telepon bolak-balik

Langkah 2: Hancurkan Komponen Cetakan Non 3D

Ini adalah komponen yang dibeli untuk proyek atau sudah dimiliki. Untuk beberapa bagian yang saya tautkan ke mereka/barang serupa di amazon, tetapi jangan ragu untuk mendapatkannya di mana saja.

Servo Mikro:

Standar 0-180 Servo:

Modul Serial Bluetooth HC-05:

Pengisi Daya Telepon dan Telepon

Arduino

Papan tempat memotong roti

Kotak atau tempat sampah untuk alas

Sensor Sentuh:

Langkah 3: Elektronik

Elektronik
Elektronik

Sirkuit untuk proyek ini mungkin memerlukan beberapa, terutama karena modul HC-05. Banyak dari modul jenis ini memiliki kecepatan sekitar 3.3V hingga 6V, yang berada dalam jangkauan operasi Arduino. Tapi, untuk komunikasi serial pin Rx terkadang bekerja lebih baik hanya dengan 3.3V. Seperti yang terlihat pada diagram di atas, kedua servo terhubung ke pin Vin di Arduino. Tegangan ekstra ini dapat disupply oleh apa saja, saya menggunakan baterai 9 volt. Sensor sentuh dicolokkan ke 5V di Arduino. Ini karena semua komponen mengalami kesulitan menjalankan tegangan yang sama. Sensor sentuh terpasang pada pin 2 sehingga dapat digunakan sebagai interupsi pin. Kemudian modul bluetooth dihubungkan ke pin Rx dan Tx untuk komunikasi serial. Antara pin Rx pada modul dan Tx pada Arduino adalah resistor 2 kilo ohm dengan 1 kilo ohm yang terhubung ke ground. Ini membantu mengatur tegangan yang masuk.

Langkah 4: Perakitan

perakitan
perakitan

Perakitannya cukup sederhana.

  1. dengan beberapa lem super pasang servos Anda di posisinya, satu untuk roda gigi dengan potongan di alas dan satu di dekat tempat dasar telepon.
  2. Pasang sensor sentuh ke dudukan ponsel, sehingga bisa mengetahui saat ponsel ada.
  3. Kemudian pasang roda gigi dan lengan ke servo masing-masing
  4. Pastikan kabel tidak mengganggu komponen lain saat Anda mengisi perangkat elektronik Anda

Langkah 5: Kode

Ada tiga set kode yang akan disajikan, satu kode untuk Arduino yang dibuat di Arduino IDE dan dua kode yang dibuat di Android Studio. Aplikasi Android sama kecuali satu adalah aplikasi lengkap yang melacak masa pakai baterai dan yang lainnya tidak. Yang kedua adalah untuk tujuan pengujian.

Kode Arduino

Poin utama dari kode ini adalah untuk mengoperasikan sensor sentuh dan motor, ia menerima perintah dari telepon dan menindaklanjutinya.

#include //memanggil perpustakaan servo sehingga kita dapat mengontrol dua servosServo servo1; Servo servo2;//membuat dua objek servo untuk setiap motor servo int a=0;//variabel pelacakan untuk pengujian int q=0;//variabel yang memungkinkan adanya penundaan sebelum proses pluggin dimulai char c;// variabel yang berisi pesan serial dari telepon void setup() { attachInterrupt(digitalPinToInterrupt(2), AH, FALLING);// melampirkan interupsi jatuh untuk mengetahui dengan tepat kapan sensor sentuh melihat saat telepon sedang keluar di servo1.attach (10); servo2.attach(9);// menginisialisasi dua servo Serial.begin(9600);// memulai komunikasi serial dengan kecepatan yang mirip dengan modul bluetooth servo2.write(20);//auto menyetel servo ke posisi awal servo1.write(180); }

lingkaran kosong() {

if (Serial.available()){// ini memeriksa apakah ada sesuatu yang masuk dari telepon melalui pin serial Tx dan Rx c=Serial.read();//membaca apa yang masuk dari if (c== 't'){//jika perangkat serial membaca pada saat itu berarti ponsel terisi penuh, proses mencabut dimulai servo2.write(120);//mencabut charger delay(5000);//menunggu untuk memastikan ada waktu untuk menghilangkan servo1.write(110);//memindahkan telepon ke posisi tegak untuk memberi sinyal //Serial.println("di sini"); attachInterrupt(digitalPinToInterrupt(2), AH, FALLING);//menyambungkan kembali interupsi } } if (q==1){//jika kondisi pluggin in sudah terpenuhi maka mulailah dengan memasang charger delay(10000); servo2.write(0);//memindahkan servo ke posisi q=0;//mengatur ulang kondisi } }

batal AH(){

//Serial.println("dalam"); servo1.write(180);// menjatuhkan platform telepon ke posisi pengisian q=1;//memulai kondisi untuk melanjutkan proses //a=1; detachInterrupt (digitalPinToInterrupt(2));//melepaskan interupsi, sehingga tidak akan ada masalah dengan interupsi yang dimulai ketika tidak seharusnya }

Aplikasi Android

Di sini saya hanya akan menampilkan aplikasi yang tepat tetapi file kode pengujian juga akan diberikan, satu-satunya perbedaan adalah penghapusan kelas runnable dan getBattery. Kode serial yang disebutkan adalah yang standar untuk ponsel yang terhubung ke perangkat seperti modul.

paket com.example.daniel.make; impor android.bluetooth. BluetoothAdapter; impor android.bluetooth. BluetoothDevice; impor android.bluetooth. BluetoothSocket; impor android.os. Handler; impor android.support.v7.app. AppCompatActivity; impor android.os. Bundle; impor android.content. Intent; impor android.content. IntentFilter; impor android.os. BatteryManager; impor java.io. IOException; impor java.io. OutputStream; impor java.util. Set; impor java.util. UUID;

MainActivity kelas publik memperluas AppCompatActivity {

// membuat objek yang diperlukan Handler handler;//membantu dengan loop Runnable runnable;//berjalan terus menerus BluetoothAdapter mBluetoothAdapter; BluetoothSocket mmSocket; BluetoothPerangkat mmPerangkat; OutputStream mmOutputStream; stopWorker boolean yang mudah menguap; OutputStream outputStream pribadi; String final pribadi DEVICE_NAME="HC-05"; private final UUID PORT_UUID=UUID.fromString("00001101-0000-1000-80000-00805f9b34fb"); perangkat BluetoothAdapter pribadi; soket BluetoothSocket pribadi; @Override protected void onCreate(Bundle savedInstanceState) {//adalah sekumpulan instruksi yang dijalankan saat aplikasi dibuat super.onCreate(savedInstanceState);//displya creation setContentView(R.layout.activity_main); runnable = new Runnable() { @Override public void run() {//berjalan berulang kali int level = (int) getBattery();// mendapatkan level baterai saat ini jika (level==100){//jika level baterai mencapai 100% try { getBT();//menghubungkan ke modul bluetooth openBT();//membukanya sendData();//mengirim data yang diperlukan closeBT();//menutup objek } catch (IOException ex) { } } handler.postDelayed(dapat dijalankan, 5000);//penundaan } }; penangan = penangan baru(); handler.postDelayed(dapat dijalankan, 0); }

getBattery pelampung publik() {

Intent batteryIntent= registerReceiver(null, new IntentFilter(Intent. ACTION_BATTERY_CHANGED));// membuat tindakan yang menghubungkan ke level baterai int = batteryIntent.getIntExtra(BatteryManager. EXTRA_LEVEL, -1);//mendapatkan skala int level yang lebih baik = batteryIntent.getIntExtra(BatteryManager. EXTRA_SCALE, -1);//mendapatkan skala baterai if (level == -1 || scale == -1) {//dalam kasus salah langkah kembali 50.0f; } float batt = (level/(float)scale)*100.0f;//mendapatkan skala pengembalian batt yang tepat;//mengembalikan level }

void getBT(){//mendapatkan kemungkinan koneksi bluetooth

mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();//mendapatkan adaptor if(!mBluetoothAdapter.isEnabled()) {//memastikan telepon memiliki gigi biru pada Intent enableBluetooth = new Intent(BluetoothAdapter. ACTION_REQUEST_ENABLE);//memintanya dihidupkan jika tidak startActivityForResult(enableBluetooth, 0); } Set PairedDevices = mBluetoothAdapter.getBondedDevices();//mendapatkan daftar bonded bluetooth if(pairedDevices.size() > 0) {//memastikan ada beberapa perangkat untuk(BluetoothDevice device: PairedDevices) {//loop melalui devices if(device.getName().equals("HC-05")) {//memeriksa apakah itu yang benar mmDevice = device;//menyimpannya rusak; } } } }

void openBT() melempar IOException {

UUID uuid = UUID.fromString("00001101-0000-1000-80000-00805f9b34fb"); //Standar //SerialPortService ID mmSocket = mmDevice.createRfcommSocketToServiceRecord(uuid);//menghubungkan ke perangkat dengan id yang tepat mmSocket.connect();//menghubungkan mmOutputStream = mmSocket.getOutputStream();//memulai kemampuan untuk mengirim data ke modul arduino }

void sendData() melempar IOException {//class yang mengirimkan t ke arduino

mmOutputStream.write('t'); }

void closeBT() melempar IOException {//menutup semua koneksi ke arduino

stopWorker = benar; mmOutputStream.close(); mmSocket.close(); } }

Langkah 6: File

Terima kasih telah membaca, terlampir adalah file yang digunakan dalam proyek ini

Direkomendasikan: