Cuprins:
- Pasul 1: Componente din plastic
- Pasul 2: Descompuneți componentele care nu sunt tipărite 3D
- Pasul 3: Electronică
- Pasul 4: Asamblare
- Pasul 5: Cod
- Pasul 6: Fișiere
Video: Un încărcător automat de telefon: 6 pași (cu imagini)
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:46
„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
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ă
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
Asamblarea este destul de simplă.
- 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.
- Atașați senzorul tactil la suportul telefonului, astfel încât să poată ști când telefonul este acolo.
- Apoi atașați angrenajul și brațul la servomotorele respective
- 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:
Căi ferate model automat automat punct la punct: 10 pași (cu imagini)
Modele de cale ferată automate simple punct la punct: microcontrolerele Arduino sunt excelente pentru automatizarea modelelor de cale ferată. Automatizarea planurilor este utilă în multe scopuri, cum ar fi plasarea aspectului dvs. pe un afișaj în care operația de planificare poate fi programată pentru a circula trenurile într-o succesiune automată. Eu
Structură feroviară de model automat automat - Arduino controlat: 11 pași (cu imagini)
Structură feroviară automată simplă | Arduino controlat: microcontrolerele Arduino sunt o completare excelentă pentru modelul de cale ferată, mai ales atunci când se ocupă de automatizare. Iată o modalitate simplă și ușoară de a începe cu automatizarea modelului feroviar cu Arduino. Deci, fără alte îndemnuri, să începem
Cum se face un încărcător automat de baterii de 12V: 16 pași (cu imagini)
Cum se face un încărcător automat de baterii de 12V: Hei! toată lumea Numele meu este Steve.Astăzi am să vă arăt Cum să faceți un încărcător de baterii de 12v Faceți clic aici pentru a vedea videoclipul Să începem
Încărcător USB ușor de 5 minute / încărcător USB de supraviețuire: 6 pași (cu imagini)
Încărcător USB ușor de 5 minute / încărcător USB de supraviețuire: Bună ziua, băieți! Astăzi tocmai am făcut (probabil) cel mai ușor încărcător de panouri solare usb! În primul rând, îmi pare rău că nu am încărcat niște documente instructive pentru voi. Am primit câteva examene în ultimele luni (nu de fapt, poate, o săptămână sau cam așa ceva). Dar
Cum se face un încărcător automat de baterii de 12V: 6 pași (cu imagini)
Cum se face un încărcător automat de baterii de 12v: Bună ziua tuturor celor din acest instructable vă voi arăta cum să faceți un încărcător automat de baterii