Innehållsförteckning:

En automatisk telefonladdare: 6 steg (med bilder)
En automatisk telefonladdare: 6 steg (med bilder)

Video: En automatisk telefonladdare: 6 steg (med bilder)

Video: En automatisk telefonladdare: 6 steg (med bilder)
Video: Моя работа наблюдать за лесом и здесь происходит что-то странное 2024, November
Anonim
En automatisk telefonladdare
En automatisk telefonladdare

"Denna instruerbara skapades för att uppfylla projektkravet för Makecourse vid University of South Florida (www.makecourse.com)"

Tanken bakom detta projekt var att skapa en enhet som kan ladda en telefon och sedan koppla ur den när telefonen når 100%. Detta skulle stoppa problem med överladdning.

Steg 1: Plastkomponenter

Plastkomponenter
Plastkomponenter
Plastkomponenter
Plastkomponenter
Plastkomponenter
Plastkomponenter
Plastkomponenter
Plastkomponenter

Det fanns några komponenter som användes som 3D -utskrivna. Dessa komponenter bestod av en bas, en hållare för laddaren, en kuggstångsväxel (en normal växel och en linjär bit som ändrar rotationen till linjär rörelse) och en bas för allt att arbeta på. Dessa komponenter kommer att förklaras i de följande styckena. I ordningsföljd

Laddare Hållare

Syftet med detta är att hålla telefonladdaren, eller åtminstone ge den en bättre och jämnare bas att vara på.

Bas

Basen har ringar för telefonhållaren samt ett spår för växelsatsen.

Telefonhållare

Håller i telefonen, uppenbarligen

Telefonarm

Rör sig och håller telefonen

Kugghjulssats

Används för att flytta telefonladdaren fram och tillbaka

Steg 2: Bryt ner komponenter som inte är 3D -tryckta

Det här är komponenterna som antingen köptes för projektet eller redan ägdes. För några av delarna länkade jag till dem/liknande föremål på amazon, men köp dem gärna var som helst.

Micro Servo:

Standard 0-180 Servo:

HC-05 Bluetooth-seriemodul:

Telefon och telefonladdare

Arduino

Bakbord

Låda eller soptunna för bas

Touch-sensor:

Steg 3: Elektronik

Elektronik
Elektronik

Kretsen för detta projekt kan dock kräva en del, främst på grund av HC-05-modulen. Många av modulerna av denna typ har en hastighet på ungefär 3,3V till 6V, vilket är inom Arduino: s arbetsområde. Men för seriell kommunikation fungerar Rx -stiftet ibland bättre med endast 3,3V. Som framgår av diagrammet ovan är de två servon anslutna till Vin -stiftet på Arduino. Denna extra spänning kan levereras av vad som helst, jag använde ett 9 volts batteri. Pekssensorn var ansluten till 5V på Arduino. Detta berodde på att alla komponenter hade problem med att köra av samma spänning. Beröringssensorn är ansluten till stift 2 så att den kan användas som ett stiftavbrott. Sedan är Bluetooth -modulen ansluten till Rx- och Tx -stiften för seriell kommunikation. Mellan Rx -stiftet på modulen och Tx på Arduino finns ett 2 kilo ohm motstånd med ett 1 kilo ohm som ansluts till marken. Detta hjälper till att reglera spänningen som går in.

Steg 4: Montering

hopsättning
hopsättning

Monteringen är ganska enkel.

  1. med lite superlim monterar du dina servon i sina positioner, en för redskapet vid utskärningen på basen och en nära där basen på telefonen är.
  2. Fäst touchsensorn på telefonhållaren så att den kan veta när telefonen är där.
  3. Fäst sedan växeln och armen på sina respektive servon
  4. Se till att ledningar inte stör andra komponenter när du fyller i din elektronik

Steg 5: Kod

Det finns tre uppsättningar kod som kommer att presenteras, en kod för Arduino, som skapades i Arduino IDE och två koder som gjordes i Android Studio. Android -apparna är desamma förutom att en är hela appen som spårar batteritid och en inte. Den andra är för teständamål.

Arduino -kod

Huvudpunkten med den här koden är att styra beröringssensorn och motorerna, den tar emot ett kommando från telefonen och agerar på den.

#include // kallar servobiblioteket så att vi kan styra de två servoservo servo1; Servo servo2; // skapar två servoobjekt för varje servomotor int a = 0; // spårningsvariabel för att testa int q = 0; // en variabel som gör att det kan finnas en fördröjning innan pluggprocessen börjar char c; // variabel som innehåller det seriella meddelandet från telefonens tomrumsinställning () {attachInterrupt (digitalPinToInterrupt (2), AH, FALLING); // bifogar ett fallande avbrott för att veta exakt när pekssensorn ser när telefonen är ute på servo1.attach (10); servo2.attach (9); // initierar de två servon Serial.begin (9600); // börjar seriekommunikationen med en hastighet som liknar den för bluetooth -modulen servo2.write (20); // auto ställer in servon till en startposition servo1.write (180); }

void loop () {

if (Serial.available ()) {// detta kontrollerar om det kommer något från telefonen över seriepinnarna Tx och Rx c = Serial.read (); // läser vad som kommer in if (c == 't') {// om den seriella enheten läser då betyder det att telefonen är fulladdad, kopplingsprocessen börjar servo2.write (120); // kopplar ur laddarens fördröjning (5000); // väntar på att se till att det finns tid för borttagning servo1.write (110); // flyttar telefonen till upprätt läge för att signalera //Serial.println("here "); attachInterrupt (digitalPinToInterrupt (2), AH, FALLING); // fäster avbrottet igen}} if (q == 1) {// om villkoret för plug -in är ture börjar sedan med att ansluta laddningsfördröjningen (10000); servo2.write (0); // flyttar servo till position q = 0; // återställer villkor}}

ogiltigt AH () {

//Serial.println("in "); servo1.write (180); // tappar telefonplattformen till laddningsläget q = 1; // startar villkoret för att fortsätta processen // a = 1; detachInterrupt (digitalPinToInterrupt (2)); // tar bort avbrottet så att det inte uppstår några problem med avbrottet som börjar när det inte ska}

Android App

Här kommer jag bara att visa rätt app men testkodfilen kommer också att ges, den enda skillnaden är att ta bort klassen som kan köras och getBattery. Den nämnda seriekoden är den som är standard för telefoner som ansluter till enheter som modulen.

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

public class MainActivity utökar AppCompatActivity {

// skapa nödvändiga objekt Handler handler; // hjälper till med slingan Runnable runnable; // kör kontinuerligt BluetoothAdapter mBluetoothAdapter; BluetoothSocket mmSocket; Bluetooth -enhet mmDevice; OutputStream mmOutputStream; flyktigt booleskt stoppWorker; privat OutputStream outputStream; privat slutsträng DEVICE_NAME = "HC-05"; privat slutlig UUID PORT_UUID = UUID.fromString ("00001101-0000-1000-8000-00805f9b34fb"); privat BluetoothAdapter -enhet; privat Bluetooth -uttag; @Override protected void onCreate (Bundle savedInstanceState) {// är en uppsättning instruktioner som körs när appen skapas super.onCreate (saveInstanceState); // displya creation setContentView (R.layout.activity_main); runnable = new Runnable () {@Override public void run () {// körs upprepade gånger int level = (int) getBattery (); // får den aktuella batterinivån om (level == 100) {// om batterinivån når 100% försök {getBT (); // ansluter till bluetooth -modulen openBT (); // öppnar den sendData (); // skickar nödvändig data closeBT (); // stänger objekt} catch (IOException ex) { }} handler.postDelayed (körbar, 5000); // en fördröjning}}; handler = new Handler (); handler.postDelayed (körbar, 0); }

public float getBattery () {

Intent batteryIntent = registerReceiver (null, new IntentFilter (Intent. ACTION_BATTERY_CHANGED)); // skapar åtgärden som ansluter till batteriets int -nivå = batteryIntent.getIntExtra (BatteryManager. EXTRA_LEVEL, -1); // får bättre nivå int skala = batteryIntent.getIntExtra (BatteryManager. EXTRA_SCALE, -1); // hämtar batteriets skala om (nivå == -1 || skala == -1) {// vid felavkastning 50.0f; } float batt = (nivå/(float) skala)*100.0f; // får rätt skala retur batt; // returnerar nivån}

void getBT () {// får möjliga bluetooth -anslutningar

mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter (); // får adaptern om (! mBluetoothAdapter.isEnabled ()) {// ser till att telefonen har en blå tand på Intent enableBluetooth = new Intent (BluetoothAdapter. ACTION_REQUEST_ENABLE); // begär att den ska vara aktiverad om inte startActivityForResult (enableBluetooth, 0); } Ange pairedDevices = mBluetoothAdapter.getBondedDevices (); // hämtar listan över bonded bluetooth om (pairedDevices.size ()> 0) {// ser till att det finns några enheter för (BluetoothDevice device: pairedDevices) {// slingrar genom enheter om (device.getName (). är lika med "HC-05")) {// kontrollerar om det är rätt mmDevice = device; // sparar det avbrott; }}}}

void openBT () kastar IOException {

UUID uuid = UUID.fromString ("00001101-0000-1000-8000-00805f9b34fb"); // Standard // SerialPortService ID mmSocket = mmDevice.createRfcommSocketToServiceRecord (uuid); // ansluter till enheten med rätt id mmSocket.connect (); // ansluter mmOutputStream = mmSocket.getOutputStream (); // startar möjligheten att skicka data till arduino -modulen}

void sendData () kastar IOException {// klass som skickar t till arduino

mmOutputStream.write ('t'); }

void closeBT () kastar IOException {// stänger alla anslutningar till arduino

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

Steg 6: Filer

Tack för att du läser, bifogade filer som användes i detta projekt

Rekommenderad: