BLYNK merupakan sebuah Platform penyedia layanan Cloud untuk layanan Internet of Things. Blynk tersedia plaform berbasis website dan berbasis aplikasi Android ataupun IOS. Blynk terbilang cukup handal dan lengkap untuk dari fitur dalam penggunaan Internet of Things. Blynk mendungkung banyak Device MCU, seperti Arduino, ESP8266, ESP32, dll. Tersedia beberapa koneksi yang dapat digunakan seperti Wifi, Ethernet, dll. Platform Blynk tidak sepenuhnya gratis, namun untuk versi gratisnya terbilang cukup handal dan dapat memenuhi kebutuhan kita untuk project sederhana dan kebutuhan smart home. Untuk versi pro tentunya memiliki banyak sekali keuntungan, namun kita tidak akan membahas itu.
Oke pada artikel ini saya akan membahasa bagaimana Belajar Blynk IOT dengan menggunakan ESP8266 dan ESP32. Tentunya materi kali ini saya akan bahas pada Video yang terbagi menjadi 2 part. untuk keperluan material, seperti progam, library akan saya sediakan diartikel ini. Langsung aja kita masuk ke materinya.
/* Comment this out to disable prints and save space */
#define BLYNK_PRINT Serial
/* Fill in information from Blynk Device Info here */
#define BLYNK_TEMPLATE_ID ""
#define BLYNK_TEMPLATE_NAME ""
#define BLYNK_AUTH_TOKEN ""
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
// Your WiFi credentials.
char ssid[] = "Las#";
char pass[] = "TukangSolder#";
char lcdBuff[20];
int counting;
unsigned long interval;
WidgetLCD lcd(V0);
void setup() {
Serial.begin(9600);
pinMode(LED_BUILTIN, OUTPUT);
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
Blynk.virtualWrite(V3, 50);
}
void loop() {
sprintf(lcdBuff, "NILAI:%03i", counting);
lcd.print(0, 0, "COUNTING");
lcd.print(0, 1, lcdBuff);
if (millis() - interval > 1000) {
counting++;
if (counting >= 1000) counting = 0;
interval = millis();
}
Blynk.run();
}
BLYNK_WRITE(V1) {
int value = param.asInt();
if (value == 1) {
digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
Serial.print(F("LED: "));
Serial.println(digitalRead(LED_BUILTIN));
}
}
BLYNK_WRITE(V2) {
int value = param.asInt();
if (value == 1) {
digitalWrite(LED_BUILTIN, LOW); // ON
} else {
digitalWrite(LED_BUILTIN, HIGH); // OFF
}
Serial.print(F("LED: "));
Serial.println(digitalRead(LED_BUILTIN));
}
BLYNK_WRITE(V3) {
int value = param.asInt();
Serial.print(F("SLIDER: "));
Serial.println(value);
}
Code ESP32
/* Comment this out to disable prints and save space */
#define BLYNK_PRINT Serial
/* Fill in information from Blynk Device Info here */
#define BLYNK_TEMPLATE_ID ""
#define BLYNK_TEMPLATE_NAME ""
#define BLYNK_AUTH_TOKEN ""
#define LED_BUILTIN 2
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
// Your WiFi credentials.
char ssid[] = "Las#";
char pass[] = "TukangSolder#";
char lcdBuff[20];
int counting;
unsigned long interval;
WidgetLCD lcd(V0);
void setup() {
Serial.begin(9600);
pinMode(LED_BUILTIN, OUTPUT);
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
Blynk.virtualWrite(V3, 50);
}
void loop() {
sprintf(lcdBuff, "NILAI:%03i", counting);
lcd.print(0, 0, "COUNTING");
lcd.print(0, 1, lcdBuff);
if (millis() - interval > 1000) {
counting++;
if (counting >= 1000) counting = 0;
interval = millis();
}
Blynk.run();
}
BLYNK_WRITE(V1) {
int value = param.asInt();
if (value == 1) {
digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
Serial.print(F("LED: "));
Serial.println(digitalRead(LED_BUILTIN));
}
}
BLYNK_WRITE(V2) {
int value = param.asInt();
if (value == 1) {
digitalWrite(LED_BUILTIN, LOW); // ON
} else {
digitalWrite(LED_BUILTIN, HIGH); // OFF
}
Serial.print(F("LED: "));
Serial.println(digitalRead(LED_BUILTIN));
}
BLYNK_WRITE(V3) {
int value = param.asInt();
Serial.print(F("SLIDER: "));
Serial.println(value);
}
Oke bagaimana tutorial diatas, tentunya materi diatas cukup lengkap untuk membantu kalian Belajar Blynk IOT dengan menggunakan ESP8266 dan ESP32. Semoga bermanfaat. Oh ya jangan lupa mampir ke channel Youtube kita dan Subscribe ya.
Prog ISP merupakan sebuah program atau aplikasi untuk mengupload sebuah Program dari Mikrokontroller. Aplikasi ini mendukung Mikrokontroler keluarga ATMEL MCS8051 (AT89S51, dll), keluarga AVR (ATMEGA32, ATMEGA328, ATMEGA8, dll), dan keluarga ATTINY (ATTINY85, dll). Aplikasi support hanya di windows, saya pribadi sering menggunakanya untuk keperluar mengupload program mikrokontroler dalam bentuk file .HEX atau .BIN. Serta saya gunakan untuk mengunci program agar tidak dapat dibaca orang lain. Tampilan ProgISP dapat dilihat dicover artikel ini di atas. Perangkat yang biasa digunakan dan support menggunakan Programmer USBASP atau USBISP Downlaoder. Berikut ini tampilan dari USBASP atau USBISP.
Sekarang ini sudah susah dicari sumber dan versi terbaru dari aplikasi ini. Saya pribadi tidak tau pembuat resmi dari aplikasi ini, dan sepengalaman saya aplikasi ini aman digunakan. Untuk mendownload aplikasi nya dapat gunakan link di bawah ini:
Download pada link berikut:
- https://drive.fanselectronics.com/index.php/s/7n9Rya7Dq8QJ37x
Video Tutorial
Dalam Proses
Oke itu dia aplikasi Prog ISP V1.72, semoga link download ini membantu kalian, apabila ada yang mengetahui sumber resmi dari aplikasi ini saya akan lampirkan dalam artikel ini. Terima kasih.
Fungsi pada arduino sudah disiapkan diawal secara default yakni void setup() dan void loop(). Fungsi setup(), akan menjalankan program sekali setelah Arduino pertama kali hudup atau restart. Sedangkan Fungsi loop(), akan dijalankan berulang (looping) terus menerus selama Arduino menyala.
Apa itu void? merupakan type data yang yang digunakan untuk mendeklarasikan sebuah fungsi tanpa mengembalikan sebuah nilai. Kita juga dapat membuat sebuah fungsi baru dengan type data lain, misalnya int, byte, boolean, String, char, char* (array). Untuk mengembalikan nilai data ke dalam fungsi dapat menggunakan perintah return.
Manfaat fungsi apa sih? tentu saja dengan menggunakan fungsi, apa bila kalian memiliki sebuah perintah yang sering digunakan berulang-ulang, menggunakan fungsi jauh lebih baik karena dapat menghemat waktu penulisan kita dalam membuat sebuah program.
Nah pada artikel ini akan Belajar Arduino! Apa Itu Fungsi (Void Setup, Loop). Langsung aja kita masuk ke materinya.
Contoh Fungsi LCD
Dengan menggunakan fungsi, kita dapat menggunakan perintah dalam satu baris saja untuk melakukan print lcd. Berikut contoh program fungsi LCD dalam satu baris.
#include "LiquidCrystal_I2C.h"
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
lcd.begin();
// Print LCD tanpa Fungsi
lcd.setCursor(0, 0);
lcd.print("BELAJAR ARDUINO");
// Print LCD dengan FUngsi
lcdPrint(0, 1, "FansElectronics");
}
void loop() {
}
// Print LCD dengan type msg char*
void lcdPrint(uint8_t x, uint8_t y, char* msg) {
lcd.setCursor(x, y);
lcd.print(msg);
}
// Print LCD dengan type msg char
void lcdPrint(uint8_t x, uint8_t y, char msg) {
lcd.setCursor(x, y);
lcd.print(msg);
}
// Print LCD dengan type msg String
void lcdPrint(uint8_t x, uint8_t y, String msg) {
lcd.setCursor(x, y);
lcd.print(msg);
}
// Print LCD dengan type msg int
void lcdPrint(uint8_t x, uint8_t y, int msg) {
lcd.setCursor(x, y);
lcd.print(msg);
}
// Print LCD dengan type msg uint8_t
void lcdPrint(uint8_t x, uint8_t y, uint8_t msg) {
lcd.setCursor(x, y);
lcd.print(msg);
}
// Print LCD dengan type msg float
void lcdPrint(uint8_t x, uint8_t y, float msg) {
lcd.setCursor(x, y);
lcd.print(msg);
}
// bisa tambahkan type data lain dengan nama fungsi sama tidak masalah
Contoh Fungsi Matematika
Untuk melakukan kalkulasi yang terperinci, misal perhitungan sensor, perhitungan matematika lainnya. Kalian dapat gunakan sebuah fungsi untuk mempermudahnya. Berikut contohnya.
void setup() {
Serial.begin(9600);
Serial.println(penjumlahan(1, 1)); // 1 + 1
Serial.println(pengurangan(5, 1)); // 5 - 1
Serial.println(perkalian(5, 2)); // 5 x 2
Serial.println(pembagian(10, 2)); // 10 / 2
}
void loop() {
}
// penjumlahan
int penjumlahan(int val1, int val2) {
return val1 + val2; // kembalikan nilai
}
// pengurangan
int pengurangan(int val1, int val2) {
return val1 - val2; // kembalikan nilai
}
// perkalian
int perkalian(int val1, int val2) {
return val1 * val2; // kembalikan nilai
}
// pembagian
float pembagian(int val1, int val2) {
return val1 / val2; // kembalikan nilai
}
Fungsi Baca Tombol
Fungsi untuk menyederhankan bahasa pada tombol agar mudah dipahami. Kalian juga dapat memanfaatkan fungsi untuk memudahkan bahasa dalam sebuah perintah agar lebih berbahasa manusia.
// PIN
#define BTN A0
#define LED 13
// Logika
#define ON HIGH
#define OFF LOW
void setup() {
pinMode(BTN, INPUT_PULLUP);
pinMode(LED, OUTPUT);
}
void loop() {
if (bacaTombol()) {
// Program lain ketika tombol ditekan
// Misal nyalakan LED
digitalWrite(LED, ON);
}
}
// baca tombol, agak mudah dipahami
bool bacaTombol(uint8_t pin) {
// Jika ditekan = LOW, karena pullup
if (digitalRead(pin) == LOW) {
return true; // jika ditekan = true
}
return false; // jika tidak = false
}
Gimana menurut kalian mudah kan? Nah sekian dulu pembahasan Belajar Arduino! Apa Itu Fungsi (Void Setup, Loop) semoga bermanfaat untuk kalian. Apabila ada pertanyaan mari berdiskusi di kolom komentar di bawah. Bye Bye dan Salam Elektronik
Fuel Injector merupakan sebuah komponen dari kendaraan bermotor yang digunakan untuk menyemprotkan bahan bakar ke dapur. Secara prinsip kerja Fuel Injector ini mirip sekali dengan Solenoid. Di dalam terdapat sebuah coil yang apabila dialiri Arus listrik, maka coil akan menarik Plunger kebelakang sehingga bahan bakar dalam tekanan tinggi akan keluar. Berikut ilustrasi cara kerja Fuel Injector.
Untuk mengatur kecepatan dari buka dan tutup Injector, umumnya dalam kendaraan bermotor, terdapat ECU yang mengirimkan sinyal berdasarkan siklur dan posisi dari Piston. Saat kalian melakukan perawatan kendaraan, umumnya perlu dilakukan testing pada Injector untuk mengecek dari jumlah bahan bakar dalam RPM mesin tertentu. Oleh karena itu dibutuhkan sebuah alat untuk melakukan pengetesan pada komponen ini.
Pada pembahasan kali ini, kita akan belajar membuat sebuah Project Arduino Fuel Injector Tester. Semoga project ini dapat membantu kalian untuk melakukan testing pada Injector Kendaraan kalian.
Skematik Rangkaian
Berikut komponen yang perlu kalian siapkan dan perlu kalian rakit sesuai dengan skematik di bawah ini.
Penggunaan driver Mosfet IRFZ44 digunakan untuk driver dari Arduino dengan Injector. Karena tegangan kerja dari Injector umumnya adalah 12V. Apakah bisa ganti mosfet lain selaian IRFZ44? Bisa gunakan Mosfet Type N lain, karena berdasarkan spesifikasinya disini kita butuh mosfet yang mampu menghandle sebagai driver dengan Frequency tinggi.
Program Project
Sebelum upload program di bawah jangan lupa download dulu Library yang dibutuhkan:
//--------------------------------------------------------------
#include "LiquidCrystal_I2C.h"
#include "PWM.h"
#define PWM 9 // PIN PWM
#define BUP A3 // PIN TOMBOL UP
#define BDN A2 // PIN TOMBOL DOWN
#define MAX_RPM 12000 // 200 RPM MAKS
char lcdBuff[17]; // Buffer Sprintf
int frequency = 50; // Nilai FQ
int rpm = 0; // Nilai RPM
int last_rpm; // Nilai terakhir RPM
LiquidCrystal_I2C lcd(0x27, 16, 2);
//--------------------------------------------------------------
void setup() {
Serial.begin(9600); // Serial ke PC
lcd.begin(); // LCD Int
pinMode(PWM, OUTPUT); // PWM OUTPUT
pinMode(BUP, INPUT_PULLUP); // TOMBOL INPUT INTERNAL
pinMode(BDN, INPUT_PULLUP); // TOMBOL INPUT INTERNAL
// Initialisasi kecuali TIMER0
// keperluan delay(), dan millis()
InitTimersSafe();
SetPinFrequencySafe(PWM, frequency);
}
//--------------------------------------------------------------
void loop() {
// Tombol
if (digitalRead(BUP) == LOW) { // TOMBOL UP DITEKAN
delay(10);
rpm = rpm + 10;
if (rpm > 12000) rpm = 12000;
}
//
else if (digitalRead(BDN) == LOW) { // TOMBOL DOWN DITEKAN
delay(10);
rpm = rpm - 10;
if (rpm < 0) rpm = 0;
}
if (rpm != last_rpm) {
frequency = map(rpm, 0, MAX_RPM, 0, MAX_RPM / 60);
SetPinFrequencySafe(PWM, frequency); // SET FQ
last_rpm = rpm; // Update Last_RPM
// DEBUG SERIAL
Serial.print(F("RPM: "));
Serial.print(rpm);
Serial.print(F(", FREQUENCY: "));
Serial.println(frequency);
}
// SET Duty Cycle 50% agar sinyal kotak
if (rpm == 0) pwmWrite(PWM, 0); // Jika RPM 0 = OFF
else pwmWrite(PWM, 127); // 50% DC
// Print LCD
lcd.setCursor(0, 0);
lcd.print("INJECTOR TESTER!");
sprintf(lcdBuff, " %05i RPM ", rpm);
lcd.setCursor(0, 1);
lcd.print(lcdBuff);
}
//--------------------------------------------------------------
Hasil Pengujian Frequency
Sebelum lanjut ke pengetesan, kita belajar dulu untuk mensimulasikan alat ini menjadi seperti kendaraan aslinya. Di mana kita perlu merubah nilai Frequency sama dengan nilai RPM dari kendaraan. Disini saya kurang paham jumlah pulsa setiap putaran koil dari setiap motor, untuk sederhananya saya menggunakan tool kalkulator berikut agar mempermudah perhitungan jumlah RPM ke Hz.
Dari contoh di atas, didapatkan padah frequency 1Hz = 60 RPM sehingga ketika kita test dengan 50Hz maka didapatkan nilai 3000 RPM. Untuk lebih jelas bisa tonton video di bawah ini.
Video Simulasi Testing
Sekian dulu dari saya, semoga jelas dan dapat dimanfaatkan dengan baik ilmunya. Jangan lupa komentar jika ada pertanyaan dan join ke website kita dan channel Youtube kita. Semoga bermanfaat, terima kasih dan Salam Elektronik.
Banyak sebelumnya temen-temen yang request terkait LCD menu dengan menggunakan tombol. Dengan menggunakan LCD dan Tombol kita semua juga dapat membuat sebuah menu untuk dibuat di project kita. Untuk mempermudah pembahasannya saya buatkan dalam bentuk Video dengan 6 Part. Namun sebelum lanjut, siapkan dulu komponen sesuai dengan skematik berikut.
Playlist Video
Berikut keseluruan Playlist dibagi menjadi 1 s/d 6 part video. Yuk langsung saja silahkan disimak baik-baik dan siapkan kopi kalian, hehe.
Oke sekian Tutorial kali ini semoga bermanfaat, mampir juga ke Channel Youtube kita ya, untuk pertanyaan bisa tuliskan di kolom komentar di bawah atau di video tersebut. Semoga bermanfaat. Salam Elektronik.
PWM atau Pulse Width Modulation yang dalam Bahasa disebut Modulasi Lebar Pulsa, merupakan suatu teknik modulasi yang mengubah lebar pulsa (pulse width) dengan nilai frekuensi dan amplitudo yang tetap. Umumnya pada Arduino kita sering menggunakan teknik ini untuk mengatur kecerahan sebuah LED, kecepatan sebuah Motor, dll. PWM juga memiliki istilah Duty Cycle yaitu ration antara sinyal dalam kondisi ON atau OFF. Aga mudah dipaham berikut ilustrasi Duty Cycle.
Semoga dari ilustrasi ini kalian bisa paham. Sedangkan Frequency yaitu jumlah pulsa dalam satuan waktu (detik). Namun secara default PWM Arduino memiliki Frequency yang sudah diset kisaran 900Hz. Nah pada artikel ini kita akan belajar Tutorial Setting Frequency PWM Arduino dan Duty Cycle.
Skematik
Dalam simulasinya tentunya temen perlu memiliki Oscilloscope, namun disini kita juga bisa menggunakan outputan berupa led seperti berikut.
Program PWM Tanpa Library
Disini saya akan coba memberikan tutorial program untuk akses PWM dengan menggunakan perintah analogWrite(PIN, DUTY CYCLE);. Pin PWM pada Arduino Uno terdapat tanda ~ pada kaki pinya. Sebagai contoh kita gunakan Pin 9. Bawaan Arduino hanya dapat mengatur nilai Duty Cycle saja dimana nilainya antara 0 s/d 25. Berikut ini program untuk akses PWM bawaan Arduino.
Berikut hasil pengukuran yang saya dengan Oscilloscope. Terlihat nilai Frequency dan Duty Cycle.
Program PWM dengan Library Frequency
Dengan library ini sepengalaman saya hanya berfungsi pada pin Pin 9 dan 10 (berdasarkan testing). Sebelum lanjut silahkan download librarynya dilink berikut:
#include <PWM.h>
#define PIN_PWM 9
int frequency = 50; // 50Hz
void setup() {
// Initialisasi kecuali TIMER0
// keperluan delay(), dan millis()
InitTimersSafe();
SetPinFrequencySafe(PIN_PWM, frequency);
// Set Duty Cycle 50%
pwmWrite(PIN_PWM, 127);
}
void loop() {
}
Berikut ini hasil pengukuran Frequency dan Duty Cycle yang saya ukur dengan settingan Duty Cycle 50% atau 127 dalam desimal dan Frequency 50Hz.
Pemanfaat Pengaturan Frequency
Dengan menggunakan library ini, kalian dapat membuat sebuah project untuk membuat pulsa generator yang dapat diatur. Sebagai contoh saya gunakan sebagai alat tester Injetor Bensin kendaraan bermotor. Gimana menurut kalian? mari diskusikan di kolom komentar dibawah. Semoga bermanfaat, salam Elektronik.
Sebelumnya di channel youtube kita sudah bahas cara akses Telegram BOT dengan menggunakan ESP8266. Ada sedikit kekurangan untuk beberapa project yang membutuhkan koneksi internet tanpa jaringan WIFI. Sekarang kita akan bahas bagaimana cara pemprogram akses dengan memanfaatkan komunikasi SIM800OL agar dapat mengakses internet tanpa harus menggunakan WIFI dan hanya menggunakan kartu Perdana Telekomunikasi dengan menggunakan Paket Data.
SIM800L disini yang akan saya gunakan adalah SIM800L V2, dimana secara kestabilan dan berdasarkan pengalaman menggunakan SIM800L yang kecil merah sangat tidak saya rekomendasikan, karena susahnya dapat sinyal dan kendal-kendala aneh lain. Berikut perbedaan SIM800L V1 dan V2:
Skematik
Silahkan kalian rakit rangkaian berikut untuk melakukan komunikasi dengan Arduino Uno dan SIM800L berlaku juga dengan V1, sesuaikan saja konfirgurasi Pinnya.
Menggunkan module LM2596 sebagai stepdown untuk mendapatkan arus lebih dari 2A bisa menggunakan versi ini atau Arduino bisa menggunkan jalur supply regulator yang terpisah
Daftar Telegram BOT
Karena cara daftar telegram bot sudah pernah saya jelaskan di video saya di youtube. Kalian bisa tonton dulu cara daftarnya di video bawah ini:
Program AT Command
Untuk cek koneksi ke SIM800l dan cek kondisi module apakah aman, kalian bisa menggunakan program dibawah ini untuk memastikanya:
AT Command GPRS
Berikut daftar AT Command untuk melakukan koneksi GPRS dengan SIM800L
// Set Koneksi
AT+SAPBR=3,1,"CONTYPE","GPRS"
// Set APN, cari sendiri jenis APN perdana kalian, saya pakai XL
AT+SAPBR=3,1,"APN","internet"
// Set Settingan Diatas
AT+SAPBR=1,1
// Initialisasi ke HTPP
AT+HTTPINIT
AT+HTTPPARA="CID",1
// Karea
AT+HTTPPARA="URL","http://tryiot.online/telegram.php?token=BOT_TOKEN_KALIAN&chat_id=CHAT_ID)KALIAN&text=FansElectronics"
AT+HTTPACTION=0
AT+HTTPREAD
AT+HTTPTERM
AT+SAPBR=0,1
Dengan menggunakan program di atas kalian dapat mengirim perintah AT Command secara langsung melalui Serial Monitoring ARDUINO IDE.
Program PHP
Karena SIM800L terkadang terkendala koneksi SSL dan TSL 1.0 biasanya saya jembatanin menggunakan website pribadi saya untuk konekasinya:
Berikut ini program Kirim dan Baca pesan Telegram tanpa delay disetiap AT Commandnya, agak tidak menggangu alur kerja program lain juga.
//---------------------------------------------------------------------------
#include <ArduinoJson.h>
#include <SoftwareSerial.h>
// Define PIN
#define LED 13
// Define LOGIKA
#define ON 1
#define OFF 0
//---------------------------------------------------------------------------
const String bot_token = "BOT_TOKEN";
const String chat_id = "CHAT_ID";
//---------------------------------------------------------------------------
String response, json, message, send_message;
long offset;
int step_cmd;
bool send_telegram, response_cmd;
unsigned long response_timeout;
StaticJsonDocument<1000> doc;
SoftwareSerial SIM(8,9);
//---------------------------------------------------------------------------
void setup() {
Serial.begin(9600); // Serial KE PC
SIM.begin(9600); // Serial ke SIM
}
//---------------------------------------------------------------------------
void loop() {
if (send_telegram) sendTelegram(); // Jika saat Kirim Pesan, akan dibaca
else readTelegram(); // Jika Tidak ada kirim pesan, baca pesan masuk
//
if (message == "!LEDON") { // Pesan Masuk !RLYON
Serial.println("LED ON");
sendMessage("LED ON");
digitalWrite(LED, ON);
message = "";
} else if (message == "!LEDOFF") { // Pesan Masuk !RLYOFF
Serial.println("LED OFF");
sendMessage("LED OFF");
digitalWrite(LED, OFF);
message = "";
}
// LANJUT PROGRAM UTAMA KALIAN, TANPA DELAY, TETEP LOOPING
}
//---------------------------------------------------------------------------
//-------------------------------------------------------------------------------
void sendMessage(String msg) {
step_cmd = 1;
send_message = msg;
send_telegram = true;
}
//-------------------------------------------------------------------------------
void sendCommand(String cmd) {
SIM.println(cmd);
response_cmd = true;
response_timeout = millis();
}
//-------------------------------------------------------------------------------
void sendTelegram() {
if (step_cmd == 1 && !response_cmd) sendCommand("AT+HTTPTERM");
if (step_cmd == 2 && !response_cmd) sendCommand("AT+SAPBR=0,1");
else if (step_cmd == 3 && !response_cmd) sendCommand("AT+SAPBR=3,1,\"CONTYPE\",\"GPRS\"");
else if (step_cmd == 4 && !response_cmd) sendCommand("AT+SAPBR=3,1,\"APN\",\"internet\"");
else if (step_cmd == 5 && !response_cmd) sendCommand("AT+SAPBR=1,1");
else if (step_cmd == 6 && !response_cmd) sendCommand("AT+HTTPINIT");
else if (step_cmd == 7 && !response_cmd) sendCommand("AT+HTTPPARA=\"CID\",1");
else if (step_cmd == 8 && !response_cmd) sendCommand("AT+HTTPPARA=\"URL\",\"http://tryiot.online/telegram.php?token=" + bot_token + "&chat_id=" + chat_id + "&text=" + send_message + "\"");
else if (step_cmd == 9 && !response_cmd) sendCommand("AT+HTTPACTION=0");
else if (step_cmd == 10 && !response_cmd) sendCommand("AT+HTTPTERM");
else if (step_cmd == 11 && !response_cmd) sendCommand("AT+SAPBR=0,1");
// SETELAH COMMAND DIKIRIN, TUNGGU RESPONSE
if (response_cmd) { // WAITING RESPON
if (SIM.available() > 0) { // Tunggu Serial Masuk
response = SIM.readString(); // Baca Semua Response
if (response.indexOf("OK") or response.indexOf("ER")) { // Jika Response OK
Serial.println(response); // Jika Response OK
response_cmd = false; //
step_cmd++; //
} //
} //
// Waktu Tunggu
if (millis() - response_timeout > 3000) { // TIMEOUT REPONSE
response_cmd = false; //
step_cmd++; //
} //
} //
// Jika Step selesai
if (step_cmd > 11) {
step_cmd = 1;
send_telegram = false;
response_cmd = false;
}
}
//-------------------------------------------------------------------------------
void readTelegram() {
if (step_cmd == 1 && !response_cmd) sendCommand("AT+SAPBR=0,1");
else if (step_cmd == 2 && !response_cmd) sendCommand("AT+SAPBR=3,1,\"CONTYPE\",\"GPRS\"");
else if (step_cmd == 3 && !response_cmd) sendCommand("AT+SAPBR=3,1,\"APN\",\"internet\"");
else if (step_cmd == 4 && !response_cmd) sendCommand("AT+SAPBR=1,1");
else if (step_cmd == 5 && !response_cmd) sendCommand("AT+HTTPINIT");
else if (step_cmd == 6 && !response_cmd) sendCommand("AT+HTTPPARA=\"CID\",1");
else if (step_cmd == 7 && !response_cmd) sendCommand("AT+HTTPPARA=\"URL\",\"http://box-paket.online/telegram.php?token=" + bot_token + "&limit=1&offset=" + String(offset) + "\"");
else if (step_cmd == 8 && !response_cmd) sendCommand("AT+HTTPACTION=0");
else if (step_cmd == 9 && !response_cmd) sendCommand("AT+HTTPREAD");
else if (step_cmd == 10 && !response_cmd) sendCommand("AT+HTTPTERM");
else if (step_cmd == 11 && !response_cmd) sendCommand("AT+SAPBR=0,1");
// SETELAH COMMAND DIKIRIN, TUNGGU RESPONSE
if (response_cmd) { // WAITING RESPON
if (SIM.available() > 0) { // Tunggu Serial Masuk
response = SIM.readString(); // Baca Semua Response
if (response.indexOf("OK") or response.indexOf("ER")) { // Jika Response OK
Serial.println(response); // Jika Response OK
if (step_cmd == 9) { //
json = parsingJSON(response); //
Serial.print("JSON: "); //
Serial.println(json); // Jika Response OK
DeserializationError error = deserializeJson(doc, json); //
if (!error) { // Jika JSON BENAR
Serial.println(F("JSON PARSING BERHASIL")); //
if (doc["ok"] == true) { // JSON OK true
Serial.println(F("BERHASIL PARSING JSON")); //
String update_id = doc["result"][0]["update_id"]; // UPDATE ID
String msg = doc["result"][0]["message"]["text"]; //
if (update_id != "null") { //
offset = update_id.toInt() + 1; //
message = msg; //
Serial.println("UPDATE ID: " + update_id); //
Serial.println("OFFSET ID: " + String(offset)); //
Serial.println("MESSAGET : " + message); //
} //
} //
} else { //
Serial.println(F("JSON PARSING GAGAL")); //
Serial.print(F("deserializeJson() failed: ")); //
Serial.println(error.f_str()); //
} //
} //
if (step_cmd != 8) { //
response_cmd = false; //
step_cmd++; //
} //
} //
} //
// Waktu Tunggu
if (millis() - response_timeout > 10000) { // TIMEOUT REPONSE
response_cmd = false; //
step_cmd++; //
} //
} //
// Jika Step selesai
if (step_cmd > 11) {
step_cmd = 1;
send_telegram = false;
response_cmd = false;
}
}
//-------------------------------------------------------------------------------
// Parsing JSON agar bersih full JSON saja
String parsingJSON(String data) {
String payload = "";
int len = data.length();
bool start = false;
for (int i = 0; i < len; i++) {
if (!start) {
if (data[i] == '{') {
start = true;
payload = payload + data[i];
}
} else {
if (data[i] == '@') break;
else if (data[i] == '\n') continue;
else payload = payload + data[i];
}
}
return payload;
}
Video Tutorial Lengkap
Gimana menurut kalian? gampang dan mudah kan, adapun beberapa kendala yang kalian alami, join ke website ini dan tinggalkan komentar di bawah mari berdiskusi dengan sehat. Terma kasih semoga bermanfaaat tutorial ini. Salam Elektronik.
Halo Salam Elektronika, pada tutorial kali ini saya akan membahas tentang sensor Thermistor atau NTC dengan nilai 10K yang digunakan disini. Sebelum lebih jauh alangkah baiknya kita kenalan dulu dengan Sensor Thermistor ini.
Thermistor merupakan sebauh Resistor yang perubahan nilai hambatanya terpengarui dengan perubahan suhu sekitarnya. Thermistor memiliki 2 jenis NTC dan PTC (Negatif Temperature Coefficient atau Positif Temperature Coefficient). Yang artinya untuk NTC semakin tinggi suhu semakin mengecil nilai Hambatanya dan sebaliknya PTC semakin tingg suhu semakin tinggi nilai hambatanya. Sampai disini paham ya 😀
Skematik Rangkaian ke Arduino
Oke sebelum masuk ke pemrograman, silahkan rakit Arduino kalian sesuai dengan skematik di bawah ini.
Source Code
Pada program NTC ini tidak dibutuhkan library apapun, silahkan kalian install saja Arduino IDE dan kemudian upload program berikut:
Untuk Tutorial Instalasi Arduino silahkan baca artikel berikut:
Arduino IDE (Integrated Development Environment) merupakan program yang digunakan untuk membuat sebuah kode program untuk perangkat Arduino. Disebut sebagai IDE karena banyak sekali fasilitas yang sudah ditanamkan di dalam satu aplikasi ini. Mulai dari Kode Editor, Serial Monitoring, Serial Plotter, Debuging, Programmer, dll. Oleh karena itu Arduino IDE sangat enak digunakan bagi awam, karena tidak perlu memperlajari aplikasi-aplikasi lain dalam mengembangkan project-project Arduino.
Download Arduino IDE
Untuk mendownload Arduino IDE versi 1.X atau 2.X dapat download di situs resminya secara langsung di:
Dalam tutorial ini saya anggap kalian download versi installer (.exe). Silahkan buka dan install aja seperti biasa. Centang semua Driver seperti berikut:
Pilih lokasi instalasi, sesuaikan dengan kebutuhan kalian:
Tunggu proses installasi selesai
Buka Arduino IDE, dan berikut tampilan dari Arduino IDE versi 1.X.
Tutorial Install Arduino IDE 2.X
Download dan buka Installer Arduino IDE 2.X.
Ikuti Step by Step Instalasi berikut:
Berikut ini adalah tampilan dari Arduino IDE 2.0.3, saat artikel ini dibuat:
Untuk lebih jelasnya dan mudah dipahami, kalian bisa tonton video berikut ini untuk pengalaman yang lebih baik.
Oke sekian dulu tutorial ini semoga bermanfaat, jangan lupa tinggalkan komentar dan join kita di website ini. Salam Elektronik.
Arduino terkenal dikarenakan banyaknya pustaka, atau library yang sangat memudahkan kita dalam membuat sebuah project elektronika yang khususnya menggunakan mikrokontroler. Dengan adanya Library kita dapat mempersingkat waktu kita dalam membuat mengakses atau menjalankan perintah dari sebuah module-module yang ada, karena segala sesuaitunya sudah disediakan di dalam Library tersebut.
Untuk kalian yang tidak paham sebenarnya apasih library pada Arduino itu. Library Arduino merupakan sekumpulan fungsi-fungsi yang dalam kita panggil untuk menjalankan sebuah perintah yang sering kita ulang. Sebagai contoh kita akan membuat sebuah program sederhana yang agar memudahkan untuk dipahami. Berikut contoh program sederhana
// Fungsi Setup, dijalankan sekali
void setup() {
Serial.begin(9600);
Serial.println(penjumlahan(1, 2)); // 1+2 = 3
}
// Fungsi Looping, dijalankan sampai restart
void loop() {
}
// Fungsi penjumlahan 2 variable
int penjumlahan(int a, int b) {
return a + b;
}
Dari perintah diatas, terdapat fungsi penjumlahan(), dimana dapat melakukan perintah penjumlahan dengan cara kita memasukan variable yang ingin kita jumlahkan. Sehingga menghemat waktu dan apabila fungsi ini sering digunakan juga akan menghemat memory dari program yang kita tulis.
Nah dari sini setidaknya kalian sedikit paham tentang library bukan? Sesuai judul artikel ini. Disini Fans Electronics akan membagikan kumpulan libary-library yang sering kita gunakan, dan kita mengumpulkannya dalam satu repository agar lebih mudah sebagai backup pribadi. Semua library tersebut tentunya bukan buatan kita pribadi. Namun apabila kalian mengetahui Repository resminya silahkan download langsung disana. Namun disini saya gunakan untuk kalian agar tidak repot kedepannya dalam mengikuti seluru pelajaran yang ada di Blog ini. Berikut ini link Downloadnnya: