Πίνακας περιεχομένων:
- Βήμα 1: Πλαστικά εξαρτήματα
- Βήμα 2: Διαλύστε εξαρτήματα που δεν εκτυπώνονται σε 3D
- Βήμα 3: Ηλεκτρονικά
- Βήμα 4: Συναρμολόγηση
- Βήμα 5: Κωδικός
- Βήμα 6: Αρχεία
Βίντεο: Αυτόματος φορτιστής τηλεφώνου: 6 βήματα (με εικόνες)
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:38
"Αυτό το διδακτικό δημιουργήθηκε για να εκπληρώσει την απαίτηση έργου του Makecourse στο Πανεπιστήμιο της Νότιας Φλόριντα (www.makecourse.com)"
Η ιδέα πίσω από αυτό το έργο ήταν να δημιουργήσετε μια συσκευή που θα μπορούσε να φορτίσει ένα τηλέφωνο και στη συνέχεια να την αποσυνδέσετε όταν το τηλέφωνο φτάσει το 100%. Αυτό θα σταματήσει τα θέματα υπερφόρτισης.
Βήμα 1: Πλαστικά εξαρτήματα
Υπήρχαν ορισμένα εξαρτήματα που χρησιμοποιήθηκαν και εκτυπώθηκαν 3D. Αυτά τα εξαρτήματα περιλάμβαναν μια βάση, μια βάση για το φορτιστή, ένα σετ ραφιών και γραναζιών (ένα κανονικό γρανάζι και ένα γραμμικό κομμάτι που αλλάζει την περιστροφή σε γραμμική κίνηση) και μια βάση για να λειτουργούν όλα. Αυτά τα στοιχεία θα εξηγηθούν στις επόμενες παραγράφους. Με σειρά εμφάνισης
Κάτοχος φορτιστή
Ο σκοπός αυτού είναι να κρατήσει το φορτιστή του τηλεφώνου ή τουλάχιστον να του δώσει μια καλύτερη και επίπεδη βάση.
Βάση
Η βάση διαθέτει δακτυλίους για τη βάση του τηλεφώνου καθώς και πίστα για το σετ γραναζιών.
Κάτοχος τηλεφώνου
Κρατάει το τηλέφωνο, προφανώς
Τηλεφωνικός βραχίονας
Μετακινεί και κρατάει το τηλέφωνο
Σετ εργαλείων Rack and Pinion
Χρησιμοποιείται για τη μετακίνηση του φορτιστή του τηλεφώνου μπρος -πίσω
Βήμα 2: Διαλύστε εξαρτήματα που δεν εκτυπώνονται σε 3D
Αυτά είναι τα στοιχεία που είτε αγοράστηκαν για το έργο είτε ανήκαν ήδη. Για μερικά από τα μέρη που τα συνδέω/παρόμοια αντικείμενα στο amazon, αλλά μη διστάσετε να τα αποκτήσετε οπουδήποτε.
Micro Servo:
Standard 0-180 Servo:
Σειριακή μονάδα Bluetooth HC-05:
Φορτιστής τηλεφώνου και τηλεφώνου
Arduino
Breadboard
Κουτί ή κάδος για βάση
Αισθητήρας αφής:
Βήμα 3: Ηλεκτρονικά
Το κύκλωμα για αυτό το έργο ενδέχεται να απαιτεί κάποια, κυρίως λόγω της μονάδας HC-05. Πολλές από τις μονάδες αυτού του τύπου είναι περίπου 3,3V έως 6V, το οποίο είναι στο εύρος λειτουργίας του Arduino. Όμως, για σειριακή επικοινωνία, η ακίδα Rx μερικές φορές λειτουργεί καλύτερα μόνο με 3,3V. Όπως φαίνεται στο παραπάνω διάγραμμα, τα δύο σερβο είναι συνδεδεμένα με τον πείρο Vin στο Arduino. Αυτή η επιπλέον τάση μπορεί να τροφοδοτηθεί από οτιδήποτε, χρησιμοποίησα μια μπαταρία 9 βολτ. Ο αισθητήρας αφής ήταν συνδεδεμένος στο 5V στο Arduino. Αυτό συνέβη επειδή όλα τα εξαρτήματα αντιμετώπισαν πρόβλημα με την ίδια τάση. Ο αισθητήρας αφής είναι προσαρτημένος στον πείρο 2, ώστε να μπορεί να χρησιμοποιηθεί ως διακοπή πείρου. Στη συνέχεια, η μονάδα bluetooth συνδέεται με τις ακίδες Rx και Tx για σειριακή επικοινωνία. Μεταξύ του πείρου Rx στη μονάδα και του Tx στο Arduino υπάρχει μια αντίσταση 2 κιλών ohm με 1 κιλό ωμ που συνδέεται με τη γείωση. Αυτό βοηθά στη ρύθμιση της εισερχόμενης τάσης.
Βήμα 4: Συναρμολόγηση
Η συναρμολόγηση είναι αρκετά απλή.
- με λίγη σούπερ κόλλα τοποθετήστε τα servos σας στις θέσεις τους, ένα για το γρανάζι με το κόψιμο στη βάση και ένα κοντά στο σημείο που βρίσκεται η βάση του τηλεφώνου.
- Συνδέστε τον αισθητήρα αφής στη θήκη του τηλεφώνου, ώστε να μπορεί να γνωρίζει πότε το τηλέφωνο είναι εκεί.
- Στη συνέχεια, συνδέστε το γρανάζι και τον βραχίονα στα αντίστοιχα servos τους
- Βεβαιωθείτε ότι τα καλώδια δεν επηρεάζουν άλλα εξαρτήματα καθώς γεμίζετε τα ηλεκτρονικά σας
Βήμα 5: Κωδικός
Υπάρχουν τρία σύνολα κώδικα που θα παρουσιαστούν, ένας κωδικός για το Arduino, που δημιουργήθηκε στο Arduino IDE και δύο κωδικοί που δημιουργήθηκαν στο Android Studio. Οι εφαρμογές Android είναι οι ίδιες, εκτός εάν μία είναι η πλήρης εφαρμογή που παρακολουθεί τη διάρκεια ζωής της μπαταρίας και μία όχι. Το δεύτερο είναι για σκοπούς δοκιμών.
Κωδικός Arduino
Το κύριο σημείο αυτού του κώδικα είναι η λειτουργία του αισθητήρα αφής και των κινητήρων, λαμβάνει μια εντολή από το τηλέφωνο και ενεργεί σύμφωνα με αυτό.
#include // καλεί τη σερβο βιβλιοθήκη για να μπορούμε να ελέγχουμε τα δύο servosServo servo1. Servo servo2; // δημιουργεί δύο σερβο αντικείμενα για κάθε σερβοκινητήρα int a = 0; // μεταβλητή παρακολούθησης για έλεγχο int q = 0; // μια μεταβλητή που επιτρέπει την καθυστέρηση πριν ξεκινήσει η διαδικασία pluggin char c; // μεταβλητή που περιέχει το σειριακό μήνυμα από το τηλέφωνο void setup () {attachInterrupt (digitalPinToInterrupt (2), AH, FALLING); // επισυνάπτει μια διακοπή πτώσης για να ξέρει ακριβώς πότε βλέπει ο αισθητήρας αφής όταν το τηλέφωνο είναι εκτός λειτουργίας στο servo1.attach (10) · servo2.attach (9); // προετοιμάζει τα δύο servos Serial.begin (9600) μια αρχική θέση servo1.write (180). }
void loop () {
εάν (Serial.available ()) {// αυτό ελέγχει εάν υπάρχει κάτι που έρχεται από το τηλέφωνο μέσω των σειριακών ακίδων Tx και Rx c = Serial.read (); // διαβάζει τι έρχεται από εάν (c == 't') {// εάν η σειριακή συσκευή διαβάζει τότε αυτό σημαίνει ότι το τηλέφωνο είναι πλήρως φορτισμένο, ξεκινά η διαδικασία αποσύνδεσης servo2.write (120); // αποσυνδέει την καθυστέρηση φορτιστή (5000), // περιμένει για να βεβαιωθείτε υπάρχει χρόνος για την αφαίρεση servo1.write (110); // μετακινεί το τηλέφωνο σε όρθια θέση για να δώσει σήμα //Serial.println("here "). attachInterrupt (digitalPinToInterrupt (2), AH, FALLING); // επανασυνδέει τη διακοπή}} if (q == 1) {// εάν η συνθήκη για το pluggin in είναι αρχική τότε ξεκινήστε με την επισύναψη της καθυστέρησης του φορτιστή (10000). servo2.write (0); // μετακινεί το σερβο στη θέση q = 0; // επαναφέρει την κατάσταση}}
void AH () {
//Serial.println("in "); servo1.write (180); // ρίχνει την πλατφόρμα του τηλεφώνου στη θέση φόρτισης q = 1; // ξεκινά τη συνθήκη για να συνεχίσει τη διαδικασία // a = 1; detachInterrupt (digitalPinToInterrupt (2)); // αποσυνδέει τη διακοπή, έτσι ώστε να μην υπάρχουν προβλήματα με τη διακοπή ξεκινώντας όταν δεν πρέπει}
Εφαρμογή Android
Εδώ θα εμφανίσω μόνο την κατάλληλη εφαρμογή αλλά θα δοθεί και το αρχείο κώδικα δοκιμής, η μόνη διαφορά θα είναι η κατάργηση της κλάσης runnable και getBattery. Ο σειριακός κωδικός που αναφέρεται είναι αυτός που είναι ο βασικός για τηλέφωνα που συνδέονται με συσκευές όπως η μονάδα.
πακέτο com.example.daniel.make; εισαγωγή android.bluetooth. BluetoothAdapter? εισαγωγή android.bluetooth. BluetoothDevice; εισαγωγή android.bluetooth. BluetoothSocket? εισαγωγή android.os. Handler; εισαγωγή android.support.v7.app. AppCompatActivity; εισαγωγή android.os. Bundle; εισαγωγή android.content. Intent; εισαγωγή android.content. IntentFilter; εισαγωγή android.os. BatteryManager; εισαγωγή java.io. IOException; εισαγωγή java.io. OutputStream; εισαγωγή java.util. Set; εισαγωγή java.util. UUID;
δημόσια τάξη MainActivity επεκτείνει το AppCompatActivity {
// δημιουργία απαραίτητων αντικειμένων Χειριστής χειριστή; // βοηθά με τον βρόχο Runnable runnable; // τρέχει συνεχώς BluetoothAdapter mBluetoothAdapter; BluetoothSocket mmSocket? BluetoothΣυσκευή mmDevice; OutputStream mmOutputStream; πτητικό boolean stopWorker; ιδιωτικό OutputStream outputStream? ιδιωτικό τελικό String DEVICE_NAME = "HC-05"; ιδιωτικό τελικό UUID PORT_UUID = UUID.fromString ("00001101-0000-1000-8000-00805f9b34fb"); ιδιωτική συσκευή BluetoothAdapter. ιδιωτική πρίζα Bluetooth Το @Override προστατευμένο κενό onCreate (Πακέτο αποθηκευμένοInstanceState) {// είναι ένα σύνολο οδηγιών που εκτελούνται όταν δημιουργείται η εφαρμογή super.onCreate (αποθηκευμένοInstanceState); // displya creation setContentView (R.layout.activity_main); runnable = νέο Runnable () {@Override public void run () {// τρέχει επανειλημμένα int level = (int) getBattery (); // λαμβάνει το τρέχον επίπεδο μπαταρίας εάν (επίπεδο == 100) {// εάν η στάθμη της μπαταρίας φτάνει το 100% try {getBT (); // συνδέεται με τη μονάδα bluetooth openBT (); // το ανοίγει sendData (); // στέλνει τα απαραίτητα δεδομένα closeBT (); // κλείνει το αντικείμενο} catch (IOException ex) { }} handler.postDelayed (τρέξιμο, 5000); // μια καθυστέρηση}}; χειριστής = νέος χειριστής (); handler.postDelayed (τρέξιμο, 0); }
public float getBattery () {
Intent batteryIntent = registerReceiver (null, new IntentFilter (Intent. ACTION_BATTERY_CHANGED)); // δημιουργεί τη δράση που συνδέεται με την μπαταρία int level = batteryIntent.getIntExtra (BatteryManager. EXTRA_LEVEL, -1); // παίρνει το καλύτερο επίπεδο int κλίμακα = batteryIntent.getIntExtra (BatteryManager. EXTRA_SCALE, -1); // παίρνει την κλίμακα της μπαταρίας εάν (επίπεδο == -1 || κλίμακα == -1) {// σε περίπτωση λανθασμένου βήματος επιστροφή 50.0f, } float batt = (επίπεδο/(float) κλίμακα)*100.0f; // παίρνει τη σωστή κλίμακα επιστροφής κλίμακας; // επιστρέφει το επίπεδο}
void getBT () {// λαμβάνει τις πιθανές συνδέσεις bluetooth
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter (); // λαμβάνει τον προσαρμογέα εάν (! mBluetoothAdapter.isEnabled ()) {// βεβαιωθεί ότι το τηλέφωνο έχει μπλε δόντι στο Intent enableBluetooth = new Intent (BluetoothAdapter. ACTION_REQUEST_ENABLE); // αιτήματα ενεργοποιημένο αν όχι startActivityForResult (enableBluetooth, 0)? } Ορισμός pairedDevices = mBluetoothAdapter.getBondedDevices (); // λαμβάνει τη λίστα συνδεδεμένων bluetooth εάν (pairedDevices.size ()> 0) {// βεβαιώνεται ότι υπάρχουν ορισμένες συσκευές για [BluetoothDevice device: pairedDevices] {// βρόχους μέσω συσκευές if (device.getName (). equals ("HC-05")) {// ελέγχει αν είναι η κατάλληλη mmDevice = συσκευή; // το αποθηκεύει στο σπάσιμο. }}}}
void openBT () ρίχνει IOException {
UUID uuid = UUID.fromString ("00001101-0000-1000-8000-00805f9b34fb"); // Standard // SerialPortService ID mmSocket = mmDevice.createRfcommSocketToServiceRecord (uuid); // συνδέεται στη συσκευή με το κατάλληλο αναγνωριστικό mmSocket.connect (); // συνδέει mmOutputStream = mmSocket.getOutputStream (); // ξεκινά τη δυνατότητα αποστολής δεδομένα στη μονάδα arduino}
void sendData () ρίχνει IOException {// class που στέλνει το t στο arduino
mmOutputStream.write ('t'); }
void closeBT () ρίχνει IOException {// κλείνει όλες τις συνδέσεις με το arduino
stopWorker = true; mmOutputStream.close (); mmSocket.close (); }}
Βήμα 6: Αρχεία
Σας ευχαριστούμε που διαβάσατε, επισυνάπτονται τα αρχεία που χρησιμοποιήθηκαν σε αυτό το έργο
Συνιστάται:
Φορτιστής τηλεφώνου με κινητήρα: 6 βήματα (με εικόνες)
Φορτιστής τηλεφώνου με μοτοσυκλέτα: Αυτός είναι ένας φορτιστής τηλεφώνου που λειτουργεί με ποδήλατο, είναι φθηνός, εκτυπώσιμος 3D, εύκολος στην κατασκευή και εγκατάσταση και ο φορτιστής τηλεφώνου είναι καθολικός. Είναι χρήσιμο να έχετε αν οδηγείτε πολύ το ποδήλατό σας και πρέπει να φορτίζετε το τηλέφωνό σας. Ο φορτιστής σχεδιάστηκε και κατασκευάστηκε
Τριχωτό iPhone! ΘΗΚΗ ΤΗΛΕΦΩΝΟΥ DIY Life Hacks - Θήκη τηλεφώνου με κόλλα: 6 βήματα (με εικόνες)
Τριχωτό iPhone! DIY PHONE CASE Life Hacks - Θήκη τηλεφώνου με ζεστή κόλλα: Στοιχηματίζω ότι δεν έχετε δει ποτέ ένα τριχωτό iPhone! Λοιπόν, σε αυτό το σεμινάριο θήκης για τηλέφωνα DIY σίγουρα θα το κάνετε! :)) Καθώς τα τηλέφωνά μας σήμερα μοιάζουν λίγο με τη δεύτερη ταυτότητά μας, αποφάσισα να φτιάξω ένα " μικρογραφία μου " … Ελαφρώς ανατριχιαστικό, αλλά πολύ διασκεδαστικό
Φορτιστής τηλεφώνου Iron Throne: 17 βήματα (με εικόνες)
Φορτιστής τηλεφώνου Iron Throne: Είμαι τόσο ενθουσιασμένος για την 7η σεζόν του Game of Thrones, έπρεπε να κάνω ένα σχετικό έργο - έναν φορτιστή τηλεφώνου Iron Throne! Λίστα προμηθειών: Φορτιστής USB Πλαστικά σπαθιά κοκτέιλ Ασημένιο ακρυλικό χρώμα Χάλκινο ακρυλικό χρώμα Μαύρο σπρέι βαφή 2mm αφρός Χοντρό foa
Φορτιστής τηλεφώνου αυτοκινήτου Wiggle-Loose-Be-Gone: 4 βήματα (με εικόνες)
Φορτιστής τηλεφώνου αυτοκινήτου Wiggle-Loose-Be-Gone: Εδώ είναι ένας απλός τρόπος για να κρατήσετε τους φορτιστές του αυτοκινήτου σας συνδεδεμένους στο όχημά σας. βάλτε λίγη ταινία κάλυψης στο τέλος της πριν την συνδέσετε
DIY SOLAR JACKET (Φορτιστής τηλεφώνου USB): 9 βήματα (με εικόνες)
DIY SOLAR JACKET (Φορτιστής τηλεφώνου usb): Ένα πολύ απλό και εύκολο στη διάθεση μπουφάν και τσάντα φόρτισης ηλιακού τηλεφώνου που μπορείτε ακόμη και να φτιάξετε στο σπίτι σας. Φορτίζει το τηλέφωνό σας για να σας δώσει τον χυμό που χρειάζεστε σε καταστάσεις έκτακτης ανάγκης για πλήρη λεπτομερή προβολή του έργο μην ξεχάσετε να το ελέγξετε