Comunicação Android Arduino - JASI 2015

30
Comunicação Android <=> Arduino

Transcript of Comunicação Android Arduino - JASI 2015

Page 1: Comunicação Android Arduino - JASI 2015

Comunicação Android <=> Arduino

Page 2: Comunicação Android Arduino - JASI 2015
Page 3: Comunicação Android Arduino - JASI 2015
Page 4: Comunicação Android Arduino - JASI 2015
Page 5: Comunicação Android Arduino - JASI 2015
Page 6: Comunicação Android Arduino - JASI 2015
Page 7: Comunicação Android Arduino - JASI 2015
Page 8: Comunicação Android Arduino - JASI 2015

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;

Page 9: Comunicação Android Arduino - JASI 2015

Serial.print();ou

Serial.write();??

Page 10: Comunicação Android Arduino - JASI 2015

Serial.print();

Serial.print(2015);

“2" “0" “1" “5"

Page 11: Comunicação Android Arduino - JASI 2015

Serial.write();

Serial.write(2015);

2015

0x07DF

00000111 11011111

Page 12: Comunicação Android Arduino - JASI 2015

Bluetooth

Page 13: Comunicação Android Arduino - JASI 2015

WiFi

Page 14: Comunicação Android Arduino - JASI 2015

USB

Page 15: Comunicação Android Arduino - JASI 2015

NFC

Page 16: Comunicação Android Arduino - JASI 2015
Page 17: Comunicação Android Arduino - JASI 2015

+

Page 18: Comunicação Android Arduino - JASI 2015

Com grandes poderes vem grandes responsabilidades

Page 19: Comunicação Android Arduino - JASI 2015

Velocidade

Integridade

Segurança

Page 20: Comunicação Android Arduino - JASI 2015

Fale só o necessário!

Page 21: Comunicação Android Arduino - JASI 2015

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

Page 22: Comunicação Android Arduino - JASI 2015

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

Page 23: Comunicação Android Arduino - JASI 2015

Verifique suas coisas ao sair e ao chegar!

Page 24: Comunicação Android Arduino - JASI 2015

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

Page 25: Comunicação Android Arduino - JASI 2015

https://github.com/tzikis/ArduinoMD5/

http://excamera.com/sphinx/article-crc.html

https://github.com/vinmenn/Crc16

Checksum

MD5

CRC-16

CRC-32

Page 26: Comunicação Android Arduino - JASI 2015

< 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

Page 27: Comunicação Android Arduino - JASI 2015

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;

Page 28: Comunicação Android Arduino - JASI 2015

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...

Page 29: Comunicação Android Arduino - JASI 2015

public void write(byte[] bytes) { try { mmOutStream.write(bytes); } catch (IOException e) { } }

Enviando dados...

Page 30: Comunicação Android Arduino - JASI 2015

??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????