Table des matières:

Un chargeur de téléphone automatique : 6 étapes (avec photos)
Un chargeur de téléphone automatique : 6 étapes (avec photos)

Vidéo: Un chargeur de téléphone automatique : 6 étapes (avec photos)

Vidéo: Un chargeur de téléphone automatique : 6 étapes (avec photos)
Vidéo: Comment réanimer une batterie de téléphone, d'appareil photo ou de caméra complétement morte 2024, Juillet
Anonim
Un chargeur de téléphone automatique
Un chargeur de téléphone automatique

"Cette instructable a été créée pour répondre aux exigences du projet Makecourse à l'Université de Floride du Sud (www.makecourse.com)"

L'idée derrière ce projet était de créer un appareil capable de charger un téléphone, puis de le débrancher lorsque le téléphone atteint 100%. Cela arrêterait les problèmes de surcharge.

Étape 1: Composants en plastique

Composants en plastique
Composants en plastique
Composants en plastique
Composants en plastique
Composants en plastique
Composants en plastique
Composants en plastique
Composants en plastique

Certains composants utilisés ont été imprimés en 3D. Ces composants comprenaient une base, un support pour le chargeur, un ensemble d'engrenages à crémaillère (un engrenage normal et une pièce linéaire qui change la rotation en mouvement linéaire) et une base pour que tout fonctionne. Ces composants seront expliqués dans les paragraphes suivants. Par ordre d'apparition

Support de chargeur

Le but de ceci est de tenir le chargeur du téléphone, ou au moins de lui donner une base meilleure et de niveau.

Base

La base a des anneaux pour le support de téléphone ainsi qu'une piste pour le train d'engrenages.

Support de téléphone

Tient le téléphone, évidemment

Bras de téléphone

Déplace et tient le téléphone

Ensemble d'engrenages à crémaillère et pignon

Utilisé pour déplacer le chargeur de téléphone d'avant en arrière

Étape 2: Décomposition des composants non imprimés en 3D

Ce sont les composants qui ont été soit achetés pour le projet, soit déjà possédés. Pour certaines des pièces, je leur ai lié/des articles similaires sur amazon, mais n'hésitez pas à les acquérir n'importe où.

Micro Servo:

Servo standard 0-180:

Module série Bluetooth HC-05:

Téléphone et chargeur de téléphone

Arduino

Planche à pain

Boîte ou bac pour socle

Capteur tactile:

Étape 3: Électronique

Électronique
Électronique

Le circuit de ce projet peut cependant en nécessiter, principalement à cause du module HC-05. La plupart des modules de ce type ont un taux d'environ 3,3 V à 6 V, ce qui se situe dans la plage de fonctionnement de l'Arduino. Mais, pour la communication série, la broche Rx fonctionne parfois mieux avec seulement 3,3 V. Comme le montre le schéma ci-dessus, les deux servos sont connectés à la broche Vin de l'Arduino. Cette tension supplémentaire peut être fournie par n'importe quoi, j'ai utilisé une batterie de 9 volts. Le capteur tactile était branché sur le 5V de l'Arduino. C'était parce que tous les composants avaient du mal à fonctionner avec la même tension. Le capteur tactile est attaché à la broche 2 afin qu'il puisse être utilisé comme une interruption de broche. Ensuite, le module Bluetooth est connecté aux broches Rx et Tx pour la communication série. Entre la broche Rx du module et Tx de l'Arduino se trouve une résistance de 2 kilo ohms avec une connexion de 1 kilo ohm à la terre. Cela permet de réguler la tension d'entrée.

Étape 4: Assemblage

Assemblée
Assemblée

Le montage est assez simple.

  1. avec de la super colle, montez vos servos dans leurs positions, un pour l'engrenage par la découpe sur la base et un près de l'endroit où se trouve la base du téléphone.
  2. Fixez le capteur tactile au support du téléphone pour qu'il sache quand le téléphone est là.
  3. Fixez ensuite l'engrenage et le bras à leurs servos respectifs
  4. Assurez-vous que les fils n'interfèrent pas avec d'autres composants lorsque vous remplissez vos appareils électroniques.

Étape 5: Coder

Trois jeux de code seront présentés, un code pour l'Arduino, qui a été créé dans l'IDE Arduino et deux codes qui ont été créés dans Android Studio. Les applications Android sont les mêmes, sauf que l'une est l'application complète qui suit la durée de vie de la batterie et l'autre non. Le second est à des fins de test.

Code Arduino

Le point principal de ce code est de faire fonctionner le capteur tactile et les moteurs, il reçoit une commande du téléphone et agit en conséquence.

#include // appelle la bibliothèque de servos afin que nous puissions contrôler les deux servosServo servo1; Servo servo2;//crée deux objets servo pour chaque servomoteur int a=0;//variable de suivi pour tester int q=0;//une variable qui permet d'avoir un délai avant que le processus de branchement ne commence char c;// variable qui contient le message série du téléphone void setup() { attachInterrupt(digitalPinToInterrupt(2), AH, FALLING);// attache une interruption en chute pour savoir exactement quand le capteur tactile voit quand le téléphone est sur servo1.attach (dix); servo2.attach(9);// initialise les deux servos Serial.begin(9600);// commence la communication série à une vitesse similaire à celle du module bluetooth servo2.write(20);//auto règle les servos sur une position de départ servo1.write(180); }

boucle vide() {

if (Serial.available()){// ceci vérifie s'il y a quelque chose qui entre du téléphone via les broches série Tx et Rx c=Serial.read(); // lit ce qui vient de if (c== 't'){//si le périphérique série lit à alors cela signifie que le téléphone est complètement chargé, le processus de débranchement commence servo2.write(120);//débranche le délai du chargeur (5000);//attend de s'assurer il y a du temps pour le retrait servo1.write(110);//met le téléphone en position verticale pour signaler //Serial.println("ici"); attachInterrupt(digitalPinToInterrupt(2), AH, FALLING);//rattache l'interruption } } if (q==1){//si la condition pour le branchement est ture alors commencez par attacher le délai du chargeur (10000); servo2.write(0);//déplace le servo en position q=0;//réinitialise la condition } }

vide AH(){

//Série.println("in"); servo1.write(180);// dépose la plate-forme téléphonique dans la position de charge q=1;// démarre la condition pour continuer le processus //a=1; detachInterrupt (digitalPinToInterrupt(2));//détache l'interruption, de sorte qu'il n'y aura aucun problème avec le démarrage de l'interruption alors qu'elle ne devrait pas }

Application Android

Ici, je n'afficherai que l'application appropriée mais le fichier de code de test sera également fourni, la seule différence sera la suppression de la classe exécutable et getBattery. Le code de série mentionné est celui qui est standard pour les téléphones se connectant à des appareils comme le module.

paquet com.example.daniel.make; importer android.bluetooth. BluetoothAdapter; importer android.bluetooth. BluetoothDevice; importer android.bluetooth. BluetoothSocket; importer android.os. Handler; importer android.support.v7.app. AppCompatActivity; importer android.os. Bundle; importer android.content. Intent; importer android.content. IntentFilter; importer android.os. BatteryManager; importer java.io. IOException; importer java.io. OutputStream; importer java.util. Set; importer java.util. UUID;

la classe publique MainActivity étend AppCompatActivity {

// création d'objets nécessaires Handler handler;//aide avec la boucle Runnable runnable;//s'exécute en continu BluetoothAdapter mBluetoothAdapter; BluetoothSocket mmSocket; Périphérique Bluetooth mmPériphérique; OutputStream mmOutputStream; volatil booléen stopWorker; privé OutputStream outputStream; chaîne finale privée DEVICE_NAME="HC-05"; UUID final privé PORT_UUID=UUID.fromString("00001101-0000-1000-8000-00805f9b34fb"); appareil BluetoothAdapter privé; prise BluetoothSocket privée; @Override protected void onCreate(Bundle saveInstanceState) {//est un ensemble d'instructions qui s'exécutent lorsque l'application est créée super.onCreate(savedInstanceState);//displya creation setContentView(R.layout.activity_main); runnable = new Runnable() { @Override public void run() {//s'exécute à plusieurs reprises int level = (int) getBattery();// obtient le niveau de batterie actuel si (level==100){//si le niveau de batterie atteint 100% try { getBT();//se connecte au module bluetooth openBT();//l'ouvre sendData();//envoie les données nécessaires closeBT();//ferme l'objet } catch (IOException ex) { } } handler.postDelayed(exécutable, 5000);//un délai } }; gestionnaire = nouveau Gestionnaire(); handler.postDelayed(exécutable, 0); }

flotteur public getBattery() {

Intent batteryIntent= registerReceiver(null, new IntentFilter(Intent. ACTION_BATTERY_CHANGED));// crée l'action qui se connecte à la batterie int level = batteryIntent.getIntExtra(BatteryManager. EXTRA_LEVEL, -1); // obtient le niveau supérieur int scale = batteryIntent.getIntExtra(BatteryManager. EXTRA_SCALE, -1); // obtient l'échelle de la batterie if (level == -1 || scale == -1) {//en cas de faux pas return 50.0f; } float batt = (level/(float)scale)*100.0f;// obtient la bonne balance de retour de batt; // renvoie le niveau }

void getBT(){// obtient les connexions Bluetooth possibles

mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();// obtient l'adaptateur if(!mBluetoothAdapter.isEnabled()) {// s'assure que le téléphone a la dent bleue sur l'intention enableBluetooth = new Intent(BluetoothAdapter. ACTION_REQUEST_ENABLE);//demande qu'il soit activé sinon startActivityForResult(enableBluetooth, 0); } Set pairedDevices = mBluetoothAdapter.getBondedDevices();// obtient la liste des Bluetooth liés if(pairedDevices.size() > 0) {//s'assure qu'il y a des périphériques pour (BluetoothDevice device: pairedDevices) {//boucles à travers le devices if(device.getName().equals("HC-05")) {//vérifie si c'est le bon mmDevice = device;//sauvegarde la cassure; } } } }

void openBT() lève IOException {

UUID uuid = UUID.fromString ("00001101-0000-1000-8000-00805f9b34fb"); //Standard //SerialPortService ID mmSocket = mmDevice.createRfcommSocketToServiceRecord(uuid);//se connecte à l'appareil avec l'ID approprié mmSocket.connect();//connecte mmOutputStream = mmSocket.getOutputStream();//démarre la possibilité d'envoyer données au module arduino }

void sendData() lève IOException {//class qui envoie le t à l'arduino

mmOutputStream.write('t'); }

void closeBT () lève IOException {// ferme toutes les connexions à l'arduino

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

Étape 6: Fichiers

Merci d'avoir lu, ci-joint les fichiers qui ont été utilisés dans ce projet

Conseillé: