Sadržaj:

Automatski punjač telefona: 6 koraka (sa slikama)
Automatski punjač telefona: 6 koraka (sa slikama)

Video: Automatski punjač telefona: 6 koraka (sa slikama)

Video: Automatski punjač telefona: 6 koraka (sa slikama)
Video: ЮЛЯ ФИНЕСС: Как я вышла с 8 этажа! Групповое изнасилование под мефедроном, психиатрическая больница 2024, Studeni
Anonim
Automatski punjač za telefon
Automatski punjač za telefon

"Ova instrukcija nastala je u skladu sa zahtjevima projekta Makecoursea na Sveučilištu Južne Floride (www.makecourse.com)"

Ideja iza ovog projekta bila je stvoriti uređaj koji bi mogao puniti telefon, a zatim ga isključiti iz utičnice kada telefon dosegne 100%. Time bi se zaustavili problemi prekomjernog punjenja.

Korak 1: 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

Korištene su neke komponente koje su 3D tiskane. Ove komponente sastojale su se od osnove, držača za punjač, zupčastog zupčanika (normalnog zupčanika i linearnog komada koji mijenja rotaciju u linearno kretanje) i podloge za sve na čemu treba raditi. Ove će komponente biti objašnjene u sljedećim odlomcima. Redom pojavljivanja

Nosač punjača

Svrha ovoga je držati punjač za telefon ili mu barem dati bolju i ravnu podlogu.

Baza

Baza ima prstenje za držač telefona, kao i traku za komplet opreme.

Držač telefona

Očigledno drži telefon

Ruka za telefon

Pomiče i drži telefon

Set zupčanika i zupčanika

Koristi se za pomicanje punjača telefona naprijed -natrag

Korak 2: Razbijte komponente koje nisu 3D ispisane

To su komponente koje su ili kupljene za projekt ili su već u vlasništvu. Za neke dijelove koje sam povezao s njima/slične stavke na Amazonu, ali slobodno ih nabavite bilo gdje.

Mikro servo:

Standardni servo 0-180:

HC-05 Bluetooth serijski modul:

Punjač telefona i telefona

Arduino

Oglasna ploča

Kutija ili kanta za podnožje

Senzor dodira:

Korak 3: Elektronika

Elektronika
Elektronika

Krug za ovaj projekt možda će ipak zahtijevati neke, uglavnom zbog HC-05 modula. Mnogi moduli ovog tipa imaju brzinu otprilike 3,3 V do 6 V, što je u radnom rasponu Arduina. No, za serijsku komunikaciju Rx pin ponekad radi bolje sa samo 3.3V. Kao što se vidi na gornjem dijagramu, dva servo pogona su spojena na Vin pin na Arduinu. Ovaj dodatni napon može se napajati bilo čime, koristio sam bateriju od 9 volti. Senzor dodira je priključen na 5V na Arduinu. To je bilo zato što su sve komponente imale problema s istjecanjem istog napona. Senzor dodira pričvršćen je na pin 2 pa se može koristiti kao prekid pina. Zatim je bluetooth modul spojen na Rx i Tx pinove za serijsku komunikaciju. Između Rx pina na modulu i Tx na Arduinu nalazi se otpornik od 2 kilo ohma s kilogramom spojenim na masu. To pomaže u regulaciji ulaznog napona.

Korak 4: Montaža

Skupština
Skupština

Montaža je prilično jednostavna.

  1. s nekim super ljepilom montirajte svoje servosisteme na njihove položaje, jedan za zupčanik uz izrez na podnožju i jedan blizu mjesta gdje se nalazi baza telefona.
  2. Pričvrstite senzor dodira na držač telefona kako bi mogao znati kada se telefon nalazi.
  3. Zatim spojite zupčanik i ruku na odgovarajuće servo sisteme
  4. Pazite da žice ne ometaju druge komponente dok punite elektroniku

Korak 5: Kodirajte

Bit će predstavljena tri seta koda, jedan kod za Arduino, koji je kreiran u Arduino IDE -u i dva koda koja su napravljena u Android Studiju. Android aplikacije su iste, osim što je jedna potpuna aplikacija koja prati trajanje baterije, a jedna ne. Drugi je u svrhu testiranja.

Arduino kod

Glavna točka ovog koda je rukovanje senzorom dodira i motorima, on prima naredbu s telefona i djeluje na njega.

#include // poziva servo knjižnicu kako bismo mogli kontrolirati dva servaServo servo1; Servo servo2; // stvara dva servo objekta za svaki servo motor int a = 0; // varijabla praćenja za testiranje int q = 0; // varijabla koja dopušta da dođe do kašnjenja prije početka procesa priključivanja char c; // varijabla koja sadrži serijsku poruku iz telefona void setup () {attachInterrupt (digitalPinToInterrupt (2), AH, FALLING); // pridružuje padajući prekid kako bi točno znao kada senzor dodira vidi kada je telefon na servo1.attach (10); servo2.attach (9); // inicijalizira dva serva Serial.begin (9600); // započinje serijsku komunikaciju brzinom sličnom onoj kod modula bluetooth servo2.write (20); // auto postavlja servo na servo1.popis početnog položaja (180); }

void loop () {{100} {101}

if (Serial.available ()) {// ovo provjerava dolazi li nešto s telefona preko serijskih pinova Tx i Rx c = Serial.read (); // čita ono što dolazi if (c == 't') {// ako serijski uređaj čita tada, to znači da je telefon potpuno napunjen, započinje postupak isključivanja servo2.write (120); // isključuje kašnjenje punjača (5000); // čeka da se uvjeri ima vremena za uklanjanje servo1.write (110); // premješta telefon u uspravan položaj da signalizira //Serial.println("here "); attachInterrupt (digitalPinToInterrupt (2), AH, FALLING); // ponovno postavlja prekid}} if (q == 1) {// ako je uvjet za dodatak uključen, tada započnite s kašnjenjem punjača (10000); servo2.write (0); // pomiče servo u položaj q = 0; // resetira stanje}}

void AH () {

//Serial.println("in "); servo1.write (180); // postavlja telefonsku platformu u položaj za punjenje q = 1; // pokreće uvjet za nastavak procesa // a = 1; detachInterrupt (digitalPinToInterrupt (2)); // odvaja prekid, tako da neće biti problema s pokretanjem prekida kad ne bi trebao}

Android aplikacija

Ovdje ću prikazati samo odgovarajuću aplikaciju, ali bit će navedena i datoteka testnog koda, jedina razlika bit će uklanjanje klase runnable i getBattery. Spomenuti serijski kod standardni je za telefone koji se povezuju s uređajima poput modula.

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; import java.io. IOException; import java.io. OutputStream; uvoz java.util. Set; uvoz java.util. UUID;

javna klasa MainActivity proširuje AppCompatActivity {

// stvaranje potrebnih objekata Handler handler; // pomaže u petlji Runnable runnable; // neprekidno radi BluetoothAdapter mBluetoothAdapter; BluetoothSocket mmSocket; Bluetooth uređaj mmDevice; OutputStream mmOutputStream; volatile boolean stopWorker; privatni OutputStream outputStream; privatni završni niz DEVICE_NAME = "HC-05"; privatni završni UUID PORT_UUID = UUID.fromString ("00001101-0000-1000-8000-00805f9b34fb"); privatni BluetoothAdapter uređaj; privatna utičnica BluetoothSocket; @Override protected void onCreate (Bundle savedInstanceState) {// je skup uputa koje se pokreću pri stvaranju aplikacije super.onCreate (savedInstanceState); // displya stvaranje setContentView (R.layout.activity_main); runnable = new Runnable () {@Override public void run () {// opetovano radi int level = (int) getBattery (); // dobiva trenutnu razinu napunjenosti baterije ako (level == 100) {// ako je razina napunjenosti baterije dostiže 100% try {getBT (); // povezuje se s bluetooth modulom openBT (); // otvara sendData (); // šalje potrebne podatke closeBT (); // zatvara objekt} catch (IOException ex) { }} handler.postDelayed (runnable, 5000); // kašnjenje}}; handler = novi Handler (); handler.postDelayed (runnable, 0); }

public float getBattery () {

Intent batteryIntent = registerReceiver (null, new IntentFilter (Intent. ACTION_BATTERY_CHANGED)); // stvara radnju koja se povezuje s razinom baterije int = batteryIntent.getIntExtra (BatteryManager. EXTRA_LEVEL, -1); // dobiva ljestvicu bolje razine int = batteryIntent.getIntExtra (BatteryManager. EXTRA_SCALE, -1); // dobiva skalu baterije ako (razina == -1 || ljestvica == -1) {// u slučaju pogrešnog povratka 50.0f; } float batt = (level/(float) scale)*100.0f; // dobiva odgovarajuću skalu return batt; // vraća razinu}

void getBT () {// dobiva moguće bluetooth veze

mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter (); // dobiva adapter ako (! mBluetoothAdapter.isEnabled ()) {// osigurava da telefon ima plavi zub na Intent enableBluetooth = new Intent (BluetoothAdapter. ACTION_REQUEST_ENABLE); // zahtijeva da to bude uključeno ako nije startActivityForResult (enableBluetooth, 0); } Set pairedDevices = mBluetoothAdapter.getBondedDevices (); // dobiva popis povezanog bluetootha ako (pairedDevices.size ()> 0) {// provjeri postoje li neki uređaji za (BluetoothDevice device: pairedDevices) {// kruži kroz devices if (device.getName (). equals ("HC-05")) {// provjerava je li to ispravno mmDevice = device; // sprema prekid; }}}}

void openBT () baca IOException {

UUID uuid = UUID.fromString ("00001101-0000-1000-8000-00805f9b34fb"); // Standardno // SerialPortService ID mmSocket = mmDevice.createRfcommSocketToServiceRecord (uuid); // povezuje se s uređajem s odgovarajućim id mmSocket.connect (); // povezuje mmOutputStream = mmSocket.getOutputStream (); // pokreće mogućnost slanja podaci u arduino modul}

void sendData () baca IOException {// klasu koja šalje t u arduino

mmOutputStream.write ('t'); }

void closeBT () baca IOException {// zatvara sve veze na arduino

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

Korak 6: Datoteke

Hvala vam na čitanju, u privitku su datoteke koje su korištene u ovom projektu

Preporučeni: