Kazalo:

Samodejni polnilec telefona: 6 korakov (s slikami)
Samodejni polnilec telefona: 6 korakov (s slikami)

Video: Samodejni polnilec telefona: 6 korakov (s slikami)

Video: Samodejni polnilec telefona: 6 korakov (s slikami)
Video: Призрак (фильм) 2024, November
Anonim
Samodejni polnilec za telefon
Samodejni polnilec za telefon

"Ta navodila so nastala v skladu s projektnimi zahtevami Makecourseja na Univerzi v Južni Floridi (www.makecourse.com)"

Ideja tega projekta je bila ustvariti napravo, ki bi lahko polnila telefon, in jo nato odklopila, ko telefon doseže 100%. To bi ustavilo težave s prekomernim polnjenjem.

Korak: Plastične komponente

Plastične komponente
Plastične komponente
Plastične komponente
Plastične komponente
Plastične komponente
Plastične komponente
Plastične komponente
Plastične komponente

Uporabljene so bile nekatere komponente, ki so bile 3D natisnjene. Te komponente so obsegale podlago, držalo za polnilnik, komplet zobnikov in zobnikov (običajno orodje in linearni kos, ki spreminja vrtenje v linearno gibanje) ter podlago za vse, na kar lahko delujejo. Te komponente bodo razložene v naslednjih odstavkih. Po vrstnem redu

Držalo za polnilnik

Namen tega je, da držite polnilec telefona ali pa mu vsaj zagotovite boljšo in ravno podlago.

Baza

Podstavek ima obroče za držalo telefona, kot tudi sledi za komplet prestav.

Nosilec telefona

Očitno drži telefon

Roka za telefon

Premika in drži telefon

Komplet zobnikov in opornikov

Uporablja se za premikanje polnilnika telefona naprej in nazaj

2. korak: Razčlenite komponente, ki niso natisnjene s 3D

To so komponente, ki so bile bodisi kupljene za projekt ali so že v lasti. Za nekatere dele, ki sem jih povezal z njimi/podobnimi izdelki na amazonu, jih lahko kupite kjer koli.

Mikro servo:

Standardni servo 0-180:

Serijski modul HC-05 Bluetooth:

Telefon in polnilec za telefon

Arduino

Ogledna plošča

Škatla ali zaboj za podlago

Senzor na dotik:

3. korak: Elektronika

Elektronika
Elektronika

Vezje za ta projekt bo morda zahtevalo nekaj, predvsem zaradi modula HC-05. Mnogi moduli te vrste so za približno 3,3 V do 6 V, kar je v območju delovanja Arduina. Toda za serijsko komunikacijo pin Rx včasih deluje bolje s samo 3,3 V. Kot je prikazano na zgornjem diagramu, sta dva servomotorja priključena na pin Pin na Arduinu. To dodatno napetost lahko napaja karkoli, uporabil sem 9 -voltno baterijo. Senzor na dotik je bil priključen na 5V na Arduinu. To je bilo zato, ker so imele vse komponente težave pri odvajanju iste napetosti. Senzor na dotik je pritrjen na pin 2, tako da ga lahko uporabite kot prekinitev z zatičem. Nato je modul bluetooth priključen na zatiča Rx in Tx za serijsko komunikacijo. Med Rx zatičem na modulu in Tx na Arduinu je 2 kilo ohmski upor z 1 kilo ohmom, ki je povezan z maso. To pomaga uravnavati vhodno napetost.

4. korak: Montaža

Montaža
Montaža

Montaža je precej preprosta.

  1. z nekaj super lepila namestite svoje servomotorje v njihove položaje, enega za orodje ob izrezu na dnu in enega blizu mesta, kjer je osnova telefona.
  2. Senzor dotika pritrdite na držalo telefona, da bo lahko vedel, kdaj je telefon tam.
  3. Nato priključite orodje in roko na ustrezne servomotorje
  4. Pri polnjenju elektronike pazite, da žice ne vplivajo na druge komponente

5. korak: Koda

Predstavljeni bodo trije sklopi kode, ena koda za Arduino, ki je bila ustvarjena v Arduino IDE, in dve kodi, ki sta bili narejeni v Android Studiu. Aplikacije za Android so enake, le ena je celotna aplikacija, ki spremlja življenjsko dobo baterije, druga pa ne. Drugi je namenjen testiranju.

Koda Arduino

Glavna točka te kode je upravljanje senzorja na dotik in motorjev, sprejme ukaz iz telefona in nanj deluje.

#include // kliče servo knjižnico, da lahko nadzorujemo dva servomotorja Servo servo1; Servo servo2; // ustvari dva servo objekta za vsak servo motor int a = 0; // spremenljivka za sledenje za preskušanje int q = 0; // spremenljivka, ki omogoča zakasnitev, preden se postopek vtičnika prične char c; // spremenljivka, ki vsebuje serijsko sporočilo iz telefona void setup () {attachInterrupt (digitalPinToInterrupt (2), AH, FALLING); // pritrdi padajočo prekinitev, da natančno ve, kdaj senzor na dotik vidi, ko je telefon zunaj servo1.attach (10); servo2.attach (9); // inicializira dva servomotorja Serial.begin (9600); // začne serijsko komunikacijo s hitrostjo, ki je podobna hitrosti modula bluetooth servo2.write (20); // samodejno nastavi strežnike na servo1.write začetni položaj (180); }

void loop () {

if (Serial.available ()) {// to preveri, ali kaj prihaja iz telefona prek zaporednih zatičev Tx in Rx c = Serial.read (); // bere, kaj prihaja iz if (c == 't') {// če serijska naprava bere takrat, to pomeni, da je telefon popolnoma napolnjen, se začne postopek odklopa servo2.write (120); // odklopi zakasnitev polnilnika (5000); // počaka, da se prepriča čas je za odstranitev servo1.write (110); // premakne telefon v pokončen položaj, da signalizira //Serial.println(" tukaj "); attachInterrupt (digitalPinToInterrupt (2), AH, FALLING); // ponovno priklopi prekinitev}} if (q == 1) {// če je pogoj za vtičnik vklopljen, začnite s priklopom zakasnitve polnilnika (10000); servo2.write (0); // premakne servo v položaj q = 0; // ponastavi stanje}}

void AH () {

//Serial.println("in "); servo1.write (180); // spusti telefonsko platformo v polnilni položaj q = 1; // zažene pogoj za nadaljevanje postopka // a = 1; detachInterrupt (digitalPinToInterrupt (2)); // loči prekinitev, tako da ne bo težav z zagonom prekinitve, ko se ne bi smelo}

Aplikacija za Android

Tukaj bom prikazal samo ustrezno aplikacijo, podana pa bo tudi preskusna koda, edina razlika bo odstranitev razreda runnable in getBattery. Omenjena serijska koda je standardna za telefone, ki se povezujejo z napravami, kot je modul.

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

javni razred MainActivity razširja AppCompatActivity {

// ustvarjanje potrebnih predmetov Handler handler; // pomaga pri zanki Runnable runnable; // neprekinjeno deluje BluetoothAdapter mBluetoothAdapter; Vtičnica Bluetooth mm vtičnica; Naprava Bluetooth mm Naprava; OutputStream mmOutputStream; hlapne logične stopWorker; zasebni OutputStream outputStream; zasebni zaključni niz DEVICE_NAME = "HC-05"; zasebni končni UUID PORT_UUID = UUID.fromString ("00001101-0000-1000-8000-00805f9b34fb"); zasebna naprava BluetoothAdapter; zasebna vtičnica BluetoothSocket; @Override protected void onCreate (Bundle savedInstanceState) {// je niz navodil, ki se izvajajo, ko je aplikacija ustvarjena super.onCreate (savedInstanceState); // displya ustvarjanje setContentView (R.layout.activity_main); runnable = new Runnable () {@Override public void run () {// teče večkrat int level = (int) getBattery (); // dobi trenutno raven napolnjenosti baterije, če (level == 100) {// če je napolnjenost baterije doseže 100% try {getBT (); // se poveže z modulom bluetooth openBT (); // odpre sendData (); // pošlje potrebne podatke closeBT (); // zapre objekt} catch (IOException ex) { }} handler.postDelayed (runnable, 5000); // zakasnitev}}; handler = nov Handler (); handler.postDelayed (teče, 0); }

public float getBattery () {

Intent batteryIntent = registerReceiver (null, new IntentFilter (Intent. ACTION_BATTERY_CHANGED)); // ustvari dejanje, ki se poveže z nivojem baterije int = batteryIntent.getIntExtra (BatteryManager. EXTRA_LEVEL, -1); // dobi stopnjo boljše vrednosti int scale = batteryIntent.getIntExtra (BatteryManager. EXTRA_SCALE, -1); // dobi lestvico baterije, če (raven == -1 || lestvica == -1) {// v primeru napačnega vračila 50,0f; } float batt = (level/(float) scale)*100.0f; // dobi ustrezno lestvico return batt; // vrne raven}

void getBT () {// pridobi možne povezave bluetooth

mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter (); // dobi adapter, če (! mBluetoothAdapter.isEnabled ()) {// poskrbi, da ima telefon modri zob pri namenu enableBluetooth = nov namen (BluetoothAdapter. ACTION_REQUEST_ENABLE); // zahteva, da je vklopljeno, če ni startActivityForResult (enableBluetooth, 0); } Set pairedDevices = mBluetoothAdapter.getBondedDevices (); // dobi seznam povezanega bluetootha, če (pairedDevices.size ()> 0) {// poskrbi, da obstaja nekaj naprav za (naprava BluetoothDevice: pairedDevices) {// se vrti skozi naprave if (device.getName (). equals ("HC-05")) {// preveri, če je ustrezna mmDevice = device; // shrani prekinitev; }}}}

void openBT () vrže IOException {

UUID uuid = UUID.fromString ("00001101-0000-1000-8000-00805f9b34fb"); // Standardno // SerialPortService ID mmSocket = mmDevice.createRfcommSocketToServiceRecord (uuid); // se poveže z napravo z ustreznim id mmSocket.connect (); // poveže mmOutputStream = mmSocket.getOutputStream (); // zažene možnost pošiljanja podatki v modul arduino}

void sendData () vrže razred IOException {//, ki pošlje t v arduino

mmOutputStream.write ('t'); }

void closeBT () vrže IOException {// zapre vse povezave z arduinom

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

6. korak: Datoteke

Hvala za branje, v prilogi so datoteke, ki so bile uporabljene v tem projektu

Priporočena: