Talaan ng mga Nilalaman:

Isang Awtomatikong Charger ng Telepono: 6 Mga Hakbang (na may Mga Larawan)
Isang Awtomatikong Charger ng Telepono: 6 Mga Hakbang (na may Mga Larawan)

Video: Isang Awtomatikong Charger ng Telepono: 6 Mga Hakbang (na may Mga Larawan)

Video: Isang Awtomatikong Charger ng Telepono: 6 Mga Hakbang (na may Mga Larawan)
Video: Моя работа наблюдать за лесом и здесь происходит что-то странное 2024, Nobyembre
Anonim
Isang Awtomatikong Charger ng Telepono
Isang Awtomatikong Charger ng Telepono

"Ang itinuturo na ito ay nilikha bilang pagtupad sa kinakailangan ng proyekto ng Makecourse sa University of South Florida (www.makecourse.com)"

Ang ideya sa likod ng proyektong ito ay upang lumikha ng isang aparato na maaaring singilin ang isang telepono, at pagkatapos ay i-unplug ito kapag umabot ang telepono sa 100%. Ititigil nito ang mga isyu ng labis na pagsingil.

Hakbang 1: Mga Bahaging Plastik

Mga Sangkap ng Plastik
Mga Sangkap ng Plastik
Mga Sangkap ng Plastik
Mga Sangkap ng Plastik
Mga Sangkap ng Plastik
Mga Sangkap ng Plastik
Mga Sangkap ng Plastik
Mga Sangkap ng Plastik

Mayroong ilang mga sangkap na ginamit na naka-print na 3D. Ang mga sangkap na ito ay binubuo ng isang base, isang may-ari para sa charger, isang set ng rack at pinion gear (isang normal na gear at isang linear na piraso na binabago ang pag-ikot sa linear na paggalaw), at isang base para sa lahat upang gumana. Ang mga sangkap na ito ay ipapaliwanag sa mga sumusunod na talata. Sa pagkakasunud-sunod ng paglitaw

May hawak ng Charger

Ang layunin ng mga ito ay upang i-hold ang charger ng telepono, o hindi bababa sa bigyan ito ng isang mas mahusay at antas ng batayan upang maging sa.

Base

Ang base ay may singsing para sa may-ari ng telepono pati na rin isang track para sa gear set.

May-ari ng Telepono

Humahawak sa telepono, malinaw naman

Telepono Arm

Gagalaw at hawak ang telepono

Rack at Pinion Gear Set

Ginamit upang ilipat ang charger ng telepono pabalik-balik

Hakbang 2: Masira ang Hindi Mga Naka-print na Component ng Hindi 3D

Ito ang mga sangkap na binili para sa proyekto o pag-aari na. Para sa ilan sa mga bahagi na na-link ko sa kanila / mga katulad na item sa amazon, ngunit huwag mag-atubiling makuha ang mga ito kahit saan.

Micro Servo:

Karaniwan 0-180 Servo:

HC-05 Bluetooth Serial Module: https://www.amazon.com/HC-05-Blu Bluetooth-Pass-throug…

Charger ng Telepono at Telepono

Arduino

Breadboard

Kahon o basurahan para sa base

Touch Sensor:

Hakbang 3: Elektronika

Elektronika
Elektronika

Ang circuit para sa proyektong ito ay maaaring mangailangan ng ilang mga, bagaman higit sa lahat dahil sa module na HC-05. Marami sa mga modyul ng ganitong uri ang rate para sa halos 3.3V hanggang 6V, na kasama sa saklaw ng operating ng Arduino. Ngunit, para sa serial na komunikasyon ang Rx pin minsan ay gumagana nang mas mahusay na may 3.3V lamang. Tulad ng nakikita sa diagram sa itaas ang dalawang servo ay naka-hook hanggang sa Vin pin sa Arduino. Ang sobrang boltahe na ito ay maaaring ibigay ng anumang, gumamit ako ng isang 9 volt na baterya. Ang touch sensor ay naka-plug sa 5V sa Arduino. Ito ay dahil ang lahat ng mga bahagi ay may problema sa pagtakbo ng parehong boltahe. Ang touch sensor ay naka-attach sa pin 2 upang maaari itong magamit bilang isang pin interrupt. Pagkatapos ang module ng Bluetooth ay konektado sa mga pin ng Rx at Tx para sa serial na komunikasyon. Sa pagitan ng Rx pin sa module at Tx sa Arduino ay isang 2 kilo ohm risistor na may isang 1 kilo ohm na kumokonekta sa lupa. Nakakatulong ito upang makontrol ang boltahe na papasok.

Hakbang 4: Assembly

Assembly
Assembly

Ang pagpupulong ay medyo simple.

  1. na may ilang sobrang pandikit na i-mount ang iyong mga servo sa kanilang mga posisyon, isa para sa gamit sa pamamagitan ng ginupit sa base at isa malapit sa kung nasaan ang base ng telepono.
  2. Ikabit ang touch sensor sa may-ari ng telepono, upang malaman nito kung nandoon ang telepono.
  3. Pagkatapos ay ikabit ang gear at braso sa kani-kanilang mga servo
  4. Tiyaking hindi makagambala ang mga wire sa iba pang mga bahagi habang pinupunan mo ang iyong electronics

Hakbang 5: Code

Mayroong tatlong hanay ng code na ipapakita, isang code para sa Arduino, na nilikha sa Arduino IDE at dalawang code na ginawa sa Android Studio. Ang mga Android app ay pareho maliban sa isa ay ang buong app na sumusubaybay sa buhay ng baterya at ang isa ay hindi. Ang pangalawa ay para sa mga layuning pagsubok.

Code ng Arduino

Ang pangunahing punto ng code na ito ay upang mapatakbo ang touch sensor at mga motor, nakatanggap ito ng isang utos mula sa telepono at kumikilos dito.

#include // tawag sa servo library upang makontrol natin ang dalawang servosServo servo1; Ang Servo servo2; // ay lumilikha ng dalawang mga object ng servo para sa bawat servo motor int a = 0; // variable ng pagsubaybay para sa pagsubok sa int q = 0; // isang variable na nagpapahintulot na magkaroon ng pagkaantala bago magsimula ang proseso ng pluggin char c; // variable na naglalaman ng serial message mula sa phone void setup () {attachInterrupt (digitalPinToInterrupt (2), AH, FALLING); // ay nakakabit ng isang bumabagsak na abala upang malaman nang eksakto kung kailan nakikita ng touch sensor kapag ang telepono ay nasa servo1.attach (10); servo2.attach (9); // pinasimulan ang dalawang servos Serial.begin (9600); // sinisimulan ang serial na komunikasyon sa isang rate na katulad sa module ng Bluetooth na servo2.write (20); // auto set the servos to isang panimulang posisyon servo1.write (180); }

void loop () {

kung (Serial.available ()) {// sinusuri nito kung mayroong anumang papasok mula sa telepono sa mga serial pin na Tx at Rx c = Serial.read (); // binabasa kung ano ang papasok mula sa kung (c == 't') {// kung ang serial device ay nagbabasa noon nangangahulugan ito na ang telepono ay buong nasingil, ang proseso ng pag-unplug ay nagsisimula sa servo2.write (120); // inaalis ang pagkaantala ng charger (5000); // naghihintay upang matiyak may oras para sa pag-aalis ng servo1.write (110); // ilipat ang telepono sa isang tuwid na posisyon upang senyasan //Serial.println("here "); attachInterrupt (digitalPinToInterrupt (2), AH, FALLING); // muling nakakabit ng makagambala}} kung (q == 1) {// kung ang kondisyon para sa pluggin sa ay ture pagkatapos magsimula sa paglakip ng pagkaantala ng charger (10000); servo2.write (0); // inililipat ang servo sa posisyon q = 0; // resets condition}}

walang bisa ang AH () {

//Serial.println("in "); Ang servo1.write (180); // ay nahuhulog ang platform ng telepono sa posisyon ng pagsingil q = 1; // sinisimulan ang condtition upang ipagpatuloy ang proseso // a = 1; detachInterrupt (digitalPinToInterrupt (2)); // detached the interrupt, upang magkaroon ng anumang mga isyu sa paggambala na nagsisimula kung kailan hindi dapat}

Android App

Dito ipapakita ko lamang ang tamang app ngunit ibibigay din ang file ng test code, ang pagkakaiba lamang ay ang pag-aalis ng runnable at getBattery class. Ang serial code na nabanggit ay ang isa na pamantayan para sa mga teleponong kumokonekta sa mga aparato tulad ng module.

package com.example.daniel.make; i-import ang android.blu Bluetooth. Blu BluetoothAdapter; i-import ang android.blu Bluetooth. Blu BluetoothDevice; i-import ang android.blu Bluetooth. Blu BluetoothSocket; i-import ang android.os. Handler; i-import ang android.support.v7.app. AppCompatActivity; i-import ang android.os. Bundle; i-import ang android.content. Intent; i-import ang android.content. IntentFilter; i-import ang android.os. BatteryManager; i-import ang java.io. IOException; i-import ang java.io. OutputStream; import java.util. Set; import java.util. UUID;

pampublikong klase ang MainActivity ay nagpapahaba sa AppCompatActivity {

// paglikha ng mga kinakailangang bagay Handler handler; // tumutulong sa loop na Runnable runnable; // patuloy na tumatakbo BluetoothAdapter mBlusungAdapter; BluetoothSocket mmSocket; BluetoothDevice mmDevice; OutputStream mmOutputStream; pabagu-bago ng loob boolean stopWorker; pribadong OutputStream outputStream; pribadong panghuling String DEVICE_NAME = "HC-05"; pribadong panghuling UUID PORT_UUID = UUID.fromString ("00001101-0000-1000-8000-00805f9b34fb"); pribadong aparato ng BluetoothAdapter; pribadong socket ng BluetoothSocket; Ang @Override protektado na walang bisa saCreate (Bundle saveInstanceState) {// ay isang hanay ng mga tagubilin na tumatakbo kapag ang app ay nilikha super.onCreate (saveInstanceState); // displya set setContentView (R.layout.activity_main); runnable = bagong Runnable () {@Override public void run () {// nagpapatakbo ng paulit-ulit na int level = (int) getBattery (); // nakakakuha ng kasalukuyang antas ng baterya kung (level == 100) {// kung ang antas ng baterya umabot sa 100% subukan ang {getBT (); // kumokonekta sa module ng blueber openBT (); // bubukas ito sendData (); // nagpapadala ng kinakailangang data closeBT (); // isinasara ang object} catch (IOException ex) { }} handler.postDelay (runnable, 5000); // isang pagkaantala}}; handler = bagong Handler (); handler.postDelay (runnable, 0); }

pampublikong float getBattery () {

Intent bateryaIntent = registerReceiver (null, bagong IntentFilter (Intent. ACTION_BATTERY_CHANGED)); // lumilikha ng pagkilos na kumokonekta sa antas ng int baterya = bateryaIntent.getIntExtra (BatteryManager. EXTRA_LEVEL, -1); // nakakakuha ng mas mahusay na antas ng int scale = bateryaIntent.getIntExtra (BatteryManager. EXTRA_SCALE, -1); // Nakukuha ang sukat ng baterya kung (antas == -1 || scale == -1) {// sa kaso ng maling maling pagbalik 50.0f; } float batt = (level / (float) scale) * 100.0f; // nakakakuha ng tamang scale batt return; // ibabalik ang antas}

void getBT () {// nakakakuha ng mga posibleng koneksyon sa bluetooth

mBlu BluetoothAdapter = BluetoothAdapter.getDefaultAdapter (); // nakakakuha ng adapter kung (! mBlu BluetoothAdapter.isEn pinagana ()) {// tinitiyak na ang telepono ay may asul na ngipin sa Intent paganahinBlu Bluetooth = bagong Intent (BluetoothAdapter. ACTION_REQUEST_ENABLE); // hiniling na maging naka-on kung hindi simulanActivityForResult (paganahin ang Bluetooth, 0); } Itakda ang pairedDevices = mBlu BluetoothAdapter.getBondedDevices (); // Nakukuha ang listahan ng bonded bluetooth kung (pairedDevices.size ()> 0) {// tinitiyak na mayroong ilang mga aparato para sa (BluetoothDevice device: pairedDevices) {// loop sa pamamagitan ng mga aparato kung (aparato.getName (). katumbas ("HC-05")) {// suriin kung ito ang tamang mmDevice = aparato; // nai-save ito masira; }}}}

walang bisa OpenBT () throws IOException {

UUID uuid = UUID.fromString ("00001101-0000-1000-8000-00805f9b34fb"); // Standard // SerialPortService ID mmSocket = mmDevice.createRfcommSocketToServiceRecord (uuid); // kumokonekta sa aparato gamit ang tamang id mmSocket.connect (); // nag-uugnay sa mmOutputStream = mmSocket.getOutputStream (); // nagsisimula ang kakayahang magpadala data sa module ng arduino}

walang bisa ang sendData () nagtatapon ng IOException {// klase na nagpapadala ng t sa arduino

mmOutputStream.write ('t'); }

walang bisa closeBT () throws IOException {// isinasara ang lahat ng mga koneksyon sa arduino

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

Hakbang 6: Mga File

Salamat sa pagbabasa, kalakip ang mga file na ginamit sa proyektong ito

Inirerekumendang: