Mục lục:

Bộ sạc điện thoại tự động: 6 bước (có hình ảnh)
Bộ sạc điện thoại tự động: 6 bước (có hình ảnh)

Video: Bộ sạc điện thoại tự động: 6 bước (có hình ảnh)

Video: Bộ sạc điện thoại tự động: 6 bước (có hình ảnh)
Video: Có nên sạc điện thoại qua đêm #shorts 2024, Tháng mười một
Anonim
Bộ sạc điện thoại tự động
Bộ sạc điện thoại tự động

"Hướng dẫn này được tạo ra để đáp ứng yêu cầu dự án của Makecourse tại Đại học Nam Florida (www.makecourse.com)"

Ý tưởng đằng sau dự án này là tạo ra một thiết bị có thể sạc điện thoại, sau đó rút phích cắm khi điện thoại đạt 100%. Điều này sẽ ngăn chặn vấn đề sạc quá mức.

Bước 1: Thành phần nhựa

Thành phần nhựa
Thành phần nhựa
Thành phần nhựa
Thành phần nhựa
Thành phần nhựa
Thành phần nhựa
Thành phần nhựa
Thành phần nhựa

Có một số thành phần đã được sử dụng được in 3D. Các thành phần này bao gồm một đế, một giá đỡ cho bộ sạc, một giá đỡ và bộ bánh răng (một bánh răng bình thường và một bộ phận tuyến tính thay đổi chuyển động quay thành chuyển động thẳng) và một cơ sở để mọi thứ hoạt động. Các thành phần này sẽ được giải thích trong các đoạn sau. Theo thứ tự ngoại hình

Giá đỡ bộ sạc

Mục đích của việc này là để giữ bộ sạc điện thoại, hoặc ít nhất là cung cấp cho nó một cơ sở tốt hơn và bằng phẳng.

Cơ sở

Phần đế có các vòng cho giá đỡ điện thoại cũng như rãnh cho bộ bánh răng.

Đế giữ điện thoại

Giữ điện thoại, rõ ràng

Điện thoại Arm

Di chuyển và giữ điện thoại

Rack và Pinion Gear Set

Dùng để di chuyển bộ sạc điện thoại qua lại

Bước 2: Chia nhỏ các thành phần không được in 3D

Đây là những thành phần đã được mua cho dự án hoặc đã được sở hữu. Đối với một số phần tôi đã liên kết với chúng / các mặt hàng tương tự trên amazon, nhưng hãy thoải mái mua chúng ở bất cứ đâu.

Micro Servo:

Servo chuẩn 0-180:

Mô-đun nối tiếp Bluetooth HC-05: https://www.amazon.com/HC-05-Bl Bluetooth-Pass-th nhám…

Điện thoại và bộ sạc điện thoại

Arduino

Breadboard

Hộp hoặc thùng cho đế

Cảm biến cảm ứng:

Bước 3: Điện tử

Thiết bị điện tử
Thiết bị điện tử

Mặc dù vậy, mạch cho dự án này có thể yêu cầu một số, chủ yếu là do mô-đun HC-05. Nhiều mô-đun thuộc loại này có tốc độ khoảng 3,3V đến 6V, nằm trong phạm vi hoạt động của Arduino. Tuy nhiên, đối với giao tiếp nối tiếp, chân Rx đôi khi hoạt động tốt hơn chỉ với 3,3V. Như đã thấy trong sơ đồ trên, hai servo được nối với chân Vin trên Arduino. Điện áp bổ sung này có thể được cung cấp bởi bất cứ thứ gì, tôi đã sử dụng pin 9 volt. Cảm biến cảm ứng đã được cắm vào nguồn 5V trên Arduino. Điều này là do tất cả các thành phần gặp sự cố khi chạy ở cùng một điện áp. Cảm biến cảm ứng được gắn vào chân 2 nên nó có thể được sử dụng như một chân ngắt. Sau đó, mô-đun bluetooth được kết nối với các chân Rx và Tx để giao tiếp nối tiếp. Giữa chân Rx trên mô-đun và Tx trên Arduino là một điện trở 2 kilo ohm với một kilo ohm nối đất. Điều này giúp điều chỉnh điện áp đi vào.

Bước 4: Lắp ráp

cuộc họp
cuộc họp

Việc lắp ráp khá đơn giản.

  1. với một số loại keo siêu dính, gắn các servo của bạn vào vị trí của chúng, một cho bánh răng bằng vết cắt trên đế và một gần vị trí đế của điện thoại.
  2. Gắn cảm biến cảm ứng vào giá đỡ điện thoại để nó có thể biết khi nào điện thoại ở đó.
  3. Sau đó gắn bánh răng và cánh tay vào các servo tương ứng của chúng
  4. Đảm bảo rằng dây dẫn không ảnh hưởng đến các thành phần khác khi bạn lắp các thiết bị điện tử của mình vào

Bước 5: Mã

Có ba bộ mã sẽ được trình bày, một mã cho Arduino, được tạo trong IDE Arduino và hai mã được tạo trong Android Studio. Các ứng dụng Android đều giống nhau, ngoại trừ một ứng dụng đầy đủ theo dõi thời lượng pin và một ứng dụng thì không. Cái thứ hai dành cho mục đích thử nghiệm.

Mã Arduino

Điểm chính của mã này là vận hành cảm biến cảm ứng và động cơ, nó nhận lệnh từ điện thoại và thực hiện theo lệnh đó.

#include // gọi thư viện servo để chúng ta có thể điều khiển hai servo servosServo; Servo servo2; // tạo hai đối tượng servo cho mỗi động cơ servo int a = 0; // biến theo dõi để kiểm tra int q = 0; // một biến cho phép có độ trễ trước khi quá trình plugggin bắt đầu char c; // biến chứa thông điệp nối tiếp từ điện thoại void setup () {attachmentInterrupt (digitalPinToInterrupt (2), AH, FALLING); // đính kèm một ngắt đang rơi để biết chính xác khi nào cảm biến chạm xem khi nào điện thoại đang được đưa ra servo1.attach (10); servo2.attach (9); // khởi tạo hai servos Serial.begin (9600); // bắt đầu giao tiếp nối tiếp với tốc độ tương tự như tốc độ của mô-đun bluetooth servo2.write (20); // tự động đặt servos thành một vị trí bắt đầu servo1.write (180); }

void loop () {

if (Serial.available ()) {// điều này kiểm tra xem có thứ gì đến từ điện thoại qua các chân nối tiếp Tx và Rx c = Serial.read (); // đọc nội dung đến từ if (c == 't') {// nếu thiết bị nối tiếp đọc tại thời điểm đó có nghĩa là điện thoại đã được sạc đầy, quá trình rút phích cắm sẽ bắt đầu servo2.write (120); // rút phích cắm bộ sạc trễ (5000); // đợi để đảm bảo có thời gian để loại bỏ servo1.write (110); // di chuyển điện thoại sang vị trí thẳng đứng để báo hiệu //Serial.println(" tại đây "); mountInterrupt (digitalPinToInterrupt (2), AH, FALLING); // gắn lại ngắt}} if (q == 1) {// nếu điều kiện để cắm vào là đúng thì hãy bắt đầu với việc gắn bộ sạc trễ (10000); servo2.write (0); // di chuyển servo vào vị trí q = 0; // đặt lại điều kiện}}

void AH () {

//Serial.println("in "); servo1.write (180); // thả bệ điện thoại vào vị trí sạc q = 1; // bắt đầu phân vùng để tiếp tục quá trình // a = 1; detachInterrupt (digitalPinToInterrupt (2)); // loại bỏ ngắt, do đó sẽ không có bất kỳ sự cố nào xảy ra với ngắt bắt đầu khi không nên}

Ứng dụng Android

Ở đây tôi sẽ chỉ hiển thị ứng dụng phù hợp nhưng tệp mã thử nghiệm cũng sẽ được cung cấp, sự khác biệt duy nhất sẽ là loại bỏ lớp runnable và getBattery. Mã sê-ri được đề cập là mã tiêu chuẩn cho điện thoại kết nối với các thiết bị như mô-đun.

gói com.example.daniel.make; nhập android.bl Bluetooth. Bl BluetoothAdapter; nhập android.bl Bluetooth. Bl BluetoothDevice; nhập android.bl Bluetooth. Bl BluetoothSocket; nhập android.os. Handler; nhập android.support.v7.app. AppCompatActivity; nhập android.os. Bundle; nhập android.content. Intent; nhập android.content. IntentFilter; nhập android.os. BatteryManager; nhập java.io. IOException; nhập java.io. OutputStream; nhập java.util. Set; nhập java.util. UUID;

public class MainActivity mở rộng AppCompatActivity {

// tạo các đối tượng cần thiết Trình xử lý xử lý; // trợ giúp với vòng lặp Runnable runnable; // chạy liên tục BluetoothAdapter mBl BluetoothAdapter; BluetoothSocket mmSocket; BluetoothDevice mmDevice; OutputStream mmOutputStream; boolean dễ bay hơi stopWorker; private OutputStream outputStream; Chuỗi cuối cùng riêng tư DEVICE_NAME = "HC-05"; UUID cuối cùng riêng tư PORT_UUID = UUID.fromString ("00001101-0000-1000-8000-00805f9b34fb"); thiết bị BluetoothAdapter riêng; ổ cắm BluetoothSocket riêng; @Override protected void onCreate (Bundle saveInstanceState) {// là một tập hợp các hướng dẫn chạy khi ứng dụng được tạo super.onCreate (saveInstanceState); // displya create setContentView (R.layout.activity_main); runnable = new Runnable () {@Override public void run () {// chạy liên tục int level = (int) getBattery (); // lấy mức pin hiện tại if (level == 100) {// nếu mức pin đạt 100% hãy thử {getBT (); // kết nối với mô-đun bluetooth openBT (); // mở nó ra sendData (); // gửi dữ liệu cần thiết closeBT (); // đóng đối tượng} catch (IOException ex) { }} handler.postDelayed (runnable, 5000); // a delay}}; handler = new Handler (); handler.postDelayed (runnable, 0); }

public float getBattery () {

Intent batteryIntent = registerReceiver (null, new IntentFilter (Intent. ACTION_BATTERY_CHANGED))); // tạo hành động kết nối với pin int level = batteryIntent.getIntExtra (BatteryManager. EXTRA_LEVEL, -1); // nhận mức tốt hơn int scale = pinIntent.getIntExtra (BatteryManager. EXTRA_SCALE, -1); // lấy thang đo của pin if (level == -1 || scale == -1) {// trong trường hợp sai return 50.0f; } float batt = (level / (float) scale) * 100.0f; // lấy quy mô thích hợp trả về batt; // trả về level}

void getBT () {// nhận các kết nối bluetooth khả dụng

mBl BluetoothAdapter = BluetoothAdapter.getDefaultAdapter (); // lấy bộ điều hợp nếu (! mBl BluetoothAdapter.isEnabled ()) {// đảm bảo rằng điện thoại có răng xanh trên Intent enableBl Bluetooth = new Intent (BluetoothAdapter. ACTION_REQUEST_ENABLE); // yêu cầu nó được được bật nếu không startActivityForResult (enableBl Bluetooth, 0); } Đặt pairDevices = mBl BluetoothAdapter.getBondedDevices (); // lấy danh sách bluetooth liên kết nếu (pairDevices.size ()> 0) {// đảm bảo rằng có một số thiết bị cho (BluetoothDevice device: paiDevices) {// lặp lại thiết bị if (device.getName (). equals ("HC-05")) {// kiểm tra xem nó có đúng một mmDevice = device không; // lưu nó bị vỡ; }}}}

void openBT () ném IOException {

UUID uuid = UUID.fromString ("00001101-0000-1000-8000-00805f9b34fb"); // Chuẩn // SerialPortService ID mmSocket = mmDevice.createRfcommSocketToServiceRecord (uuid); // kết nối với thiết bị bằng id thích hợp mmSocket.connect (); // kết nối mmOutputStream = mmSocket.getOutputStream (); // bắt đầu khả năng gửi dữ liệu vào mô-đun arduino}

void sendData () ném IOException {// lớp gửi t tới arduino

mmOutputStream.write ('t'); }

void closeBT () ném IOException {// đóng tất cả các kết nối đến arduino

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

Bước 6: Tập tin

Cảm ơn bạn đã đọc, đính kèm là các tập tin đã được sử dụng trong dự án này

Đề xuất: