תוכן עניינים:

מטען טלפוני אוטומטי: 6 שלבים (עם תמונות)
מטען טלפוני אוטומטי: 6 שלבים (עם תמונות)

וִידֵאוֹ: מטען טלפוני אוטומטי: 6 שלבים (עם תמונות)

וִידֵאוֹ: מטען טלפוני אוטומטי: 6 שלבים (עם תמונות)
וִידֵאוֹ: איך מצלמים תמונות יפות בסמארטפון | אסתי בשטח 2024, יולי
Anonim
מטען טלפוני אוטומטי
מטען טלפוני אוטומטי

"הוראה זו נוצרה לצורך מילוי דרישת הפרויקט של מסלול האוניברסיטה באוניברסיטת דרום פלורידה (www.makecourse.com)"

הרעיון מאחורי הפרויקט הזה היה ליצור מכשיר שיכול לטעון טלפון ולאחר מכן לנתק אותו כשהטלפון מגיע ל -100%. זה יעצור בעיות של טעינת יתר.

שלב 1: רכיבי פלסטיק

רכיבי פלסטיק
רכיבי פלסטיק
רכיבי פלסטיק
רכיבי פלסטיק
רכיבי פלסטיק
רכיבי פלסטיק
רכיבי פלסטיק
רכיבי פלסטיק

היו כמה רכיבים שהיו בשימוש שהודפסו בתלת מימד. רכיבים אלה כללו בסיס, מחזיק למטען, ערכת הילוכים של מתלה וסיכה (הילוך רגיל וחתיכה לינארית שמשנה את הסיבוב לתנועה לינארית), ובסיס להכל לפעול. רכיבים אלה יוסברו בפסקאות הבאות. לפי סדר המראה

מחזיק מטען

המטרה של זה היא להחזיק את מטען הטלפון, או לפחות לתת לו בסיס טוב יותר ורמה.

בסיס

בבסיס יש טבעות למחזיק הטלפון וכן מסלול לערכת ההילוכים.

מחזיק טלפון

מחזיק את הטלפון, ברור

זרוע טלפון

מזיז ומחזיק את הטלפון

ערכת ציוד מתלים ופיניון

משמש להעביר את מטען הטלפון קדימה ואחורה

שלב 2: פירוט רכיבים שאינם מודפסים בתלת מימד

אלה הרכיבים שנרכשו לפרויקט או שכבר היו בבעלותם. לחלק מהחלקים קישרתי אליהם/פריטים דומים באמזון, אבל אתה מוזמן לרכוש אותם בכל מקום.

מיקרו סרוו:

סרוו 0-180 סטנדרטי:

מודול סידורי Bluetooth HC-05:

מטען טלפוני וטלפוני

ארדואינו

לוח לחם

קופסא או פח לבסיס

חיישן מגע:

שלב 3: אלקטרוניקה

מכשירי חשמל
מכשירי חשמל

המעגל לפרויקט זה עשוי לדרוש קצת, בעיקר בגלל מודול HC-05. רבים מהמודולים מסוג זה הם בעלי תעריפים של בערך 3.3V עד 6V, שהם בטווח ההפעלה של ה- Arduino. אבל, עבור תקשורת סדרתית סיכת ה- Rx לפעמים עובדת טוב יותר רק עם 3.3V. כפי שניתן לראות בתרשים לעיל שני הסרבים מחוברים לסיכת הווין שבארדואינו. את המתח הנוסף הזה אפשר לספק בכל דבר, השתמשתי בסוללה של 9 וולט. חיישן המגע חובר ל- 5V בארדואינו. הסיבה לכך הייתה שכל הרכיבים התקשו להיגמר מאותו המתח. חיישן המגע מחובר לסיכה 2 כך שהוא יכול לשמש כהפרעת סיכה. לאחר מכן מודול ה- Bluetooth מחובר לסיכות Rx ו- Tx לתקשורת טורית. בין סיכת ה- Rx במודול ל- Tx ב- Arduino נמצא נגד של 2 קילו אוהם עם חיבור של 1 קילו אוהם לקרקע. זה עוזר לווסת את המתח שנכנס.

שלב 4: הרכבה

הַרכָּבָה
הַרכָּבָה

ההרכבה פשוטה למדי.

  1. עם קצת דבק על הר את הסרוווס שלך במיקומים שלהם, אחד להילוך על ידי החיתוך בבסיס ואחד ליד המקום בו נמצא בסיס הטלפון.
  2. חבר את חיישן המגע למחזיק הטלפון, כך שיוכל לדעת מתי הטלפון נמצא שם.
  3. לאחר מכן חבר את הציוד והזרוע לסרוואות המתאימות להם
  4. וודא שהחוטים אינם מפריעים לרכיבים אחרים בעת מילוי האלקטרוניקה שלך

שלב 5: קוד

שלוש קבוצות קוד יוצגו, קוד אחד ל- Arduino, שנוצר ב- IDE של Arduino ושני קודים שנוצרו ב- Android Studio. אפליקציות האנדרואיד זהות למעט אחת היא האפליקציה המלאה שעוקבת אחר חיי הסוללה ואחת לא. השני נועד למטרות בדיקה.

קוד ארדואינו

הנקודה העיקרית של קוד זה היא הפעלת חיישן המגע והמנועים, הוא מקבל פקודה מהטלפון ופועל על פיו.

#include // מתקשר לספריית סרוו כדי שנוכל לשלוט בשני servosServo servo1; Servo servo2; // יוצר שני אובייקטים של סרוו עבור כל מנוע סרוו int a = 0; // משתנה מעקב לבדיקת int q = 0; // משתנה שמאפשר להיות עיכוב לפני תחילת תהליך התוספת מתחילה char c; // משתנה המכיל את ההודעה הטורית מההגדרה של חלל הטלפון () {attachInterrupt (digitalPinToInterrupt (2), AH, FALLING); // מצרף הפרעה נופלת כדי לדעת בדיוק מתי חיישן המגע רואה כשהטלפון יוצא ל- servo1.attach (10); servo2.attach (9); // מאתחל את שני השירותים Serial.begin (9600); // מתחיל את התקשורת הטורית בקצב דומה לזה של מודול ה- bluetooth servo2.write (20); // מכוון אוטומטית את סרוווס ל- עמדת התחלה servo1.write (180); }

לולאת חלל () {

if (Serial.available ()) {// זה בודק אם נכנס משהו מהטלפון דרך הסיכות הסידריות Tx ו- Rx c = Serial.read (); // קורא מה נכנס אם (c == 't') {// אם ההתקן הטורי קורא אז זה אומר שהטלפון טעון במלואו, תהליך הניתוק מתחיל servo2.write (120); // מנתק את עיכוב המטען (5000); // ממתין לוודא יש זמן להסרת servo1.write (110); // מעביר את הטלפון למצב זקוף כדי לסמן //Serial.println("here "); attachInterrupt (digitalPinToInterrupt (2), AH, FALLING); // מצרף מחדש את הפרעה}} אם (q == 1) {// אם התנאי להתחברות הוא ture, התחל עם חיבור עיכוב המטען (10000); servo2.write (0); // מעביר את הסרוו למצב q = 0; // איפוס מצב}}

חלל AH () {

//Serial.println("in "); servo1.write (180); // מוריד את פלטפורמת הטלפון למצב הטעינה q = 1; // מתחיל את התנאי להמשך התהליך // a = 1; detachInterrupt (digitalPinToInterrupt (2)); // מנתק את ההפרעה, כך שלא יהיו בעיות בהפרעה שתתחיל כאשר היא לא אמורה}

אפליקציית אנדרואיד

כאן אציג רק את האפליקציה המתאימה אך גם קובץ קוד הבדיקה יינתן, ההבדל היחיד יהיה הסרת הכיתה 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; שקע Bluetooth mmSocket; BluetoothDevice mmDevice; OutputStream mmOutputStream; stopWorker נדיף בוליאני; OutputStream פרטי outputStream; מחרוזת גמר פרטית DEVICE_NAME = "HC-05"; UUID סופי פרטי PORT_UUID = UUID.fromString ("00001101-0000-1000-8000-00805f9b34fb"); מכשיר BluetoothAdapter פרטי; שקע פרטי לשקע Bluetooth; @Override חלל מוגן onCreate (Bundle savedInstanceState) {// הוא קבוצת הוראות הפועלות כאשר האפליקציה נוצרת super.onCreate (saveInstanceState); // displya creation setContentView (R.layout.activity_main); runnable = new Runnable () {@Override public void run () {// פועל שוב ושוב int level = (int) getBattery (); // מקבל את רמת הסוללה הנוכחית אם (level == 100) {// אם רמת הסוללה מגיע 100% נסה {getBT (); // מתחבר למודול ה- bluetooth openBT (); // פותח אותו sendData (); // שולח את הנתונים הדרושים closeBT (); // סוגר את האובייקט} catch (IOException ex) { }} handler.postDelayed (ריצה, 5000); // עיכוב}}; מטפל = מטפל חדש (); handler.postDelayed (ריצה, 0); }

public float getBattery () {

Intent batteryIntent = registerReceiver (null, IntentFilter חדש (Intent. ACTION_BATTERY_CHANGED)); // יוצר את הפעולה המתחברת לרמת הסוללה int = batteryIntent.getIntExtra (BatteryManager. EXTRA_LEVEL, -1); // מקבל את קנה המידה int ברמה טובה יותר = batteryIntent.getIntExtra (BatteryManager. EXTRA_SCALE, -1); // מקבל את קנה המידה של הסוללה אם (רמה == -1 || סולם == -1) {// במקרה של החזרת טעות 50.0f; } צף באט = (רמה/(צף) קנה מידה)*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: pairedDevices) {// לולאה דרך התקנים אם (device.getName (). שווה ("HC-05")) {// בודק אם הוא mmDevice = device הנכון; // חוסך אותו שבירה; }}}}

void openBT () זורק IOException {

UUID uuid = UUID.fromString ("00001101-0000-1000-8000-00805f9b34fb"); // סטנדרטי // מזהה SerialPortService mmSocket = mmDevice.createRfcommSocketToServiceRecord (uuid); // מתחבר למכשיר עם המזהה המתאים mmSocket.connect (); // מחבר mmOutputStream = mmSocket.getOutputStream (); // מתחיל את היכולת לשלוח נתונים למודול הארדואינו}

void sendData () זורק IOException {// class ששולח את ה- t אל הארדואינו

mmOutputStream.write ('t'); }

void closeBT () זורק IOException {// סוגר את כל החיבורים לארדואינו

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

שלב 6: קבצים

תודה שקראת, מצורפים הקבצים ששימשו בפרויקט זה

מוּמלָץ: