Inhoudsopgave:
- Stap 1: Kunststof onderdelen
- Stap 2: Uitsplitsing van niet 3D-geprinte componenten
- Stap 3: Elektronica
- Stap 4: Montage
- Stap 5: Coderen
- Stap 6: Bestanden
Video: Een automatische telefoonoplader: 6 stappen (met afbeeldingen)
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:19
"Deze instructable is gemaakt om te voldoen aan de projectvereiste van de Makecourse aan de University of South Florida (www.makecourse.com)"
Het idee achter dit project was om een apparaat te maken dat een telefoon kan opladen en vervolgens kan loskoppelen wanneer de telefoon 100% bereikt. Dit zou problemen met overladen stoppen.
Stap 1: Kunststof onderdelen
Er waren enkele componenten die werden gebruikt die 3D-geprint waren. Deze componenten omvatten een basis, een houder voor de oplader, een tandheugel-tandwielset (een normaal tandwiel en een lineair stuk dat de rotatie verandert in lineaire beweging), en een basis voor alles om op te werken. Deze onderdelen worden in de volgende paragrafen toegelicht. In volgorde van verschijnen
Oplader houder
Het doel hiervan is om de telefoonoplader vast te houden, of op zijn minst een betere en vlakkere basis te geven.
Baseren
De basis heeft ringen voor de telefoonhouder en een rail voor de versnellingsset.
Telefoon houder
Houdt de telefoon natuurlijk vast
Telefoonarm
Beweegt en houdt de telefoon vast
Tandheugeltandwielset
Wordt gebruikt om de telefoonoplader heen en weer te bewegen
Stap 2: Uitsplitsing van niet 3D-geprinte componenten
Dit zijn de componenten die voor het project zijn gekocht of al in het bezit zijn. Voor sommige onderdelen heb ik ze/soortgelijke items op amazon gelinkt, maar voel je vrij om ze overal te kopen.
Micro Servo:
Standaard 0-180 Servo:
HC-05 Bluetooth seriële module:
Telefoon en telefoonoplader
Arduino
Breadboard
Doos of bak voor basis
Aanraaksensor:
Stap 3: Elektronica
Het circuit voor dit project heeft misschien wat nodig, voornamelijk vanwege de HC-05-module. Veel van de modules van dit type hebben een snelheid van ongeveer 3,3V tot 6V, wat binnen het werkbereik van de Arduino ligt. Maar voor seriële communicatie werkt de Rx-pin soms beter met slechts 3,3V. Zoals te zien is in het bovenstaande diagram, zijn de twee servo's aangesloten op de Vin-pin op de Arduino. Deze extra spanning kan door alles geleverd worden, ik gebruikte een 9 volt batterij. De aanraaksensor was aangesloten op de 5V op de Arduino. Dit kwam omdat alle componenten moeite hadden om van dezelfde spanning af te komen. De aanraaksensor is bevestigd aan pin 2 en kan dus als pin-interrupt worden gebruikt. Vervolgens wordt de Bluetooth-module aangesloten op de Rx- en Tx-pinnen voor seriële communicatie. Tussen de Rx-pin op de module en Tx op de Arduino bevindt zich een weerstand van 2 kilo ohm met een verbinding van 1 kilo ohm met aarde. Dit helpt om de binnenkomende spanning te regelen.
Stap 4: Montage
De montage is vrij eenvoudig.
- met wat superlijm monteer je je servo's in hun posities, één voor de versnelling door de uitsparing op de basis en één in de buurt van waar de basis van de telefoon is.
- Bevestig de aanraaksensor aan de telefoonhouder, zodat deze weet wanneer de telefoon er is.
- Bevestig vervolgens het tandwiel en de arm aan hun respectieve servo's
- Zorg ervoor dat draden geen interferentie veroorzaken met andere componenten terwijl u uw elektronica vult
Stap 5: Coderen
Er zijn drie sets code die worden gepresenteerd, één code voor de Arduino, die is gemaakt in de Arduino IDE en twee codes die zijn gemaakt in Android Studio. De Android-apps zijn hetzelfde, behalve dat één de volledige app is die de levensduur van de batterij bijhoudt en de andere niet. De tweede is voor testdoeleinden.
Arduino-code
Het belangrijkste punt van deze code is om de aanraaksensor en motoren te bedienen, het ontvangt een commando van de telefoon en handelt ernaar.
#include // roept de servobibliotheek op zodat we de twee servo'sServo servo1 kunnen besturen; Servo servo2;//creëert twee servo-objecten voor elke servomotor int a=0;//volgvariabele voor het testen van int q=0;//een variabele die het mogelijk maakt dat er een vertraging is voordat het pluggin-proces begint char c;// variabele die het seriële bericht bevat van de telefoon void setup() { attachInterrupt(digitalPinToInterrupt(2), AH, FALLING);// voegt een vallende interrupt toe om precies te weten wanneer de aanraaksensor ziet wanneer de telefoon uit is op servo1.attach (10); servo2.attach (9);// initialiseert de twee servo's Serial.begin (9600);// begint de seriële communicatie met een snelheid die vergelijkbaar is met die van de Bluetooth-module servo2.write (20);// stelt de servo's automatisch in op een startpositie servo1.write(180); }
lege lus() {
if (Serial.available()){// dit controleert of er iets van de telefoon binnenkomt via de seriële pinnen Tx en Rx c=Serial.read();// leest wat er binnenkomt als (c== 't'){//als het seriële apparaat op leest, betekent dit dat de telefoon volledig is opgeladen, het loskoppelen begint servo2.write (120);// koppelt de vertraging van de oplader los (5000);// wacht om zeker te zijn er is tijd voor het verwijderen servo1.write(110);//zet de telefoon rechtop om //Serial.println("here"); attachInterrupt(digitalPinToInterrupt(2), AH, FALLING);//sluit de interrupt opnieuw aan } } if (q==1){//als de voorwaarde voor het inpluggen is, begin dan met het bevestigen van de ladervertraging (10000); servo2.write(0);//verplaatst servo naar positie q=0;//reset condition} }
ongeldige AH(){
//Serial.println("in"); servo1.write(180);// laat het telefoonplatform in de oplaadpositie q=1;//start de conditie om het proces voort te zetten //a=1; detachInterrupt (digitalPinToInterrupt(2));// koppelt de interrupt los, zodat er geen problemen zijn met het starten van de interrupt wanneer dat niet zou moeten}
Android-app
Hier zal ik alleen de juiste app weergeven, maar het testcodebestand zal ook worden gegeven, het enige verschil is het verwijderen van de runnable en getBattery-klasse. De genoemde seriële code is degene die standaard is voor telefoons die verbinding maken met apparaten zoals de module.
pakket com.voorbeeld.daniel.make; android.bluetooth. BluetoothAdapter importeren; android.bluetooth. BluetoothDevice importeren; android.bluetooth. BluetoothSocket importeren; android.os. Handler importeren; android.support.v7.app. AppCompatActivity importeren; android.os. Bundel importeren; android.content importeren. Intentie; android.content. IntentFilter importeren; android.os. BatteryManager importeren; import java.io. IOException; import java.io. OutputStream; import java.util. Set; java.util. UUID importeren;
openbare klasse MainActivity breidt AppCompatActivity uit {
// het creëren van noodzakelijke objecten Handler-handler;//helpt met de lus Runnable runnable;//loopt continu BluetoothAdapter mBluetoothAdapter; BluetoothSocket mmSocket; BluetoothApparaat mmApparaat; OutputStream mmOutputStream; vluchtige boolean stopWorker; privé OutputStream outputStream; privé finale String DEVICE_NAME="HC-05"; privé finale UUID PORT_UUID=UUID.fromString("00001101-0000-1000-8000-000805f9b34fb"); privé BluetoothAdapter-apparaat; privé BluetoothSocket-aansluiting; @Override protected void onCreate(Bundle savedInstanceState) {//is een set instructies die wordt uitgevoerd wanneer de app wordt gemaakt super.onCreate(savedInstanceState);//displya creation setContentView(R.layout.activity_main); runnable = new Runnable() { @Override public void run() {//wordt herhaaldelijk uitgevoerd int level = (int) getBattery();// haalt het huidige batterijniveau op als (level==100){//if het batterijniveau bereikt 100% probeer {getBT();//maakt verbinding met de bluetooth-module openBT();//opent het sendData();//stuurt de benodigde gegevens closeBT();//sluit het object} catch (IOException ex) { } } handler.postDelayed (uitvoerbaar, 5000);//een vertraging } }; handler = nieuwe handler(); handler.postDelayed (uitvoerbaar, 0); }
openbare float getBattery() {
Intent batteryIntent= registerReceiver(null, new IntentFilter(Intent. ACTION_BATTERY_CHANGED));// maakt de actie die verbinding maakt met de batterij int level = batteryIntent.getIntExtra(BatteryManager. EXTRA_LEVEL, -1);//krijgt het betere niveau int scale = batteryIntent.getIntExtra(BatteryManager. EXTRA_SCALE, -1);//haalt de schaal van de batterij als (niveau == -1 || schaal == -1) {//in geval van misstap return 50.0f; } float batt = (level/(float)scale)*100.0f;//krijgt de juiste scale return batt;//retourneert het niveau}
void getBT(){//krijgt de mogelijke bluetooth-verbindingen
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();//krijgt de adapter if(!mBluetoothAdapter.isEnabled()) {//zorgt ervoor dat de telefoon blue tooth heeft op Intent enableBluetooth = new Intent (BluetoothAdapter. ACTION_REQUEST_ENABLE);//verzoekt om ingeschakeld indien niet startActivityForResult(Bluetooth inschakelen, 0); } Set pairedDevices = mBluetoothAdapter.getBondedDevices();//haalt de lijst met gekoppelde bluetooth op if(pairedDevices.size() > 0) {//zorgt ervoor dat er een aantal apparaten zijn voor (BluetoothDevice device: pairedDevices) {// loopt door de devices if(device.getName().equals("HC-05")) {//controleert of het de juiste is mmDevice = device;//saves it break; } } } }
void openBT() gooit IOException {
UUID uuid = UUID.fromString ("00001101-0000-1000-8000-000805f9b34fb"); //Standard //SerialPortService ID mmSocket = mmDevice.createRfcommSocketToServiceRecord(uuid);//maakt verbinding met het apparaat met de juiste id mmSocket.connect();//verbindt mmOutputStream = mmSocket.getOutputStream();//start de mogelijkheid om te verzenden gegevens naar de Arduino-module }
void sendData() gooit IOException {//class die de t naar de Arduino stuurt
mmOutputStream.write('t'); }
void closeBT() gooit IOException {//sluit alle verbindingen met de arduino
stopWorker = waar; mmOutputStream.close(); mmSocket.close(); } }
Stap 6: Bestanden
Bedankt voor het lezen, bijgevoegd zijn de bestanden die in dit project zijn gebruikt
Aanbevolen:
Een Power Line-filter ontwerpen en bouwen voor een Android-telefoonoplader - Ajarnpa
Een Power Line-filter ontwerpen en bouwen voor een Android-telefoonoplader: in deze Instructable zal ik laten zien hoe u een standaard USB-naar-mini-USB-kabel kunt nemen, deze in het midden kunt scheiden en een filtercircuit kunt plaatsen dat de overmatige ruis of hash geproduceerd door een typische Android-voeding. Ik heb een draagbare m
Draagbare telefoonoplader - een geïllustreerde gids: 5 stappen
Draagbare telefoonoplader - een geïllustreerde gids: Beschrijving: Hieronder volgt een geïllustreerde gids over hoe u een gewone Altoids-container in slechts een paar eenvoudige stappen in een draagbare oplader voor mobiele telefoons kunt veranderen. Deze batterij is perfect voor studenten, professionals of buitenmannen die onderweg zijn.Tijd
Een automatische 12V-batterijlader maken: 16 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"
Hoe maak je een automatische 12V batterijlader: Hey! iedereen Mijn naam is Steve.Vandaag laat ik je zien hoe je een 12v acculader maakt Klik hier om de video te bekijkenLaten we beginnen
Een computer demonteren met eenvoudige stappen en afbeeldingen: 13 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"
Een computer demonteren met eenvoudige stappen en afbeeldingen: dit is een instructie over het demonteren van een pc. De meeste basiscomponenten zijn modulair en gemakkelijk te verwijderen. Wel is het belangrijk dat je er goed over georganiseerd bent. Dit zal helpen voorkomen dat u onderdelen kwijtraakt, en ook bij het maken van de hermontage e
Voeg een pc-synchronisatie-aansluiting toe aan een Nikon Sc-28 Ttl-kabel (gebruik de automatische instellingen voor een aan-cameraflits en trigger-uit-cameraflitsen!!): 4 stappen
Voeg een Pc Sync-aansluiting toe aan een Nikon Sc-28 TTL-kabel (gebruik Auto-instellingen voor een on Camera Flash en Trigger Off Camera Flashes !!): in deze instructable laat ik je zien hoe je een van die vervelende gepatenteerde 3-pins TTL-connectoren op de zijkant van een Nikon SC-28 off-camera TTL-kabel en vervang deze door een standaard pc-synchronisatieconnector. hierdoor kunt u een speciale flitser gebruiken, s