Senin, 04 Desember 2023

Cara buat surat keterangan domisili untuk pembayaran google adsense Indonesia

Surat Keterangan domisili ini salah satu persyaratan agar kita tidak terkena pajak yang besar, untuk itu google asia pasific mensyaratkan mengupload surat keterangan domisili, bisa jadi karena kita sudah ada perjanjian pajak dengan negara Singapura.

Cara buatnya via web kantor pajak

link: https://infokswp.pajak.go.id


Gambar 1. Login masuk ke web pajak

Gambar 2. Pilih Layanan pilih e-SKD



Hasil akhir jadi seperti dibawah ini:


Alamat dan data penting sebagai berikut:
Syarat pencairan bayaran adsense youtube Indonesia via kantor google youtube Asia Pacific Singapore, Anda diminta surat keterangan domisili. Saat anda membuat SKD via websitenya pajak Indonesia, sampai pada isian 

TIN Lawan isikan seperti di video 
Google Asia Pacific Pte. Ltd. 
Mapletree Business City II 70 Pasir Panjang Road, #03-71 Singapore 117371 
Untuk referensi, nomor GST adalah:  200817984R


link terkait lihat ini
















Jumat, 10 November 2023

Cek Kualitas artikel Penelitian dan Pengabdian (catatan dari Prof. Muji/UMMagelang)

 Kualits Standar artikel Penelitian/pengabdian (body text)

  1. Pastikan
  2. Tidak terjadi salah ketik, salah eja, misspelling, dan sejenisnya;
  3. Penulisan kata, kalimat dan paragraf mengikuti Pedoman Umum Bahasa Indonesia atau Bahasa inggris yang benar (enak dibaca dan enak dilihat);
  4. Semua Tabel dan Gambar diberikan nomor Tabel dan nomor Gambar secara urut;
  5. Judul Tabel diletakkan di atas Tabel dengan style Sentence case;
  6. Judul Gambar diletakkan dibawah Gambar dengan style Sentence case;
  7. Foto, Grafik, Gambar dan semua ilustrasi “Artwork” disebut Gambar;
  8. Untuk Tabel, pastikan hanya ada garis horizontal, tanpa garis vertikal;
  9. Untuk Gambar berupa grafik, harus ada axis title dengan skala yang tepat;
  10. Persamaan diberikan nomor persamaan dengan tanda kurung (1);
  11. Semua Gambar, Tabel, dan Persamaan harus “disebutkan” di paragraf sebelum Gambar, Tabel, dan Persamaan disajikan;
  12. Sitasi dalam body text dan dalam daftar referensi harus akuntabel, menggunakan gaya IEEE (atau yang ditetapkan)
  13. Referensi harus dituliskan dengan benar dan seragam; 

Format (untuk artikel penelitian):

  1. Judul harus lugas, informatif, dan mencerminkan temuan penting dalam artikel.
  2. Pastikan abstrak memuat permasalahan dan tujuan, bagaimana riset dilakukan (metode), hasil, dan ditutup dengan pernyataan singkat kesimpulan.
  3. Pastikan bagian pendaluluan mengangkat masalah penting, ada state of the art/ research gap dan ada kebaruan/kontribusi riset. [SITASI]
  4. Pastikan metode yang digunakan valid.
  5. Pastikan pembahasan artikel berisi argumen dan mendialogkan dengan beberpa hasil peneltiian sebelumnya. [SITASI]

Format (untuk artikel pengabdian):
  1. Judul harus lugas, informatif, dan mencerminkan kegiatan pengabdian.
  2. Pastikan abstrak memuat permasalahan dan tujuan, bagaimana pengabdian dilakukan (metode), hasil, dan ditutup dengan pernyataan singkat kesimpulan.
  3. Pastikan bagian pendaluluan ada analisis situasi mitra dan permasalahan mitra
  4. Pastikan metode peksanaan runut dan benar-benar mencerminkan kegiatan pengabdian (peran pengabdi dan mitra)
  5. Pastikan hasil dan pembahasannya memuat kondisi mitra sebelum dan sesudah pengabdian terlaksana, bagaimana peningkatan (pengetahuan, keterampilan, produktifitas, dll) pada mitra sasaran terukur dan terlaporkan dengan benar.






Senin, 02 Oktober 2023

Apa itu Kovarians ?

Kovarians adalah suatu konsep dalam statistik yang mengukur hubungan antara dua variabel acak. Kovarians mengukur sejauh mana dua variabel bergerak bersamaan. Dengan kata lain, kovarians mengukur apakah kenaikan atau penurunan dalam satu variabel cenderung disertai dengan kenaikan atau penurunan dalam variabel lainnya.

Ada beberapa kemungkinan hasil kovarians:

Jika kovarians positif, ini menunjukkan bahwa dua variabel cenderung bergerak ke arah yang sama. Artinya, ketika satu variabel meningkat, kemungkinan besar yang lain juga akan meningkat, dan ketika satu variabel menurun, yang lain juga kemungkinan besar akan menurun.

Jika kovarians negatif, ini menunjukkan bahwa dua variabel cenderung bergerak ke arah yang berlawanan. Artinya, ketika satu variabel meningkat, kemungkinan besar yang lain akan menurun, dan sebaliknya.

Jika kovarians mendekati nol atau sangat kecil, maka tidak ada hubungan yang kuat antara dua variabel. Ini berarti perubahan dalam satu variabel tidak memberikan informasi yang baik tentang perubahan dalam variabel lainnya.

Kovarians dihitung dengan rumus matematis yang melibatkan data statistik dari dua variabel. Namun, perlu diingat bahwa nilai kovarians bisa terpengaruh oleh skala data, sehingga untuk menilai sejauh mana dua variabel berhubungan, seringkali lebih baik menggunakan koefisien korelasi Pearson, yang adalah kovarians yang dinormalisasi.

Mari kita lihat beberapa contoh untuk memahami konsep kovarians:

Contoh 1:

Misalkan kita memiliki dua variabel, X dan Y, yang mewakili jumlah jam belajar (X) dan nilai ujian (Y) dari sekelompok siswa. Kita ingin menghitung kovarians antara jumlah jam belajar dan nilai ujian. Jika kita menemukan bahwa ketika jumlah jam belajar siswa meningkat, nilai ujian mereka juga cenderung meningkat, maka kovariansnya positif.

Contoh 2:

Kita memiliki dua variabel, A dan B, yang mewakili jumlah hujan harian (A) dan penjualan payung (B) di sebuah toko selama sebulan. Jika kita menemukan bahwa ketika jumlah hujan harian meningkat, penjualan payung di toko juga meningkat, maka kovariansnya positif.

Contoh 3:

Kita memiliki dua variabel, C dan D, yang mewakili jumlah tidur (C) dan tingkat kelelahan (D) seorang individu. Jika kita menemukan bahwa ketika seseorang tidur lebih banyak, tingkat kelelahannya cenderung berkurang, maka kovariansnya negatif.

Dalam statistik, kovarians digunakan untuk memahami hubungan antara dua variabel dan dapat membantu dalam menganalisis data. Namun, penting untuk diingat bahwa kovarians tidak memberikan informasi tentang seberapa kuat atau lemah hubungan antara dua variabel tersebut, sehingga seringkali digunakan bersama dengan koefisien korelasi untuk mendapatkan pemahaman yang lebih lengkap tentang hubungan antara variabel-variabel tersebut.


Mari kita contohkan perhitungan kovarians dengan data angka. Misalkan kita memiliki dua set data: satu untuk jumlah jam belajar (X) dan satu untuk nilai ujian (Y) dari sejumlah siswa dalam sebuah kelas. Berikut adalah contoh data angka:

Data Jam Belajar (X):

X = [2, 3, 4, 5, 6]

Data Nilai Ujian (Y):

Y = [60, 70, 75, 85, 95]

Langkah pertama adalah menghitung rata-rata (mean) dari kedua set data:

Rata-rata Jam Belajar (X̄):

X̄ = (2 + 3 + 4 + 5 + 6) / 5 = 20 / 5 = 4

Rata-rata Nilai Ujian (Ȳ):

Ȳ = (60 + 70 + 75 + 85 + 95) / 5 = 385 / 5 = 77

Kemudian, kita dapat menghitung kovarians antara kedua variabel menggunakan rumus kovarians:

Kovarians (cov(X, Y)) = Σ((X - X̄) * (Y - Ȳ)) / (n - 1)

Di sini, n adalah jumlah data (jumlah siswa), dan Σ menunjukkan penjumlahan.

Kovarians (cov(X, Y)) = ((2 - 4) * (60 - 77) + (3 - 4) * (70 - 77) + (4 - 4) * (75 - 77) + (5 - 4) * (85 - 77) + (6 - 4) * (95 - 77)) / (5 - 1)

Kovarians (cov(X, Y)) = (-4 * -17 + (-1) * (-7) + 0 * (-2) + 1 * 8 + 2 * 18) / 4

Kovarians (cov(X, Y)) = (68 + 7 + 0 + 8 + 36) / 4

Kovarians (cov(X, Y)) = 119 / 4

Kovarians (cov(X, Y)) = 29.75

Jadi, kovarians antara jumlah jam belajar (X) dan nilai ujian (Y) dalam contoh ini adalah sekitar 29.75. Hasil positif menunjukkan bahwa terdapat hubungan positif antara kedua variabel, yang berarti ketika jumlah jam belajar meningkat, nilai ujian cenderung meningkat juga.







Kamis, 14 September 2023

Menghitung rerata (rata-rata) berdasarkan data yang masuk

Jika datanya tak terhingga dan terus menerus masuk, Anda perlu menggunakan pendekatan yang berkelanjutan untuk menghitung rata-rata secara real-time. Kita dapat menggunakan konsep moving average atau rata-rata bergerak untuk menangani situasi seperti ini. Moving average adalah teknik yang digunakan untuk menghitung rata-rata dari sejumlah data terbaru, dan data yang lebih lama akan terus digantikan oleh data yang baru.


Berikut adalah contoh implementasi rata-rata bergerak (moving average) menggunakan Arduino untuk menghitung rata-rata dari data sensor yang masuk terus menerus:


  1. const int sensorPin = A0;   // Pin tempat sensor terhubung
  2. const int jumlahData = 10;  // Jumlah data yang akan dihitung rata-ratanya
  3. int data[jumlahData];       // Array untuk menyimpan data
  4. int indeks = 0;             // Indeks saat ini dalam array data
  5. float rataRata = 0;         // Variabel untuk menyimpan rata-rata

  6. void setup() {
  7.   Serial.begin(9600);  // Inisialisasi komunikasi serial
  8.   for (int i = 0; i < jumlahData; i++) {
  9.     data[i] = 0;  // Inisialisasi data dengan nilai 0
  10.   }
  11. }

  12. void loop() {
  13.   // Baca nilai dari sensor A0
  14.   int nilaiSensor = analogRead(sensorPin);

  15.   // Update nilai dalam array data
  16.   data[indeks] = nilaiSensor;

  17.   // Hitung rata-rata dari data dalam array
  18.   rataRata = hitungRataBergerak(data, jumlahData);

  19.   // Tampilkan nilai sensor dan rata-rata di monitor serial
  20.   Serial.print("Nilai Sensor: ");
  21.   Serial.print(nilaiSensor);
  22.   Serial.print(" Rata-rata: ");
  23.   Serial.println(rataRata);

  24.   // Pindah ke indeks berikutnya dalam array data
  25.   indeks = (indeks + 1) % jumlahData;

  26.   // Tunda sebentar sebelum membaca data sensor berikutnya
  27.   delay(1000);  // Tunggu 1 detik
  28. }

  29. float hitungRataBergerak(int data[], int jumlahData) {
  30.   int total = 0;
  31.   for (int i = 0; i < jumlahData; i++) {
  32.     total += data[i];
  33.   }
  34.   return (float)total / jumlahData;
  35. }

Dalam contoh ini, kita menggunakan array untuk menyimpan sejumlah data terbaru dari sensor. Saat data baru masuk, data yang paling lama akan digantikan oleh data yang baru. Ini memungkinkan perhitungan rata-rata bergerak yang terus diperbarui secara real-time.

Jumat, 18 Agustus 2023

Bagaimana cara memperbaiki hasil pengukuran yang berbeda dari hasil pengukuran alat ukur standar. Sehingga hasil pengukuran akan mendekati dari hasil alat ukur standar, contoh dan rumusnya dalam excel

Memperbaiki hasil pengukuran yang berbeda dari hasil pengukuran alat ukur standar dapat dilakukan dengan menggunakan metode regresi linier. Anda dapat melakukan kalibrasi dengan merumuskan hubungan antara hasil pengukuran dari alat yang ingin diperbaiki dengan hasil pengukuran dari alat ukur standar, dan kemudian menggunakan persamaan regresi ini untuk mengoreksi hasil pengukuran yang tidak akurat.

Berikut ini adalah contoh data dan langkah-langkah untuk memperbaiki hasil pengukuran menggunakan regresi linier dalam Excel:

Contoh Data:


Langkah-langkah penerapan pada Excel:

  1. Buka lembar kerja baru di Excel.
  2. Isi data seperti di atas, dengan hasil pengukuran dari alat standar (X) dan hasil pengukuran dari alat yang ingin diperbaiki (Y).
  3. Hitung koefisien regresi menggunakan fungsi SLOPE dan INTERCEPT:

  • Di sel C2: =SLOPE(B2:B6, A2:A6) - Koefisien kemiringan regresi.
  • Di sel D2: =INTERCEPT(B2:B6, A2:A6) - Intercept regresi.

  1. Di kolom E, hitung hasil prediksi dari alat yang ingin diperbaiki menggunakan persamaan regresi: =D2 + C2 * A2.
  2. Hitung selisih antara hasil prediksi (kolom E) dengan hasil pengukuran awal alat yang ingin diperbaiki (kolom B): Di sel F2, masukkan rumus: =E2 - B2.
  3. Pada kolom G, hitung hasil pengukuran yang diperbaiki dengan menambahkan selisih (kolom F) pada hasil pengukuran awal: =B2 + F2.
  4. Sekarang Anda memiliki hasil pengukuran yang diperbaiki (kolom G). Anda dapat menggunakan kolom G untuk mendapatkan hasil pengukuran yang lebih mendekati hasil dari alat ukur standar.

Dalam langkah-langkah di atas, kita menggunakan regresi linier untuk menghitung koefisien kemiringan (slope) dan intercept. Kemudian, kita menggunakan persamaan regresi untuk memprediksi hasil pengukuran yang diperbaiki. Selisih antara hasil prediksi dan hasil pengukuran awal digunakan untuk koreksi. Hasil pengukuran yang diperbaiki diperoleh dengan menambahkan koreksi pada hasil pengukuran awal.

Pastikan untuk selalu melakukan validasi dan pengujian tambahan untuk memastikan bahwa metode ini cocok dan memberikan hasil yang akurat sesuai dengan kondisi dan kebutuhan Anda.

Hasil Excel:








Kamis, 02 Maret 2023

Cara Kalibrasi Sensor Warna TCS 3200 di Arduino

Untuk mengkalibrasi sensor warna TCS3200, Anda dapat mengikuti langkah-langkah berikut:

  1. Pertama-tama, sambungkan sensor TCS3200 ke papan Arduino dan pasang kode program dasar yang akan membaca warna dari sensor dan menampilkannya di serial monitor.
  2. Letakkan sensor di atas permukaan putih, kemudian baca nilai warna RGB pada serial monitor. Pastikan nilai RGB pada putih adalah sekitar (255,255,255). Jika tidak, Anda dapat menyesuaikan nilai gain pada sensor untuk mengoptimalkan pembacaan warna.
  3. Setelah mengatur gain, letakkan sensor di atas permukaan hitam dan baca nilai warna RGB pada serial monitor. Pastikan nilai RGB pada hitam adalah sekitar (0,0,0).
  4. Setelah menyesuaikan putih dan hitam, Anda dapat menggunakan warna lain untuk dijadikan referensi seperti merah, hijau, biru atau warna lainnya. Pastikan nilai RGB yang dihasilkan sesuai dengan ekspektasi.
  5. Terakhir, Anda dapat menyesuaikan waktu integrasi (INTEG) pada sensor untuk mengoptimalkan pembacaan warna. Semakin lama waktu integrasi, semakin akurat hasil pembacaan warna, namun semakin lambat juga kecepatan pemrosesan data. Anda dapat mencoba mengatur waktu integrasi mulai dari 2,4,8,16, dan 32 siklus clock.
Berikut adalah contoh kode program dasar untuk membaca nilai RGB pada sensor warna TCS3200:

#include <Adafruit_TCS3200.h>

Adafruit_TCS3200 colorSensor(TCS3200_S2, TCS3200_S3, TCS3200_OUT);

void setup() {
  Serial.begin(9600);
  colorSensor.begin();
}

void loop() {
  colorSensor.setResolution(TCS3200_18BIT);
  colorSensor.writeRegister(0x00, TCS3200_MEASUREMENT_MODE);

  delay(50);
  
  uint16_t red = colorSensor.readRed();
  uint16_t green = colorSensor.readGreen();
  uint16_t blue = colorSensor.readBlue();

  Serial.print("RGB: ");
  Serial.print(red);
  Serial.print(" ");
  Serial.print(green);
  Serial.print(" ");
  Serial.println(blue);
}

Anda dapat melakukan kalibrasi sensor dengan mengubah gain dan waktu integrasi pada bagian berikut:

colorSensor.setGain(TCS3200_GAIN_1X);
colorSensor.setIntegrationTime(TCS3200_INTEGRATIONTIME_2_4MS);

Jika hasil pembacaan warna masih kurang akurat, Anda dapat mencoba menyesuaikan gain dan waktu integrasi hingga nilai RGB yang dihasilkan sudah sesuai dengan ekspektasi.

Sabtu, 18 Februari 2023

Particle filter

Particle filter adalah salah satu jenis filter Bayes yang digunakan untuk memperkirakan status yang tidak teramati dari sistem dinamis. Particle filter dapat diterapkan pada berbagai aplikasi, termasuk pengenalan pola, navigasi, dan pengolahan sinyal. 

Source: https://www.youtube.com/watch?v=_LjBba2hnfk

Berikut adalah contoh coding Arduino untuk Particle filter:

Catatan: 

Contoh coding di atas hanya merupakan kerangka dasar untuk implementasi Particle filter pada Arduino dan tidak termasuk algoritma untuk memperbarui partikel dan menghitung bobot partikel. Implementasi algoritma tersebut harus disesuaikan dengan aplikasi yang diinginkan.


#include <math.h>

#include <stdlib.h>

#define N 100 // Jumlah partikel

// Inisialisasi partikel
struct Particle {
  float x; // Koordinat x
  float y; // Koordinat y
  float theta; // Sudut theta
  float weight; // Bobot
};

Particle particles[N]; // Array partikel
float weights[N]; // Array bobot
float sum_of_weights = 0.0; // Total bobot
int num_of_particles = N; // Jumlah partikel

// Inisialisasi sistem
void setup() {
  // Inisialisasi partikel
  for (int i = 0; i < num_of_particles; i++) {
    particles[i].x = random(0, 100); // Inisialisasi koordinat x
    particles[i].y = random(0, 100); // Inisialisasi koordinat y
    particles[i].theta = random(0, 360); // Inisialisasi sudut theta
    particles[i].weight = 1.0 / num_of_particles; // Inisialisasi bobot
  }
}

// Perbarui partikel
void updateParticles() {
  // Implementasi algoritma Particle filter di sini
  // ...
}

// Hitung bobot partikel
void computeWeights() {
  // Implementasi fungsi untuk menghitung bobot partikel di sini
  // ...
}

// Normalisasi bobot partikel
void normalizeWeights() {
  // Hitung total bobot
  sum_of_weights = 0.0;
  for (int i = 0; i < num_of_particles; i++) {
    sum_of_weights += particles[i].weight;
  }

  // Normalisasi bobot
  for (int i = 0; i < num_of_particles; i++) {
    particles[i].weight /= sum_of_weights;
  }
}

// Resampling partikel
void resample() {
  Particle new_particles[N];
  int index = random(0, num_of_particles);
  float beta = 0.0;

  // Implementasi algoritma resampling di sini
  // ...

  // Salin partikel baru ke array partikel lama
  for (int i = 0; i < num_of_particles; i++) {
    particles[i] = new_particles[i];
  }
}

// Loop utama
void loop() {
  // Perbarui partikel
  updateParticles();

  // Hitung bobot partikel
  computeWeights();

  // Normalisasi bobot partikel
  normalizeWeights();

  // Resampling partikel
  resample();

  // ...
}


Bagus mana Low Pass Filter (LPF) dengan Kalman Filter?

Low-pass filter dan Kalman filter adalah dua jenis filter yang memiliki kegunaan yang berbeda dan digunakan dalam konteks yang berbeda.

Low-pass filter digunakan untuk menyaring sinyal dengan memperbolehkan komponen frekuensi rendah dari sinyal untuk dilewatkan sementara memblokir komponen frekuensi tinggi. Tujuannya adalah untuk menghilangkan noise atau sinyal yang tidak diinginkan dari sinyal yang diukur.

Sementara itu, Kalman filter adalah algoritma pengolahan data yang digunakan untuk memperkirakan keadaan sistem dinamis yang tidak dapat diamati langsung. Kalman filter digunakan dalam banyak aplikasi, termasuk navigasi, pengolahan sinyal, dan pengendalian proses, untuk menghasilkan perkiraan keadaan yang lebih akurat berdasarkan data pengamatan yang tidak sempurna.

Jadi, jika Anda perlu menyaring sinyal untuk menghilangkan noise atau sinyal yang tidak diinginkan, maka low-pass filter mungkin lebih sesuai. Namun, jika Anda perlu mengolah data pengamatan yang tidak sempurna untuk memperkirakan keadaan sistem, maka Kalman filter mungkin lebih cocok.

Perlu diingat bahwa kedua filter ini memiliki prinsip yang berbeda dan digunakan dalam konteks yang berbeda, sehingga tidak bisa dibandingkan secara langsung untuk menentukan yang mana yang lebih bagus. Tergantung pada kebutuhan dan tujuan Anda, salah satu filter mungkin lebih cocok daripada yang lain.


Sumber: https://www.researchgate.net/publication/340412171_Compact_laser-spectroscopic_gas_sensors_using_vertical-cavity_surface-emitting_lasers



Senin, 30 Januari 2023

Kode arduino logging sensor suhu LM 35 dengan IOT

 Berikut adalah contoh kode untuk logging data suhu dari sensor LM35 menggunakan Arduino dan IoT:

#include <WiFi.h>
#include <PubSubClient.h>

const char* ssid = "your-wifi-ssid";
const char* password = "your-wifi-password";
const char* mqttServer = "your-mqtt-server-address";
const int mqttPort = 1883;
const char* mqttUser = "your-mqtt-username";
const char* mqttPassword = "your-mqtt-password";

WiFiClient espClient;
PubSubClient client(espClient);

void setup() {
  Serial.begin(9600);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi...");
  }
  Serial.println("Connected to WiFi");
  client.setServer(mqttServer, mqttPort);
}

void loop() {
  if (!client.connected()) {
    reconnect();
  }
  client.loop();
  
  int temperature = analogRead(A0);
  float voltage = (temperature * 5000.0) / 1024.0;
  float celcius = voltage / 10.0;
  char temperatureStr[6];
  dtostrf(celcius, 4, 2, temperatureStr);
  String message = String("{\"temperature\":") + temperatureStr + "}";
  const char* payload = message.c_str();
  client.publish("sensors/temperature", payload);
  Serial.println("Published temperature: " + message);
  delay(3000);
}

void reconnect() {
  while (!client.connected()) {
    Serial.println("Connecting to MQTT...");
    if (client.connect("arduinoClient", mqttUser, mqttPassword)) {
      Serial.println("Connected to MQTT");
    } else {
      Serial.print("Failed, rc=");
      Serial.print(client.state());
      Serial.println("Try again in 5 seconds");
      delay(5000);
    }
  }
}

Catatan: Pastikan untuk mengganti nilai ssid, password, mqttServer, mqttPort, mqttUser, dan mqttPassword dengan informasi yang sesuai untuk jaringan Wi-Fi dan server MQTT Anda. Anda juga harus menginstal biblioteka WiFi dan PubSubClient sebelum menjalankan kode ini.

Berikut adalah contoh kode PHP untuk menampilkan data suhu yang diterima dari Arduino melalui MQTT pada sebuah web server:

<?php
  $server = "tcp://your-mqtt-server-address:1883";
  $username = "your-mqtt-username";
  $password = "your-mqtt-password";
  $topic = "sensors/temperature";
 
  $connection = new Mosquitto\Client();
  $connection->setCredentials($username, $password);
  $connection->connect($server);
 
  $connection->onConnect(function($code, $message) use ($connection, $topic) {
    $connection->subscribe($topic, 1);
  });
 
  $connection->onMessage(function($message) {
    $data = json_decode($message->payload, true);
    $temperature = $data["temperature"];
    echo "Current temperature is $temperature &#8451;<br>";
  });
 
  while (true) {
    $connection->loop();
  }
?>

Catatan: Pastikan untuk mengganti nilai server, username, dan password dengan informasi yang sesuai untuk server MQTT Anda. Anda juga harus menginstal biblioteka Mosquitto (MQTT client untuk PHP) sebelum menjalankan kode ini.

Untuk membuat protokol MQTT, ada beberapa hal yang perlu dilakukan:

  1. Pilih bahasa pemrograman yang akan digunakan untuk membuat MQTT broker atau client. MQTT dapat diimplementasikan di banyak bahasa pemrograman, seperti Python, Java, C++, dan lainnya.
  2. Install library MQTT. Ada beberapa library MQTT yang tersedia di internet, seperti paho-mqtt untuk Python, Eclipse Mosquitto untuk C/C++, dan lain-lain. Library ini akan mempermudah implementasi protokol MQTT pada program yang akan Anda buat.
  3. Buat broker MQTT. Broker MQTT bertugas untuk menerima pesan yang dikirim oleh publisher dan mengirimkannya ke subscriber yang berlangganan topik tertentu. Ada beberapa broker MQTT yang populer seperti Mosquitto, HiveMQ, dan lain-lain. Anda juga dapat membuat broker MQTT sendiri menggunakan library yang telah diinstal.
  4. Buat client MQTT. Client MQTT dapat berupa publisher atau subscriber. Publisher bertugas mengirimkan pesan ke broker, sedangkan subscriber bertugas menerima pesan dari broker. Anda dapat membuat client MQTT menggunakan library yang telah diinstal pada bahasa pemrograman yang dipilih.
  5. Tentukan topik pesan. Topik pesan adalah topik yang digunakan untuk mengirim dan menerima pesan pada protokol MQTT. Topik dapat digunakan untuk mengelompokkan pesan berdasarkan jenis, lokasi, atau jenis data.
  6. Tentukan kualitas layanan (QoS) yang digunakan. MQTT mendukung tiga level QoS, yaitu QoS 0, QoS 1, dan QoS 2. Setiap level memiliki kelebihan dan kelemahan masing-masing dan harus dipilih sesuai dengan kebutuhan aplikasi.
  7. Implementasikan fungsi-fungsi yang dibutuhkan pada program. Beberapa fungsi yang perlu diimplementasikan pada program MQTT adalah fungsi untuk menghubungkan client ke broker, mengirim pesan, dan menerima pesan.

Itulah beberapa langkah untuk membuat protokol MQTT. Penting untuk mengikuti spesifikasi protokol yang telah ditentukan agar protokol MQTT dapat berfungsi dengan baik.





Rabu, 18 Januari 2023

Kode Matlab mencari akar dengan metode Bisection

Berikut ini adalah contoh kode Matlab untuk mencari akar dari suatu persamaan menggunakan metode bisection:

% Define function
f = @(x) x^3 - x^2 + 2;

% Set initial bracket [a, b]
a = 0;
b = 1;

% Set tolerance
tol = 1e-6;

% Set maximum number of iterations
maxIter = 1000;

% Initialize variables
fa = f(a);
fb = f(b);

% Check if initial bracket is valid
if fa*fb > 0
    error('Initial bracket is not valid')
end

% Iterate
for i = 1:maxIter
    c = (a+b)/2;
    fc = f(c);
    if fc == 0 || (b-a)/2 < tol
        break
    end
    if fa*fc < 0
        b = c;
        fb = fc;
    else
        a = c;
        fa = fc;
    end
end

% Print result
fprintf('Root: %f\n', c)
fprintf('Number of iterations: %d\n', i)

Kode diatas mencari akar dari persamaan x^3 - x^2 + 2 . Anda dapat mengganti fungsi f dengan fungsi yang Anda inginkan dan juga melakukan modifikasi pada variabel-variabel yang diperlukan.

Sabtu, 14 Januari 2023

Program atau Code Arduino untuk Kalman Filter

Filter Kalman adalah algoritme matematis yang menggunakan serangkaian pengukuran yang diamati dari waktu ke waktu, mengandung noise (variasi acak) dan ketidakakuratan lainnya, serta menghasilkan perkiraan variabel yang tidak diketahui yang cenderung lebih tepat daripada yang didasarkan pada pengukuran tunggal saja. 

Berikut adalah contoh implementasi filter Kalman sederhana di Arduino:

// Declare variables for the sensor, the filter, and the state
float sensorValue;
float filteredValue;
float state;
float processNoise;
float measurementNoise;
float kalmanGain;

void setup() {
  // Initialize the serial communication
  Serial.begin(9600);
  // Initialize the state and filtered value
  state = 0;
  filteredValue = 0;
  // Set the process noise and measurement noise
  processNoise = 0.01;
  measurementNoise = 0.1;
}

void loop() {
  // Read the sensor value
  sensorValue = analogRead(A0);
  // Predict the next state
  state = state;
  // Calculate the Kalman gain
  kalmanGain = processNoise / (processNoise + measurementNoise);
  // Update the state
  state = state + kalmanGain * (sensorValue - state);
  // Update the filtered value
  filteredValue = state;
  // Print the filtered value to the serial monitor
  Serial.print("Filtered value: ");
  Serial.println(filteredValue);
  // Wait for a short period before taking the next reading
  delay(100);
}