Friday, February 28, 2025

Implementasi FreeRTOS pada STM32H7 series STM32H7xx / STM32H743 / STM32H750 menggunakan software Arduino IDE

 Assalamu'alaikum warohmatulohi wabarakatuh,


tunggu wangsit dulu ya...

Implementasi FreeRTOS pada STM32H7 series STM32H7xx / STM32H743 / STM32H750 menggunakan software STM32CubeIDE

Assalamu'alaikum warohmatulohi wabarakatuh,


tunggu wangsit dulu ya...

Pemrograman STM32H7 series STM32H7xx / STM32H743 / STM32H750 di STM32Cube IDE menggunakan JTAG downloader WeAct ST-Link V2.1 (STM32CubeProgramming - SWD)

Assalamu'alaikum warohmatullahi wabarakatuh,

Pada tulisan kali ini saya akan berbagi cara memprogram mikrokontroler STM32H7 series, khususnya STM32H743 dan STM32H750, menggunakan STM32CubeIDE dan downloader WeAct ST-Link V2.1 lewat jalur SWD (Serial Wire Debug). Modul ini kompatibel dengan ST-LINK V2, murah, dan sudah dilengkapi USB-UART, sehingga cocok untuk belajar. ST-LINK V2 original maupun clone juga tetap bisa dipakai dengan langkah yang sama.

STM32H7 adalah keluarga ARM Cortex-M7 yang sangat kencang. STM32H743 bisa berjalan sampai 480 MHz dengan flash internal 2 MB, sedangkan STM32H750 adalah versi "value line" dengan core yang sama tetapi flash internal hanya 128 KB. Namun, H7 punya beberapa jebakan yang tidak ada di seri F1 atau F4, terutama soal konfigurasi power supply. Kalau salah setting, chip bisa terlihat seperti "mati" setelah di-flash.

Pada tutorial ini saya menggunakan core board DevEBox STM32H7XX_M buatan mcudev (Ver V2.0) dengan chip STM32H743VIT6: kemasan LQFP100, flash internal 2 MB, RAM 1 MB, dan kecepatan maksimal 480 MHz. Board ini juga dilengkapi kristal 25 MHz dan 32,768 kHz, QSPI flash W25Q64 (8 MB), slot microSD, konektor kamera DCMI, header LCD/OLED SPI, tombol RST/K1/K2, serta LED user D2. Dengan flash internal 2 MB, program bisa langsung disimpan di flash internal tanpa perlu QSPI eksternal.

Tampak depan board DevEBox STM32H7XX_M. Header SWD (J1) ada di sebelah port USB.

Yang akan dibahas:

  1. Alat dan bahan
  2. Wiring ST-LINK ke board STM32H7
  3. Membuat project dan konfigurasi di STM32CubeIDE
  4. Program sederhana: LED berkedip (blink)
  5. Upload dan debug dari STM32CubeIDE
  6. Upload menggunakan STM32CubeProgrammer
  7. Catatan khusus STM32H750
  8. Troubleshooting masalah yang sering muncul

1. Alat dan Bahan

ItemKeterangan
Board STM32H7DevEBox STM32H7XX_M (mcudev) dengan STM32H743VIT6; versi STM32H750VBT6 juga tersedia
Downloader ST-LINKSaya memakai WeAct ST-Link V2.1 (Mini Debugger): port USB-C, SWD, dan USB-UART (virtual COM port) dalam satu modul. ST-LINK V2 original atau clone juga bisa dipakai
Kabel jumper female–femaleMinimal 4 kabel untuk SWD, ditambah 2–3 kabel jika memakai UART
Kabel USBUSB-C untuk debugger, dan kabel micro USB untuk board jika board diberi daya sendiri
STM32CubeIDEIDE gratis dari ST, sudah termasuk STM32CubeMX dan driver ST-LINK
STM32CubeProgrammerUntuk flash file .hex/.bin/.elf dan erase chip

Pastikan driver ST-LINK sudah terpasang. Biasanya driver ikut terpasang bersama STM32CubeIDE. Jika belum, cari paket "STSW-LINK009" di situs ST.

2. Wiring ST-LINK ke STM32H7 (SWD)

SWD hanya butuh dua jalur data, yaitu SWDIO dan SWCLK, ditambah GND. Pada STM32H7, kedua pin tersebut ada di PA13 dan PA14.

Sebagai downloader saya memakai WeAct ST-Link V2.1. Modul ini kompatibel dengan ST-LINK V2, tetapi memakai firmware ST-LINK V2-1 yang menambahkan USB-UART (virtual COM port). Jadi selain untuk flash dan debug lewat SWD, modul yang sama bisa dipakai untuk melihat output printf dari board tanpa USB-TTL tambahan. Modul ini bernama Mini Debugger V1.0 dari WeAct Studio, dengan konektor 10 pin yang labelnya tercetak di bagian belakang PCB.

Modul WeAct ST-Link V2.1: port USB-C di satu sisi, konektor kabel untuk jalur SWD dan UART di sisi lain.

Label pin WeAct Mini Debugger V1.0 di bagian belakang PCB.

KelompokPin (urut dari atas)
SWD3V3, SWDIO, SWCLK, GND, SWO, NRST
UARTTXD, RXD, GND, 5V

Pin SWO dan 5V tidak dipakai di tutorial ini. Pin NRST bisa disambung ke pin NRST board jika tersedia; header J1 di board DevEBox tidak menyediakannya.

Board DevEBox sudah menyediakan header SWD 5 pin (J1) di sebelah port micro USB, dengan label BT0, 3V3, GND, DIO, CLK. Sambungkan seperti tabel berikut:

Pin WeAct Mini DebuggerPin header J1 boardPin STM32H7Keterangan
SWDIODIOPA13Jalur data dua arah
SWCLKCLKPA14Clock dari ST-LINK
GNDGNDGNDWajib tersambung
3V33V33V3Opsional; jangan disambung jika board sudah diberi daya dari micro USB
(tidak disambung)BT0BOOT0Normalnya dibiarkan; BOOT0 sudah ditarik ke GND lewat resistor di board

Ilustrasi wiring WeAct ST-Link V2.1 ke DevEBox STM32H7XX_M: jalur SWD ke header J1 dan jalur UART ke PA9/PA10.

Header J1 tidak memiliki pin NRST. Jika butuh mode connect under reset, gunakan tombol RST di board (lihat bagian 5 dan 8).

Tampak belakang board: label header SWD terbaca SWCLK, SWDIO, GND, 3V3, BT0, beserta nama pin I/O di kedua sisi board.

Beberapa tips:

  • Selalu ikuti label pin yang tercetak di debugger dan board. Urutan pin antar merk ST-LINK bisa berbeda.
  • Gunakan kabel jumper pendek (di bawah 20 cm). Kabel panjang sering membuat koneksi SWD gagal di frekuensi tinggi.
  • Jika board diberi daya dari micro USB, cukup sambungkan SWDIO, SWCLK, dan GND.

Bonus: sambungan UART untuk printf

Karena WeAct ST-Link V2.1 punya USB-UART, sambungkan juga kabel berikut ke USART1 board DevEBox:

Pin WeAct Mini DebuggerPin board DevEBoxKeterangan
TXDPA10 (RX1)Data dari PC ke STM32
RXDPA9 (TX1)Data dari STM32 ke PC
GNDGNDCukup satu GND jika GND SWD sudah tersambung

TX selalu disilang ke RX. Di PC, modul ini muncul sebagai port COM bernama STMicroelectronics STLink Virtual COM Port. Buka dengan terminal serial (PuTTY, Tera Term, atau terminal bawaan CubeIDE) pada baud rate yang sama dengan setting USART1, misalnya 115200.

3. Membuat Project di STM32CubeIDE

3.1 Project baru

  1. Buka STM32CubeIDE, lalu pilih File → New → STM32 Project.
  2. Di tab MCU/MPU Selector, ketik STM32H743VI. Di daftar akan muncul STM32H743VITx; pilih chip tersebut.
  3. Beri nama project, misalnya H7_Blink. Biarkan Targeted Language = C, lalu klik Finish.
  4. Jika muncul pertanyaan untuk membuka perspektif Device Configuration Tool, pilih Yes. File .ioc akan terbuka.

3.2 SYS: aktifkan Serial Wire (wajib)

Buka System Core → SYS, lalu set Debug = Serial Wire.

Ini langkah paling penting. Jika dibiarkan "No Debug", pin PA13 dan PA14 bisa terpakai untuk fungsi lain. Akibatnya, setelah program pertama di-flash, ST-LINK tidak bisa lagi terhubung secara normal.

3.3 RCC: sumber clock dan power supply

Buka System Core → RCC:

  • High Speed Clock (HSE): pilih Crystal/Ceramic Resonator. Board DevEBox memakai kristal 25 MHz untuk HSE. Jika butuh RTC, set juga Low Speed Clock (LSE) ke Crystal, karena board ini punya kristal 32,768 kHz.
  • Di bagian Parameter Settings → Power Parameters, cari Supply Source dan pilih PWR_LDO_SUPPLY.

Setting Supply Source harus sesuai dengan rangkaian hardware board. Board DevEBox memakai regulator AMS1117-3.3V dan tidak memakai SMPS internal chip, jadi pilih PWR_LDO_SUPPLY. Jika setting ini tidak cocok dengan hardware, chip akan hang saat inisialisasi dan ST-LINK tidak bisa connect. Cara memulihkannya ada di bagian Troubleshooting.

3.4 Clock Configuration

Buka tab Clock Configuration:

  • Pilih HSE sebagai sumber PLL, lalu isi frekuensi kristal 25 MHz.
  • Untuk percobaan awal, set SYSCLK = 400 MHz. Nilai ini aman untuk semua revisi chip.
  • STM32H743 revisi V bisa sampai 480 MHz, tetapi harus memakai voltage scale VOS0. Revisi Y (chip lama) maksimal 400 MHz.

Jika ada error merah pada clock tree, klik Resolve Clock Issues dan biarkan CubeMX menyesuaikan pembagi clock.

3.5 GPIO untuk LED

Pada board DevEBox, LED user D2 tersambung ke pin PA1 dan bersifat active low: LED menyala saat pin bernilai LOW. Klik pin PA1 pada tampilan chip, set sebagai GPIO_Output, lalu beri label LED lewat klik kanan → Enter User Label agar kodenya lebih mudah dibaca. Agar LED mati saat awal, buka System Core → GPIO → PA1 dan set GPIO output level = High.

Tombol K1 ada di PE3 dan K2 di PC5 (keduanya active low), bisa dipakai untuk percobaan input berikutnya.

Simpan file .ioc dengan Ctrl+S. CubeIDE akan menanyakan apakah kode ingin di-generate; pilih Yes.

4. Program Sederhana: LED Berkedip

Buka file Core/Src/main.c. Tulis kode hanya di antara komentar USER CODE BEGIN dan USER CODE END, supaya tidak terhapus saat kode di-generate ulang dari .ioc.

Cari loop while (1) di fungsi main(), lalu isi seperti berikut:

  /* USER CODE BEGIN WHILE */
  while (1)
  {
    HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);
    HAL_Delay(500);
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */

LED_GPIO_Port dan LED_Pin otomatis dibuat oleh CubeMX dari user label LED pada langkah 3.5. Jika tidak memberi label, gunakan langsung GPIOA dan GPIO_PIN_1. Karena LED bersifat active low, HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET) akan menyalakan LED dan GPIO_PIN_SET mematikannya.

Klik ikon palu (Build) atau tekan Ctrl+B. Pastikan Console menampilkan 0 errors. Hasil build berupa file H7_Blink.elf di folder Debug.

5. Upload dan Debug dari STM32CubeIDE

5.1 Update firmware ST-LINK

Sebelum upload pertama, update dulu firmware ST-LINK lewat Help → ST-LINK Upgrade:

  1. Colokkan ST-LINK ke USB, lalu klik Open in update mode.
  2. Klik Upgrade dan tunggu sampai selesai.

Firmware lama sering tidak mengenali seri H7. WeAct ST-Link V2.1 akan terdeteksi sebagai STLink V2-1 dan bisa di-update lewat menu yang sama. Jika modul ternyata berisi firmware DAPLink (WeAct juga menjual versi ini), di CubeIDE pilih debug probe OpenOCD dengan interface CMSIS-DAP, atau isi ulang firmware ST-LINK sesuai petunjuk WeAct.

5.2 Debug Configuration

Klik kanan project, lalu pilih Debug As → Debug Configurations. Klik dua kali STM32 C/C++ Application untuk membuat konfigurasi baru, lalu buka tab Debugger:

OpsiNilai yang disarankan
Debug probeST-LINK (ST-LINK GDB server)
InterfaceSWD
Frequency4000 kHz; turunkan ke 1000 kHz atau lebih kecil jika koneksi gagal atau kabel panjang
Reset behaviourSoftware system reset (header J1 tidak punya NRST); Connect under reset hanya jika NRST disambung

Klik Apply, lalu Debug. CubeIDE akan mem-flash program, pindah ke perspektif Debug, dan berhenti di awal main(). Tekan F8 (Resume) dan LED akan berkedip setiap 500 ms.

Untuk upload tanpa masuk mode debug, gunakan Run As → STM32 C/C++ Application, atau klik ikon Run (play hijau).

6. Upload Menggunakan STM32CubeProgrammer (SWD)

STM32CubeProgrammer berguna untuk mem-flash file hasil build tanpa membuka IDE, misalnya saat produksi, atau untuk erase total chip yang bermasalah.

  1. Buka STM32CubeProgrammer. Di panel kanan, pilih ST-LINK.
  2. Atur parameter koneksi:
    • Port: SWD
    • Frequency: 4000 kHz (turunkan bila gagal)
    • Mode: Normal, atau Under reset jika NRST disambung
  3. Klik Connect. Jika berhasil, isi memori dan informasi chip (Device ID, ukuran flash) akan tampil.
  4. Buka menu Erasing & Programming (ikon panah ke bawah di sidebar kiri).
  5. Pada File path, pilih file .elf atau .hex dari folder Debug project. Jika memakai file .bin, isi Start address = 0x08000000.
  6. Centang Verify programming dan Run after programming, lalu klik Start Programming.
  7. Setelah muncul "File download complete", klik Disconnect. Program langsung berjalan.

7. Catatan Khusus STM32H750

Karena STM32H743VIT6 sudah memiliki flash internal 2 MB, bagian ini tidak diperlukan untuk board yang saya pakai. Catatan berikut hanya untuk pembaca yang memakai STM32H750.

STM32H750 hanya memiliki 128 KB flash internal, satu sektor saja. Untuk program kecil seperti blink, langkah di atas berlaku sama persis dengan H743.

Masalah muncul ketika program membesar, misalnya saat memakai FreeRTOS, LwIP, atau library grafis. Solusinya adalah menyimpan program di QSPI flash eksternal (W25Q64 8 MB juga tersedia pada board DevEBox versi H750) dan menjalankannya dari alamat 0x90000000 (XIP, execute in place). Skemanya:

  1. Bootloader kecil di flash internal (0x08000000) yang menginisialisasi QSPI dalam mode memory-mapped, lalu melompat ke 0x90000000.
  2. Aplikasi utama dengan linker script yang diubah supaya region FLASH berada di 0x90000000.
  3. External Loader (file .stldr) supaya ST-LINK bisa menulis ke QSPI flash. File ini didaftarkan di STM32CubeProgrammer (menu EL) dan di CubeIDE (Debug Configurations → Debugger → External Loaders).

Pembahasan lengkapnya akan saya tulis di artikel terpisah.

8. Troubleshooting

GejalaKemungkinan penyebabSolusi
"No STM32 target found"Wiring salah atau longgar, GND tidak tersambung, board tidak mendapat dayaCek ulang SWDIO/SWCLK/GND, pastikan board menyala, gunakan kabel pendek
"Target is not responding, retrying..."Frekuensi SWD terlalu tinggi, atau pin SWD dimatikan oleh programTurunkan frekuensi ke 1000 kHz atau lebih kecil; tahan tombol RST saat klik Connect
Bisa flash sekali, setelah itu tidak bisa connect lagiSYS Debug masih "No Debug", atau Supply Source (LDO/SMPS) salahPulihkan chip dengan BOOT0 (lihat di bawah), lalu perbaiki .ioc
ST-LINK tidak terdeteksi oleh PCDriver belum terpasangInstall driver STSW-LINK009, coba port USB lain
"ST-LINK firmware is too old"Firmware ST-LINK lamaUpdate lewat Help → ST-LINK Upgrade
Program H750 gagal di-link ("region FLASH overflowed")Ukuran program melebihi 128 KBOptimasi ukuran (-Os) atau pindahkan program ke QSPI

Memulihkan chip yang "terkunci"

Jika chip tidak bisa connect sama sekali, biasanya karena setting Supply Source salah atau pin SWD dimatikan. Pulihkan dengan cara berikut:

  1. Sambungkan pin BT0 ke 3V3 pada header J1 menggunakan kabel jumper.
  2. Matikan lalu nyalakan lagi board. Chip sekarang masuk ke bootloader sistem, sehingga program yang bermasalah tidak dijalankan.
  3. Di STM32CubeProgrammer, connect dengan mode Under reset atau Hot plug.
  4. Klik Full chip erase (ikon penghapus di sidebar kiri).
  5. Lepaskan jumper BT0 (kembali ke GND), lalu matikan dan nyalakan board.
  6. Perbaiki setting di .ioc (SYS Debug = Serial Wire, Supply Source = PWR_LDO_SUPPLY), generate ulang kode, lalu flash kembali.

Penutup

Memprogram STM32H7 dengan ST-LINK sebenarnya tidak jauh berbeda dengan seri STM32 lain. Kuncinya ada di tiga hal: aktifkan SYS Debug = Serial Wire, pastikan Supply Source sesuai hardware board, dan manfaatkan pin BT0 di header SWD untuk memulihkan chip yang terkunci. Untuk STM32H750, perhatikan batas flash internal 128 KB sejak awal perencanaan program.

Pada artikel berikutnya, kita akan membahas implementasi FreeRTOS pada STM32H7 series.

Semoga bermanfaat. Jika ada pertanyaan, silakan tulis di kolom komentar.

Wassalamu'alaikum warohmatullahi wabarakatuh.

Sunday, February 28, 2021

Komunikasi NB IoT NBIOT NB-IoT TELKOMSEL dengan modem Quectel BG96 Quectel BG-96 GPS GSM GPRS 4 BAND MODULE





 

Reset dan Power ON

Pada saat pertama kali modul disambungkan dengan baterai, sistem BG96 harus diberikan input pulsa reset minimal 500mS. Kemudian dilanjutkan dengan input pulsa Powerkey minimal 200mS.

Modem READY

Setelah power up berhasil maka tunggu sampai modem BG96 apakah sudah siap atau belum. Apabila ada balasan dari port serial berupa data karakter ASCII : "RDY", maka modem siap menerima perintah berikutnya.

    RDY

Respons AT OK

Kemudian lanjut kirim command melalui port serial data karakter ASCII "AT" dan tunggu sampai dibalas "OK"

    AT

    OK

 

Cek Fungsional Modem

AT+CFUN?

+CFUN: 1

OK


Cek SIM Card Status

AT+CPIN?

+CPIN: READY

OK

 

Cek Jaringan Operator Seluler

AT+COPS?

+COPS: 0,0,"Tsel-PakaiMasker",0

OK
 

Cek EPS Network Registration Status

AT+CEREG/

+CEREG: 0,4

OK

 

REBOOT Modules Apabila setelah 90 detik nilai CEREG tidak bernilai 1 atau 5

AT+CFUN=1,1

OK

POWERED DOWN

RDY
 

 

Disable Result Code - Error Message Format

AT+CMEE=0

OK 

 

Disable Time Zone Reporting of changed Event  - Time Zone Reporting
AT+CTZR=0

OK

Enable Automatic Time Zone Update

AT+CTZU=1

OK

Configure  Network  Category  to  be  Searched  under LTE (cat M1, cat NB1, cat M1 & NB1)
AT+QCFG="iotopmode",0,1

OK

Configure RAT(s) to be Searched (Auto , GSM, LTE)
AT+QCFG="nwscanmode",0,1

OK

Configure APN for PDP Context Profile

AT+QICSGP=1,1,"NB1INTERNET","","",0  // APN Telkomsel = NB1INTERNET

OK

Aktivasi PDP Context Profile

AT+QIACT=1                           // Activate context profile 1
 
OK                                             // Activation is successful
    
AT+QIACT?                             // Query context profile status
 
+QIACT: 1,1,1,"10.7.157.1"
 
OK

 

Open a TCP connection to the remote server, TCP Client works in buffer access mode

AT+QIOPEN=1,0,"TCP","202.74.236.117",1883,0,0    // Establish a TCP connection in context 
                                                                                         // profile 1, <connectid> is 0
 OK
 
 +QIOPEN: 0,0                                                                // Connected successfully


Send Data in Buffer Access Mode

AT+QISEND=0       // Send  changeable  length  data.  “SEND  OK”  does  not  mean  the                 
                                 // data has been sent to the server successfully. The host can query
                                 // whether the data has reached the server via AT+QISEND=0,0.
 
>test1<ctrl+Z>
 
SEND OK

AT+QISEND=0,4           //Send fixed length data and the data length is 4bytes.
 
>test
 
SEND OK
 
AT+QISEND=0,0            //Query the length of sent data.
 
+QISEND: 9,9,0

OK


Check the connection state

AT+QISTATE=1,0 //Query the connection status when <connectid> is 0
 

+QISTATE: 0,"TCP","202.74.236.117",1883,16309,2,1,0,0,"uart1"

OK

 

Receive Data from Remote Server in Buffer Access Mode

+QIURC: “recv”,0    // The <connectID> 0 received data.
AT+QIRD=0,1500    // Read data, and the length is 1500bytes.
+QIRD: 5                  // The length of actual received data is 5bytes.
 

test1

OK

AT+QIRD=0,1500
+QIRD: 0                  // No data in buffer.
OK

AT+QIRD=0,0         // Query the total length of received data,
                                 // including read and unreaddata.
+QIRD: 5,5,0

OK

 

Read the server respons

AT+QIRD=0,0

+QIRD: 0,0,0

OK


Cek Signal Modem

AT+QCSQ

+QCSQ: "GSM",-74

OK

 

Board BG96 dapat diorder disini: 

https://tokopedia.com/fawwazzshop/nb-iot-stm32-quectel-bg96-gps-gsm-gprs-4-band-module-modul-for-arduino

Pemrograman STM32 di Arduino IDE menggunakan JTAG downloader STLINK V2 (STM32CubeProgramming - SWD )

Arduino menjadi board pertama bagi banyak pengguna mikrokontroller dan pelajar, mahasiswa dan engineer ketika mereka mulai dengan elektronik. Namun, ketika kita mulai membangun lebih banyak dan menggali lebih dalam, kita akan segera menyadari bahwa Arduino belum banyak digunakan untuk industri dan karena merupakan CPU 8-bit maka kinerjanya dinilai kurang cepat. Sedangkan STM32F103C8T6 STM32 Development Board (Blue Pill) baru banyak di pasaran dengan harga yang terjangkau, sehingga banyak sekarang yang menggunakan nya untuk berbagai project yang mana STM32 merupakan CPU 32-bit dan arsitektur ARM Cortex M3. gi bahwa kita dapat menggunakan Arduino IDE yang sama untuk memprogram board STM32 kita. 

Spesifikasi STM32F103C8T6

STM » adalah nama produsen STMicroelectronics
32 » adalah arsitektur ARM 32-bit
F103 » berdiri untuk menunjukkan bahwa arsitektur ARM Cortex M3
C » 48-pin
8 » Memori Flash 64KB
T » jenis paket adalah LQFP
6 » suhu pengoperasian -40 ° C hingga + 85 ° C

Berikut adalah spesifikasi Microcontroller ini :

  • Arsitektur : 32-bit ARM Cortex M3
  • Tegangan Pengoperasian : 2.7V hingga 3.6V
  • Frekuensi CPU : 72 MHz
  • Jumlah pin GPIO : 37
  • Jumlah pin PWM : 12
  • Pin input analog : 10 (12-bit)
  • Periferal USART : 3
  • Perangkat I2C : 2
  • Periferal SPI : 2
  • CAN 2.0 Periferal : 1
  • Timer : 3 (16-bit), 1 (PWM)
  • Memori Flash : 64KB
  • RAM: 20kB

Bagaimana cara memprogram Board STM32

STM32 merupakan mikrokontroler dari keluarga STMicroelectronics. Jadi semua metode yang ada untuk memprogram chip ARM dapat digunakan untuk papan STM32 juga. Salah satu IDE terkenal dan umum digunakan adalah Keil ARM MDK dan selain itu kita juga dapat menggunakan IAR, Atollic TrueStudio, MicroC Pro ARM, ARM Crossworks, Ride 7, PlatformIO + STM32 dll.

Namun yang membuat board ini sangat populer adalah kemampuannya untuk diprogram dengan Arduino IDE. Dengan cara ini orang dapat memulai dan membangun proyek dengan STM32 dalam waktu singkat karena banyak yang sudah terbiasa dengan Arduino IDE dan bahasa pemrograman yang mudah digunakan dan banyak dukungan library yang tersedia. Untuk itu dalam tutorial ini kita akan menggunakan IDE Arduino untuk memulai dengan STM32.

Pin JTAG STM32 - SWDIO dan SWCLK

Kelebihan dari download program menggunakan pin JTAG di STM32 adalah user tidak perlu merubah setting boot mode pada pin boot0 dan boot1 di STM32 seperti pada saat download program menggunakan port serial di STM32. Jadi user tidak perlu menyediakan dan merubah jumper switch boot0 dan boot1 pada saat download program ataupun pada saat running program. Kedua pin boot0 dan boot1 disetting terhubung ke ground.

Untuk memprogram papan STM32 langsung dari Arduino IDE kita menggunakan pin programming JTAG yang tersedia oleh STM32 yaitu pin SWDIO (PA13) dan pin SWCLK (PA14). Modul JTAG programmer / downloader  STLINK V2 dihubungkan dengan pin SWDIO (PA13) dan pin SWCLK (PA14) dari STM32 seperti yang ditunjukkan di bawah ini.

 

Pin VCC dari STLINK V2 dipilih menyesuaikan dengan power VCC dari STM32 yaitu 3.2V. Ground terhubung ke ground STM32. Pin SWDIO dan SWCLK pada modul STLINK V2 masing-masing terhubung ke pin PA13 dan PA14 dari STM32. Modul JTAG programmer / downloader STLINK V2 yang bisa digunakan adalah seperti pada gambar dibawah ini.


Mempersiapkan Arduino IDE untuk STM32

Ikuti langkah-langkah di bawah ini untuk mengunduh dan menyiapkan Arduino IDE untuk digunakan dengan board STM32.

Langkah 1: – Jika Anda belum menginstal Arduino IDE, unduh dan instal dari tautan ini. Pastikan Anda memilih sistem operasi yang benar.

Langkah 2: – Setelah Menginstal Arduino IDE buka dan unduh paket yang diperlukan untuk papan STM32. Ini dapat dilakukan dengan memilih File -> Preferences.

Langkah 3: – Mengklik Preferensi akan membuka kotak dialog yang ditunjukkan di bawah ini. Di kotak teks URL Boards Manager tambahan tempel tautan di bawah ini :

dan tekan OK.


Langkah 4: – Sekarang pergi ke Tools -> Board -> Board Manajer. Ini akan membuka kotak dialog Boards manager, mencari “STM32 Cores” dan menginstal paket yang muncul.

Langkah 5: – Setelah paket instalasi selesai. Pergi ke Tools dan geser ke bawah untuk menemukan seri Generic STM32F103C seperti yang ditunjukkan di bawah ini. Kemudian pastikan variannya adalah tipe 64kFlash, kecepatan CPU adalah 72MHz dan ubah metode upload ke "STM32CubeProgrammer (SWD)" .



Langkah 6: – Untuk upload / download program menggunakan JTAG STLINK V2, user harus mendownload STM32CubeProgrammer di tautan link di bawah ini:

Apabila link diatas tidak bisa diakses, bisa download di link google drive dibawah ini:


Langkah 7: – Setelah semua perubahan dilakukan, dan STM32CubeProgrammer telah diinstall. Pada Arduino IDE klik tombol upload untuk menguji program Blink test ke board STM32. apabila proses upload berhasil akan muncul status seperti gambar di bawah ini:












Saturday, December 19, 2020

Modifikasi meteran air PDAM analog menjadi digital dengan penambahan hall effect sensor

 

 Output dari hall effect sensor ini adalah pulsa. 

Pada jarum pointer x0.001 meteran air analog telah ditempelkan magnet permanen bulat kecil agar bisa terbaca oleh sensor hall effect apabila melewatinya. Gambar dibawah ini adalah penempatan magnet pada jarum pointer x0.001 meteran air.


 

Setiap jarum pointer x0.001 melewati sensor 1kali putaran, ini menunjukkan bahwa debit air yang melewati meteran adalah senilai 1 x 0.001 meter kubik.

Sensor hall effect dipasangkan 2 buah dengan posisi melingkar sisi kiri dan kanan diatas jarum pointer x0.001 meteran air analog, silahkan cek gambar dibawa ini untuk detail pemasangan sensornya. 



Dengan adanya dua sensor ini akan terbaca kondisi saat jarum pointer (magnet) masuk melewati sensor 1 dan kemudian keluar melewati sensor 2. Ini menunjukkan bahwa arah putaran jarum pointer adalah searah jarum jam. Apabila arah putaran jarum pointer berlawanan arah jarum jam, maka sensor akan terbaca pertama masuk melewati sensor 2 kemudian keluar melewati sensor 1.

 
Pada meteran air ini dilengkapi dengan kran digital (motorized ball valve) yang terdapat 2 sensor limit switch buka penuh dan sensor limit switch tutup penuh. 
 
 



 
Kran digital ini digunakan oleh operator penyedia Air bersih utuk menutup sumber air apabila pelanggan belum melakukan pembayaran tagihan atau pulsa air habis.


Modul ini bisa dibeli pada link tokopedia dibawah ini:

https://www.tokopedia.com/fawwazzshop/meteran-air-pdam-digital-dgn-hall-sensor-motorized-ball-valve-2-way

Sunday, November 18, 2018

Unboxing GSM 3000 GSM3000 Gyro Stabilization Mount





Check the GSM3000 mount firmware version by connecting the mount Interface to PC via USBtoSerial Converter. Use serial terminal software to check data sent/received from GSM3000. Power off the Gimbal and restart it again, at the first initialization the GSM3000 will send firmware version to serial lines. Please check picture below.


Note: GSM3000 mount firmware version “GSM3000_V4.8.836” is required to control the GSM3000 mount with the POS. The bolded ‘8’ tells indicates that this firmware is intended to be used with the Applanix POS AV. Contact SOMAG for the firmware upgrade.

From the serial monitor software, it shown that the firmware version of the GSM3000 is as required to mount with POS AV.

YDC must be enabled via the POSConfig software utility by selecting the YDC Output option. This option requires an authorization code to enable software functionality. The authorization code must be purchased from Applanix. If the YDC has been enabled, the Statistic Window will show a YDC-O option in the Option string.




POSConfig Utility
POSConfig is used to change the PCS settings such as POS AV model, IMU or GNSS types, or enable specific options. Contact Applanix Technical Support and Service before using.
The following options are currently available:
• 04 Yaw Drift Correction (YDC)
Enables the automatic steering of a stabilized mount, using the real-time navigation solution. Refer to the Specification for Yaw Drift Control description on page J-1 for details.
• 11 Event Based Navigation Output (EVO)
Enables the output of the navigation solution (position and attitude) in real time at the time of the Event 1 and Event 2 pulse occurance.
• 20 Flight Management System (FMS)
Enables the Ethernet software interface (dedicated control and data port) for communication with Flight Management System and software triggering mechanism in real time firmware (refer to the POSTrack V6, starting on page L-1, for details).
• 22 Generic LiDAR Support (LID)
Enables automatic LiDAR logging control on/off based on start/end of the survey line.

Run POSConfig Utility
The following provides instructions to run PosConfig.exe to configure the PCS for the correct POS model, GNSS receiver, IMU type and other options.
Note: Ensure that firewalls and anti-spyware utilities are disabled before running POS Config.
1. Ensure POS AV system is properly connected and operational.
2. Power-up POS AV system.
3. Execute PosConfig.exe application; Select POS window opens



4. Select a POS IP Address and click Next button (an IP address may be entered manually); POS Config window opens.
5. Click Change Model button to select a different POS model. Available models are 610, 510, 410, 310; ‘AV’ is not changeable. Changing models requires an authorization code that must be purchased from Applanix.
6. Select IMU Type from drop-down menu



7. Select Primary GNSS Receiver type from drop-down menu.
8. Select Secondary GNSS Receiver type from drop-down menu.
9. Select applicable Options.
10. Click Update button - a prompt for an Authorization Code appears - please enter the code. Once operation is complete, Success window opens.



11. Click Exit button.
12. Recycle POS AV system power.



Warning: Do not power-down the POS AV system until POSConfig notifies that reconfiguration is complete.


When the YDC-O (Yaw Drift Control - Option) enabled, and the POS AV port setting set to gimbal GSM3000, the POS AV will send ASCII command "K" to RX RS232 serial port GSM3000.

The POS AV port setting as follow:
- Select Setting -> Input/ Output port Set Up -> COM2 setting
- Baud Rate : 19200,
- Parity : none,
- Data Bits : 8 bits,
- Stop Bits : 1 Bits,
- Flow Control : none
- Output Select : Gimbal,
- Input Select : Gimbal,
- Gimbal type : GSM3000,
- Update rate : 20 Hz

Please check picture below.

The POS AV will repeatedly send serial ASCII command "K" to serial COM2, at the first attempt to comunicate with GSM3000. When its connected with GSM3000 and no error on wiring connection, the GSM3000 will reply to POS AV the firmware version of the GSM3000 mount. The Gimbal status on POS AV will change to "Gimbal On: OK". Otherwise when the wiring connection is wrong, and the POS AV didn't receive the firmware version from GSM3000, the Gimbal status on POS AV will shown "Gimbal Off". Please check picture below.


After receiving command "K" the GSM3000 mount will identify itself and inform about its state in the form "Name_Version state (End of Line)". The name is separate by space, the version is chained with an underline and the two-digit code number are separated by space from the version. End of line is "\r\n".

For example: "GSM 3000_V4.8.843 01\r\n" means name GSM 3000, version V4.8.843, state Initialization.
Codes:
- 00 status OK
- 01 during the initialization

Note: state only available from version GSM3000.... 36 or higher.