• Arduino
    • Sensor
    • program Arduino
  • Project
  • Produk
  • IOT
Senin, Juni 30, 2025
mikroavr.com
No Result
View All Result
  • Login
  • Arduino
    • Sensor
    • program Arduino
  • Project
  • Produk
  • IOT
  • Arduino
    • Sensor
    • program Arduino
  • Project
  • Produk
  • IOT
No Result
View All Result
mikroavr
No Result
View All Result
Home Arduino

Protect Arduino Sketch dengan unique code DS18b20

Jimmi Sitepu by Jimmi Sitepu
Februari 11, 2019
0 0
0
Protect Arduino Sketch dengan unique code DS18b20
109
SHARES
2.3k
VIEWS
Share on FacebookShare on Twitter

Pengantar

Protect Arduino Sketch adalah hal yang sangat penting dalam sebuah sistem yang kita bangun. Pada dasar nya, setiap program yang kita tanam pada sebuah mikrokontroller, contoh nya seri AVR bisa di download balik menjadi file HEX atau BIN, kemudian di tanam kembali di chip-chip baru.

Bayangkan program yang kita bangun, kita analisa error seriap baris program nya agar flexible bagi pengguna, kemudian dengan mudah nya di copy paste pebisnis besar dan memproduksi massal karya kita, sehingga memungkin menjual produk secara massal dengan harga yang jauh lebih murah dari yang kita jual.

READ ALSO

4G GSM Modul Arduino SIM7600 Cocok Untuk ESP32, STM32 atau Arduino Mega

Tutorial Menggunakan Weather Station DFRobot SEN0186 dengan Arduino ESP32

Ada malam, ada siang yang habis kita gunakan untuk membangun program ini, kemudian dalam hitungan jam saja program kita telah di miliki free oleh orang lain. yah dia tinggal sewa jasa duplikat PCB beberapa ratus ribu. jreng, jadi dah produk yang sama dengan produk kita.

mereka tidak peduli!!!

reupload dan jual lagi ^_^

Beberapa orang mungkin mengeluarkan statment ketika membaca artikel ini, kan bisa proteksi bit nya? lock fuse bit nya? seperti pertanyaan di bawah ini,

Layanan re upload hex

kembali ke pertanyaan di atas? bukan kah bisa di proteksi dengan fuse bit? pada umum nya, bisa di proteksi dengan fuset bit, bahkan hampir semua melakukan ini. Cuman ngeri nya, ada layanan di china untuk mengambil hex program dengan harga yang lebih murah. Sampai ada ratusan list jenis mikrokontroller yang bisa di ambil hex nya, sekali pun di proteksi fuse bit nya.

code berharga dengan mudah nya di copy paste, Apa Kata Dunia?

yuk proteksi code dengan mudah

Lantas seperti apakah cara nya? tanpa fuse bit namun bisa protect arduino sketch? Ternyata ada cara yang cukup mudah, ini kita dapatkan dari facebook Group Arduino, yaitu menggunakan Sensor DS18b20, sebuah sensor Suhu yang memiliki alamat yang berbeda dari setiap sensor nya, ini lah yang akan kita gunakan sebagai ID dari setiap hardware yang kita desain. sebenar nya ini tidak hanya berlaku untuk arduino, tapi semua jenis mikrokontroller. Nah bagaimana kah program nya?

Code Unique DS18b20

Karena sensor ini memiliki alamat yang berbeda setiap device nya, makan sensor ini bisa kita jadikan sebagai ID dari hardware kita. Untuk itu, hal pertama yang kita lakukan adalah program untuk mendapat kan alamat nya.

Karena kita menggunakan Arduino, maka teman-teman harus download dulu library dari DS18b20, atau bisa visit artikel di bawah ini, cukup klik tombol merah di bawah ini saja

Sensor suhu DS18b20

Setelah library nya sudah terpasang cukup baik di Arduino nya, selanjut nya adalah membuat list program membaca alamat ds18b20.

Alamat ds18b20

program membaca alamat nya bisa di lihat pada baris program di bawah ini,

// Include the libraries we need
#include <LiquidCrystal.h>
#include <OneWire.h>
#include <DallasTemperature.h>
// Data wire is plugged into port 2 on the Arduino
#define ONE_WIRE_BUS 22
// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature. 
DallasTemperature sensors(&oneWire);
// arrays to hold device address
DeviceAddress insideThermometer;

// initialize the library by associating any needed LCD interface pin
// with the arduino pin number it is connected to
const int rs = 15, en = 14, d4 = 7, d5 = 6, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
String line1, line2, line3;
String ID;
void setup() {
  // put your setup code here, to run once:
  // Start up the library
  sensors.begin();
  lcd.begin(20, 4);
  if (sensors.isParasitePowerMode()) lcd.print("ON");
  else lcd.print("OFF");
  delay(2000);
  lcd.clear();
  if (!sensors.getAddress(insideThermometer, 0)) lcd.print("Unable address");
  else lcd.print("found device");
  delay(2000);
  lcd.clear(); 
  printAddress(insideThermometer);
}

void loop() {
  // put your main code here, to run repeatedly:
  lcd.setCursor(0,0);
  lcd.print(line2);
  lcd.setCursor(0,1);
  lcd.print(line3);
  delay(250);
}
void printAddress(DeviceAddress deviceAddress)
{
  for (uint8_t i = 0; i < 8; i++)
  {
    deviceAddress[i];
    delay(100);
  }
  line2 = String(deviceAddress[0]) + (",") + deviceAddress[1] + (",") + deviceAddress[2] + (",") + deviceAddress[3]+(","); 
  line3 = String(deviceAddress[4])+(",") + deviceAddress[5]+(",") + deviceAddress[6] + (",") + deviceAddress[7] + (",") + deviceAddress[8];
  ID = line2+line3;
}

Program di atas, kita menggunakan atmega128, tapi bekerja juga pastika di arduino mega, Code uniqe nya akan tampil di LCD 20×4. Setelah dapat code unique nya? bagaimana kah contoh nya? agar code ini bisa di jadikan penentu? apakah code nya valid atau tidak? tinggal tambah if

Valid not Valid

Code unique sudah kita dapat kan dari program di atas, langkah selanjut nya adalah membuat sebuah variable code unique itu sendiri, kemudian membandingkan apakah sama variable code unique kita dengan code unique yang terbaca dari sensor ds18b20, variable nya seperti berikut

String key = "40,255,143,39,36,23,3,112,0";

kemudian program seluruh nya adalah sebagai berikut,

// Include the libraries we need
#include <LiquidCrystal.h>
#include <OneWire.h>
#include <DallasTemperature.h>
// Data wire is plugged into port 2 on the Arduino
#define ONE_WIRE_BUS 22
// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature. 
DallasTemperature sensors(&amp;amp;oneWire);
// arrays to hold device address
DeviceAddress insideThermometer;

// initialize the library by associating any needed LCD interface pin
// with the arduino pin number it is connected to
const int rs = 15, en = 14, d4 = 7, d5 = 6, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
String line1, line2, line3;
String ID;
String key = "40,255,143,39,36,23,3,112,0";
void setup() {
  // put your setup code here, to run once:
  // Start up the library
  sensors.begin();
  lcd.begin(20, 4);
  if (sensors.isParasitePowerMode()) lcd.print("ON");
  else lcd.print("OFF");
  delay(2000);
  lcd.clear();
  if (!sensors.getAddress(insideThermometer, 0)) lcd.print("Unable address");
  else lcd.print("found device");
  delay(2000);
  lcd.clear(); 
  printAddress(insideThermometer);
}

void loop() {
  // put your main code here, to run repeatedly:
  lcd.setCursor(0,0);
  lcd.print(line2);
  lcd.setCursor(0,1);
  lcd.print(line3);
  if ( ID == key){
    lcd.setCursor(0,3);
    lcd.print("Key valid");
  }else{
    lcd.setCursor(0,3);
    lcd.print("invalid:085207770631");
  }
  delay(250);
}
void printAddress(DeviceAddress deviceAddress)
{
  for (uint8_t i = 0; i < 8; i++)
  {
    deviceAddress[i];
    delay(100);
  }
  line2 = String(deviceAddress[0]) + (",") + deviceAddress[1] + (",") + deviceAddress[2] + (",") + deviceAddress[3]+(","); 
  line3 = String(deviceAddress[4])+(",") + deviceAddress[5]+(",") + deviceAddress[6] + (",") + deviceAddress[7] + (",") + deviceAddress[8];
  ID = line2+line3;
}

Cara Kerja nya

Ketika ada anonimous coba untuk ambil hex teman-teman, dan re upload kembali ke chip baru, maka variable key di atas juga sesungguh nya ikut menjadi binary di dalam hex dan ter tanam di chip baru nya.

sementara variable key tadi hanya berlaku untuk satu chip DS18b20, sementara DS18b20 baru yang dipasang anonimous atau bahkan tidak di pasang di PCB clone nya akan berbeda dengan key variable. hal ini akan membuat program dia lompat ke

else{
    lcd.setCursor(0,3);
    lcd.print("invalid:085207770631");
  }

Tentu saja, dengan metode ini, mudah-mudahan akan mempersulit bahkan mungkin tidak mungkin untuk mem bajak program yang teman-teman buat sendiri.

Semoga Tulisan Sederhana ini bermanfaat, Thank to Senior-senior yang suka berbagi, atau jika ada metode yang lebih murah dan lebih cepat boleh di comen yah

Thanks

Share109Tweet
Previous Post

Pendeteksi Banjir Berbasis Arduino dan GSM

Next Post

Frekuensi Meter PLN Untuk Pembangkit dengan Akurasi

Jimmi Sitepu

Jimmi Sitepu

Hobbyist Embedded System, Robotic, IOT and write all about them. So we have nice quote "Learning and Sharing"

Related Posts

4G GSM Modul Arduino SIM7600 Cocok Untuk ESP32, STM32 atau Arduino Mega
Arduino

4G GSM Modul Arduino SIM7600 Cocok Untuk ESP32, STM32 atau Arduino Mega

Juni 13, 2022
Tutorial Menggunakan Weather Station DFRobot SEN0186 dengan Arduino ESP32
Arduino

Tutorial Menggunakan Weather Station DFRobot SEN0186 dengan Arduino ESP32

Maret 9, 2022
ethernet arduino
Arduino

Arduino Ethernet Tutorial, Project dengan Arduino Uno dan Mega

Februari 24, 2022
solder i2c arduino lcd
Arduino

Tutorial Program Arduino Lcd i2c dan Library nya

Februari 24, 2022
tft lcd arduino shield
Arduino

Tutorial Mudah TFT lcd Arduino untuk Membuat Jam Digital

Februari 24, 2022
jangka sorong arduino
Arduino

Sensor Pengukur Jarak dengan Jangka Sorong Digital Presisi 0.01mm

Februari 24, 2022
Next Post
Frekuensi Meter PLN Untuk Pembangkit dengan Akurasi

Frekuensi Meter PLN Untuk Pembangkit dengan Akurasi

Monitoring Suhu dan Kelembaban dengan Arduino Menggunakan GSM SIM800v2 dan Blynk

Monitoring Suhu dan Kelembaban dengan Arduino Menggunakan GSM SIM800v2 dan Blynk

Please login to join discussion

Tulisan Terbaru

sensor URM14 Arduino

Membaca Sensor URM14 RS485 dengan ESP32 Arduino

Juli 7, 2022
4G GSM Modul Arduino SIM7600 Cocok Untuk ESP32, STM32 atau Arduino Mega

4G GSM Modul Arduino SIM7600 Cocok Untuk ESP32, STM32 atau Arduino Mega

Juni 13, 2022
Mendapatkan Waktu Akurat dengan NTP GPS

Mendapatkan Waktu Akurat dengan NTP GPS

Mei 8, 2022
Custome GPS Logger Arduino dengan Akeses Internet SIM7600 4G

Custome GPS Logger Arduino dengan Akeses Internet SIM7600 4G

April 14, 2022
Tutorial Menggunakan Weather Station DFRobot SEN0186 dengan Arduino ESP32

Tutorial Menggunakan Weather Station DFRobot SEN0186 dengan Arduino ESP32

Maret 9, 2022
ethernet arduino

Arduino Ethernet Tutorial, Project dengan Arduino Uno dan Mega

Februari 24, 2022

Browse by Category

  • Arduino
  • Ebook
  • ESP32
  • IOT
  • jasa
  • Komponen
  • PCB
  • Produk
  • program Arduino
  • Project
  • Rangkaian
  • Sensor
  • Tips
  • Uncategorized

Recent News

sensor URM14 Arduino

Membaca Sensor URM14 RS485 dengan ESP32 Arduino

Juli 7, 2022
4G GSM Modul Arduino SIM7600 Cocok Untuk ESP32, STM32 atau Arduino Mega

4G GSM Modul Arduino SIM7600 Cocok Untuk ESP32, STM32 atau Arduino Mega

Juni 13, 2022
  • About US
  • Blog
  • MIKROAVR

© 2020 mikroavr.com - Learning and sharing.

Welcome Back!

Sign In with Google
OR

Login to your account below

Forgotten Password?

Retrieve your password

Please enter your username or email address to reset your password.

Log In

Add New Playlist

No Result
View All Result
  • About US
  • Blog
  • MIKROAVR

© 2020 mikroavr.com - Learning and sharing.