Obsah:

Automatická nabíječka telefonu: 6 kroků (s obrázky)
Automatická nabíječka telefonu: 6 kroků (s obrázky)

Video: Automatická nabíječka telefonu: 6 kroků (s obrázky)

Video: Automatická nabíječka telefonu: 6 kroků (s obrázky)
Video: ANDROID MÁ JEDNO SKRYTÉ NASTAVENÍ 🤖 2024, Červenec
Anonim
Automatická nabíječka telefonu
Automatická nabíječka telefonu

„Tento instruktáž byl vytvořen za účelem splnění požadavku projektu Makecourse na University of South Florida (www.makecourse.com)“

Myšlenkou tohoto projektu bylo vytvořit zařízení, které by mohlo nabíjet telefon, a poté jej odpojit, když telefon dosáhne 100%. Tím by se zastavily problémy s nadměrným nabíjením.

Krok 1: Plastové součásti

Plastové součásti
Plastové součásti
Plastové součásti
Plastové součásti
Plastové součásti
Plastové součásti
Plastové součásti
Plastové součásti

Byly použity některé komponenty, které byly vytištěny 3D. Tyto součásti se skládaly ze základny, držáku pro nabíječku, ozubeného soukolí a pastorku (normální ozubené kolo a lineární díl, který mění rotaci na lineární pohyb) a základny, na které lze vše provozovat. Tyto součásti budou vysvětleny v následujících odstavcích. V pořadí podle vzhledu

Držák nabíječky

Účelem je držet nabíječku telefonu nebo jí alespoň dát lepší a rovný základ.

Základna

Základna má kroužky pro držák telefonu a dráhu pro sadu převodovek.

Držák telefonu

Samozřejmě drží telefon

Rameno telefonu

Pohybuje a drží telefon

Soukolí a pastorek sada

Slouží k pohybu nabíječky telefonu tam a zpět

Krok 2: Rozdělení komponent, které nejsou vytištěny ve 3D

Jedná se o součásti, které byly buď zakoupeny pro projekt, nebo již vlastněné. U některých dílů jsem na ně navázal/podobné položky na amazonu, ale klidně je pořiďte kdekoli.

Micro Servo:

Standardní servo 0-180:

Sériový modul Bluetooth HC-05:

Telefon a nabíječka telefonu

Arduino

Prkénko

Krabice nebo koš na základnu

Dotykový senzor:

Krok 3: Elektronika

Elektronika
Elektronika

Obvod pro tento projekt však může některé vyžadovat, hlavně kvůli modulu HC-05. Mnoho modulů tohoto typu je vybaveno zhruba 3,3 V až 6 V, což je v provozním rozsahu Arduina. Pro sériovou komunikaci však pin Rx někdy funguje lépe pouze s 3,3 V. Jak je vidět na výše uvedeném diagramu, dvě serva jsou připojena ke kolíku Vin na Arduinu. Toto extra napětí může dodávat cokoli, použil jsem 9voltovou baterii. Dotykový senzor byl zapojen do 5V na Arduinu. Důvodem bylo, že všechny součásti měly problém s vybitím stejného napětí. Dotykový senzor je připojen ke kolíku 2, takže jej lze použít jako přerušení kolíku. Poté je modul bluetooth připojen k pinům Rx a Tx pro sériovou komunikaci. Mezi pinem Rx na modulu a Tx na Arduinu je 2k ohmový odpor s 1 kiloohm připojením k zemi. To pomáhá regulovat vstupující napětí.

Krok 4: Sestavení

Shromáždění
Shromáždění

Sestavení je celkem jednoduché.

  1. s nějakým super lepidlem namontujte svá serva do jejich poloh, jedno pro převodovku výřezem na základně a druhé poblíž místa, kde je základna telefonu.
  2. Připojte dotykový senzor k držáku telefonu, aby věděl, kdy je tam telefon.
  3. Poté připojte zařízení a rameno k příslušným servům
  4. Při plnění elektroniky zajistěte, aby vodiče nepřekážely jiným součástem

Krok 5: Kód

K dispozici budou tři sady kódů, jeden kód pro Arduino, který byl vytvořen v Arduino IDE, a dva kódy, které byly vytvořeny v Android Studio. Aplikace pro Android jsou stejné, kromě jedné je plná aplikace, která sleduje výdrž baterie a jedna ne. Druhá je pro testovací účely.

Arduino kód

Hlavním bodem tohoto kódu je ovládání dotykového senzoru a motorů, přijímá příkaz z telefonu a působí na něj.

#include // volá knihovnu serv, abychom mohli ovládat dvě servosServo servo1; Servo servo2; // vytvoří dva servo objekty pro každý servomotor int a = 0; // sledovací proměnná pro testování int q = 0; // proměnná, která umožňuje, aby došlo ke zpoždění před zahájením procesu pluggin char c; // proměnná, která obsahuje sériovou zprávu z telefonu void setup () {attachInterrupt (digitalPinToInterrupt (2), AH, FALLING); // připojí klesající přerušení, aby přesně věděla, kdy dotykový senzor vidí, kdy je telefon venku na servo1.attach (10); servo2.attach (9); // inicializuje dvě serva Serial.begin (9600); // zahájí sériovou komunikaci rychlostí podobnou rychlosti modulu bluetooth servo2.write (20); // automaticky nastaví serva na výchozí pozice servo1.write (180); }

prázdná smyčka () {

if (Serial.available ()) {// toto zkontroluje, zda něco přichází z telefonu přes sériové piny Tx a Rx c = Serial.read (); // čte, co přichází z if (c == 't') {// pokud sériové zařízení čte poté, znamená to, že je telefon plně nabitý, proces odpojení začne servo2.write (120); // odpojí zpoždění nabíječky (5000); // čeká, aby se ujistil je čas na odebrání servo1.write (110); // přesune telefon do vzpřímené polohy, aby signalizoval //Serial.println("here "); attachInterrupt (digitalPinToInterrupt (2), AH, FALLING); // znovu připojí přerušení}} if (q == 1) {// pokud je podmínka pro připojení plug -inu k dispozici, pak začněte s připojením zpoždění nabíječky (10 000); servo2.write (0); // přesune servo do polohy q = 0; // resetuje podmínku}}

neplatné AH () {

//Serial.println("in "); servo1.write (180); // upustí platformu telefonu do nabíjecí polohy q = 1; // spustí kondici pro pokračování procesu // a = 1; detachInterrupt (digitalPinToInterrupt (2)); // odpojí přerušení, takže s přerušením, kdy by nemělo být, nebude žádný problém}

Aplikace pro Android

Zde zobrazím pouze správnou aplikaci, ale bude uveden také soubor testovacího kódu, jediným rozdílem bude odstranění třídy runnable a getBattery. Uvedený sériový kód je standardní pro telefony připojující se k zařízením, jako je modul.

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

veřejná třída MainActivity rozšiřuje AppCompatActivity {

// vytváření potřebných objektů Handler handler; // pomáhá se smyčkou Runnable runnable; // běží nepřetržitě BluetoothAdapter mBluetoothAdapter; BluetoothSocket mmSocket; BluetoothDevice mmDevice; OutputStream mmOutputStream; volatile boolean stopWorker; soukromý OutputStream outputStream; soukromý koncový řetězec DEVICE_NAME = "HC-05"; soukromé konečné UUID PORT_UUID = UUID.fromString ("00001101-0000-1000-8000-00805f9b34fb"); soukromé zařízení BluetoothAdapter; soukromá zásuvka Bluetooth; @Override protected void onCreate (Bundle savedInstanceState) {// je sada instrukcí, které se spustí při vytvoření aplikace super.onCreate (saveInstanceState); // displya creation setContentView (R.layout.activity_main); runnable = new Runnable () {@Override public void run () {// opakovaně běží int level = (int) getBattery (); // získá aktuální úroveň baterie if (level == 100) {// pokud úroveň baterie dosáhne 100% zkusit {getBT (); // připojí se k bluetooth modulu openBT (); // otevře to sendData (); // odešle potřebná data closeBT (); // zavře objekt} catch (IOException ex) { }} handler.postDelayed (spustitelný, 5000); // zpoždění}}; handler = nový Handler (); handler.postDelayed (spustitelný, 0); }

public float getBattery () {

Intent batteryIntent = registerReceiver (null, new IntentFilter (Intent. ACTION_BATTERY_CHANGED)); // vytvoří akci, která se připojí k úrovni int baterie = batteryIntent.getIntExtra (BatteryManager. EXTRA_LEVEL, -1); // získá lepší úroveň int scale = batteryIntent.getIntExtra (BatteryManager. EXTRA_SCALE, -1); // získá měřítko baterie if (level == -1 || scale == -1) {// v případě chybného kroku návrat 50.0f; } float batt = (level/(float) scale)*100.0f; // získá správné měřítko return batt; // vrátí úroveň}

void getBT () {// získá možná bluetooth připojení

mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter (); // získá adaptér, pokud (! mBluetoothAdapter.isEnabled ()) {// zajistí, aby telefon ahs modrý zub na Intent enableBluetooth = nový záměr (BluetoothAdapter. ACTION_REQUEST_ENABLE); // požaduje, aby byl zapnuto, pokud není startActivityForResult (enableBluetooth, 0); } Nastavit pairedDevices = mBluetoothAdapter.getBondedDevices (); // získá seznam vázaných bluetooth if (pairedDevices.size ()> 0) {// zajistí, že pro (BluetoothDevice device: pairedDevices) {// prochází některá zařízení devices if (device.getName (). equals ("HC-05")) {// zkontroluje, zda je to správné mmDevice = device; // uloží jej break; }}}}

void openBT () hodí IOException {

UUID uuid = UUID.fromString ("00001101-0000-1000-8000-00805f9b34fb"); // Standard // SerialPortService ID mmSocket = mmDevice.createRfcommSocketToServiceRecord (uuid); // připojí se k zařízení se správným ID mmSocket.connect (); // spojí mmOutputStream = mmSocket.getOutputStream (); // spustí schopnost odesílat data do modulu arduino}

void sendData () vyvolá třídu IOException {//, která odešle t do arduina

mmOutputStream.write ('t'); }

void closeBT () vyvolá IOException {// zavře všechna připojení k Arduinu

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

Krok 6: Soubory

Děkujeme za přečtení, v příloze jsou soubory, které byly použity v tomto projektu

Doporučuje: