Cuprins:

Un încărcător automat de telefon: 6 pași (cu imagini)
Un încărcător automat de telefon: 6 pași (cu imagini)

Video: Un încărcător automat de telefon: 6 pași (cu imagini)

Video: Un încărcător automat de telefon: 6 pași (cu imagini)
Video: Știai smecheria asta? 🤔 #iphonetricks #sfaturi 2024, Iulie
Anonim
Un încărcător automat de telefon
Un încărcător automat de telefon

„Acest instructable a fost creat pentru a îndeplini cerințele proiectului Makecourse de la Universitatea din Florida de Sud (www.makecourse.com)”

Ideea din spatele acestui proiect a fost să creăm un dispozitiv care să poată încărca un telefon, apoi să îl deconectăm când telefonul ajunge la 100%. Acest lucru ar opri problemele de supraîncărcare.

Pasul 1: Componente din plastic

Componente din plastic
Componente din plastic
Componente din plastic
Componente din plastic
Componente din plastic
Componente din plastic
Componente din plastic
Componente din plastic

Au fost utilizate câteva componente care au fost tipărite 3D. Aceste componente cuprindeau o bază, un suport pentru încărcător, un set de roți dințate cu pinion (un angrenaj normal și o piesă liniară care schimbă rotația în mișcare liniară) și o bază pentru ca totul să funcționeze. Aceste componente vor fi explicate în următoarele paragrafe. În ordinea apariției

Suport încărcător

Scopul acestui lucru este să țineți încărcătorul telefonului sau, cel puțin, să-i oferiți o bază mai bună și mai bună.

Baza

Baza are inele pentru suportul telefonului, precum și o pistă pentru setul de viteze.

Suport telefon

Ține telefonul, evident

Telefon Arm

Mută și ține telefonul

Set de angrenaje cu cremalieră și pinion

Folosit pentru a muta încărcătorul de telefon înainte și înapoi

Pasul 2: Descompuneți componentele care nu sunt tipărite 3D

Acestea sunt componentele care au fost fie achiziționate pentru proiect, fie deja deținute. Pentru unele dintre părțile pe care le-am legat / articole similare de pe Amazon, dar nu ezitați să le achiziționați oriunde.

Micro Servo:

Servo 0-180 standard:

Modulul serial Bluetooth HC-05:

Telefon și încărcător de telefon

Arduino

Pană de pâine

Cutie sau coș pentru bază

Senzor tactil:

Pasul 3: Electronică

Electronică
Electronică

Circuitul pentru acest proiect poate necesita unele, însă, în principal din cauza modulului HC-05. Multe dintre modulele de acest tip au o rată de aproximativ 3,3V până la 6V, care se află în domeniul de operare al Arduino. Dar, pentru comunicații seriale, pinul Rx uneori funcționează mai bine cu doar 3,3V. După cum se vede în diagrama de mai sus, cele două servouri sunt conectate la pinul Vin de pe Arduino. Această tensiune suplimentară poate fi furnizată de orice, am folosit o baterie de 9 volți. Senzorul tactil a fost conectat la 5V de pe Arduino. Acest lucru se datorează faptului că toate componentele au avut probleme cu funcționarea cu aceeași tensiune. Senzorul tactil este atașat pinului 2, astfel încât poate fi folosit ca întrerupere a pinului. Apoi modulul bluetooth este conectat la pinii Rx și Tx pentru comunicații seriale. Între pinul Rx de pe modul și Tx pe Arduino se află un rezistor de 2 kilo ohmi cu un kilo ohm conectat la masă. Acest lucru ajută la reglarea tensiunii care intră.

Pasul 4: Asamblare

Asamblare
Asamblare

Asamblarea este destul de simplă.

  1. cu niște super-lipici montați-vă servo-urile în pozițiile lor, unul pentru echipamentul de decupaj de pe bază și unul lângă locul unde se află baza telefonului.
  2. Atașați senzorul tactil la suportul telefonului, astfel încât să poată ști când telefonul este acolo.
  3. Apoi atașați angrenajul și brațul la servomotorele respective
  4. Asigurați-vă că firele nu interferează cu alte componente în timp ce vă umpleți componentele electronice

Pasul 5: Cod

Există trei seturi de coduri care vor fi prezentate, un cod pentru Arduino, care a fost creat în Arduino IDE și două coduri care au fost făcute în Android Studio. Aplicațiile Android sunt aceleași, cu excepția uneia care este aplicația completă care urmărește durata de viață a bateriei și una nu. Al doilea este pentru testare.

Cod Arduino

Principalul punct al acestui cod este să acționeze senzorul tactil și motoarele, acesta primește o comandă de la telefon și acționează asupra acestuia.

#include // apelează biblioteca servo, astfel încât să putem controla cele două servere Servo servo1; Servo servo2; // creează două obiecte servo pentru fiecare servomotor int a = 0; // variabilă de urmărire pentru testarea int q = 0; // o variabilă care permite să existe o întârziere înainte ca procesul de conectare să înceapă char c; // variabilă care conține mesajul serial de la configurarea nulă a telefonului () {attachInterrupt (digitalPinToInterrupt (2), AH, FALLING); // atașează o întrerupere în cădere pentru a ști exact când senzorul tactil vede când telefonul este în funcție de servo1.attach (10); servo2.attach (9); // inițializează cele două servere Serial.begin (9600); // începe comunicarea serială la o rată similară cu cea a modulului bluetooth servo2.write (20); // setează automat servourile la o poziție de pornire servo1.write (180); }

bucla nulă () {

if (Serial.available ()) {// acest lucru verifică dacă există ceva care vine de la telefon prin pinii seriali Tx și Rx c = Serial.read (); // citește ce vine de la if (c == „t”) {// dacă dispozitivul serial citește atunci înseamnă că telefonul este complet încărcat, procesul de deconectare începe servo2.write (120); // deconectează întârzierea încărcătorului (5000); // așteaptă pentru a vă asigura că există timp pentru eliminarea servo1.write (110); // mută telefonul în poziție verticală pentru a semnaliza //Serial.println("here "); attachInterrupt (digitalPinToInterrupt (2), AH, FALLING); // reatașează întreruperea}} if (q == 1) {// dacă condiția pentru conectare este valabilă, începe cu atașarea întârzierii încărcătorului (10000); servo2.write (0); // mută servo în poziția q = 0; // resetează starea}}

nul AH () {

//Serial.println("in "); servo1.write (180); // lasă platforma telefonului în poziția de încărcare q = 1; // pornește condiția pentru a continua procesul // a = 1; detachInterrupt (digitalPinToInterrupt (2)); // detache întreruperea, astfel încât să nu existe probleme cu întreruperea care începe când nu ar trebui}

Aplicația Android

Aici voi afișa doar aplicația corectă, dar va fi dat și fișierul codului de test, singura diferență va fi eliminarea clasei runnable și getBattery. Codul serial menționat este cel care este standard pentru telefoanele care se conectează la dispozitive precum modulul.

pachet 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 extinde AppCompatActivity {

// crearea obiectelor necesare Handler handler; // ajută la bucla Runnable runnable; // rulează continuu BluetoothAdapter mBluetoothAdapter; BluetoothSocket mmSocket; BluetoothDevice mmDevice; OutputStream mmOutputStream; opritor boolean volatil; private OutputStream outputStream; șir final privat DEVICE_NAME = "HC-05"; UUID final final PORT_UUID = UUID.fromString ("00001101-0000-1000-8000-00805f9b34fb"); dispozitiv BluetoothAdapter privat; soclu BluetoothSocket privat; @Override protected void onCreate (Bundle savedInstanceState) {// este un set de instrucțiuni care rulează atunci când aplicația este creată super.onCreate (savedInstanceState); // displya creation setContentView (R.layout.activity_main); runnable = new Runnable () {@Override public void run () {// rulează în mod repetat int level = (int) getBattery (); // obține nivelul curent al bateriei dacă (level == 100) {// dacă nivelul bateriei ajunge la 100% încercați {getBT (); // se conectează la modulul Bluetooth openBT (); // îl deschide sendData (); // trimite datele necesare closeBT (); // închide obiectul} catch (IOException ex) { }} handler.postDelayed (runnable, 5000); // o întârziere}}; handler = nou Handler (); handler.postDelayed (runnable, 0); }

float public getBattery () {

Intent batteryIntent = registerReceiver (nul, nou IntentFilter (Intent. ACTION_BATTERY_CHANGED)); // creează acțiunea care se conectează la baterie int level = batteryIntent.getIntExtra (BatteryManager. EXTRA_LEVEL, -1); // obține nivelul mai bun int scale = batteryIntent.getIntExtra (BatteryManager. EXTRA_SCALE, -1); // primește scara bateriei dacă (nivel == -1 || scară == -1) {// în caz de pas greșit returnează 50.0f; } float batt = (level / (float) scale) * 100.0f; // primește scala de returnare corespunzătoare; // returnează nivelul}

void getBT () {// obține posibilele conexiuni bluetooth

mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter (); // primește adaptorul dacă (! mBluetoothAdapter.isEnabled ()) {// se asigură că telefonul are un dinte albastru pe Intent enable Bluetooth = new Intent (BluetoothAdapter. ACTION_REQUEST_ENABLE); // solicită să fie activat dacă nu startActivityForResult (enableBluetooth, 0); } Set pairedDevices = mBluetoothAdapter.getBondedDevices (); // primește lista de bluetooth legat dacă (pairedDevices.size ()> 0) {// se asigură că există unele dispozitive pentru (BluetoothDevice device: pairedDevices) {// parcurge prin dispozitive if (device.getName (). equals ("HC-05")) {// verifică dacă este corect mmDevice = dispozitiv; // îl salvează întrerupt; }}}}

void openBT () aruncă IOException {

UUID uuid = UUID.fromString ("00001101-0000-1000-8000-00805f9b34fb"); // Standard // SerialPortService ID mmSocket = mmDevice.createRfcommSocketToServiceRecord (uuid); // se conectează la dispozitiv cu ID-ul corespunzător mmSocket.connect (); // conectează mmOutputStream = mmSocket.getOutputStream (); // pornește capacitatea de a trimite date către modulul arduino}

void sendData () aruncă IOException {// clasă care trimite t la arduino

mmOutputStream.write ('t'); }

void closeBT () aruncă IOException {// închide toate conexiunile la arduino

stopWorker = adevărat; mmOutputStream.close (); mmSocket.close (); }}

Pasul 6: Fișiere

Vă mulțumim pentru lectură, atașate sunt fișierele care au fost utilizate în acest proiect

Recomandat: