Node MCU dengan Arduino IDE

Berikut tahapan untuk melakukan pemrograman NodeMCU dengan menggunakan Arduino IDE

1. Download Arduino IDE terbaru di situs: https://www.arduino.cc/en/Main/Software

2. Jalankan aplikasi arduino

3. Akses menu File > Preference pada Arduino

4. Input url berikut: “http://arduino.esp8266.com/stable/package_esp8266com_index.json” pada bagian “Additional Boards Manager URs” seperti ditunjukkan dalam gambar berikut:

arduino-preference

5. Klik OK

6. Akses Menu Tools > Board: > Board Manager, kemudian pilih Board ESP8266 kemudian klik install. Maka akan dilanjutkan dengan proses download addon board esp8266 untuk IDE. Proses ini memakan waktu cukup lama, ukuran addon board ini sekitar 180MB.

instalasi-arduino-board-nodemcu

Mekanisme instalasi offline akan menyusul

7. Setelah instalasi selesai pilih board NodeMCU, yang saya gunakan NodeMCU 1.0

arduino-board-nodemcu

Setelah board NodeMCU terpilih, tampilan pada tools akan bertambah beberapa opsi.

9. Pilih port serial/COM Port yang sesuai, dan IDE Arduino sudah siap untuk melakukan pemrograman NodeMCU.

Setelah tahapan konfigurasi selesai, saatnya kita mencoba membuat aplikasi sederhana untuk menguji, Kita akan mencoba menguji dengan membuat lampu kedip/blink dengan memanfaatkan contoh yang sudah ada pada IDE Arduino. Tahapan menguji sebagai berikut:

1. Buka contoh program arduino pada menu File > Example > 01.Basic > Blink

2. Salah satu hal yang harus diperhatikan adalah default library pada Arduino IDE untuk NodeMCU sangat berbeda dengan Board Arduino. Penomoran port pada NodeMCU mengikuti daftar berikut:

static const uint8_t D0 = 16;
static const uint8_t D1 = 5;
static const uint8_t D2 = 4;
static const uint8_t D3 = 0;
static const uint8_t D4 = 2;
static const uint8_t D5 = 14;
static const uint8_t D6 = 12;
static const uint8_t D7 = 13;
static const uint8_t D8 = 15;
static const uint8_t D9 = 3;
static const uint8_t D10 = 1;

 Artinya untuk menampilkan data pada port D0 maka nomor pin yang digunakan pada program adalah 16

3. Untuk menampilkan blik pada led internal yang ada pada NodeMCU maka kita gunakan port 0.

4. pada program Program Blink port 13 kita ubah menjadi 16

void setup() {
// initialize digital pin 13 as an output.
pinMode(16, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
digitalWrite(16, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(16, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}

Contoh-program-arduino-board-nodemcu-blink

5. Setelah itu klik tombol Upload, maka tahap compile dan upload akan di proses, dan perhatikan notifikasi pada layar bagian bawah. Jika tidak ada error, maka LED pada NodeMCU akan berkedip sesuai dengan program contoh yang dibuat.

Renesas R8C Programming – UART

Pemrograman baud rate serial port pada mikrokontroller Renesas R8C bergantung pada frekuensi kristal yang digunakan. Register internal yang berhubungan dengan kecepatan transfer adalah U0brg untuk Serial 1 dan U1brg untuk serial 2.  Rumus umumnya adalah:

Rxbrg=freq.kristal/(baud-rate * 16) – 1

Jadi misalnya kita menggunakan kristal dengan frekuensi 12 Mhz, dan kita ingin agar mikrokontroller renesas berkomunikasi dengan komputer menggunakan UART 1 dalam kecepatan 9600 bps maka nilai brg yang harus di input adalah :

R1brg=12000000/(9600*16)-1

R1brg=77.125 atau dibulatkan menjadi 77

Dari rumus tersebut diperoleh tabel berikut

Baud rate

12 Mhz

20 Mhz

nilai brg pembulatan nilai brg pembulatan
9600 77.125

77

129.208333

129

19200 38.0625

38

64.1041667

64

38400 18.53125

19

31.5520833

32

57600 12.02083

12

20.7013889

21

115200 5.510417

6

9.85069444

10

Dalam pemrograman menggunakan HighPerformance Embeded Workshop (HEW) dengan bahasa C dapat dituliskan sebagai berikut :

clk0_u1c0 = 0;
clk1_u1c0 = 0;
u1brg = 77;
Dan untuk mengaktifkan dapat digunakan register:
#UART1_PENGIRIM_AKTIF
te_u1c1 = 1;
#UART1_PENERIMA_AKTIF \
re_u1c1 = 1;
Demikian sekilas tentang pemrograman MCU renesas R8C

Pemrograman Mikrokontroller

Kita sering mendengarkan kata mikroprosesor, namun mungkin jarang yang pernah dengar kata mikrokontroller. Mahluk apakah mikrokontroller itu ? Hampir tiap hari kita bertemu dengan benda yang di sebut personal komputer. Apapun itu bentuknya, pada prinsipnya suatu komputer pasti memerlukan komponen Input, Prosesor (pemroses), penyimpan (memory) dan Output. Input pada komputer PC dapat berupa keyboard, mouse, gamepad, scanner dll..microprocessor-194227 sedangkan komponen output contohnya Monitor, Printer, Projector dll. Prosesor berfungsi untuk mengolah suatu input, berdasarkan program dan data yang telah diberikan sebelumnya dan disimpan di Memory (RAM, ROM, Harddisk, USB dll). Tanpa program, komputer merupakan benda mati yang tidak ada gunanya, tidak dapat merespon input maupun menghasilkan output. Komputer di desain sebagai suatu sistem yang upgradeable. Harddisk dan memory dapat di tingkatkan kapasitasnya dengan mudah, input dapat berbentuk USB, serial, PS2 demikian juga dengan output.

Lalu apa hubungannya personal komputer dengan mikrokontroller? mikroprosesor merupakan pengolah utama pada PC dan tidak dapat berdiri sendiri, ia memerlukan memory, komponen input dan output. Sedangkan pada mikrokontroller komponen memory dan I/O telah berada pada satu chip. Sehingga sangat praktis sebagai perangkat pengendali, oleh karena itu mikrokontroller sering digunakan pada embeded system. Hampir setiap perangkat yang kita temukan sehari-hari menggunakan mikrokontroller. TV, HP, kalkulator, penerjemah elektronik, remote controll, AC, Referigerator, ECU mobil, dll menggunakan mikrokontroller sebagai pengendali utamanya.

Salah satu tipe mikrokontroller adalah keluarga mcs-51 yang awalnya diproduksi oleh Intel. Diawali dengan versi 8031 yang merupakan mikrokontroller tanpa ROM internet, dan dikembangkan dengan versi lain yang lebih lengkap. salah satu keluarga MCS-51 yang sangat populer adalah 8051 dan diikuti oleh sekitar 20 vendor dengan memproduksi mikrokontroller yang kompatibel dengan 8051.

80511

Hampir seluruh kaki pada suatu mikrokontroller adalah port I/O yang dapat digunakan untuk mengendalikan sesuatu. Mengingat perangkat ini adalah komponen digital, maka output yang dihasilkan maupun input yang dibaca oleh mikrokontroller berbentuk logika high atau low (biner 1 atau 0). Dari keluaran 1 dan 0 tersebut yang dihubungkan ke suatu driver untuk mengendalikan perangkat lain dengan standar yang berbeda. Gambar pinout dari suatu IC 8051 dapat dilihat disini

Agar mikrokontroller dapat bekerja sesuai dengan keinginan, maka diperlukan langkah untuk melakukan pemrograman. Pemrograman dilakukan dengan cara mengisi mikrokontroller 8051 dengan kode-kode hexadesimal yang merupakan hasil dari kompilasi pemrograman dengan bahasa assembly, C, Basic atau yang lain. Pada pembahasan ini kita akan mempelajari pembuatan program 8051 menggunakan bahasa assembly.

ASSEMBLER 8051

Bahasa assembly sering disebut sebagai bahasa tingkat menengah karena instruksi-instruksi yang digunakan lebih dekat dengan bahasa mesin, namun masih dapat dipahami oleh manusia. Untuk mempermudah pemahaman dalam menggunakan bahasa Assembly 8051 kita akan pelajari secara bertahap disetai dengan contoh.

Register 8051

Register merupakan suatu variabel yang berfungsi sebagai penyimpan sementara. Jika pada pemrograman tingkat tinggi kita dengan mudah membuat suatu variabel dengan nama bebas, tetapi pada assembly terdapat batasan-batasan yang harus di ikuti. Variabel pada 8051 terdiri dari 2 bagian yaitu variabel 16 Bit, yang dapat menyimpan 16 bit data (4 digit bilangan hexa) yaitu variabel DPTR serta beberapa variabel umum 8 bit yaitu variabel A, B, R0,R1,R2 .. R7. Beberapa variabel builtin telah dipetakan pada suatu alamat dengan fungsi tertentu. Misalkan variabel p0,p1,p2,p3 yang telah dihubungkan ke keluaran ke 4 port yang masing-masing terdiri dari 8 bit.

MOV

Perintah MOV merupakan perintah untuk memindahkan suatu nilai ke variabel, atau dari suatu variabel ke variabel lain. Contoh :

  • MOV A,B : memindahkan isi variabel B ke variabel A.
  • MOV A,#10: memindahkan nilai 10 ke variabel A
  • MOV A,10 : memindahkan isi memory pada alamat 10 ke variabel A

Berikut contoh penggunaannya :

MOV B,#40  ; memindahkan nilai 40 desimal ke variabel B

MOV P1,#FFH ; memindahkan nilai FF ke port 1

MOV R1,#10000000B ; memindahkan data nilai 128 ke variabel R1

Contoh pemrograman sederhana 8051.

Misalkan kita ingin agar mikrokontroller 8051 dapat mengendalikan LED, maka kita perlu mendesain rangkaian terlebih dahulu.

Rangkaian yang dibentuk adalah sebagai berikut :

LEDUC

Pada rangkaian tersebut Port 0 yang terdiri dari 8 pin (1 byte) P0.0 sampai P0.7 masing-masing dihubungkan ke led. Sehingga jika output port berlogika tinggi (logika TTL) maka led akan menyala, sebaliknya lampu akan mati jika output suatu port berlogika rendah. Oleh karena itu dengan memahami bahwa suatu port terdiri dari 1 byte data (8bit) dan Masing-masing kaki dari port 0 bertanggung jawab terhadap 1 bit data, kita dapat mengendalikan lampu dengan cara sebagai berikut:

Jika kita ingin seluruh lampu menyala, maka secara logika p0.0 sampai p0.7 atau seluruh port harus berlogika tinggi. Dapat dituliskan sebagai P0=11111111B (jika dalam format biner) atau dengan mengkonversi angka tersebut menjadi hexadesimal diperoleh P0=FFH, atau P0=255 (desimal 2^8). Dalam bahasa assembly dituliskan :

MOV P0,#FFH ; pindahkan nilai FF Hexa (11111111 biner) ke port 0.

Dengan perintah tersebut seluruh led akan menyala. Demikian pula jika kita ingin agar yang menyala hanya led A dan H, maka yang harus dikirim ke port 0 adalah nilai 10000001 biner atau 129 desimal atau 41Hexa. Dalam assembly dituliskan:

MOV P0,#41H ;pindahkan nilai 41H ke port 0 atau

MOV p0,#10000001B ;atau

MOV P0,#129

Ketiga perintah diatas akan menghasilkan keluaran yang sama. Ingat bahwa nilai dapat dituliskan dalam format desimal, biner maupun hexa.

Bagaimana jika kita ingin agar nyala lampu tersebut dapat bergantian ? Seperti penulisan program umumnya, program dalam bahasa assembly selalu diurutkan dari atas ke bawah, sehingga baris perintah paling atas akan di eksekusi terlebih dahulu. Dengan demikian misalnya kita ingin agar led menyala berurutan dari A sampai G dapat kita buat program assembly sebagai berikut (nilai dalam format biner):

Start:

MOV P0,#00000001B

MOV P0,#00000010B

MOV P0,#00000100B

MOV P0,#00001000B

MOV P0,#00010000B

MOV P0,#00100000B

MOV P0,#01000000B

MOV P0,#10000000B

end

(bersambung)