Telefon kontrollerade stämningsbelysning (4 / 12 steg)

Steg 4: Bearbetning och Android




jag använde bearbetning för att skapa en app för min Android-enhet. Det ger bra dokumentation för användning med Android och passar perfekt för en enkel app som jag skapade för detta projekt. Dess format liknar också den Arduino programvara, som gör det lätt att använda. Jag använde en PC som kör Windows 8 och jag har testat programmet på en Samsung Galaxy SIII och en Nexus tablett.

För det mesta, du bör följa wiki om du vill konfigurera allt, men jag har också tagit med min egen instruktionerna nedan. Jag har förenklat delar som jag tycker wikin gör ett bra jobb med att förklara och har expanderat på andra delar. Jag har också lagt till ytterligare tips som jag brukade få min att fungera. Inte allt fungerade perfekt varje steg på vägen, så ha tålamod. Jag har försökt att ta med allt jag gjorde för att få saker arbetar när jag träffar en vägspärr. Obs: om du använder en Mac, inte alla av mina instruktioner gäller för dig och jag föreslår att du mer noga följa den wiki-sidan.

Här är länken för wiki-sidan på bearbetningen med Android:
http://wiki.Processing.org/w/Android

USB-felsökning
När du har installerat bearbetning, Android SDK och alla nödvändiga plattformar och paket, kommer att du behöva aktivera USB-felsökning på enheten.

På min Samsung Galaxy S III gick jag till Inställningarutvecklaren alternativ sedan kontrolleras USB-felsökning. På en Nexus tablett, gå till Inställningar och sedan om tabletten Klicka på Build-nummer sju gånger för att aktivera USB-felsökning.

USB-drivrutiner
Om du inte redan, Anslut telefonen till datorn och installera USB-drivrutiner för din enhet. Jag kunde ladda ner allt för min telefon från denna webbplats:
http://Developer.Samsung.com/Android/tools-SDKs/Samsung-Andorid-USB-driver-for-Windows
Detta är bara nödvändigt om du använder en PC.

Kör en skiss (första försöket)
Öppna bearbetning och växla från standardläge till Android genom att klicka på nedrullningsbara menyn i det övre högra hörnet av fönstret och välja Android. Om du vill växla till Android läge, kan du behöva starta om bearbetning när du har gjort detta.

Kopiera och klistra in följande kod i din bearbetning skiss. Detta är en skiss som stänger skärmen gröna om Android-enhet kan finna Seeed Bluetooth och sedan blir lila när det har anslutit till Seeed sköld. Android kommer också att skicka bokstaven "a" till Arduino's följetong.

Har den Arduino seriell bildskärm öppna när du kör Android App så du ska se till att två kommunicerar (seriell kommunikation är hur vi kommer att få belysningen att ändra senare). När du kör programmet, måste du klicka på "Kör på enheten." Jag gick förbi körs på en virtuell enhet eftersom jag alltid haft tillgång till min telefon och jag bestämde att det var mer problem än det var värt att få virtuella enheten fungerar. Första gången du kör programmet, det sannolikt inte att fungera korrekt. Var inte orolig. Det är nästa steg.

/*
Bluetooth ansluta och skicka byte
av Nicole Grimwood

Baserat på:
SendReceiveBytes
Skapad 25 mars 2013
av ScottC

Denna kod är offentlig
*/

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.widget.Toast;
import android.view.Gravity;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;

import java.util.UUID;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import android.os.Handler;
import android.os.Message;
import android.util.Log;

import android.bluetooth.BluetoothServerSocket;
import android.bluetooth.BluetoothSocket;
offentliga BluetoothSocket scSocket;

booleska foundDevice = false; Sant, blir skärmen grön.
booleska BTisConnected = false; Sant, blir skärmen lila.

Meddelandetyper används av Handler
offentliga statisk sista int MESSAGE_WRITE = 1;
offentliga statisk sista int MESSAGE_READ = 2;
String readMessage = "";

Få standard Bluetooth adapter
BluetoothAdapter bluetooth = BluetoothAdapter.getDefaultAdapter();

/ * StartActivityForResult() inom setup() lanserar en
Aktivitet som används för att be användaren att aktivera Bluetooth.
Följande onActivityResult() metod kallas när detta
Aktivitet avslutas. */

skyddade void onActivityResult (int requestCode, int resultCode, uppsåt data) {
om (requestCode == 0) {
om (resultCode == RESULT_OK) {
ToastMaster ("Bluetooth har slagits på");
}
annat {
ToastMaster ("du måste slå Bluetooth!");
}
}
}

/ * Skapa en BroadcastReceiver som senare kommer att användas för att
får namn på Bluetooth-enheter inom räckhåll. */
BroadcastReceiver myDiscoverer = ny myOwnBroadcastReceiver();

/ * Skapa en BroadcastReceiver som senare kommer att användas för att
identifiera om Bluetooth-enheten är ansluten * /
BroadcastReceiver checkIsConnected = ny myOwnBroadcastReceiver();

Hundföraren som får information tillbaka från uttaget
privat slutliga Handler mHandler = ny Handler() {

public void handleMessage (meddelande msg) {
växel (msg.what) {
fall MESSAGE_WRITE:
Göra något när du skriver
bryta;
fall MESSAGE_READ:
Få byte från msg.obj
byte [] readBuf = (byte[]) msg.obj;
konstruera en sträng från de giltig byte i bufferten
readMessage = ny sträng (readBuf, 0, msg.arg1);
bryta;
}
}
};

void setup() {
Orientation(LANDSCAPE);
/ * OM Bluetooth inte är aktiverat, då frågar användaren tillåtelse att aktivera den * /
om (! bluetooth.isEnabled()) {
Uppsåt requestBluetooth = ny Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult (requestBluetooth, 0);
}

/ * Om Bluetooth är nu aktiverat, sedan registrera en broadcastReceiver för att rapportera någon
upptäckt Bluetooth-enheter och startar att upptäcka * /
om (bluetooth.isEnabled()) {
registerReceiver (myDiscoverer, nya IntentFilter(BluetoothDevice.ACTION_FOUND));
registerReceiver (checkIsConnected, nya IntentFilter(BluetoothDevice.ACTION_ACL_CONNECTED));

Starta bluetooth upptäckt om det inte gör det redan
om (! bluetooth.isDiscovering()) {
bluetooth.startDiscovery();
}
}
}

void draw() {
Visas en grön skärm om en enhet har hittats,
Visa en lila skärmen när en anslutning görs till enheten
om (foundDevice) {
om (BTisConnected) {
bakgrund (170, 50, 255); lila skärmen
}
annat {
bakgrund (10, 255, 10); grön skärm
}
}

Visa något från Arduino
text (readMessage, 10, 10);
}

/ * Denna BroadcastReceiver visas upptäckta Bluetooth-enheter * /
allmän klass myOwnBroadcastReceiver sträcker sig BroadcastReceiver {
ConnectToBluetooth connectBT;

public void onReceive (kontext sammanhang, avsikt intent) {
Sträng action=intent.getAction();
ToastMaster ("ACTION:" + åtgärder);

Anmälan som BluetoothDevice finns
om (BluetoothDevice.ACTION_FOUND.equals(action)) {
Visa namnet på upptäckta enheten
String discoveredDeviceName = intent.getStringExtra(BluetoothDevice.EXTRA_NAME);
ToastMaster ("upptäckt:" + discoveredDeviceName);

Visa mer information om upptäckta enheten
BluetoothDevice discoveredDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
ToastMaster("getAddress() ="+ discoveredDevice.getAddress());
ToastMaster("getName() ="+ discoveredDevice.getName());

int bondyState=discoveredDevice.getBondState();
ToastMaster("getBondState() ="+ bondyState);

Sträng mybondState;
Switch(bondyState) {
mål 10:
mybondState = "BOND_NONE";
bryta;
mål 11:
mybondState = "BOND_BONDING";
bryta;
ärende 12:
mybondState = "BOND_BONDED";
bryta;
standard:
mybondState = "Ogiltig BOND staten".
bryta;
}
ToastMaster("getBondState() ="+ mybondState);

Ändra foundDevice till true som gör skärmen bli grön
foundDevice = sant;

Ansluta till upptäckta bluetooth-enheten (SeeedBTSlave)
om (discoveredDeviceName.equals("SeeedBTSlave")) {
ToastMaster ("ansluter du nu!");
unregisterReceiver(myDiscoverer);
connectBT = ny ConnectToBluetooth(discoveredDevice);
Ansluta till den enheten i en ny tråd
nya Thread(connectBT).start();
}
}

Anmälan om bluetooth-enhet är ansluten
om (BluetoothDevice.ACTION_ACL_CONNECTED.equals(action)) {
ToastMaster (anslutna _ YAY");

medan (scSocket == null) {
gör ingenting
}
ToastMaster ("scSocket" + scSocket);
BTisConnected = sant; Vrid skärmen lila
om (scSocket! = null) {
SendReceiveBytes sendReceiveBT = ny SendReceiveBytes(scSocket);
nya Thread(sendReceiveBT).start();
String testLetter = "a";
byte [] myByte = stringToBytesUTFCustom(testLetter);
sendReceiveBT.write(myByte);
}
}
}
}
offentliga statisk byte [] stringToBytesUTFCustom (String str) {
char [] buffert = str.toCharArray();
byte [] b = nya byte[buffer.length << 1];
för (int jag = 0; jag < buffer.length; i ++) {
int bpos = jag << 1.
b [bpos] = (byte) ((buffert [i] & 0xFF00) >> 8);
b [bpos + 1] = (byte) (buffert [i] & 0x00FF);
}
returnera b;
}

allmän klass ConnectToBluetooth implementerar Runnable {
privat BluetoothDevice btShield;
privat BluetoothSocket mySocket = null;
privat UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");

offentliga ConnectToBluetooth (BluetoothDevice bluetoothShield) {
btShield = bluetoothShield;
försök {
mySocket = btShield.createRfcommSocketToServiceRecord(uuid);
}
fånga (IOException createSocketException) {
Problem med att skapa en socket
Log.e ("ConnectToBluetooth", "Fel med Socket");
}
}

public void run() {
/ * Avbryta upptäckten på Bluetooth-kortet att förhindra långsam anslutning * /
bluetooth.cancelDiscovery();

försök {
/ * Ansluta till bluetoothShield genom uttaget. Detta kommer att blockera
tills det lyckas eller kastar en IOException * /
mySocket.connect();
scSocket = mySocket;
}
fånga (IOException connectException) {
Log.e ("ConnectToBluetooth", "Fel med socketanslutning");
försök {
mySocket.close(); Försök stänga uttaget
}
fånga (IOException closeException) {
}
hemkomst.
}
}

/ * Kommer att avbryta en pågående anslutning och stänga uttaget * /
public void cancel() {
försök {
mySocket.close();
}
fånga (IOException e) {
}
}

}

privat klass SendReceiveBytes implementerar Runnable {
privat BluetoothSocket btSocket;
privat InputStream btInputStream = null;
privat OutputStream btOutputStream = null;
Sträng TAG = "SendReceiveBytes";

offentliga SendReceiveBytes (BluetoothSocket socket) {
btSocket = socket;
försök {
btInputStream = btSocket.getInputStream();
btOutputStream = btSocket.getOutputStream();
}
fånga (IOException streamError) {
Log.e (TAG, "fel vid att få input eller output Stream");
}
}

public void run() {
byte [] buffert = nya byte [1024]; buffert butik för ström
int byte. -byte returnerade från read()

Hålla lyssna på InputStream tills ett undantag inträffar
medan (sant) {
försök {
Läsa från InputStream
byte = btInputStream.read(buffer);
Skicka de erhållna byte till UI aktiviteten
mHandler.obtainMessage (MESSAGE_READ, byte, -1, buffert)
.sendToTarget();
}
fånga (IOException e) {
Log.e (TAG, "Fel vid läsning från btInputStream");
bryta;
}
}
}

/ * Kalla detta från den huvudsakliga verksamheten att skicka data till den fjärranslutna enheten * /
public void write (byte [] byte) {
försök {
btOutputStream.write(bytes);
}
fånga (IOException e) {
Log.e (TAG, "Fel vid skrivning till btOutputStream");
}
}

/ * Kalla detta från den huvudsakliga verksamheten till stängningen anslutningen * /
public void cancel() {
försök {
btSocket.close();
}
fånga (IOException e) {
Log.e (TAG, "Fel vid stängning av btSocket");
}
}
}

/ * Min ToastMaster-funktion för att visa en meddelanderuta på skärmen * /
Annullera ToastMaster (sträng textToDisplay) {
Rosta myMessage = Toast.makeText(getApplicationContext(),
textToDisplay,
Toast.LENGTH_SHORT);
myMessage.setGravity (Gravity.CENTER, 0, 0);
myMessage.show();
}

Redigera Android Manifest.xml
I Android-manifestet visar bara efter att du har försökt att köra programmet en gång. Det finns i mappen som innehåller filen .pde för din kod. Redigera Android Manifest.xml genom att lägga till följande två rader mellan den andra och tredje raden i original manifestet:
< användningsområden-tillstånd android:name="android.permission.BLUETOOTH"/ >
< användningsområden-tillstånd android:name="android.permission.BLUETOOTH_ADMIN"/ >
Referera till skärmbilden visas ovan se till att du har det rätt.

Ansluta
Nu kör skissen igen. Nu bör allt fungera. Öppna den Arduino seriell bildskärm så att den får bokstaven "a" när bluetooth är ansluten. Om inte, är här några saker du kan försöka få det att fungera ordentligt:
1. se till att Bluetooth skölden är korrekt konfigurerad och de röda och gröna lamporna blinkar när du kör den Android programmet.
2. kör App igen på enheten
3. Starta om din Android-enhet
4. Starta om datorn
Jag fick min att arbeta med någon kombination av dessa ytterligare åtgärder.

Viktigt tips: varje gång du återansluter bluetooth, bör du återställa eller makt cykel Arduino och stänga din App och öppna den igen.

Se Steg
Relaterade Ämnen

WiFi-telefon kontrollerade Mini RC Spy bil

I detta Instructable jag kommer att visa dig att hur kan du bygga snabbt en enkel telefon kontrollerade RC bil som kan spela in filmer. Enheten är baserad på Mediatek LinkIt en styrelsen och jag använde en Adafruit motor sköld och Blynk app för att s...

DIY naturlig storlek telefon kontrollerade BB8 Droid

Idag, jag kommer att lära dig hur man bygger en arbetar, naturlig storlek, telefon-kontrollerade Starwars BB-8 droid! I den här självstudiekursen ska vi bara använda hushållsapparater material och en liten Arduino kretsar.`Min julklapp till pappa: En...

Telefon kontrollerade RBG LED lampor

en enkel telefon kontrollerade RBG LED-ljus. Den kommunicerar via bluetooth. Allt du behöver är en RBG LED, 3 motstånd, en bluetooth-modul (som HC-05), arduino ombord och en mobiltelefon med bluetooth.Kabeldragning för detaljer och samt länkar till a...

Smart telefon kontrollerade julgran med RGB LED Strip

eftersom julen är här, vi dekorerade denna julgran med RGB LED Strip för vår julfest, och gjorde det en smart telefon kontrollerade träd. XD. It kommer att säker presentera en "sista minuten" magi för Xmas showen. Julen kommer men fastnat räkna...

DIY Bluetooth telefon kontrollerade BB-8 Droid med Arduino UNO

Jag är ett stort Star Wars fan och när jag såg Star Wars: The Force vaknar tänkte jag att jag behöver en BB-8 droid. Det var häftigt hur detta lilla område flyttade i filmen. Så jag bestämde mig för att jag ska göra denna droid som baseras på Arduino...

Telefon kontrollerade hemautomation via Wifi

mitt hem huvudsakliga funktion är att ge mig och för min familj en säker plats, och jag vill bara göra mitt hus lite lite säkrare och smartare med hjälp av en LinkIt utveckling styrelsen, som är en av de bästa styrelse som jag såg, men jag ska skriva...

DIY telefon kontrollerade FPV Rover (snabb & Agile)

Låt oss bygga en Bluetooth / WiFi kontrollerade FPV Drone! RoverBot är en mycket pedagogisk Arduino ATV-drone. Det är enkelt att göra, lätt att program och är en stor förrätt projekt för hobby! Bot är mycket snabb och smidig, för att inte nämna det b...

Android-telefon kontrollerade lampa

I detta Instructable kommer vi att göra en lampa som vi kan styra med en android-telefon. Använda en app, kommer vi att kunna justera ljusstyrkan på lampan.Steg 1: Hur det fungerar Lampans ljusstyrka regleras av en enkel dimmer. Växeln roteras självs...

Telefon kontrollerade dator Starter

Har du någonsin velat starta datorn när du är hemifrån tillgång till vissa filer? Eller kanske du ville starta en nedladdning av ett nytt spel, så att det skulle ske när du kom hem. Detta projekt kommer att visa hur man startar och styra datorn från...

Telefon kontrollerade julgransljus

Jag älskar Chrismas Day, jag tycker det är en av de bästa dagarna i året. Vi gör alltid en fin julgran med min familj, men i år bestämde jag mig för att jag ska lägga några extra funktion till detta träd. Sedan gjorde jag en smartphone kontrollerade...

SPhocsLock - enkel telefon kontrollerade strike lock - billigaste lösningen

Du letar efter en billig och enkel lösning att öppna dörren (eller vad) med telefonen?Här är det:Ibland glömmer att ta latchkey men de glömmer aldrig sin mobiltelefon så som jag.Vad kan vara bättre än öppna dörren med mobil.Naturligtvis jag ville ha...

Pot nudel automat - Smart telefon kontrollerade

Sammanfattning av detta Instructable:Vi kommer att göra en automat som automatiskt kokar vatten och fyller upp ett paket av potten nudlar. Detta projekt styrs via telefonen.Svårighetsgrad:Mycket lätt. Ingen lödning eller kodning.Du behöver följande:1...

Lätt telefon kontrollerade Rover

MotorAir är en av de enklaste sätten som jag har sett för att styra en robot från telefonen.Jag ska gå hur man ställer man upp, men först låt oss ser på Specs också så några fördelar och nackdelar.Specifikationer:upp till 2 ampere per kanalkontroller...

Smart telefon kontrollerad LED lampor med HC-05 och Arduino UNO

Bluetooth modul HC-05 är en av de vanligaste bit av hårdvara som gör att du kan snabbt prototypen dina idéer som kräver en trådlös kontroll/connective element. Detta projekt är en mycket snabb demonstration av hur vi kan gränssnittet modulen med en a...

En telefon kontrollerade rover (Intel Edison + Blynk + Arduino)

Backstory: (om du är för lat för att läsa hoppa detta)Det var maj (år 2015). En student i hans Form 4 (årskurs 10?) bara kom tillbaka hem från skolan och han drivs på sin dator, som en daglig rutin, att kolla på inlägg på sociala medier han frekvente...

Android kontrollerade Arduino Bluetooth Panzer

Remote Control bilar är kul att köra runt i rummet eller vandrande huset. Vad kan vara roligare för det? När du har synligheten som om du rider i den. En trådlös IP-kamera är svaret. Eller låt oss säga att du har övervakningskameror runt huset eller...

Telefon med inbyggd MicroSD kortläsare

Nedan är min rant om bristen på utrymme på min telefon och hur jag fick inspirerade och motiverade att skapa detta projekt. Känn dig fri att hoppa framåt och dyka in i instruktionen från steg 1.Mobiltelefon är ett viktigt verktyg i många människors d...

ROVER Bot - Arduino Bluetooth kontrollerad Tank

Arduino Bluetooth ROVER RobotArduino ROVERBot. Detta inlägg syftar till att presentera dig de konstruktion steg för en ROVER använder Arduino och en bluetooth-modul. För att styra ROVER var används en Android-telefon som RC (radio control) gränssnitt...

Göra en ett skrivbord om elektronik Lab (i en liten plats, för nybörjare)

Levande utan garderober och utan ett arbetsrum är inte lätt, tycker verkligen inte att jag har ett litet rum. Vi har en helg hus, som jag besöker ofta eftersom jag har en hel elektronik lab där (med Arduino stationer och många fler), men här hemma i...