Inhaltsverzeichnis:
- Schritt 1: Kunststoffkomponenten
- Schritt 2: Aufschlüsselung von nicht 3D-gedruckten Komponenten
- Schritt 3: Elektronik
- Schritt 4: Montage
- Schritt 5: Code
- Schritt 6: Dateien
Video: Ein automatisches Telefonladegerät - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:21
"Dieses instructable wurde in Erfüllung der Projektanforderung des Makecourse an der University of South Florida (www.makecourse.com) erstellt."
Die Idee hinter diesem Projekt bestand darin, ein Gerät zu entwickeln, das ein Telefon aufladen und dann ausstecken kann, wenn das Telefon 100 % erreicht hat. Dies würde Probleme mit Überladung stoppen.
Schritt 1: Kunststoffkomponenten
Es wurden einige Komponenten verwendet, die 3D-gedruckt wurden. Diese Komponenten bestanden aus einer Basis, einem Halter für das Ladegerät, einem Zahnstangen- und Ritzelsatz (ein normales Zahnrad und ein lineares Teil, das die Drehung in eine lineare Bewegung umwandelt) und eine Basis für alles, was betrieben werden kann. Diese Komponenten werden in den folgenden Abschnitten erläutert. In der Reihenfolge des Erscheinens
Ladegeräthalter
Der Zweck besteht darin, das Telefonladegerät zu halten oder ihm zumindest eine bessere und ebene Basis zu geben.
Base
Die Basis hat Ringe für die Telefonhalterung sowie eine Schiene für das Zahnrad.
Telefonhalter
Hält natürlich das Telefon
Telefonarm
Bewegt und hält das Telefon
Zahnstangen- und Ritzelsatz
Wird verwendet, um das Telefonladegerät hin und her zu bewegen
Schritt 2: Aufschlüsselung von nicht 3D-gedruckten Komponenten
Dies sind die Komponenten, die entweder für das Projekt gekauft wurden oder bereits im Besitz waren. Für einige der Teile habe ich sie / ähnliche Artikel auf Amazon verlinkt, aber Sie können sie gerne überall erwerben.
Micro Servo:
Standard 0-180 Servo:
HC-05 Bluetooth Serielles Modul:
Telefon und Telefonladegerät
Arduino
Steckbrett
Box oder Mülleimer für Basis
Berührungssensor:
Schritt 3: Elektronik
Die Schaltung für dieses Projekt kann jedoch einiges erfordern, hauptsächlich aufgrund des HC-05-Moduls. Viele der Module dieses Typs sind für ungefähr 3,3 V bis 6 V ausgelegt, was im Betriebsbereich des Arduino liegt. Für die serielle Kommunikation funktioniert der Rx-Pin jedoch manchmal mit nur 3,3 V besser. Wie im obigen Diagramm zu sehen sind die beiden Servos an den Vin-Pin des Arduino angeschlossen. Diese zusätzliche Spannung kann von allem geliefert werden, ich habe eine 9-Volt-Batterie verwendet. Der Berührungssensor wurde an die 5V des Arduino angeschlossen. Dies lag daran, dass alle Komponenten Probleme hatten, mit der gleichen Spannung zu laufen. Der Berührungssensor ist an Pin 2 angeschlossen und kann somit als Pin-Interrupt verwendet werden. Dann wird das Bluetooth-Modul mit den Rx- und Tx-Pins für die serielle Kommunikation verbunden. Zwischen dem Rx-Pin am Modul und Tx am Arduino befindet sich ein 2-Kilo-Ohm-Widerstand mit einem 1-Kilo-Ohm-Anschluss an Masse. Dies hilft, die eingehende Spannung zu regulieren.
Schritt 4: Montage
Der Zusammenbau ist recht einfach.
- Montieren Sie Ihre Servos mit etwas Sekundenkleber in ihren Positionen, eine für das Zahnrad am Ausschnitt an der Basis und eine in der Nähe der Basis des Telefons.
- Bringen Sie den Berührungssensor an der Telefonhalterung an, damit er weiß, wann das Telefon da ist.
- Befestigen Sie dann das Zahnrad und den Arm an den jeweiligen Servos
- Stellen Sie sicher, dass die Drähte keine anderen Komponenten stören, wenn Sie Ihre Elektronik einfüllen
Schritt 5: Code
Es werden drei Codesätze präsentiert, ein Code für das Arduino, der in der Arduino IDE erstellt wurde und zwei Codes, die in Android Studio erstellt wurden. Die Android-Apps sind die gleichen, außer dass eine die vollständige App ist, die die Akkulaufzeit verfolgt und eine nicht. Der zweite ist zu Testzwecken.
Arduino-Code
Der Hauptzweck dieses Codes besteht darin, den Berührungssensor und die Motoren zu bedienen, er empfängt einen Befehl vom Telefon und reagiert darauf.
#include // ruft die Servobibliothek auf, damit wir die beiden Servos steuern könnenServo servo1; Servo servo2; // erzeugt zwei Servo-Objekte für jeden Servomotor int a = 0; // Tracking-Variable zum Testen int q = 0; // eine Variable, die es ermöglicht, eine Verzögerung zu geben, bevor der Pluggin-Prozess beginnt char c; // Variable, die die serielle Nachricht vom Telefon enthält void setup () { attachInterrupt (digitalPinToInterrupt(2), AH, FALLING); // fügt einen fallenden Interrupt hinzu, um genau zu wissen, wann der Berührungssensor erkennt, wenn das Telefon auf servo1.attach aus ist (10); servo2.attach(9); // initialisiert die beiden Servos Serial.begin (9600); // beginnt die serielle Kommunikation mit einer Geschwindigkeit ähnlich der des Bluetooth-Moduls servo2.write (20); // auto setzt die Servos auf eine Startposition servo1.write(180); }
Leere Schleife () {
if (Serial.available()){// Dies prüft, ob etwas vom Telefon über die seriellen Pins Tx und Rx eingeht c=Serial.read(); // liest, was von if (c== 't'){//Wenn das serielle Gerät dann liest, bedeutet dies, dass das Telefon vollständig aufgeladen ist, der Trennvorgang beginnt servo2.write (120); // trennt die Ladeverzögerung (5000); // wartet, um sicherzustellen, dass es ist Zeit für die Entfernung servo1.write(110); // bewegt das Telefon in eine aufrechte Position, um //Serial.println ("hier"); attachInterrupt(digitalPinToInterrupt(2), AH, FALLING); // fügt den Interrupt erneut an}} if (q==1){//wenn die Bedingung für das Einstecken erfüllt ist, dann beginnen Sie mit dem Anhängen der Ladeverzögerung (10000); servo2.write (0); // bewegt Servo in Position q = 0; // Bedingung zurücksetzen } }
nichtig AH(){
//Seriell.println("in"); servo1.write(180); // lässt die Telefonplattform in die Ladeposition q = 1; // startet die Bedingung, um den Vorgang fortzusetzen // a = 1; detachInterrupt (digitalPinToInterrupt(2)); // trennt den Interrupt, damit es keine Probleme mit dem Starten des Interrupts gibt, wenn er nicht starten sollte }
Android App
Hier werde ich nur die richtige App anzeigen, aber auch die Testcodedatei geben, der einzige Unterschied ist das Entfernen der runnable- und getBattery-Klasse. Der erwähnte Seriennummerncode ist der Standard für Telefone, die mit Geräten wie dem Modul verbunden sind.
Paket com.example.daniel.make; import android.bluetooth. BluetoothAdapter; android.bluetooth. BluetoothDevice importieren; android.bluetooth. BluetoothSocket importieren; android.os. Handler importieren; android.support.v7.app. AppCompatActivity importieren; android.os. Bundle importieren; android.content. Intent importieren; import android.content. IntentFilter; android.os. BatteryManager importieren; import java.io. IOException; java.io. OutputStream importieren; java.util. Set importieren; java.util. UUID importieren;
öffentliche Klasse MainActivity erweitert AppCompatActivity {
// notwendige Objekte erstellen Handler-Handler; // hilft bei der Schleife Runnable runnable; // läuft kontinuierlich BluetoothAdapter mBluetoothAdapter; BluetoothSocket mmSocket; Bluetooth-Gerät mmGerät; OutputStream mmOutputStream; volatile boolescher Wert stopWorker; privater OutputStream outputStream; private finale Zeichenfolge DEVICE_NAME="HC-05"; private finale UUID PORT_UUID=UUID.fromString("00001101-0000-1000-8000-00805f9b34fb"); privates BluetoothAdapter-Gerät; private BluetoothSocket-Buchse; @Override protected void onCreate(Bundle savedInstanceState) {//ist eine Reihe von Anweisungen, die ausgeführt werden, wenn die App erstellt wird super.onCreate(savedInstanceState);//displya Creation setContentView(R.layout.activity_main); runnable = new Runnable() { @Override public void run() {//läuft wiederholt int level = (int) getBattery();// Ruft den aktuellen Akkustand ab if (level==100){//wenn der Akkustand erreicht 100% try { getBT(); // verbindet sich mit dem Bluetooth-Modul openBT (); // öffnet es sendData (); // sendet die notwendigen Daten closeBT (); // schließt das Objekt } catch (IOException ex) { } } handler.postDelayed(runnable, 5000); // eine Verzögerung } }; Handler = neuer Handler (); handler.postDelayed (ausführbar, 0); }
öffentlicher Schwimmer getBattery() {
Intent batteryIntent= registerReceiver(null, new IntentFilter(Intent. ACTION_BATTERY_CHANGED));// erstellt die Aktion, die eine Verbindung zum Akku herstellt int level = batteryIntent.getIntExtra(BatteryManager. EXTRA_LEVEL, -1);//erhält den besseren Level int scale = BatteryIntent.getIntExtra(BatteryManager. EXTRA_SCALE, -1); // Ruft die Skala der Batterie ab if (level == -1 || scale == -1) {//bei Fehltritt return 50.0f; } float batt = (level/(float)scale)*100.0f;//erhält die richtige Scale Return batt; // gibt den Level zurück }
void getBT() {//erhält die möglichen Bluetooth-Verbindungen
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); // Ruft den Adapter ab if(!mBluetoothAdapter.isEnabled()) {//Stellt sicher, dass das Telefon über Bluetooth verfügt eingeschaltet, wenn nicht startActivityForResult(enableBluetooth, 0); } Set pairedDevices = mBluetoothAdapter.getBondedDevices(); // Ruft die Liste der verbundenen Bluetooth ab if(pairedDevices.size() > 0) {//Stellt sicher, dass es einige Geräte gibt für(BluetoothDevice device: pairedDevices) {//Schleife durch die Geräte if(device.getName().equals("HC-05")) {//überprüft ob es das richtige ist mmDevice = device;//spart es break; } } } }
void openBT() wirft IOException {
UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805f9b34fb"); //Standard //SerialPortService ID mmSocket = mmDevice.createRfcommSocketToServiceRecord(uuid); // verbindet sich mit dem Gerät mit der richtigen ID mmSocket.connect();// verbindet mmOutputStream = mmSocket.getOutputStream();//startet die Fähigkeit zu senden Daten zum Arduino-Modul }
void sendData() wirft IOException {//class, die das t an das arduino sendet
mmOutputStream.write('t'); }
void closeBT() wirft IOException {//schließt alle Verbindungen zum Arduino
stopWorker = wahr; mmOutputStream.close(); mmSocket.close(); } }
Schritt 6: Dateien
Vielen Dank fürs Lesen, im Anhang sind die Dateien, die in diesem Projekt verwendet wurden
Empfohlen:
On Off Latch-Schaltung mit UC. Ein Druckknopf. Ein Stift. Diskrete Komponente.: 5 Schritte
On Off Latch-Schaltung mit UC. Ein Druckknopf. Ein Stift. Discrete Component.: Hallo zusammen, habe im Netz nach einer Ein/Aus-Schaltung gesucht. Alles, was ich fand, war nicht das, was ich suchte. Ich habe mit mir selbst gesprochen, es gibt unbedingt einen Weg dazu. Das habe ich gebraucht. - Nur ein Druckknopf zum Ein- und Ausschalten. - Muss nur
EIN ALTES HANDY (NOKIA 6600) IN EIN SUPERGADGET-MIKROCOMPUTER VERWANDELN: 37 Schritte
WIE MAN EIN ALTES HANDY (NOKIA 6600) IN EIN SUPERGADGET-MIKROCOMPUTER VERWANDELT: http://www.internetsecretbook.com https://www.youtube.com/thebibleformulaInmitten der Schwierigkeit liegt die Chance. - Albert Einstein Das Nokia 6600 bietet neue fortschrittliche Bildgebungsfunktionen, darunter ein helles TFT-Display mit 65.536 Farben und ca
So richten Sie ein Heimnetzwerk ein: 6 Schritte
So richten Sie ein Heimnetzwerk ein: Das Einrichten eines Netzwerks kann zunächst entmutigend klingen, aber sobald Sie alles haben, was Sie brauchen, ist es sehr einfach. Die traditionelle Einrichtung erfordert ein Modem und einen Router, aber einige benötigen möglicherweise mehr und andere weniger. Es gibt viele verschiedene
Wie man ein automatisches Licht macht – wikiHow
Wie man ein automatisches Licht macht: Dies ist eine einfache automatische Lichtschaltung
So schließen Sie ein Mini-HiFi-Regalsystem (Soundsystem) richtig an und richten es ein: 8-Schritte (mit Bildern)
So schließen Sie ein Mini-HiFi-Regalsystem (Soundsystem) richtig an und richten es ein: Ich bin ein Mensch, der gerne Elektrotechnik lernt. Ich bin eine High School an der Ann Richards School for Young Women Leaders. Ich mache dies anweisbar, um jedem zu helfen, der seine Musik von einem Mini LG HiFi Shelf Syste genießen möchte