INHOUDSOPGAWE:
- Stap 1: Plastiekkomponente
- Stap 2: Verdeel die komponente wat nie in 3D gedruk is nie
- Stap 3: Elektronika
- Stap 4: Montering
- Stap 5: Kode
- Stap 6: lêers
Video: N Outomatiese laaier: 6 stappe (met foto's)
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:27
"Hierdie instruksies is geskep ter voldoening aan die projekvereiste van die Makecourse aan die Universiteit van Suid -Florida (www.makecourse.com)"
Die idee agter hierdie projek was om 'n toestel te skep wat 'n telefoon kan laai, en dit dan kan ontkoppel wanneer die telefoon 100%bereik. Dit sal probleme met te veel laai stop.
Stap 1: Plastiekkomponente
Daar was 'n paar komponente wat 3D gedruk is. Hierdie komponente bestaan uit 'n basis, 'n houer vir die laaier, 'n tandwielstel ('n normale rat en 'n lineêre stuk wat die rotasie na lineêre beweging verander) en 'n basis vir alles waarop u kan werk. Hierdie komponente sal in die volgende paragrawe verduidelik word. In volgorde van voorkoms
Laaierhouer
Die doel hiervan is om die telefoonoplaaier vas te hou, of dit ten minste 'n beter en gelyk basis te gee.
Basis
Die basis het ringe vir die telefoonhouer en 'n band vir die ratkas.
Telefoonhouer
Hou natuurlik die telefoon vas
Telefoonarm
Beweeg en hou die telefoon vas
Rack and Pinion -ratstel
Word gebruik om die telefoonlaaier heen en weer te skuif
Stap 2: Verdeel die komponente wat nie in 3D gedruk is nie
Dit is die komponente wat óf vir die projek gekoop is óf reeds besit is. Vir sommige van die onderdele het ek daaraan gekoppel/soortgelyke items op Amazon, maar kan dit gerus oral kry.
Micro Servo:
Standaard 0-180 servo:
Seriële module HC-05 Bluetooth:
Telefoon en telefoonlaaier
Arduino
Broodbord
Boks of asblik vir basis
Raaksensor:
Stap 3: Elektronika
Die kring vir hierdie projek kan egter 'n paar vereis, hoofsaaklik as gevolg van die HC-05-module. Baie van die modules van hierdie tipe is ongeveer 3,3V tot 6V, wat in die werkingsgebied van die Arduino is. Maar vir seriële kommunikasie werk die Rx -pen soms beter met slegs 3.3V. Soos in die diagram hierbo gesien, word die twee servo's aan die Vin -pen op die Arduino gekoppel. Hierdie ekstra spanning kan deur alles verskaf word; ek het 'n 9 volt battery gebruik. Die aanraaksensor is op die 5V op die Arduino ingeskakel. Dit was omdat al die komponente probleme ondervind het om met dieselfde spanning af te loop. Die raaksensor is aan pen 2 geheg, sodat dit as 'n penonderbreking gebruik kan word. Dan word die bluetooth -module gekoppel aan die Rx- en Tx -penne vir seriële kommunikasie. Tussen die Rx -pen op die module en Tx op die Arduino is 'n 2 kilo -ohm -weerstand met 'n 1 -kilo -ohm -aansluiting op die grond. Dit help om die spanning wat ingaan, te reguleer.
Stap 4: Montering
Die samestelling is redelik eenvoudig.
- met 'n bietjie supergom, monteer u servo's in hul posisie, een vir die rat by die uitsparing op die basis en een naby die basis van die telefoon.
- Koppel die raaksensor aan die telefoonhouer sodat hy kan weet wanneer die telefoon daar is.
- Bevestig dan die rat en arm aan hul onderskeie servo's
- Maak seker dat drade nie inmeng met ander komponente terwyl u u elektronika invul nie
Stap 5: Kode
Daar sal drie stelle kode aangebied word, een kode vir die Arduino, wat in die Arduino IDE geskep is en twee kodes wat in Android Studio gemaak is. Die Android -programme is dieselfde, behalwe dat een die volledige app is wat die batterylewe volg en een nie. Die tweede is vir toetsdoeleindes.
Arduino -kode
Die belangrikste punt van hierdie kode is om die aanraaksensor en motors te gebruik, dit ontvang 'n opdrag van die telefoon en reageer daarop.
#include // bel die servobiblioteek sodat ons die twee servosServo servo1 kan beheer; Servo servo2; // skep twee servo -voorwerpe vir elke servomotor int a = 0; // opsporingsveranderlike vir die toets van int q = 0; // 'n veranderlike wat toelaat dat daar 'n vertraging is voordat die inpropproses begin met c; // veranderlike wat die reeksboodskap van die opstel van die telefoon se leemte () {attachInterrupt (digitalPinToInterrupt (2), AH, FALLING) bevat; // voeg 'n vallende onderbreking aan om presies te weet wanneer die raaksensor sien wanneer die telefoon op servo1.attach is (10); servo2.attach (9); // initialiseer die twee servo's Serial.begin (9600); // begin die seriële kommunikasie teen 'n tempo soortgelyk aan dié van die bluetooth -module servo2.write (20); // stel die servo's outomaties in op 'n beginposisie servo1.write (180); }
leemte -lus () {
if (Serial.available ()) {// dit kontroleer of daar iets uit die telefoon kom oor die seriële penne Tx en Rx c = Serial.read (); // lees waaruit dit kom as (c == 't') {// as die reeksapparaat dan lees, beteken dit dat die telefoon volledig opgelaai is, begin die ontkoppelingsproses met servo2.write (120); // ontkoppel die laaiervertraging (5000); // wag om seker te maak daar is tyd vir die verwydering servo1.write (110); // beweeg die telefoon in 'n regop posisie om //Serial.println("here ") aan te dui; attachInterrupt (digitalPinToInterrupt (2), AH, FALLING); // maak die onderbreking weer vas}} as (q == 1) {// as die toestand vir die inprop is, begin dan met die aanheg van die laaiervertraging (10000); servo2.write (0); // skuif servo in posisie q = 0; // herstel toestand}}
nietig AH () {
//Serial.println("in "); servo1.write (180); // laat die telefoonplatform in die laaiposisie val q = 1; // begin die voorwaarde om die proses voort te sit // a = 1; detachInterrupt (digitalPinToInterrupt (2)); // maak die onderbreking los, sodat daar geen probleme met die onderbreking sal wees as dit nie begin nie}
Android App
Hier sal ek slegs die regte app vertoon, maar die lêer van die toetskode sal ook gegee word; die enigste verskil is die verwydering van die hardloop- en getBattery -klas. Die reeksreëlkode is die standaard wat gebruik word vir telefone wat met toestelle soos die module verbind word.
pakket com.example.daniel.make; invoer android.bluetooth. BluetoothAdapter; invoer android.bluetooth. BluetoothDevice; invoer android.bluetooth. BluetoothSocket; invoer android.os. Handler; voer android.support.v7.app. AppCompatActivity in; voer android.os. Bundle in; invoer android.content. Intent; voer android.content. IntentFilter in; voer android.os. BatteryManager in; invoer java.io. IOException; voer java.io. OutputStream in; invoer java.util. Set; invoer java.util. UUID;
openbare klas MainActivity brei AppCompatActivity {
// die skep van nodige voorwerpe Hanteerder hanteerder; // help met die lus Loopbare loopbare; // loop voortdurend BluetoothAdapter mBluetoothAdapter; BluetoothSocket mmSocket; Bluetooth -toestel mm -toestel; OutputStream mmOutputStream; vlugtige booleaanse stopWorker; private OutputStream outputStream; privaat finale snaar DEVICE_NAME = "HC-05"; private finale UUID PORT_UUID = UUID.fromString ("00001101-0000-1000-8000-00805f9b34fb"); privaat Bluetooth -adapter; privaat Bluetooth -aansluiting; @Override protected void onCreate (Bundle savedInstanceState) {// is 'n stel instruksies wat uitgevoer word wanneer die app super.onCreate (saveInstanceState) geskep word; // displya creation setContentView (R.layout.activity_main); runnable = new Runnable () {@Override public void run () {// loop herhaaldelik int level = (int) getBattery (); // kry die huidige batteryniveau as (level == 100) {// as die batteryniveau bereik 100% probeer {getBT (); // maak verbinding met die Bluetooth -module openBT (); // maak dit sendData (); // stuur die nodige data closeBT (); // sluit die voorwerp} catch (IOException ex) { }} handler.postDelayed (hardloopbaar, 5000); // 'n vertraging}}; hanteerder = nuwe Hanteerder (); handler.postDelayed (hardloopbaar, 0); }
openbare float getBattery () {
Intent batteryIntent = registerReceiver (null, new IntentFilter (Intent. ACTION_BATTERY_CHANGED)); // skep die aksie wat aansluit by die battery int level = batteryIntent.getIntExtra (BatteryManager. EXTRA_LEVEL, -1); // kry die beter vlak int skaal = batteryIntent.getIntExtra (BatteryManager. EXTRA_SCALE, -1); // kry die skaal van die battery as (vlak == -1 || skaal == -1) {// in geval van foutopbrengs 50.0f; } float batt = (vlak/(float) skaal)*100.0f; // kry die regte skaal retour slag; // gee die vlak terug}
void getBT () {// kry die moontlike bluetooth -verbindings
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter (); // kry die adapter as (! mBluetoothAdapter.isEnabled ()) {// seker maak dat die telefoon 'n blou tand het op Intent enableBluetooth = new Intent (BluetoothAdapter. ACTION_REQUEST_ENABLE); // vra dat dit moet wees aangeskakel as nie startActivityForResult (enableBluetooth, 0); } Stel pairedDevices = mBluetoothAdapter.getBondedDevices (); // kry die lys met gebinde bluetooth as (pairedDevices.size ()> 0) {// seker maak dat daar 'n paar toestelle is vir (BluetoothDevice -toestel: pairedDevices) {// deur die toestelle as (device.getName (). gelyk is aan ("HC-05")) {// kyk of dit die regte mmDevice = device is; // stoor dit breek; }}}}
leegte openBT () gooi IOException {
UUID uuid = UUID.fromString ("00001101-0000-1000-8000-00805f9b34fb"); // Standard // SerialPortService ID mmSocket = mmDevice.createRfcommSocketToServiceRecord (uuid); // maak verbinding met die toestel met die regte ID mmSocket.connect (); // verbind mmOutputStream = mmSocket.getOutputStream (); // begin die vermoë om te stuur data na die arduino -module}
void sendData () gooi IOException {// klas wat die t na die arduino stuur
mmOutputStream.write ('t'); }
void closeBT () gooi IOException {// sluit al die verbindings met die arduino
stopWorker = waar; mmOutputStream.close (); mmSocket.close (); }}
Stap 6: lêers
Dankie dat u gelees het, die lêers wat in hierdie projek gebruik is, is aangeheg
Aanbeveel:
N Ou laaier? Nee, dit is 'n RealTube18 all-Tube kitaar koptelefoonversterker en pedaal: 8 stappe (met foto's)
N Ou laaier? Nee, dit is 'n koptelefoonversterker en pedaal van RealTube18 met 'n buis vir almal: OORSIG: Wat om te doen tydens 'n pandemie, met 'n verouderde nikkel-kadmium-batterylaaier, en 60+ jaar oud, verouderde motorradio-vakuumbuise wat moet sit en herwin moet word? Hoe gaan dit met die ontwerp en bou van 'n gewone buis, lae spanning, algemene gereedskapbattery
Mobiele laaier vir noodgevalle met DC -motor: 3 stappe (met foto's)
Mobiele noodlader met behulp van DC -motor: inleiding: dit is 'n stokperdjie -projek wat deur almal gemaak kan word, volgens 'n paar eenvoudige instruksies. Die laaier werk op die hoof van DC -motor wat gebruik word as 'n kragopwekker wat meganiese energie na elektriese energie omskakel. Maar sedert die spanning
MintyBoost! - Klein USB-laaier met batterye: 26 stappe (met foto's)
MintyBoost! - USB-laaier met 'n klein battery: hierdie projek bevat 'n klein & eenvoudige, maar baie kragtige USB -laaier vir u mp3 -speler, kamera, selfoon en enige ander apparaat wat u kan aansluit om 'n USB -poort te laai! Die laaikringe en 2 AA -batterye pas in 'n Altoids -gomblik, en
Hack u usb-raketlanseerder in 'n 'outomatiese mikpunt vir outomatiese toerusting': ses stappe
Hack u usb-raketlanseerder in 'n 'outomatiese mikpunt vir outomatiese toerusting': hoe u u usb-raketlanseerder op sy eie kan laat mik. Hierdie instruksies sal u leer om u usb -raketlanseerder in 'n outorent te verander wat IR -teikens kan vind en daarop gemik is. (jammer net IR -teikens)
Ultra draagbare USB -laaier met koel omhulsel: 3 stappe (met foto's)
Ultra draagbare usb -laaier met koel omhulsel: ek het onlangs net begin geocaching en het my garmin -motor -gps gebruik. Dit werk redelik goed, behalwe dat 'n lang dag (of nag) die battery kan doodmaak. Ek is geïnspireer deur hierdie instruksies: DIY meer effektiewe langdurige USB of enige laaier nou