Uplug Charger - IPhone (Oplaad Loskoppeler)

by karen_alice in Circuits > Arduino

190 Views, 0 Favorites, 0 Comments

Uplug Charger - IPhone (Oplaad Loskoppeler)

Cover image Instructables ITTT.jpg

Voel je je schuldig dat je 's nachts je telefoon aan de oplader laat? Ik heb dat dus best vaak. Wat als de levensduur van mijn mobiel kleiner wordt?

Daarom heb ik een automatisch apparaatje gemaakt die je oplader uit je telefoon haalt. Deze werkt door middel van een voice module die naar jouw stem en naar die van Siri kan luisteren.

De oplader loskoppeler heeft een houten behuizing, waardoor het makkelijk te integreren is met het decor van veel woonruimtes.

Supplies

Elektronica

  • Magnetische oplader
  • Arduino Uno
  • 28YBJ-48 DC 5V Stappen Motor
  • ULN2003 Driver
  • Grove Speech Recogniser module
  • Jumper draden
  • Printplaat
  • LED lampje (voor het testen)
  • 220 ohm weerstand
  • 9V-batterijhouder naar 2.1 mm DC plug (of een 9 V batterij clip naar 2.1 mm DC plug)
  • 9 V batterij
  • Soldeerstation met tin (zorg voor goede ventilatie en dat je je handen erna wast)
  • Bluetooth module HC-05 (prototype en als je met Bluetooth aan de gang wil gaan)

Behuizing

  • 3 mm dik MDF bord 50 x 60 cm
  • laser snijder
  • PLA-filament
  • 3D-printer
  • Touw
  • Hete lijm
  • Touw

Software

  • Arduino IDE
  • Apple iPhone Shortcuts
  • Arduino Bluetooth Control (alleen als je met Bluetooth aan de gang wil gaan)


Belangrijk!

Alleen werkend met een magnetische oplader!!

Voor dit project heb je dus ook een speciale oplader nodig.

Prototype 1 - Bluetooth Voice Recognition

Prototype_Diagram.jpg
Voice Control with Bluetooth module

Setup Prototype 1

Als eerst heb ik gekozen om Bluetooth uit te proberen met een oude Android telefoon. Met de app Arduino Bluetooth Control is het makkelijk om de Arduino te besturen via Bluetooth. Hierbij is voice recognition inbegrepen.

Onderaan is de Arduino IDE-code te vinden. Kopieer deze en volg de volgende stappen.

  1. Ga naar: Tools > Manage Libraries en zoek op Servo. Je moet de Servo Library installeren van Michael Margolis.
  2. Zorg dat je deze toevoegt in je code, samen met de SoftwareSerial.
  3. Zorg dat je Arduino goed aangesloten is, zodat je de juiste poort kan kiezen in Arduino IDE.
  4. Upload de code naar je Arduino. Hij zou het direct moeten doen.
//servo  en bluetooth toevoegen
#include <SoftwareSerial.h>
#include <Servo.h>
Servo servoMain;
SoftwareSerial BLUETOOTH(10,12);


void setup()
{
  pinMode(6, OUTPUT); //Lampje zit vast aan pin 6
  BLUETOOTH.begin(9600);
  // BLUETOOTH.println("Hello from Arduino");//bluetooth test
  servoMain.attach(9); //Servo zit aan pin 9 vast
}

char a;
void loop()
{
  if (BLUETOOTH.available())
  {
    a=(BLUETOOTH.read());
    if (a=='1')   // dit krijgen als je "Take out" zegt                    
    {
      //lampje gaat aan als je "Take out" zegt en de servo draait 180 graden met de klok mee
      digitalWrite(6, HIGH);
      BLUETOOTH.println("LED on");
      servoMain.write(180);
    }
    if (a=='0') //dit krijgen als je "Plug-in" zegt
    {
      //lampje gaat uit als je "Plug-in" zegt en de servo draait 180 graden tegen de klok in
      digitalWrite(6, LOW);
      BLUETOOTH.println("LED off");
      servoMain.write(-180);
    }
    if (a=='?') //dit is wat je in de console ziet als het onzeker is wat je gezegd hebt
    {
      BLUETOOTH.println("Send '1' for LED on");
      BLUETOOTH.println("Send '0' for LED off");
    }
  }
}


Maak het circuit als volgt.

  1. Zet het weerstand en de LED op een breadboard.
  2. Verbind deze met pin 6 en de ground in de juiste richting.
  3. Op een andere plek op de breadboard zet je de Bluetooth module en koppel je deze zoals het op het diagram te zien is.
  4. Als laatste verbind je de servomotor aan de ground , 5 V en aan pin 9.


Verder moet je de Bluetooth koppelen aan je Android telefoon.

  1. Zet je Bluetooth aan.
  2. Zoek naar de module in het lijstje (HC-05). Zorg dat je Arduino aanstaat.
  3. Het wachtwoord is meestal tussen "0000" of "1234". Vaak staat deze op het doosje van de module.
  4. In de Arduino Bluetooth Control app, moet je in de rechterbovenhoek ook de Bluetooth module aan de app koppelen.

Om de app werkend te krijgen met de Arduino heb je ook de onderstaande instellingen nodig. Met behulp van Arduino Bluetooth Control worden commando's naar je Arduino gestuurd. Zo heb ik ingesteld dat als je "Take out" zegt dat het lampje aan gaat en de servo 180 graden draait. Het lampje gaat uit en de servo gaat naar zijn oorspronkelijke positie als je "Plug-in" zegt.


In de app zelf moet je de volgende dingen aanpassen.

Ga naar: Settings >Vocal commands > vocal commands configuration

Hier ga je de vocal command 1 en 2 aanpassen.


Commando 1

Vocal command: Take out

Data to send: 1

Commando 2

Vocal command: Plug-in

Data to send: 0


Obstakels

De Bluetooth module werkte perfect in combinatie met de app. Echter, ik realiseerde snel dat de mogelijkheid voor automatisatie best laag was. Elke keer als je een commando wilde doorgeven moest je een knop indrukken. Het kan niet zomaar opgestart worden door bijvoorbeeld "Hey Google" te zeggen.

Ik heb geprobeerd een eigen Android script te schrijven, maar ik kwam erachter dat het veel makkelijker kan met een Speech module. Daar vertel ik meer over in Stap 2.


Als je graag vanuit je telefoon je Arduino wil besturen raad ik de HC-05 module voor Android en de HC-06 module of nieuwer voor IOS aan. Let op, de HC-05 module is niet compatibel met Appleapparatuur.

Overstappen Naar Grove Speech Recogniser

Final_Diagram.jpg

Omdat ik een volledig geautomatiseerde oplader loskoppeler wilde bouwen, heb ik gekozen om een voice module te kopen. Er zijn verschillende versies online te vinden, maar voor mij was Grove Speech Recogniser het goedkoopste.

Ook was ik bang dat de servo motor niet sterk genoeg zou zijn, dus heb ik gekozen om een stappen motor te gebruiken.


Setup

Deze setup is redelijk simpel. In plaats van Bluetooth gebruiken we Grove Speech die opstart als je "Hi cell!" zegt. Grove herkent de volgende commando's:

"Turn on the light", "Turn off the light", "Play music", "Pause", "Next", "Previous", "Up", "Down", "Turn on the TV", "Turn off the TV", "Increase temperature", "Decrease temperature", "What's the time", "Open the door", "Close the door", "Left", "Right", "Stop", "Start", "Mode 1", "Mode 2" en "Go".


Onderaan is de Arduino IDE-code te vinden. Kopieer deze en volg de volgende stappen.

  1. Ga naar: Tools > Manage Libraries en zoek op AccelStepper. Je moet de AccelStepper Library installeren van Mike McCauley. Ook moet je de Stepper library gebruiken, maar deze is vaak van tevoren geïnstalleerd met de Arduino IDE.
  2. Zorg dat je deze toevoegt in je code, samen met de SoftwareSerial.
  3. Zorg dat je Arduino goed aangesloten is, zodat je de juiste poort kan kiezen in Arduino IDE.
  4. Upload de code naar je Arduino. Hij zou het direct moeten doen.
//library invoegen van alle onderdelen die we gebruiken
#include <SoftwareSerial.h>
#include <Stepper.h>
#include <AccelStepper.h>


//vaststellen wat voor pins bij de RXD en de TXD van de motor horen
#define SOFTSERIAL_RX_PIN  8
#define SOFTSERIAL_TX_PIN  9
//vaststellen wat voor motorinterface de drive heeft
#define MotorInterfaceType 4


//seriële communicatie mogelijk maken op andere digitale pinnen van een Arduino-bord voor de stepper motor
SoftwareSerial softSerial(SOFTSERIAL_RX_PIN,SOFTSERIAL_TX_PIN);
//uitleggen aan AccelStepper dat we een unipolaire stappenmotorgebruiken die aangestuurd wordt door 4 transistoren
AccelStepper myStepper2 (MotorInterfaceType, 2, 3, 4, 5);


//alle commando's van de Grove Speech module benoemen
const char *voiceBuffer[] =
{
    "Turn on the light",
    "Turn off the light",
    "Play music",
    "Pause",
    "Next",
    "Previous",
    "Up",
    "Down",
    "Turn on the TV",
    "Turn off the TV",
    "Increase temperature",
    "Decrease temperature",
    "What's the time",
    "Open the door",
    "Close the door",
    "Left",
    "Right",
    "Stop",
    "Start",
    "Mode 1",
    "Mode 2",
    "Go",
};


//begin positie
int pos = 0;


void setup()
{
  Serial.begin(9600);
    softSerial.begin(9600);
    softSerial.listen();
  pinMode(6, OUTPUT);
 //waardes voor de AccelStepper vaststellen
  myStepper2.setMaxSpeed(1000);       //max snelheid
  myStepper2.setCurrentPosition(0);   //zet de huidige positie op 0, zodat het altijd gaat draaien
  myStepper2.setAcceleration(300);    //de versnelling
  myStepper2.setSpeed(200);           //de algemene begin snelheid
}


char a;
void loop()
{
  char cmd; // zo gata Grove luisteren


    if(softSerial.available())
    {
        cmd = softSerial.read();
        Serial.println(voiceBuffer[cmd - 1]);


        //als je Hi Cell, zegt met erna Stop, gaat de steppermotor een half rondje draaien
        if((voiceBuffer[cmd - 1]) == "Stop"){
           digitalWrite(6, HIGH);
          // Serial.println("clockwise");
 
          myStepper2.moveTo(2038);
          myStepper2.runToPosition();
        }
        //anders als Grove Start hoort, gaat de stepmotor naar de startpositie.
        else if ((voiceBuffer[cmd - 1]) == "Start"){
          digitalWrite(6, LOW);
          //Serial.println("counterclockwise");
          delay(100);
          myStepper2.setAcceleration(500);
          myStepper2.moveTo(0);
          myStepper2.runToPosition();
          myStepper2.run();
        }
    }
   
}
 


In de code zelf heb ik geschreven dat als je "Stop" zegt dat de stappen motor een halve draai maakt met een versnelling. Als je "Start" zegt, gaat de stappen motor naar de oorspronkelijke positie. Voor de versnelling heb ik AccelStepper gebruikt. De versnelling zorgt voor een extra impuls voor het trekken van de oplader.


Maak het circuit als volgt.

  1. Zet het weerstand en de LED op een breadboard.
  2. Verbind deze met pin 6 en de ground in de juiste richting.
  3. De voice module wordt gekoppeld met jumper draden zoals in het diagram.
  4. Verder moet je de steppermotor koppelen aan de motor drive.
  5. Als laatste verbind je de drive aan de Arduino. Zie diagram voor connecties.


Obstakels

Waar ik vooral tegen aanliep was het probleem met de stappen motor. Het was niet sterk genoeg om een normale oplader los te koppelen, waardoor ik voor een magnetische oplader heb gekozen. Met de nieuwe oplader werkte het perfect.

Ook merkte ik dat de motor super warm werd en veel energie gebruikte, ook in stand-by modus.

Ik heb ook geprobeerd om een aparte batterij te gebruiken voor de motor, maar ik merkte weinig verschil in kracht. Daarom heb ik gekozen om alleen één batterij te gebruiken.

Siri Intellen

Siri settings.jpg
Siri werkt met oplaad loskoppeler
Je kunt dit project voor elk type telefoon uitvoeren, maar wat mij aansprak was de nieuwe functie van IOS-toestellen. Tegenwoordig heb je Shortcuts, waardoor je telefoon direct aan de Arduino kan vertellen als het de oplader eruit moet trekken.


Setup

Om Siri automatisch te laten vertellen dat je telefoon opgeladen is, moet je de volgende instellingen toepassen.

  1. Ga in de Shortcuts app naar automatisaties en maak een nieuwe aan. Kies voor batterij (en niet oplader!).
  2. Kies " Rise above..", zodat het alleen de functie gaat uitvoeren als de batterij percentage hoger wordt dan aangegeven. Met de slider kun je makkelijk je gewenste batterij percentage kiezen.
  3. Vervolgens druk op Add action/ Voeg actie toe. Hiermee gaan we de Siri spraak functie toevoegen.
  4. Kies voor Speak/ spreek en schrijf in het balkje "Hi, cell." en erna met veel spatie tussenin "Stop!".
  5. Als je op het haakje met de cirkel drukt kun je de stem snelheid en hoogte aanpassen, maar je kunt ook kiezen of je een man of een vrouw wil en met wat voor accent. Ik heb gemerkt dat de stem van Arthur met een hoger toon en een lagere snelheid het beste werkt. Wees niet bang om ook verschillende waardes uit te proberen.
Super belangrijk! Zet de functie "Ask before running" uit!

Zo wordt deze functie volledig geautomatiseerd.


Obstakels

In het begin begin gebruikte ik de Charge optie, wat ervoor zorgde dat Siri iets ging zeggen direct na het koppelen van de telefoon aan de oplader. Verder gebeurde er niks meer. Daarom is het belangrijk om de Battery functie te gebruiken.

Ook moet je echt goed instellen hoe snel en hoe hoog Siri spreekt. Omdat we in de vorige stap besloten hebben om Grove Speech te gebruiken, wordt een stem pas herkent als je "Hi Cell" zegt. Maar het commando erna moet duidelijk worden gescheiden van het start commando. Het probleem met Siri is dat je alleen een beperkte pauze tussen twee woorden kan zetten. Door het gebruiken van interpunctie en zo veel mogelijke spatie tussen woorden is dit nog net mogelijk.

Armpje En Oplader

HandGrip_v5.png
HandGrip_v5_top.png
HandGrip_v1.jpg
HandGrip_v1_separate.jpg
HandGrip_v2.jpg
File_000.png
HandGrip_v3.png
HandGrip_v4.png
Om de oplader los te koppelen is het belangrijk dat er een juist armpje wordt gekoppeld aan de stappen motor.


Iteraties Armpje

1.Armpje volledig gemaakt met een 3D-printer

Het idee was leuk, maar het armpje was veel te los om iets te kunnen trekken. De stappen motor had iets nodig dat gespannen kon worden om kracht op de oplader te zetten.

2.Hybride 3D-printer en elastiekjes

Dit werkte al veel beter, omdat er meer grip was op de oplader. Echter, de elastiekjes zorgden voor weerstand tussen de oplader en stappen motor, waardoor de stappenmotor niet sterk genoeg werd.

3.Hybride 3D-printer en elastiekjes en oplader grip

Hier hadden we hetzelfde probleem zoals bij de 3e iteratie, maar ik merkte al snel dat de oplader grip al veel beter werkte. De elastiekjes hebben namelijk een soort haakje waar ze aan vast kunnen zitten.

4.Hybride 3D-printer en touw [uiteindelijke versie]

Dit was mijn uiteindelijke iteratie die ook werkte. Omdat het touw niet gerekt kan worden, maar wel gespannen is, heeft de stappen motor wel genoeg kracht op de oplader los te koppelen.


In Elkaar Zetten

Om het armpje in elkaar te zetten, moet je de OpladerLoskoppeler_MotorGrip.stl downloaden en met een 3D-printer printen. Deze kun je straks lijmen aan de motor. Door het gaatje gaat er een touw die gespannen is aan de grip om de oplader (HandGrip_Final_LaserCut.svg). Deze grip moet je met een lasersnijder snijden of je kunt het met een figuurzaag zagen. Vervolgens lijm je de grip aan de oplader, zodat het niet meer los komt.

Zorg dat het touw redelijk gespannen is als je telefoon nog aan het opladen is. Wanner de motor gaat draaien moet het touw zo gespannen worden dat het de oplader loskoppelt.

Oplader

Zoals in stap 3 genoemd, heb ik ervoor gekozen om een magnetisch oplader te gebruiken. Dit heb ik uiteindelijk gedaan, omdat de stappen motor niet sterk genoeg was.

Door het gebruiken van een magnetisch oplader is het makkelijker voor de stappenmotor, maar het is een aparte oplader die je met rust bij het oplaadstation kunt gebruiken.

Nu is er geen risico om je eigen oplader, die waarschijnlijk duurder is, kapot te maken.

Behuizing En in Elkaar Zetten

IMG_1781.jpg
IMG_1782.jpg
IMG_1780.jpg
IMG_1777.jpg
IMG_1778.jpg
IMG_1779.jpg
IMG_1776.jpg

Solderen

De enige onderdelen die gesoldeerd moeten worden zijn de LED en het weerstand. Zorg dat je de LED in de juiste richting soldeert. Anders gaat deze niet oplichten als je een commando geeft.

Alle andere onderdelen worden direct aan de Arduino gekoppeld.

Vergeet niet om de batterij in de Arduino te zetten.

Behuizing

Voor de behuizing ben ik met een L vorm gegaan, zodat de telefoon net boven de stappen motor zit. Zo wordt het touw op een juiste manier gespannen om de oplader los te koppelen.

Hierin passen alle onderdelen en ik raad aan om rond de stappen motor piepschuim te zetten om de motor te stabiliseren.


Lasersnijder gebruiken:

Voor het lasersnijden moet je de Illustrator document Exporteren als een DXF. Hiermee kun je makkelijk een lasersnijder gebruiken. Dit bestand is alleen geschikt voor 3 mm dik MDF-bord. Dus let er goed op!


Door de tanden aan ieder zijde van elke vlak is het makkelijk de doos in elkaar te zetten. Verder heb ik ook alle zijdes gelijmd behalve de bovenkant. Ik heb hiervoor heet lijm gebruikt, maar je kunt ook houtlijm gebruiken.

Zorg er ook voor dat je een gaatje maakt op de plek waar de voice module komt te zitten. Met deze gaatje verhoog je de kans dat je commando's duidelijk gehoord worden.

Als laatste moet je de telefoonstandaard laser snijden en aan de bovenkant lijmen.

Onderdelen plaatsen

  • Je kunt gerust alle onderdelen in de doos plaatsten, maar ik adviseer om eerst de stappen motor tegen het gaat van de doos te lijmen of te schroeven. Ook kun je piepschuim of een ander materiaal gebruikten om deze te stabiliseren.
  • Het is belangrijk dat je de motorschroef in het midden van het gat zet, zodat het niet vast komt te zitten tijdens het draaien.
  • Hierna kun je gemakkelijk het armpje aan de motor lijmen.
  • Zet alle onderdelen in het doos en ga na of de Arduino aan staat.
  • Zet de bovenkant op het doos en lekker testen!

Filmpje

Demo - Oplaad Loskoppeler

Conclusie

Ik heb ontzettend veel geleerd van dit project. Zo kon ik hiervoor niet lasersnijden en wist ik niet dat er zoveel mogelijk was met een Arduino.

Ik denk dat allebei de methodes potentieel hebben. Met Bluetooth zou je de oplader loskoppeler met Google Home kunnen beheren. Echter, ik ben blij dat ik gekozen hem om mezelf uit te dagen om iets voor IOS-apparaten te maken. Customization voor deze toestellen is redelijk beperkt, maar met de komst van de Schortcuts applicatie zijn er nieuwe dingen mogelijk zoals dit project.