Índice:

Um carregador automático de telefone: 6 etapas (com fotos)
Um carregador automático de telefone: 6 etapas (com fotos)

Vídeo: Um carregador automático de telefone: 6 etapas (com fotos)

Vídeo: Um carregador automático de telefone: 6 etapas (com fotos)
Vídeo: Truque para carregar celular mais rápido #celular #dicas #truques #vocesabia #bateria 2024, Julho
Anonim
Um carregador automático de telefone
Um carregador automático de telefone

"Este instrutível foi criado em cumprimento ao requisito do projeto do Makecourse na University of South Florida (www.makecourse.com)"

A ideia por trás deste projeto era criar um dispositivo que pudesse carregar um telefone e, em seguida, desligá-lo quando o telefone atingir 100%. Isso interromperia os problemas de cobrança excessiva.

Etapa 1: Componentes de plástico

Componentes de Plástico
Componentes de Plástico
Componentes de Plástico
Componentes de Plástico
Componentes de Plástico
Componentes de Plástico
Componentes de Plástico
Componentes de Plástico

Alguns componentes usados foram impressos em 3D. Esses componentes eram compostos por uma base, um suporte para o carregador, um conjunto de engrenagem pinhão e cremalheira (uma engrenagem normal e uma peça linear que muda a rotação para movimento linear) e uma base para tudo funcionar. Esses componentes serão explicados nos parágrafos a seguir. Em ordem de aparecimento

Suporte carregador

O objetivo é segurar o carregador do telefone ou, pelo menos, dar a ele uma base melhor e nivelada.

Base

A base possui anéis para o suporte do telefone, bem como uma trilha para o conjunto de engrenagens.

Suporte para telefone

Segura o telefone, obviamente

Braço de telefone

Move e segura o telefone

Conjunto de engrenagem de cremalheira e pinhão

Usado para mover o carregador do telefone para frente e para trás

Etapa 2: Divisão de componentes não impressos em 3D

Esses são os componentes que foram adquiridos para o projeto ou já possuídos. Para algumas das peças vinculei a eles / itens semelhantes na amazon, mas fique à vontade para adquiri-los em qualquer lugar.

Micro Servo:

Servo padrão 0-180:

Módulo serial Bluetooth HC-05:

Telefone e carregador de telefone

Arduino

Tábua de pão

Caixa ou recipiente para base

Sensor de toque:

Etapa 3: Eletrônica

Eletrônicos
Eletrônicos

Porém, o circuito para este projeto pode exigir alguns, principalmente por causa do módulo HC-05. Muitos dos módulos desse tipo têm taxas de aproximadamente 3,3 V a 6 V, que estão dentro da faixa de operação do Arduino. Mas, para comunicação serial, o pino Rx às vezes funciona melhor com apenas 3,3V. Como visto no diagrama acima, os dois servos são conectados ao pino Vin no Arduino. Essa tensão extra pode ser fornecida por qualquer coisa, usei uma bateria de 9 volts. O sensor de toque foi conectado ao 5V do Arduino. Isso acontecia porque todos os componentes tinham problemas para funcionar com a mesma voltagem. O sensor de toque é conectado ao pino 2 para que possa ser usado como uma interrupção de pino. Em seguida, o módulo bluetooth é conectado aos pinos Rx e Tx para comunicação serial. Entre o pino Rx no módulo e Tx no Arduino está um resistor de 2 kilo ohm com 1 kilo ohm conectado ao aterramento. Isso ajuda a regular a tensão que entra.

Etapa 4: Montagem

conjunto
conjunto

A montagem é bastante simples.

  1. com um pouco de super cola monte seus servos em suas posições, um para a engrenagem pelo recorte na base e outro perto de onde está a base do telefone.
  2. Anexe o sensor de toque ao suporte do telefone, para que ele possa saber quando o telefone está lá.
  3. Em seguida, conecte a engrenagem e o braço a seus respectivos servos
  4. Certifique-se de que os fios não interfiram com outros componentes enquanto você preenche seus componentes eletrônicos

Etapa 5: Código

Três conjuntos de código serão apresentados, um código para o Arduino, que foi criado no IDE do Arduino e dois códigos que foram feitos no Android Studio. Os aplicativos Android são os mesmos, exceto por um é o aplicativo completo que rastreia a vida da bateria e outro não. O segundo é para fins de teste.

Código Arduino

O ponto principal desse código é operar o sensor de toque e os motores, ele recebe um comando do telefone e atua sobre ele.

#include // chama a biblioteca servo para que possamos controlar os dois servosServo servo1; Servo servo2; // cria dois objetos servo para cada servo motor int a = 0; // variável de rastreamento para teste int q = 0; // uma variável que permite que haja um atraso antes do início do processo de pluggin char c; // variável que contém a mensagem serial do telefone void setup () {attachInterrupt (digitalPinToInterrupt (2), AH, FALLING); // anexa uma interrupção de queda para saber exatamente quando o sensor de toque vê quando o telefone está sendo desligado no servo1.attach (10); servo2.attach (9); // inicializa os dois servos Serial.begin (9600); // inicia a comunicação serial em uma taxa semelhante à do módulo bluetooth servo2.write (20); // configura automaticamente os servos para uma posição inicial servo1.write (180); }

void loop () {

if (Serial.available ()) {// verifica se há algo vindo do telefone pelos pinos seriais Tx e Rx c = Serial.read (); // lê o que está vindo de if (c == 't') {// se o dispositivo serial lê em então, isso significa que o telefone está totalmente carregado, o processo de desconexão começa servo2.write (120); // desconecta o atraso do carregador (5000); // espera para ter certeza há tempo para a remoção servo1.write (110); // move o telefone para uma posição vertical para sinalizar //Serial.println("here "); attachInterrupt (digitalPinToInterrupt (2), AH, FALLING); // reanexa a interrupção}} if (q == 1) {// se a condição para o plug-in for ture, então comece anexando o atraso do carregador (10000); servo2.write (0); // move o servo para a posição q = 0; // redefine a condição}}

void AH () {

//Serial.println("in "); servo1.write (180); // coloca a plataforma do telefone na posição de carregamento q = 1; // inicia a condição para continuar o processo // a = 1; detachInterrupt (digitalPinToInterrupt (2)); // desanexa a interrupção, para que não haja problemas com a interrupção começando quando não deveria}

App Android

Aqui, exibirei apenas o aplicativo adequado, mas o arquivo de código de teste também será fornecido, a única diferença será a remoção da classe executável e getBattery. O código serial mencionado é o padrão para telefones que se conectam a dispositivos como o módulo.

package 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 {

// criando objetos necessários Handler handler; // ajuda com o loop Runnable runnable; // executa continuamente BluetoothAdapter mBluetoothAdapter; BluetoothSocket mmSocket; BluetoothDevice mmDevice; OutputStream mmOutputStream; volatile boolean stopWorker; OutputStream outputStream privado; final privado String DEVICE_NAME = "HC-05"; final privado UUID PORT_UUID = UUID.fromString ("00001101-0000-1000-8000-00805f9b34fb"); dispositivo BluetoothAdapter privado; soquete BluetoothSocket privado; @Override protected void onCreate (Bundle savedInstanceState) {// é um conjunto de instruções executado quando o aplicativo é criado super.onCreate (savedInstanceState); // displya creation setContentView (R.layout.activity_main); runnable = new Runnable () {@Override public void run () {// executa repetidamente int level = (int) getBattery (); // obtém o nível atual da bateria if (level == 100) {// se o nível da bateria atinge 100% try {getBT (); // conecta-se ao módulo bluetooth openBT (); // abre sendData (); // envia os dados necessários closeBT (); // fecha o objeto} catch (IOException ex) { }} handler.postDelayed (runnable, 5000); // um atraso}}; manipulador = novo manipulador (); handler.postDelayed (executável, 0); }

public float getBattery () {

Intent batteryIntent = registerReceiver (null, new IntentFilter (Intent. ACTION_BATTERY_CHANGED)); // cria a ação que se conecta ao nível interno da bateria = batteryIntent.getIntExtra (BatteryManager. EXTRA_LEVEL, -1); // obtém o melhor nível int scale = batteryIntent.getIntExtra (BatteryManager. EXTRA_SCALE, -1); // obtém a escala da bateria if (nível == -1 || escala == -1) {// em caso de erro, return 50.0f; } float batt = (level / (float) scale) * 100.0f; // obtém a escala apropriada return batt; // retorna o nível}

void getBT () {// obtém as possíveis conexões bluetooth

mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter (); // obtém o adaptador if (! mBluetoothAdapter.isEnabled ()) {// garante que o telefone tem dente azul no Intent enableBluetooth = new Intent (BluetoothAdapter. ACTION_REQUEST_ENABLE); // solicita que seja ligado se não startActivityForResult (enableBluetooth, 0); } Set pairedDevices = mBluetoothAdapter.getBondedDevices (); // obtém a lista de bluetooth vinculados if (pairedDevices.size ()> 0) {// garante que haja alguns dispositivos para (BluetoothDevice device: pairedDevices) {// faz um loop através do devices if (device.getName (). equals ("HC-05")) {// verifica se é o apropriado mmDevice = device; // salva o break; }}}}

void openBT () throws IOException {

UUID uuid = UUID.fromString ("00001101-0000-1000-8000-00805f9b34fb"); // Padrão // ID SerialPortService mmSocket = mmDevice.createRfcommSocketToServiceRecord (uuid); // conecta ao dispositivo com o id adequado mmSocket.connect (); // conecta mmOutputStream = mmSocket.getOutputStream (); // inicia a capacidade de enviar dados para o módulo arduino}

void sendData () throws IOException {// classe que envia t para o arduino

mmOutputStream.write ('t'); }

void closeBT () throws IOException {// fecha todas as conexões com o arduino

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

Etapa 6: Arquivos

Obrigado por ler, em anexo estão os arquivos que foram usados neste projeto

Recomendado: