Sommario:
- Passaggio 1: componenti in plastica
- Passaggio 2: ripartizione dei componenti non stampati in 3D
- Passaggio 3: elettronica
- Passaggio 4: assemblaggio
- Passaggio 5: codice
- Passaggio 6: file
Video: Un caricabatterie automatico per telefono: 6 passaggi (con immagini)
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:04
"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
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
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
Il montaggio è abbastanza semplice.
- 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.
- Attacca il sensore tattile al supporto del telefono, in modo che possa sapere quando il telefono è lì.
- Quindi collegare l'ingranaggio e il braccio ai rispettivi servi
- 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:
Un vecchio caricabatterie? No, è un amplificatore per cuffie e pedale per chitarra completamente valvolare RealTube18: 8 passaggi (con immagini)
Un vecchio caricabatterie? No, è un amplificatore per cuffie e pedale per chitarra RealTube18 All-Tube: PANORAMICA: cosa fare durante una pandemia, con un caricabatterie obsoleto al nichel-cadmio e valvole per autoradio obsolete di oltre 60 anni che devono essere riciclate? Che ne dici di progettare e costruire una comune batteria per attrezzi solo a tubo, a bassa tensione
Progettare e costruire un filtro della linea di alimentazione per un caricabatterie per telefono Android: 5 passaggi
Progettare e costruire un filtro della linea di alimentazione per un caricatore per telefono Android: in questo Instructable, mostrerò come prendere un cavo standard da USB a mini USB, separarlo nel mezzo e inserire un circuito di filtro che ridurrà il rumore eccessivo o hash prodotto da un tipico alimentatore Android. Ho un portatile m
Iphone peloso! CUSTODIA PER TELEFONO FAI DA TE Life Hacks - Custodia per telefono con colla a caldo: 6 passaggi (con immagini)
Iphone peloso! CUSTODIA PER TELEFONO FAI DA TE Life Hacks - Custodia per telefono con colla a caldo: scommetto che non hai mai visto un iPhone peloso! Bene, in questo tutorial sulla custodia del telefono fai da te lo farai sicuramente! :)) Dato che i nostri telefoni sono al giorno d'oggi un po' come la nostra seconda identità, ho deciso di creare un " me in miniatura "…Leggermente inquietante, ma molto divertente
Caricabatterie per telefono Iron Throne: 17 passaggi (con immagini)
Caricatore per telefono Iron Throne: sono così entusiasta dell'uscita della settima stagione di Game of Thrones, ho dovuto realizzare un progetto correlato: un caricatore per telefono Iron Throne
Caricabatterie per telefono wireless fai-da-te e controllo LED: 11 passaggi (con immagini)
Caricabatterie per telefono wireless fai-da-te e controllo LED: in questo tutorial dimostrerò come creare un caricabatterie per telefono wireless e LED attivati. Includerò codice, PDF, schemi elettrici e file Gerber, nonché una distinta base per creare il tuo wireless caricatore del telefono. Nota speciale: non