Sommario:

Un caricabatterie automatico per telefono: 6 passaggi (con immagini)
Un caricabatterie automatico per telefono: 6 passaggi (con immagini)

Video: Un caricabatterie automatico per telefono: 6 passaggi (con immagini)

Video: Un caricabatterie automatico per telefono: 6 passaggi (con immagini)
Video: QUESTO RISOLVE TUTTI I PROBLEMI DI iPHONE!🤯 2024, Dicembre
Anonim
Un caricatore automatico del telefono
Un caricatore automatico del telefono

"Questo istruttivo è stato creato in adempimento del requisito del progetto del Makecourse presso la University of South Florida (www.makecourse.com)"

L'idea alla base di questo progetto era creare un dispositivo in grado di caricare un telefono e quindi scollegarlo quando il telefono raggiunge il 100%. Questo fermerebbe i problemi di sovraccarica.

Passaggio 1: componenti in plastica

Componenti in plastica
Componenti in plastica
Componenti in plastica
Componenti in plastica
Componenti in plastica
Componenti in plastica
Componenti in plastica
Componenti in plastica

Alcuni componenti utilizzati sono stati stampati in 3D. Questi componenti comprendevano una base, un supporto per il caricatore, un set di ingranaggi a cremagliera e pignone (un ingranaggio normale e un pezzo lineare che cambia la rotazione in movimento lineare) e una base su cui tutto può funzionare. Questi componenti verranno spiegati nei paragrafi seguenti. In ordine di apparizione

Supporto per caricabatterie

Lo scopo di questo è di tenere il caricabatterie del telefono, o almeno dargli una base migliore e livellata su cui stare.

Base

La base ha anelli per il supporto del telefono e un binario per il set di ingranaggi.

Porta telefono

Tiene il telefono, ovviamente

Braccio del telefono

Muove e tiene il telefono

Kit pignone e cremagliera

Utilizzato per spostare avanti e indietro il caricabatterie del telefono

Passaggio 2: ripartizione dei componenti non stampati in 3D

Questi sono i componenti che sono stati acquistati per il progetto o già posseduti. Per alcune delle parti che ho collegato a loro/articoli simili su amazon, ma sentiti libero di acquistarli ovunque.

Micro Servo:

Servo standard 0-180:

Modulo seriale Bluetooth HC-05:

Telefono e caricatore del telefono

Arduino

tagliere

Scatola o cestino per base

Sensore tattile:

Passaggio 3: elettronica

Elettronica
Elettronica

Il circuito per questo progetto potrebbe richiederne un po', principalmente a causa del modulo HC-05. Molti dei moduli di questo tipo hanno una velocità compresa tra circa 3,3 V e 6 V, che rientra nel raggio di azione di Arduino. Ma, per la comunicazione seriale, il pin Rx a volte funziona meglio con solo 3,3 V. Come si vede nello schema sopra i due servi sono collegati al pin Vin sull'Arduino. Questa tensione extra può essere fornita da qualsiasi cosa, ho usato una batteria da 9 volt. Il sensore tattile è stato collegato al 5V dell'Arduino. Questo perché tutti i componenti avevano problemi a funzionare con la stessa tensione. Il sensore tattile è collegato al pin 2, quindi può essere utilizzato come pin interrupt. Quindi il modulo bluetooth è collegato ai pin Rx e Tx per la comunicazione seriale. Tra il pin Rx sul modulo e Tx sull'Arduino c'è un resistore da 2 kilo ohm con 1 kilo ohm che si collega a terra. Questo aiuta a regolare la tensione in entrata.

Passaggio 4: assemblaggio

Assemblea
Assemblea

Il montaggio è abbastanza semplice.

  1. con un po' di colla super montate i vostri servi nelle loro posizioni, uno per l'ingranaggio vicino al ritaglio sulla base e uno vicino a dove si trova la base del telefono.
  2. Attacca il sensore tattile al supporto del telefono, in modo che possa sapere quando il telefono è lì.
  3. Quindi collegare l'ingranaggio e il braccio ai rispettivi servi
  4. Assicurati che i cavi non interferiscano con altri componenti mentre riempi i tuoi dispositivi elettronici

Passaggio 5: codice

Verranno presentati tre set di codice, un codice per Arduino, creato nell'IDE Arduino e due codici creati in Android Studio. Le app Android sono le stesse, tranne una è l'app completa che tiene traccia della durata della batteria e una no. Il secondo è a scopo di test.

Codice Arduino

Il punto principale di questo codice è azionare il sensore tattile e i motori, riceve un comando dal telefono e agisce su di esso.

#include //chiama la libreria servo così possiamo controllare i due servoServo servo1; Servo servo2;//crea due oggetti servo per ogni servomotore int a=0;//variabile di tracciamento per testare int q=0;//una variabile che consente un ritardo prima dell'inizio del processo di plug-in char c;// variabile che contiene il messaggio seriale dal telefono void setup() { attachInterrupt(digitalPinToInterrupt(2), AH, FALLING); // allega un interrupt in caduta per sapere esattamente quando il sensore tattile vede quando il telefono è fuori servizio su servo1.attach (10); servo2.attach(9);// inizializza i due servi Serial.begin(9600);// inizia la comunicazione seriale ad una velocità simile a quella del modulo bluetooth servo2.write(20);//auto imposta i servi su una posizione iniziale servo1.write(180); }

ciclo vuoto() {

if (Serial.available()){// controlla se c'è qualcosa in arrivo dal telefono tramite i pin seriali Tx e Rx c=Serial.read();//legge cosa sta arrivando da if (c== 't'){//se il dispositivo seriale legge at allora significa che il telefono è completamente carico, il processo di scollegamento inizia servo2.write(120);//scollega il ritardo del caricatore (5000);//aspetta per essere sicuro c'è tempo per la rimozione servo1.write(110); // sposta il telefono in posizione verticale per segnalare //Serial.println("qui"); attachInterrupt(digitalPinToInterrupt(2), AH, FALLING);//ricollega l'interrupt } } if (q==1){//se la condizione per il plug-in è ture allora inizia con il collegamento del delay del caricatore (10000); servo2.write(0);//move servo in posizione q=0;//reimposta la condizione } }

vuoto AH(){

//Serial.println("in"); servo1.write(180);// porta la piattaforma del telefono nella posizione di ricarica q=1;// avvia la condizione per continuare il processo //a=1; detachInterrupt (digitalPinToInterrupt(2)); // scollega l'interrupt, in modo che non ci siano problemi con l'avvio dell'interrupt quando non dovrebbe }

Applicazione Android

Qui mostrerò solo l'app corretta ma verrà fornito anche il file del codice di test, l'unica differenza sarà la rimozione della classe eseguibile e getBattery. Il codice seriale citato è quello standard per i telefoni che si collegano a dispositivi come il modulo.

pacchetto 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 estende AppCompatActivity {

// creazione di oggetti necessari Handler handler;//aiuta con il ciclo Runnable eseguibile;//esegue continuamente BluetoothAdapter mBluetoothAdapter; Presa Bluetooth mmSocket; BluetoothDispositivo mmDispositivo; OutputStream mmOutputStream; volatile booleano stopWorker; OutputStream privato outputStream; private final String DEVICE_NAME="HC-05"; finale privato UUID PORT_UUID=UUID.fromString("00001101-0000-1000-8000-00805f9b34fb"); dispositivo BluetoothAdapter privato; presa BluetoothSocket privata; @Override protected void onCreate(Bundle saveInstanceState) {//è un insieme di istruzioni che vengono eseguite quando l'app viene creata super.onCreate(savedInstanceState);//displya creation setContentView(R.layout.activity_main); runnable = new Runnable() { @Override public void run() {//esegue ripetutamente int level = (int) getBattery();// ottiene il livello corrente della batteria if (level==100){//if il livello della batteria raggiunge il 100% try { getBT (); // si connette al modulo bluetooth openBT (); // lo apre sendData (); // invia i dati necessari closeBT (); // chiude l'oggetto } catch (IOException ex) { } } handler.postDelayed(runnable, 5000);//un ritardo } }; gestore = nuovo Gestore(); handler.postDelayed(runnable, 0); }

public float getBattery() {

Intent batteryIntent= registerReceiver(null, new IntentFilter(Intent. ACTION_BATTERY_CHANGED));// crea l'azione che si connette alla batteria int level = batteryIntent.getIntExtra(BatteryManager. EXTRA_LEVEL, -1);// ottiene il livello di bettery int scale = batteryIntent.getIntExtra(BatteryManager. EXTRA_SCALE, -1);//ottiene la scala della batteria if (level == -1 || scale == -1) {//in caso di passo falso return 50.0f; } float batt = (level/(float)scale)*100.0f;//riceve il valore di scala corretto batt;//restituisce il livello }

void getBT(){//ottene le possibili connessioni bluetooth

mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();//ottiene l'adattatore if(!mBluetoothAdapter.isEnabled()) {//assicura che il telefono abbia il dente blu su Intent enableBluetooth = new Intent(BluetoothAdapter. ACTION_REQUEST_ENABLE);//richiede che sia attivato se non startActivityForResult(enableBluetooth, 0); } Set pairedDevices = mBluetoothAdapter.getBondedDevices();// ottiene l'elenco dei dispositivi bluetooth collegati if(pairedDevices.size() > 0) {//si assicura che ci siano alcuni dispositivi per (BluetoothDevice device: pairedDevices) {// esegue il loop attraverso il devices if(device.getName().equals("HC-05")) {//controlla se è quello corretto mmDevice = device;//lo salva break; } } } }

void openBT() genera IOException {

UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805f9b34fb"); //Standard //SerialPortService ID mmSocket = mmDevice.createRfcommSocketToServiceRecord(uuid);//si connette al dispositivo con l'id corretto mmSocket.connect();//connects mmOutputStream = mmSocket.getOutputStream();// avvia la possibilità di inviare dati al modulo arduino }

void sendData() lancia IOException {//class che invia la t all'arduino

mmOutputStream.write('t'); }

void closeBT() lancia IOException {//chiude tutte le connessioni all'arduino

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

Passaggio 6: file

Grazie per la lettura, in allegato sono i file che sono stati utilizzati in questo progetto

Consigliato: