---
# System prepended metadata

title: '**Dokumentasi Komunikasi **'

---

# **Dokumentasi Komunikasi **
Minggu ke 2,3 


# **Can Bus** 
sudah berhasil mengirim 1 byte data, antara 1 nucleo maupun antara bluephil dengan f466RE. 


program ini menggunakan pin can1 dan can2 di 1 nucleo f466RE. can1 akan mengirim data 1 byte tiap detik dan can2 akan menerima datanya.

```
#include "mbed.h"

//Ticker ticker;
Serial pc(USBTX, USBRX,115200);
DigitalOut led2(PA_5);
CAN can1(PA_11, PA_12);
CAN can2(PB_12, PB_13);
char counter = 0;

void send() {
    //led1=!led1;
    CANMessage msg(0x1337, &counter, 1); // create and initialize msg to being the message to send.
    if(can1.write(msg)){                  // send the message
     counter++;
     //led2 = !led2;
     printf("Message sent: %d\n", counter);
    }
}

int main() {        
    can1.frequency(200000);
    can2.frequency(200000);
    CANMessage msg; // create and initialize msg to being the message to send.
   // ticker.attach(&send, 1); //panggil fungsi send tiap 1 detik   
    while(1) {
        send();
        wait(1);
        if(can2.read(msg)) {
         pc.printf("hello2 \n");
         pc.printf("Message received: %d\n", msg.data[0]);
         led2 = !led2;
        wait(0.3);
        }
    }
}
```
program untuk mengirim 1 byte data antara bluephill dan nucleo, bluephil akan mengirim data 1 byte dalam char (counter) ke nucleo f466RE
*bluephil menggunakan st-link dari debugger nucleo f466re bekas.

Program receiver
```
//nucleo
#include "mbed.h"
 
Serial pc(USBTX, USBRX, 115200);
DigitalOut led2(PA_5);
CAN can(PA_11, PA_12);
 
int main() {
   can.frequency(200000);
   //can.mode(CAN::Normal);
   CANMessage msg;
   pc.printf("hello josh ! :)\n");
    while(1) {
        if(can.read(msg)) {
         pc.printf("hello2 \n");
         pc.printf("Message received: %d\n", msg.data[0]);
         led2 = !led2;
        } 
        wait(0.2);
    }
}
```

program transmitter
untuk stm32 gunakan board F103RB
```
//stm32
#include "mbed.h"
 
Ticker ticker;
DigitalOut led1(PC_13);
CAN can(PB_8, PB_9); //pa11,12, pb89
char counter = 0;

void send() {
    CANMessage msg(0x1337, &counter, 1); // create and initialize msg to being the message to send.
    //led1=!led1;
    if(can.write(msg)){                  // send the message
     counter++;
     led1 = !led1;
     //printf("Message sent: %d\n", counter);
    }
}
 
int main() {
    can.frequency(200000);
    // can.mode(CAN::Normal);
    ticker.attach(&send, 1); //panggil fungsi send tiap 1 detik   
    }
```

Rangkaian
menggunakan debugger dari F466RE bekas
![](https://i.imgur.com/UcGLdzj.jpg)



Kendala 
- CAN tidak read data yang dikirimkan sehingga data yang dikirim berenti di data ke 3. solusinya dengan rangkaiannya diperbaiki lebih rapih dan wiringnya dipastikan good, dan code sebelumnya ada kesalahan di inisiasi msg.
- Bluephil tidak bisa menampilkan serial sehingga harus dikasih indikasi berupa led nyala. solusinya mungkin bisa dengan menghubungkan pin TX RX bluephil ke debugger / mcu master.

# UART
Berhasil membuat library untuk komunikasi UART.
bisa dicompile, tapi belum dicoba.
code sudah diupload di [Repository Mbed KRAI.](https://os.mbed.com/teams/KRAI-ITB-2019/code/uartKRAI/)

# JOYSTICK