comunicação android arduino - jasi 2015
TRANSCRIPT
Comunicação Android <=> Arduino
Comunicação serial UART/USART
void setup() { Serial.begin(9600); while (!Serial) {}
pinMode(2, INPUT); establishContact(); }
void loop() { if (Serial.available() > 0) { firstSensor = analogRead(A0) / 4; secondSensor = analogRead(1) / 4; thirdSensor = map(digitalRead(2), 0, 1, 0, 255); Serial.write(firstSensor); Serial.write(secondSensor); Serial.write(thirdSensor); }}
void establishContact() { while (Serial.available() <= 0) { Serial.print('A'); delay(300); }}
int firstSensor = 0; int secondSensor = 0;int thirdSensor = 0;
Serial.print();ou
Serial.write();??
Serial.print();
Serial.print(2015);
“2" “0" “1" “5"
Serial.write();
Serial.write(2015);
2015
0x07DF
00000111 11011111
Bluetooth
WiFi
USB
NFC
+
Com grandes poderes vem grandes responsabilidades
Velocidade
Integridade
Segurança
Fale só o necessário!
String sensor_a = “A:” + digitalRead(5);String sensor_b = “B:” + digitalRead(6);String sensor_c = “C:” + digitalRead(7);String sensor_d = “D:” + digitalRead(8);String sensor_e = “E:” + digitalRead(9);String sensor_f = “F:” + digitalRead(10);Serial.println(sensor_a);Serial.println(sensor_b);Serial.println(sensor_c);Serial.println(sensor_d);Serial.println(sensor_e);Serial.println(sensor_f);
A:1B:0C:1D:1E:0D:1
24 bytes
int sensors [] = {digitalRead(5), digitalRead(6), digitalRead(7), digitalRead(8), digitalRead(9), digitalRead(10)};
char states = 0x00; for(int i = 0; i < sizeof(sensors )/sizeof(byte); i++) { states = states | (sensors[i] << i);}
Serial.write(states);
00101101
1 byte
Verifique suas coisas ao sair e ao chegar!
Checksum
I received: 2 I received: 51 I received: 67 I received: 48 I received: 48 I received: 67 I received: 69 I received: 55 I received: 53 I received: 52 I received: 67 I received: 67 I received: 66 I received: 3
2 51 67 48 48 67 69 55 53 52 67 67 66 3
2 51 67 48 48 67 69 55 53 52 67 67 66 3
51 67 48 48 67 69 55 53 52 67 67 66
51 67 48 48 67 69 55 53 52 67 67 66
3 C 0 0 C E 7 5 4 C C B
3C 00 CE 75 4C CB
3C ^ 00 ^ CE ^ 75 ^ 4C == CB
https://github.com/tzikis/ArduinoMD5/
http://excamera.com/sphinx/article-crc.html
https://github.com/vinmenn/Crc16
Checksum
MD5
CRC-16
CRC-32
< uses-perm ission android:nam e= "android.perm ission.BLUETO O TH" />< uses-perm ission android:nam e= "android.perm ission.BLUETO O TH_ADM IN" />
< uses-feature android:nam e= "android.hardw are.usb.accessory" />
< uses-perm ission android:nam e= "android.perm ission.ACCESS_W IFI_STATE" />< uses-perm ission android:nam e= "android.perm ission.CHANGE_W IFI_STATE" />< uses-perm ission android:nam e= "android.perm ission.CHANGE_NETW O RK_STATE" />< uses-perm ission android:nam e= "android.perm ission.INTERNET" />< uses-perm ission android:nam e= "android.perm ission.ACCESS_NETW O RK_STATE" />
Permissões AndroidManifest.xml
Bluetooth
USB
WiFi
< uses-feature android:nam e= "android.hardw are.nfc" android:required= "true" /> < uses-perm ission android:nam e= "android.perm ission.NFC" />
NFC
Preparando...
private final InputStream mmInStream; private final OutputStream mmOutStream;
InputStream tmpIn = null; OutputStream tmpOut = null;
try { tmpIn = socket.getInputStream(); tmpOut = socket.getOutputStream(); } catch (IOException e) { }
mmInStream = tmpIn; mmOutStream = tmpOut;
public String read() { byte[] bytes = new byte[1024]; StringBuilder x = new StringBuilder(); int numRead = 0;
while ((numRead = mmInStream.read(bytes)) >= 0) { x.append(new String(bytes, 0, numRead)); } }
Lendo dados...
public void write(byte[] bytes) { try { mmOutStream.write(bytes); } catch (IOException e) { } }
Enviando dados...
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????