Tartalomjegyzék:

Automatikus telefon töltő: 6 lépés (képekkel)
Automatikus telefon töltő: 6 lépés (képekkel)

Videó: Automatikus telefon töltő: 6 lépés (képekkel)

Videó: Automatikus telefon töltő: 6 lépés (képekkel)
Videó: Hogyan kell helyesen tölteni a mai okostelefonokat? 2024, Július
Anonim
Automatikus telefon töltő
Automatikus telefon töltő

"Ez az oktatóanyag a Dél -Floridai Egyetem Makecourse projektkövetelményének teljesítésével jött létre (www.makecourse.com)"

Ennek a projektnek az volt az ötlete, hogy létrehozzunk egy készüléket, amely képes tölteni a telefont, majd húzza ki a konnektorból, amikor a telefon eléri a 100%-ot. Ez megszüntetné a túltöltéssel kapcsolatos problémákat.

1. lépés: Műanyag alkatrészek

Műanyag alkatrészek
Műanyag alkatrészek
Műanyag alkatrészek
Műanyag alkatrészek
Műanyag alkatrészek
Műanyag alkatrészek
Műanyag alkatrészek
Műanyag alkatrészek

Néhány komponenst 3D -ben nyomtattak. Ezek az alkatrészek egy alapot, egy töltőtartót, egy fogasléces és fogaskerék -készletet (normál fogaskerék és egy lineáris darab, amely a forgást lineáris mozgásra változtatja) és egy alapot minden működéshez. Ezeket az összetevőket a következő bekezdések ismertetik. A megjelenés sorrendjében

Töltőtartó

Ennek célja az, hogy tartsa a telefon töltőjét, vagy legalábbis jobb és egyenletesebb alapot adjon neki.

Bázis

Az alap gyűrűkkel rendelkezik a telefontartó számára, valamint a fogaskerékkel.

Telefontartó

Nyilván tartja a telefont

Telefonkar

Mozgatja és tartja a telefont

Rack és fogaskerék fogaskerék

A telefon töltőjének előre -hátra mozgatására szolgál

2. lépés: A nem 3D nyomtatott alkatrészek lebontása

Ezek azok az alkatrészek, amelyeket vagy a projekthez vásároltak, vagy már birtokoltak. Néhány részhez, amelyet linkeltem hozzájuk/hasonló elemeket az amazonon, de bátran szerezze be őket bárhol.

Micro Servo:

Standard 0-180 szervó:

HC-05 Bluetooth soros modul:

Telefon és telefon töltő

Arduino

Kenyeretábla

Doboz vagy tartály az alaphoz

Érintésérzékelő:

3. lépés: Elektronika

Elektronika
Elektronika

Ennek a projektnek az áramköre azonban igényelhet néhányat, főleg a HC-05 modul miatt. Sok ilyen típusú modul nagyjából 3.3V -6V feszültségű, ami az Arduino működési tartományában van. Soros kommunikáció esetén azonban az Rx tű néha jobban működik, csak 3,3 V feszültséggel. Amint a fenti ábrán látható, a két szervó az Arduino Vin csapjához van csatlakoztatva. Ezt az extra feszültséget bármi szolgáltathatja, én 9 voltos akkumulátort használtam. Az érintésérzékelőt az Arduino 5V -os csatlakozójába dugták. Ennek oka az volt, hogy az összes komponensnek problémái voltak az azonos feszültségű kifutással. Az érintésérzékelő a 2 -es csaphoz van rögzítve, így csap megszakításként használható. Ezután a bluetooth modul csatlakozik az Rx és Tx érintkezőkhöz a soros kommunikációhoz. A modul Rx csapja és az Arduino Tx között 2 kilométeres ellenállás található, 1 kilométeres ellenállással a földhöz csatlakoztatva. Ez segít szabályozni a bemenő feszültséget.

4. lépés: Összeszerelés

Összeszerelés
Összeszerelés

Az összeszerelés meglehetősen egyszerű.

  1. néhány szuper ragasztóval szerelje fel szervóit a helyükre, egyet a fogaskerékhez az alapon lévő kivágásnál, a másikat pedig a telefon aljának közelében.
  2. Csatlakoztassa az érintésérzékelőt a telefontartóhoz, hogy tudja, mikor van a telefon.
  3. Ezután rögzítse a fogaskereket és a kart a megfelelő szervóhoz
  4. Győződjön meg arról, hogy a vezetékek ne zavarják a többi alkatrészt, amikor feltöltik az elektronikát

5. lépés: Kód

Három kódkészletet fogunk bemutatni, egy kódot az Arduino -hoz, amelyet az Arduino IDE -ben hoztak létre, és két kódot, amelyek az Android Stúdióban készültek. Az Android -alkalmazások ugyanazok, kivéve, ha az egyik a teljes alkalmazás, amely nyomon követi az akkumulátor élettartamát, és az egyik nem. A második tesztelésre szolgál.

Arduino kód

Ennek a kódnak a lényege az érintésérzékelő és a motorok működtetése, parancsot kap a telefontól, és hat rá.

#include // meghívja a szervokönyvtárat, hogy irányíthassuk a két szervótServo servo1; Servo servo2; // két szervo objektumot hoz létre minden szervomotorhoz int a = 0; // követési változó a teszteléshez int q = 0; // egy változó, amely lehetővé teszi a késleltetést, mielőtt a pluggin folyamat megkezdődik char c; // változó, amely a telefon void setup () {serialInterrupt (digitalPinToInterrupt (2), AH, FALLING) soros üzenetét tartalmazza (10); servo2.attach (9); // inicializálja a két szervót Serial.begin (9600); // a soros kommunikációt a Bluetooth szervo2.write (20) modulhoz hasonló sebességgel kezdi meg; // az automatikus szervókat egy kiindulási helyzet szervo1.write (180); }

void loop () {

if (Serial.available ()) {// ez ellenőrzi, hogy érkezik -e valami a telefonról a Tx és Rx soros érintkezőkön keresztül c = Serial.read (); // elolvassa, hogy mi jön be, ha (c == 't') {// ha a soros eszköz ekkor olvas, az azt jelenti, hogy a telefon teljesen fel van töltve, a kihúzási folyamat megkezdődik a servo2.write (120); // leválasztja a töltő késleltetését (5000); // várja, hogy meggyőződjön arról van idő az eltávolításra servo1.write (110); // függőleges helyzetbe helyezi a telefont, hogy jelezze //Serial.println ("itt"); attachInterrupt (digitalPinToInterrupt (2), AH, FALLING); // újracsatolja a megszakítást}} if (q == 1) {// ha a csatlakoztatás feltétele fennáll, akkor kezdődik a töltő késleltetésének csatolása (10000); servo2.write (0); // a szervót q = 0 helyzetbe helyezi; // visszaállítja a feltételt}}

void AH () {

//Serial.println("in "); servo1.write (180); // a telefon platformját töltési pozícióba ejti q = 1; // elindítja a feltételt a folyamat folytatásához // a = 1; detachInterrupt (digitalPinToInterrupt (2)); // leválasztja a megszakítást, hogy ne legyen probléma a megszakítás elindításával, amikor nem kellene}

Android -alkalmazás

Itt csak a megfelelő alkalmazást fogom megjeleníteni, de a tesztkód fájl is megadásra kerül, az egyetlen különbség a futtatható és a getBattery osztály eltávolítása lesz. Az említett sorozatkód az, amely szabványos a modulokhoz hasonló eszközökhöz csatlakozó telefonok esetében.

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

public class MainActivity kiterjeszti az AppCompatActivity {

// szükséges objektumok létrehozása Kezelő kezelő; // segít a hurokban Runnable runnable; // folyamatosan fut BluetoothAdapter mBluetoothAdapter; BluetoothSocket mmSocket; BluetoothDevice mmDevice; OutputStream mmOutputStream; illékony logikai stopMunkás; privát OutputStream outputStream; privát záró karakterlánc DEVICE_NAME = "HC-05"; privát végső UUID PORT_UUID = UUID.fromString ("00001101-0000-1000-8000-00805f9b34fb"); privát BluetoothAdapter eszköz; saját BluetoothSocket aljzat; @Override protected void onCreate (Bundle savedInstanceState) {// utasításkészlet, amely az alkalmazás létrehozásakor fut super.onCreate (saveInstanceState); // displya creation setContentView (R.layout.activity_main); runnable = new Runnable () {@Override public void run () {// ismétlődően fut eléri a 100% próbát {getBT (); // csatlakozik az openBT () bluetooth modulhoz; // megnyitja azt sendData (); // elküldi a szükséges adatokat closeBT (); // bezárja az objektumot} catch (IOException ex) { }} handler.postDelayed (futtatható, 5000); // a delay}}; kezelő = new Handler (); handler.postDelayed (futtatható, 0); }

public float getBattery () {

Intent batteryIntent = registerReceiver (null, new IntentFilter (Intent. ACTION_BATTERY_CHANGED)); // létrehozza azt a műveletet, amely az akkumulátorhoz kapcsolódik int level = batteryIntent.getIntExtra (BatteryManager. EXTRA_LEVEL, -1); // megkapja a jobb szint int skáláját = batteryIntent.getIntExtra (BatteryManager. EXTRA_SCALE, -1); // megkapja az akkumulátor skáláját, ha (szint == -1 || skála == -1) {// hiba esetén 50,0f; } float batt = (szint/(lebegő) skála)*100.0f; // megkapja a megfelelő skála visszatérési ütemet; // visszaadja a szintet}

void getBT () {// megkapja a lehetséges bluetooth kapcsolatokat

mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter (); // megkapja az adaptert, ha (! mBluetoothAdapter.isEnabled ()) {// gondoskodik arról, hogy a telefon kék foga legyen az Intent enableBluetooth = new Intent (BluetoothAdapter. ACTION_REQUEST_ENABLE); // kéri, hogy legyen bekapcsolva, ha nem startActivityForResult (enableBluetooth, 0); } Set pairedDevices = mBluetoothAdapter.getBondedDevices (); // megkapja a csatlakoztatott Bluetooth listáját, ha (pairedDevices.size ()> 0) {// meggyőződik arról, hogy vannak bizonyos eszközök a (BluetoothDevice device: pairedDevices) {// között eszközök if (device.getName (). egyenlő ("HC-05")) {// ellenőrzi, hogy az megfelelő-ea mmDevice = device; // elmenti a break; }}}}

void openBT () dob IOException {

UUID uuid = UUID.fromString ("00001101-0000-1000-8000-00805f9b34fb"); // Standard // SerialPortService ID mmSocket = mmDevice.createRfcommSocketToServiceRecord (uuid); // a megfelelő azonosítóval csatlakozik az eszközhöz mmSocket.connect (); // csatlakoztatja az mmOutputStream = mmSocket.getOutputStream (); // elindítja a küldés képességét adatok az arduino modulhoz}

A void sendData () IOException {// osztályt dob, amely elküldi a t az arduino -nak

mmOutputStream.write ('t'); }

void closeBT () dob IOException {// bezárja az arduino összes kapcsolatát

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

6. lépés: Fájlok

Köszönjük, hogy elolvasta, mellékelve vannak a projektben használt fájlok

Ajánlott: