Mündəricat:

Avtomatik telefon şarj cihazı: 6 addım (şəkillərlə birlikdə)
Avtomatik telefon şarj cihazı: 6 addım (şəkillərlə birlikdə)

Video: Avtomatik telefon şarj cihazı: 6 addım (şəkillərlə birlikdə)

Video: Avtomatik telefon şarj cihazı: 6 addım (şəkillərlə birlikdə)
Video: Telefonun batareyası zəif işləyir? 2024, Iyul
Anonim
Avtomatik Telefon Şarj Cihazı
Avtomatik Telefon Şarj Cihazı

"Bu təlimat, Cənubi Florida Universitetindəki Makecourse (www.makecourse.com) layihə tələbinin yerinə yetirilməsi üçün yaradılmışdır."

Bu layihənin arxasında duran fikir, telefonu şarj edə biləcək bir cihaz yaratmaq və sonra telefon 100%-ə çatanda onu elektrikdən ayırmaq idi. Bu, həddindən artıq yükləmə problemini dayandıracaq.

Addım 1: Plastik komponentlər

Plastik komponentlər
Plastik komponentlər
Plastik komponentlər
Plastik komponentlər
Plastik komponentlər
Plastik komponentlər
Plastik komponentlər
Plastik komponentlər

İstifadə olunan bəzi komponentlər var idi, bunlar 3D çap idi. Bu komponentlər bir baza, şarj cihazı tutucusu, bir raf və pinion dişli dəsti (normal bir dişli və fırlanmanı xətti hərəkətə çevirən xətti bir parça) və hər şeyin işləməsi üçün bir bazadan ibarət idi. Bu komponentlər aşağıdakı bəndlərdə izah ediləcəkdir. Görünüş sırasına görə

Şarj tutucusu

Bunun məqsədi telefon şarj cihazını tutmaq və ya heç olmasa daha yaxşı və səviyyəli bir baza verməkdir.

Baza

Baza telefon tutacağı üçün üzüklər və dişli dəsti üçün bir izə malikdir.

Telefon Tutacağı

Telefonun əlində olduğu aydındır

Telefon qolu

Telefonu hərəkətə gətirir və saxlayır

Rack və Pinion dişli dəsti

Telefon şarj cihazını irəli və irəli aparmaq üçün istifadə olunur

Addım 2: 3D Çap olunmamış Qismənləri Yıxın

Bunlar ya layihə üçün alınmış, ya da artıq sahibi olan komponentlərdir. Amazonda oxuduğum bəzi hissələr üçün/oxşar əşyalar, amma hər yerdə əldə etməkdən çəkinməyin.

Mikro Servo:

Standart 0-180 Servo:

HC-05 Bluetooth Serial Modulu:

Telefon və Telefon Şarj Cihazı

Arduino

Çörək lövhəsi

Baza üçün qutu və ya qutu

Toxunma sensoru:

Addım 3: Elektronika

Elektronika
Elektronika

HC-05 modulu səbəbiylə bu layihə üçün bəzi dövrlər tələb oluna bilər. Bu tip bir çox modul, Arduinonun iş diapazonunda olan təxminən 3.3V -dan 6V -a qədərdir. Ancaq serial ünsiyyət üçün Rx pin bəzən yalnız 3.3V ilə daha yaxşı işləyir. Yuxarıdakı diaqramda göründüyü kimi, iki servo Arduino üzərindəki Vin pininə bağlanmışdır. Bu əlavə gərginlik hər şeylə təmin edilə bilər, 9 voltluq bir batareya istifadə etdim. Toxunma sensoru Arduino -da 5V -ə qoşuldu. Bunun səbəbi, bütün komponentlərin eyni gərginlikdən qaçmaqda çətinlik çəkməsidir. Toxunma sensoru pin 2 -ə bərkidilir, buna görə də pin kəsilməsi kimi istifadə oluna bilər. Daha sonra bluetooth modulu serial rabitə üçün Rx və Tx pinlərinə qoşulur. Moduldakı Rx pimi ilə Arduino üzərindəki Tx arasında, yerə bağlanan 1 kilo ohm olan 2 kilo ohm müqavimətçi var. Bu, daxil olan gərginliyi tənzimləməyə kömək edir.

Addım 4: Montaj

Məclis
Məclis

Montaj olduqca sadədir.

  1. bəzi super yapışqan ilə servolarınızı mövqelərinə monte edin, biri bazadakı kəsiklə dişli üçün, biri də telefonun əsasının yerləşdiyi yerə yaxındır.
  2. Telefonun nə vaxt olduğunu bilmək üçün toxunma sensorunu telefon tutucusuna bağlayın.
  3. Sonra dişli və qolu müvafiq servolarına bağlayın
  4. Elektronikanı doldurarkən tellərin digər komponentlərə müdaxilə etmədiyinə əmin olun

Addım 5: Kod

Təqdim ediləcək üç kod dəsti var, Arduino IDE -də yaradılan bir Arduino kodu və Android Studio -da hazırlanmış iki kod. Android tətbiqləri eynidır, biri batareya ömrünü izləyən, digəri olmayan tam tətbiqdir. İkincisi sınaq məqsədlidir.

Arduino kodu

Bu kodun əsas məqamı toxunma sensoru və mühərrikləri idarə etməkdir, telefondan bir əmr alır və ona əməl edir.

#include // servo kitabxanasını çağırır ki, iki servoServo servo1 idarə edə bilək; Servo servo2; // hər bir servo mühərrik üçün iki servo obyekt yaradır int a = 0; // int q = 0 sınamaq üçün izləmə dəyişən; // pluggin prosesinin başlamazdan əvvəl gecikməyə imkan verən dəyişən char c; // telefonun boşluq qurma () {serialInterrupt (digitalPinToInterrupt (2), AH, FALLING); (10); servo2.attach (9); // iki servo Serial.begin (9600) başlatır; // bluetooth modulu servo2.write (20) ilə eyni sürətlə serial ünsiyyətə başlayır; // avtomatik olaraq servoları başlanğıc mövqeyi servo1.write (180); }

boşluq döngəsi () {

if (Serial.available ()) {// bu, telefondan Tx və Rx c = Serial.read () seriyalı pinləri üzərindən bir şeyin daxil olub olmadığını yoxlayır; // (c == 't') {// əgər serial cihaz oxuyursa, bu telefonun tam doldurulduğunu bildirir, ayırma prosesi servo2.write (120); // şarj cihazının gecikməsini (5000) çıxarır; // əmin olmaq üçün gözləyir aradan qaldırılması üçün vaxt var servo1.write (110); // siqnal vermək üçün telefonu dik vəziyyətdə hərəkət etdirir //Serial.println("burada "); attachInterrupt (digitalPinToInterrupt (2), AH, FALLING); // fasiləni yenidən bağlayır}} if (q == 1) {// pluggin şərti düzgündürsə, şarj cihazının gecikməsini (10000) bağlamağa başlayın; servo2.write (0); // servo q = 0 mövqeyinə keçir; // vəziyyəti sıfırlayır}}

boş AH () {

//Serial.println("in "); servo1.write (180); // telefon platformasını q = 1 şarj vəziyyətinə salır; // prosesi davam etdirmək üçün şərti işə salır // a = 1; detachInterrupt (digitalPinToInterrupt (2)); // fasiləni ayırır, belə ki, kəsilməməsi lazım olan vaxt başlayanda heç bir problem olmayacaq}

Android Tətbiqi

Burada yalnız uyğun proqramı göstərəcəyəm, amma test kodu faylı da veriləcək, yeganə fərq qaça bilən və getBattery sinifinin silinməsi olacaq. Adı çəkilən serial kodu, modul kimi cihazlara qoşulan telefonlar üçün standartdır.

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

ictimai sinif MainActivity, AppCompatActivity -ni genişləndirir {

// lazımlı obyektlərin işlənməsi işləyicisi; // Runnable runnable döngəsinə kömək edir; // davamlı olaraq BluetoothAdapter mBluetoothAdapter çalışır; Bluetooth yuvası mmSocket; Bluetooth Cihazı mmDevice; Çıxış axını mmOutputStream; uçucu boolean stopWorker; xüsusi OutputStream outputStream; xüsusi son String DEVICE_NAME = "HC-05"; şəxsi son UUID PORT_UUID = UUID.fromString ("00001101-0000-1000-8000-00805f9b34fb"); xüsusi Bluetooth Adapter cihazı; özəl BluetoothSocket yuvası; @Override qorunan boşluğu onCreate (Bundle saveInstanceState) {// tətbiq yaradıldıqda işləyən təlimatlar toplusudur super.onCreate (saveInstanceState); // displya yaradılması setContentView (R.layout.activity_main); runnable = new Runnable () {@Override public void run () {// dəfələrlə çalışır int level = (int) getBattery (); // əgər batareya səviyyəsi varsa 100% cəhd edin {getBT (); // bluetooth moduluna qoşulur openBT (); // açar sendData (); // lazımi məlumatları göndərir closeBT (); // obyekti bağlayır} tutmaq (IOException ex) { }} handler.postDelayed (runnable, 5000); // bir gecikmə}}; işləyici = yeni Handler (); handler.postDelayed (runnable, 0); }

ictimai float getBattery () {

Intent = registerReceiver (null, yeni IntentFilter (Intent. ACTION_BATTERY_CHANGED)); // batareyaya int səviyyəsi = batteryIntent.getIntExtra (BatteryManager. EXTRA_LEVEL, -1) bağlanan hərəkəti yaradır; // daha yaxşı səviyyəli int miqyasını alır = batteryIntent.getIntExtra (BatteryManager. EXTRA_SCALE, -1); } float batt = (level/(float) miqyaslı)*100.0f; // müvafiq miqyaslı qaytarma vuruşunu alır; // səviyyəni qaytarır}

void getBT () {// mümkün bluetooth əlaqələrini alır

mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter (); // əgər adapteri alırsa (! mBluetoothAdapter.isEnabled ()) {// telefonun Intent enableBluetooth = yeni Niyyət (BluetoothAdapter. ACTION_REQUEST_ENABLE) üzərində mavi diş olmasını təmin edər; // olmasını istəyir startActivityForResult olmadıqda aktivdir (enableBluetooth, 0); } Set pairedDevices = mBluetoothAdapter.getBondedDevices (); // (pairedDevices.size ()> 0) {// bluetooth siyahısını alırsa (BluetoothDevice cihazı: pairedDevices) {// üçün bəzi cihazların olduğundan əmin olur. cihazlar if (device.getName (). bərabərdir ("HC-05")) {// uyğun olduğunu yoxlayır mmDevice = cihaz; // qırılmasını saxlayır; }}}}

void openBT () IOException atır {

UUID uuid = UUID.fromString ("00001101-0000-1000-8000-00805f9b34fb"); // Standart // SerialPortService ID mmSocket = mmDevice.createRfcommSocketToServiceRecord (uuid); // cihaza mmSocket.connect () uyğun id ilə qoşulur; // mmOutputStream = mmSocket.getOutputStream (); // göndərmə qabiliyyətinə başlayır arduino moduluna verilən məlumatlar}

void sendData () tu arduinoya göndərən IOException {// sinifini atır

mmOutputStream.write ('t'); }

void closeBT () IOException atır {// arduino ilə bütün əlaqələri bağlayır

stopWorker = doğru; mmOutputStream.close (); mmSocket.close (); }}

Addım 6: Fayllar

Oxuduğunuz üçün təşəkkür edirik, bu layihədə istifadə olunan fayllar əlavə olunur

Tövsiyə: