فهرست مطالب:

یک شارژر اتوماتیک تلفن: 6 مرحله (همراه با تصاویر)
یک شارژر اتوماتیک تلفن: 6 مرحله (همراه با تصاویر)

تصویری: یک شارژر اتوماتیک تلفن: 6 مرحله (همراه با تصاویر)

تصویری: یک شارژر اتوماتیک تلفن: 6 مرحله (همراه با تصاویر)
تصویری: اولین کاری که بعد از خرید گوشی سامسونگ جدید باید کرد 2024, جولای
Anonim
یک شارژر اتوماتیک تلفن
یک شارژر اتوماتیک تلفن

"این دستورالعمل برای برآوردن الزامات پروژه Makecourse در دانشگاه فلوریدا جنوبی ایجاد شده است (www.makecourse.com)"

ایده پشت این پروژه ایجاد دستگاهی بود که بتواند تلفن را شارژ کند و سپس هنگامی که تلفن به 100 reaches رسید ، آن را جدا کنید. این امر مسائل مربوط به شارژ بیش از حد را متوقف می کند.

مرحله 1: اجزای پلاستیکی

اجزای پلاستیکی
اجزای پلاستیکی
اجزای پلاستیکی
اجزای پلاستیکی
اجزای پلاستیکی
اجزای پلاستیکی
اجزای پلاستیکی
اجزای پلاستیکی

برخی قطعات مورد استفاده قرار گرفتند که به صورت سه بعدی چاپ شده بودند. این اجزا شامل یک پایه ، یک نگهدارنده برای شارژر ، یک مجموعه دنده قفسه ای و پینیون (یک چرخ دنده معمولی و یک قطعه خطی است که چرخش را به حرکت خطی تغییر می دهد) و پایه ای برای عملکرد همه چیز. این م componentsلفه ها در پاراگراف های بعدی توضیح داده خواهد شد. به ترتیب ظاهر

نگهدارنده شارژر

هدف از این کار این است که شارژر تلفن را نگه دارد یا حداقل یک پایه بهتر و سطح مناسب را برای آن فراهم کند.

پایه

این پایه دارای حلقه هایی برای نگهدارنده تلفن و همچنین یک آهنگ برای مجموعه دنده است.

نگهدارنده تلفن

گوشی را در دست دارد ، بدیهی است

بازوی تلفن

گوشی را حرکت می دهد و نگه می دارد

ست دنده رک و پینیون

برای جابجایی و جلو رفتن شارژر تلفن استفاده می شود

مرحله 2: تجزیه اجزای چاپ نشده سه بعدی

اینها اجزایی هستند که یا برای پروژه خریداری شده اند و یا قبلاً متعلق به آنها بوده است. برای برخی از قسمتهایی که به آنها پیوند دادم/موارد مشابه در آمازون ، اما با خیال راحت آنها را در هر کجا تهیه کنید.

میکرو سرو:

سروو استاندارد 0-180:

ماژول سریال بلوتوث HC-05:

تلفن و شارژر تلفن

آردوینو

تخته نان

جعبه یا سطل برای پایه

سنسور لمسی:

مرحله 3: الکترونیک

الکترونیک
الکترونیک

مدار این پروژه ممکن است به برخی نیاز داشته باشد ، عمدتا به دلیل ماژول HC-05. نرخ بسیاری از ماژول های این نوع تقریباً 3.3 ولت تا 6 ولت است که در محدوده عملکرد آردوینو است. اما ، برای ارتباط سریال ، پین Rx گاهی اوقات فقط با 3.3 ولت بهتر کار می کند. همانطور که در نمودار بالا مشاهده می شود ، دو سروو به پین Vin در آردوینو متصل می شوند. این ولتاژ اضافی را می توان با هر چیزی تامین کرد ، من از باتری 9 ولت استفاده کردم. سنسور لمسی در آردوینو به ولتاژ 5 ولت متصل شد. این به این دلیل بود که همه اجزا با ولتاژ یکسان مشکل داشتند. سنسور لمسی به پین 2 متصل شده است تا بتوان از آن به عنوان قطع کننده پین استفاده کرد. سپس ماژول بلوتوث برای ارتباط سریال به پایه های Rx و Tx متصل می شود. بین پین Rx روی ماژول و Tx روی آردوینو یک مقاومت 2 کیلو اهم با 1 کیلو اهم به زمین متصل می شود. این به تنظیم ولتاژ ورودی کمک می کند.

مرحله 4: مونتاژ

مونتاژ
مونتاژ

مونتاژ کاملاً ساده است.

  1. با برخی از چسب های فوق العاده سروهای خود را در موقعیت خود نصب کنید ، یکی برای چرخ دنده برش داده شده روی پایه و دیگری نزدیک جایی که پایه تلفن قرار دارد.
  2. سنسور لمسی را به نگهدارنده تلفن وصل کنید تا بتواند بداند تلفن در کجاست.
  3. سپس دنده و بازو را به سروهای مربوطه وصل کنید
  4. هنگام پر کردن وسایل برقی ، مطمئن شوید سیم ها با سایر اجزا تداخل ندارند

مرحله 5: کد

سه مجموعه کد ارائه می شود ، یک کد برای Arduino ، که در Arduino IDE ایجاد شده است و دو کد که در Android Studio ساخته شده است. برنامه های Android یکسان هستند به جز یکی که برنامه کامل است که عمر باتری را پیگیری می کند و یکی این برنامه را ندارد. مورد دوم برای آزمایش است.

کد آردوینو

نکته اصلی این کد این است که سنسور لمسی و موتورها را کار کند ، یک فرمان از تلفن دریافت می کند و به آن عمل می کند.

#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) ؛ // دو سروو را Serial.begin (9600) راه اندازی می کند ؛ // ارتباط سریال را با سرعتی مشابه ماژول بلوتوث servo2.write (20) آغاز می کند ؛ // خودکار سرویس ها را روی موقعیت اولیه servo1.write (180) ؛ }

حلقه خالی () {

if (Serial.available ()) {// این بررسی می کند که آیا چیزی از طریق تلفن از طریق پین های سریال Tx و Rx c = Serial.read () ؛ // مطالبی که از if وارد می شود را بخواند (c == 't') {// اگر دستگاه سریال در آن زمان بخواند به این معنی است که تلفن کاملاً شارژ شده است ، فرایند جدا شدن از برق شروع می شود. زمان برای حذف servo1.write (110) وجود دارد ؛ // تلفن را به حالت قائم منتقل می کند تا به //Serial.println("here "سیگنال دهد. attachInterrupt (digitalPinToInterrupt (2) ، AH ، FALLING) ؛ // وقفه را مجدداً وصل می کند}} if (q == 1) {// اگر شرط pluggin برقرار است ، سپس با اتصال تاخیر شارژر (10000) شروع کنید ؛ servo2.write (0)؛ // سروو را به موقعیت q = 0 منتقل می کند ؛ // وضعیت را بازنشانی می کند}}

void 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 را گسترش می دهد {

// ایجاد اشیاء لازم Handler handler؛ // به حلقه Runnable runnable کمک می کند ؛ // به طور مداوم BluetoothAdapter mBluetoothAdapter را اجرا می کند ؛ بلوتوث سوکت mmSocket؛ دستگاه بلوتوث mmDevice؛ جریان خروجی mmOutputStream؛ فرار boolean stopWorker؛ خصوصی OutputStream outputStream؛ رشته نهایی خصوصی DEVICE_NAME = "HC-05"؛ خصوصی خصوصی UUID PORT_UUID = UUID.fromString ("00001101-0000-1000-8000-00805f9b34fb") ؛ دستگاه خصوصی BluetoothAdapter ؛ سوکت خصوصی BluetoothSocket ؛ Override void onCreate protected (بسته نرم افزاری saveInstanceState) {// مجموعه ای از دستورالعمل ها است که هنگام ایجاد برنامه super.onCreate (saveInstanceState) ؛ // displya creation setContentView (R.layout.activity_main) ؛ runnable = جدید Runnable () {Override public void run () {// بارها و بارها int level = (int) getBattery () اجرا می شود ؛ // اگر سطح باتری در صورت (سطح == 100) {// سطح باتری فعلی را دریافت می کند به 100٪ می رسد try {getBT ()؛ // به ماژول بلوتوث متصل می شود openBT ()؛ // آن را باز می کند sendData ()؛ // داده های لازم را ارسال می کند closeBT ()؛ // شیء را می بندد (گرفتن IOException ex) { }} handler.postDelayed (قابل اجرا ، 5000) ؛ // تأخیر}} ؛ handler = new Handler ()؛ handler.postDelayed (قابل اجرا ، 0) ؛ }

شناور عمومی getBattery () {

Intent batteryIntent = registerReceiver (تهی ، جدید IntentFilter (Intent. ACTION_BATTERY_CHANGED)) ؛ // عملیاتی را ایجاد می کند که به باتری متصل می شود int level = batteryIntent.getIntExtra (BatteryManager. EXTRA_LEVEL ، -1) ؛ // سطح بهتر را در مقیاس int = batteryIntent.getIntExtra (BatteryManager. EXTRA_SCALE ، -1) ؛ // مقیاس باتری را می گیرد اگر (سطح == -1 || مقیاس == -1) {// در صورت برگشت اشتباه 50.0f ؛ } مقیاس شناور = (سطح/(شناور) مقیاس)*100.0f؛ // مقیاس مناسب بازده مقیاس را دریافت می کند ؛ // سطح را برمی گرداند}

void getBT () {// اتصالات احتمالی بلوتوث را دریافت می کند

mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter ()؛ // آداپتور را دریافت می کند اگر (! mBluetoothAdapter.isEnabled ()) {// اطمینان حاصل کند که تلفن دارای رنگ آبی در Intent enableBluetooth = قصد جدید (BluetoothAdapter. ACTION_REQUEST_ENABLE) باشد ؛ // درخواستها روشن نشود اگر startActivityForResult (enableBluetooth، 0)؛ } تنظیم pairedDevices = mBluetoothAdapter.getBondedDevices ()؛ // لیست بلوتوث متصل شده را دریافت می کند اگر (pairedDevices.size ()> 0) {// مطمئن شوید که برخی دستگاه ها برای (دستگاه BluetoothDevice: pairedDevices) {// از طریق دستگاه های if (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 () ؛ // قابلیت ارسال را آغاز می کند داده به ماژول arduino}

void sendData () کلاس IOException را پرتاب می کند که t را به آردوینو ارسال می کند

mmOutputStream.write ('t')؛ }

void closeBT () IOException را پرتاب می کند {// تمام اتصالات به آردوینو بسته می شود

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

مرحله 6: فایل ها

با تشکر از شما برای خواندن ، فایلهایی که در این پروژه استفاده شده است ضمیمه شده است

توصیه شده: