Obsah:

Automatická nabíjačka telefónu: 6 krokov (s obrázkami)
Automatická nabíjačka telefónu: 6 krokov (s obrázkami)

Video: Automatická nabíjačka telefónu: 6 krokov (s obrázkami)

Video: Automatická nabíjačka telefónu: 6 krokov (s obrázkami)
Video: ANDROID MÁ JEDNO SKRYTÉ NASTAVENÍ 🤖 2024, November
Anonim
Automatická nabíjačka telefónu
Automatická nabíjačka telefónu

„Tento návod bol vytvorený ako splnenie projektovej požiadavky Makecourse na University of South Florida (www.makecourse.com)“

Cieľom tohto projektu bolo vytvoriť zariadenie, ktoré by dokázalo nabíjať telefón, a potom ho odpojiť, keď telefón dosiahne 100%. Tým by sa zastavili problémy s nadmerným nabíjaním.

Krok 1: Plastové súčiastky

Plastové komponenty
Plastové komponenty
Plastové komponenty
Plastové komponenty
Plastové komponenty
Plastové komponenty
Plastové komponenty
Plastové komponenty

Boli použité niektoré komponenty, ktoré boli vytlačené 3D. Tieto komponenty pozostávali zo základne, držiaka na nabíjačku, súpravy ozubeného kolesa a pastorka (normálny prevod a lineárny kus, ktorý mení rotáciu na lineárny pohyb) a základne pre všetko, na čom je možné pracovať. Tieto komponenty budú vysvetlené v nasledujúcich odsekoch. V poradí podľa vzhľadu

Držiak nabíjačky

Účelom je podržať nabíjačku telefónu alebo jej dať aspoň lepší a hladší základ.

Základňa

Základňa má krúžky pre držiak telefónu a dráhu pre súpravu prevodov.

Držiak telefónu

Telefón očividne drží

Rameno telefónu

Pohybuje a drží telefón

Sada ozubených kolies a ozubených kolies

Slúži na pohyb nabíjačky telefónu tam a späť

Krok 2: Rozdelenie komponentov, ktoré nie sú vytlačené 3D

Ide o komponenty, ktoré boli buď kúpené pre projekt, alebo už sú vo vlastníctve. K niektorým častiam, ktoré som k nim pridal,/podobné položky na Amazone, ale neváhajte ich získať kdekoľvek.

Micro Servo:

Štandardné servo 0-180:

Sériový modul Bluetooth HC-05:

Telefón a nabíjačka telefónu

Arduino

Breadboard

Krabica alebo kôš na základňu

Dotykový senzor:

Krok 3: Elektronika

Elektronika
Elektronika

Obvod pre tento projekt však môže niektoré vyžadovať, hlavne kvôli modulu HC-05. Mnoho z modulov tohto typu je dimenzovaných zhruba na 3,3 V až 6 V, čo je v prevádzkovom rozsahu Arduina. Ale pre sériovú komunikáciu pin Rx niekedy funguje lepšie iba s 3,3 V. Ako je zrejmé z vyššie uvedeného diagramu, dve servá sú pripojené k kolíku Vin na Arduine. Toto dodatočné napätie môže dodať čokoľvek, použil som 9 -voltovú batériu. Dotykový senzor bol zapojený do 5V na Arduine. Dôvodom bolo, že všetky súčiastky mali problém s vybitím rovnakého napätia. Dotykový senzor je pripevnený na kolíku 2, takže ho možno použiť ako prerušenie kolíka. Potom je modul bluetooth pripojený k pinom Rx a Tx pre sériovú komunikáciu. Medzi kolíkom Rx na module a Tx na Arduine je odpor 2 kiloohmy s 1 kiloohmom, ktorý sa pripája k zemi. Pomáha to regulovať vstupujúce napätie.

Krok 4: Zostavenie

zhromaždenie
zhromaždenie

Zostavenie je celkom jednoduché.

  1. s nejakým super lepidlom namontujte svoje serva na svoje miesto, jedno pre prevodový stupeň výrezom na základni a druhé v blízkosti základne telefónu.
  2. Pripojte dotykový senzor k držiaku telefónu, aby vedel, kedy je telefón.
  3. Potom pripevnite prevodovku a rameno k príslušným servám
  4. Pri plnení elektroniky dbajte na to, aby vodiče neprekážali iným komponentom

Krok 5: Kód

Budú predstavené tri sady kódov, jeden kód pre Arduino, ktorý bol vytvorený v Arduino IDE, a dva kódy, ktoré boli vyrobené v Android Studio. Aplikácie pre Android sú rovnaké, okrem jednej je plná aplikácia, ktorá sleduje výdrž batérie a jedna nie. Druhý je určený na testovacie účely.

Arduino kód

Hlavným bodom tohto kódu je ovládanie dotykového senzora a motorov, ktoré prijíma príkaz z telefónu a reaguje naň.

#include // zavolá knižnicu servo, aby sme mohli ovládať dve servosServo servo1; Servo servo2; // vytvára dva servomotory pre každý servomotor int a = 0; // sledovacia premenná na testovanie int q = 0; // premenná, ktorá umožňuje oneskorenie pred začatím procesu zapojenia, char c; // premenná, ktorá obsahuje sériovú správu z telefónu neplatné nastavenie () {attachInterrupt (digitalPinToInterrupt (2), AH, FALLING); // pripojí klesajúce prerušenie, aby presne vedel, kedy dotykový senzor vidí, keď je telefón na servo1.attach (10); servo2.attach (9); // inicializuje dve serva Serial.begin (9600); // zaháji sériovú komunikáciu podobnou rýchlosťou ako modul bluetooth servo2.write (20); // automaticky nastaví serva na počiatočná pozícia servo1.write (180); }

prázdna slučka () {

if (Serial.available ()) {// toto skontroluje, či niečo prichádza z telefónu cez sériové piny Tx a Rx c = Serial.read (); // číta, čo prichádza, ak (c == 't') {// ak sériové zariadenie číta potom, znamená to, že je telefón úplne nabitý, proces odpojenia začne servo2.write (120); // odpojí oneskorenie nabíjačky (5000); // čaká, kým sa uistí na odstránenie servo1.write (110); // presunie telefón do vzpriamenej polohy, aby signalizoval //Serial.println( here '); attachInterrupt (digitalPinToInterrupt (2), AH, FALLING); // znova pripojí prerušenie}} if (q == 1) {// ak je podmienka zapojenia plug -inu potom začnite s pripojením oneskorenia nabíjačky (10 000); servo2.write (0); // presunie servo do polohy q = 0; // vynuluje stav}}

zrušiť AH () {

//Serial.println("in "); servo1.write (180); // uvedie platformu telefónu do nabíjacej polohy q = 1; // spustí stav, v ktorom bude pokračovať proces // a = 1; detachInterrupt (digitalPinToInterrupt (2)); // odpojí prerušenie, aby neboli problémy so spustením prerušenia, keď by nemalo}

Aplikácia pre Android

Tu zobrazím iba správnu aplikáciu, ale poskytne sa aj súbor testovacieho kódu, jediným rozdielom bude odstránenie triedy runnable a getBattery. Uvedený sériový kód je štandardný pre telefóny pripojené k zariadeniam, ako je modul.

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

verejná trieda MainActivity rozširuje AppCompatActivity {

// vytváranie potrebných objektov Handler handler; // pomáha so slučkou Spustiteľné spustiteľné; // beží nepretržite BluetoothAdapter mBluetoothAdapter; Bluetooth zásuvka mmSocket; BluetoothZariadenie mmZariadenie; OutputStream mmOutputStream; volatile boolean stopWorker; súkromný OutputStream outputStream; súkromný konečný reťazec DEVICE_NAME = "HC-05"; súkromný konečný UUID PORT_UUID = UUID.fromString ("00001101-0000-1000-8000-00805f9b34fb"); súkromné zariadenie BluetoothAdapter; súkromná zásuvka Bluetooth; @Override protected void onCreate (Bundle savedInstanceState) {// je sada inštrukcií, ktoré sa spustia pri vytvorení aplikácie super.onCreate (saveInstanceState); // displya creation setContentView (R.layout.activity_main); runnable = new Runnable () {@Override public void run () {// opakovane beží int level = (int) getBattery (); // zistí aktuálnu úroveň batérie if (level == 100) {// ak je úroveň batérie dosahuje 100% try {getBT (); // pripája sa k modulu bluetooth openBT (); // otvára ho sendData (); // odosiela potrebné údaje closeBT (); // zatvára objekt} catch (IOException ex) { }} handler.postDelayed (spustiteľný, 5000); // oneskorenie}}; handler = nový Handler (); handler.postDelayed (spustiteľný, 0); }

public float getBattery () {

Intent batteryIntent = registerReceiver (null, new IntentFilter (Intent. ACTION_BATTERY_CHANGED)); // vytvorí akciu, ktorá sa pripojí k úrovni int batérie = batteryIntent.getIntExtra (BatteryManager. EXTRA_LEVEL, -1); // dostane lepšiu úroveň int scale = batteryIntent.getIntExtra (BatteryManager. EXTRA_SCALE, -1); // získa mierku batérie, ak (úroveň == -1 || mierka == -1) {// v prípade nesprávneho kroku vráti 50.0f; } float batt = (level/(float) scale)*100.0f; // získa správnu mierku return batt; // vráti úroveň}

void getBT () {// získa možné pripojenia bluetooth

mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter (); // dostane adaptér, ak (! mBluetoothAdapter.isEnabled ()) {// zaistí, aby telefón mal modrý zub na Intent enableBluetooth = nový zámer (BluetoothAdapter. ACTION_REQUEST_ENABLE); // požaduje, aby bol zapnuté, ak nie štartActivityForResult (enableBluetooth, 0); } Nastaviť pairedDevices = mBluetoothAdapter.getBondedDevices (); // získa zoznam viazaných bluetooth, ak (pairedDevices.size ()> 0) {// zaistí, že existujú nejaké zariadenia pre (zariadenie BluetoothDevice: pairedDevices) {// prechádza devices if (device.getName (). equals ("HC-05")) {// skontroluje, či je to správne mmDevice = device; // uloží to break; }}}}

void openBT () hodí IOException {

UUID uuid = UUID.fromString ("00001101-0000-1000-8000-00805f9b34fb"); // Štandardný // SerialPortService ID mmSocket = mmDevice.createRfcommSocketToServiceRecord (uuid); // sa pripojí k zariadeniu so správnym ID mmSocket.connect (); // spojí mmOutputStream = mmSocket.getOutputStream (); // spustí možnosť odosielania údaje do modulu arduino}

void sendData () hodí triedu IOException {//, ktorá pošle t do arduina

mmOutputStream.write ('t'); }

void closeBT () hodí IOException {// zatvorí všetky spojenia s arduino

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

Krok 6: Súbory

Ďakujeme za prečítanie, v prílohe sú súbory, ktoré boli použité v tomto projekte

Odporúča: