"Kembali Ke Dasar Elektronika Digital ... "

  • IC Timer 555 yang Multifungsi

    IC timer 555 adalah sirkuit terpadu (chip) yang digunakan dalam berbagai pembangkit timer, pulsa dan aplikasi osilator. Komponen ini digunakan secara luas, berkat kemudahan dalam penggunaan, harga rendah dan stabilitas yang baik

  • Animasi LED Dengan IC 4017

    IC 4017 adalah IC 16-pin CMOS dekade counter dari seri IC CMOS 4000. Sangat berguna jika ingin membuat animasi lampu atau LED secara sederhana seperti led berjalan, tulisan berjalan , counter/timer dan masih banyak kegunaan lainnya

  • Bermain DOT Matrix - LOVEHURT

    Project Sederhana dengan Dot Matrix dan Attiny2313. Bisa menjadi hadiah buat teman atau pacarmu yang ulang tahun dengan tulisan dan animasi yang dapat dibuat sendiri.

  • JAM DIGITAL 6 DIGIT TANPA MICRO FULL CMOS

    Jika anda pencinta IC TTL datau CMOS maka project jam digital ini akan menunjukkan bahwa tidak ada salahnya balik kembali ke dasar elektronika digital , sebab semuanya BISA dibuat dengan teknologi jadul

  • BIKIN PCB SEDERHANA TAPI GA MURAHAN

    Bikin PCB itu ga susah kok..dengan software EAGLE CAD dan teknik sterika kamu dapat membuat PCB untuk berbagai project elektronika mu ...

Tampilkan postingan dengan label arduino. Tampilkan semua postingan
Tampilkan postingan dengan label arduino. Tampilkan semua postingan

Sabtu, 23 Mei 2020

[Praktek] Bermain dengan alat GPS receiver jadul - Part 1



Masih dalam rangka kegatelan tangan mengoprek sesuatu yang berhubungan GeoPy dan pengolahan data lokasi, kali ini dalam 2 seri tulisan akan saya bahas mengenai Hardware GPS receiver yg umum ada pasaran elektronika di olshop. Ternyata masa lebaran ini agak beresiko kalau belanja dan kirim barang, jadi saya terpaksa kembali ke 15 tahun yang lalu ketika saya bekerja di salah satu vendor perangkat telekomunukasi CDMA. Jadi saat itu salah satu cara membedakan BTS CDMA dengan GSM adalah mencari antena berbentuk setengah bola atau kerucut yg diletakkan tidak terlalu tinggi dekat dengan shelter BTS.



Bernostalgia ke masa-masa proyek memasang antena GPS di tower, yg nilai rupiahnya bisa untuk beli HP baru belum lagi sisa kabel yang panjang kualitas jerman yg laku keras di loak...ahhhh sudahlahh...kini yang menjadi warisan di saya hanya sebuah receiver GPS USB yang dulunya digunakan  untuk referensi lokasi saat melakukan drive test sinyal. Dan saat saya colokkan port USB nya ke komputer  terdeteksi sebagai Usb to serial converter. Wahh ini dalemannya pasti masih berupa UART dan bisa  di interfacing ke arduino !



Jadi makin semangat nih buat menyambungkannya ke Arduino. Tapi sebelumnya ada baiknya mencari referensi tentang data yg dikirim oleh si receiver. Sial nya si pembuat modul telah bangkrut dan sedikit yg bisa saya dapatkan digoogle tapi cukuplah informasi yg di dapat bahwa receiver ini berbasis NMEA yg masih umum digunakan. Dengan terminal putty dan serial baudrate 4800 layar menangkap seperti ini :


Buset dah..banyak amat tuh tulisan yg harus diparsing, dan dari yg saya baca di standar NMEA receiver ini lumayan lengkap karena bisa membaca berbagai standar GPS , jadi ada $GPRSV dan $GPRSA untuk melihat informasi satelit dan $GPGGA dan $GPRMC untuk membaca koordiat, waktu, kecepatan, ketinggian dsb. Wah saya mumet ini kalau membaca parsingan segitu banyak, dan pilihan tertuju ke google dan saya cari ada gak software gratis untuk membaca parsingan NMEA seperti diatas...dan ternyata banyak loo..ayo kita coba dan bawa keruangan terbuka agar sinyal satelitnya lebih bagus.



Pilihan saya tertuju ke software yg pertama dimana terpampang jelas parsingan NMEA nya sehingga dari data serial yg didapat seperti ini :


$GPRMC,040503.246,A,0719.6784,S,11243.4344,E,0.00,0.00,220520,,*1B


Artinya kira-kira :

040503.246       = jam 04 , Menit 05, Detik 03.246 (UTC)
A                            = Data Benar (V jika datanya salah )
0719.6784,S     = Latitude 7' 19.6784 " South
11243.4344,E  = Longitude 112' 43.4344 " East
220520        = Tanggal 22 Bulan 05 Tahun 20

Nah sudah siap nih...ayo kita siapkan bahan-bahan dan mulai menyolder modul receiver GPSnya agar bisa dihubungkan ke Arduino.



Skematik tidak akan saya bahas karena sangat gampang dicari apalagi cara koneksi LCD ke Arduino seperti apa pasti para pembaca sudah tahu, dan kalau belum ya tinggal googling aja bagaimana cara menyambungkan LCD ke arduino. Microcontroller yg pas ada disaya adalah wemos d1 r1  yang memiliki wifi berbasis ESP8266 dan nantinya akan saya proogram untuk membaca GPS secara serial dan DHT11 sebagai tambahan sensor agar sedikit berbau IOT. Tujuan akhir dari praktek ini adalah mengirimkan data sensor suhu/kelembaban beserta dengan data GPS dan nama lokasi pembacaan yg akan dikolaborasikan dengan Mqtt serta Geopy phyton. Pada part 1 ini akan difokuskan pembahasan mengenai pembacaan GPS ke LCD.


Pertanyaan besarnya adalah bagaimana cara parsing text serial secara efektif? Apakah manual saja? Secara tukang solder ini memiliki pengalaman buruk dengan parsing serial ! Teringat bahwa modul GPS receiver banyak dijual sebagai interfacing Arduino dan pastinya ada Library jadinya, dan benar saja beberapa library terpampang di sketch dan stelah mencoba beberapa kali akhirnya diputuskan untuk menggunakan library TinyGps++ . Kenapa? Karena dengan script examplenya (ada di folder lib nya) alat saya  sukses membaca data GPS dengan bagus. Mari kita berkreasi dengan cara copy paste ala tukang solder ini.


#include <TinyGPS++.h>
#include <LiquidCrystal.h>
#include <SoftwareSerial.h>

static const int RXPin = 0, TXPin = 15; 
//pake RX aja hanya baca data !

static const uint32_t GPSBaud = 4800;


Seperti biasanya menggunakan board arduino versi kecil maka serial portnya harus dengan software serial. Baudrate disesuaikan yaitu 4800


// The TinyGPS++ object
TinyGPSPlus gps;

// The serial connection to the GPS device
SoftwareSerial ss(RXPin, TXPin);

LiquidCrystal lcd(16, 5, 4, 14, 12, 13);


Inisialisai LCD seperti biasa simple aja dan harus diperhatikan Wemos D1 R1 memiliki GPIO yang agak loncat loncat, jadi sesuaikan penamaan portnya jangan sampe salah. Gunakan Google Search jika salah.



void setup()
  Serial.begin(9600);
  ss.begin(GPSBaud);
  lcd.begin(20, 4);

  Serial.println(F("Coba-Coba GPS"));
  Serial.println(F("Menggunakan  TinyGPS++ Dan GPS module"));
  Serial.print(F("Testing TinyGPS++ library v. ")); 
  Serial.println(TinyGPSPlus::libraryVersion());
  Serial.println(F("by ahocool with respect to Lib creator  Mikal Hart"));
  Serial.println();
}


Function setup menyatakan bahwa serial dari wemos akan digunakan sebagai console juga untuk melihat hasil pembacaan GPS selain di LCD. keuntungan lainnya adalah memudahkan untuk debugging.

void displayInfo()
{
  Serial.print(F("Location: ")); 
  if (gps.location.isValid())
  {
    Serial.print(gps.location.lat(), 6);
    Serial.print(F(","));
    Serial.print(gps.location.lng(), 6);
    lcd.setCursor(0,0);
    lcd.print(" ---- GPS VALID ----");
    lcd.setCursor(0,1);
    lcd.print("LAT :");
    lcd.print(gps.location.lat(), 6);
    lcd.setCursor(0,2);
    lcd.print("LONG:");
    lcd.print(gps.location.lng(), 6);    
  
  }
  else
  {
    Serial.print(F("INVALID"));
    lcd.setCursor(0,0);
    lcd.print(" ---GPS INVALID --- ");
  }

  Serial.print(F("  Date/Time: "));
  if (gps.date.isValid())
  {
    Serial.print(gps.date.month());
    Serial.print(F("/"));
    Serial.print(gps.date.day());
    Serial.print(F("/"));
    Serial.print(gps.date.year());
  }
  else
  {
    Serial.print(F("INVALID"));
  }

  Serial.print(F(" "));
  if (gps.time.isValid())
  {
    if (gps.time.hour() < 10) Serial.print(F("0"));
    Serial.print(gps.time.hour());
    Serial.print(F(":"));
    if (gps.time.minute() < 10) Serial.print(F("0"));
    Serial.print(gps.time.minute());
    Serial.print(F(":"));
    if (gps.time.second() < 10) Serial.print(F("0"));
    Serial.print(gps.time.second());
    Serial.print(F("."));
    if (gps.time.centisecond() < 10) Serial.print(F("0"));
    Serial.print(gps.time.centisecond());
  }
  else
  {
    Serial.print(F("INVALID"));
  }

  Serial.println();
  
}


Pada sript diatas berfungsi sebagai tampilan GPS ke Serial dan LCD, secara umumnya dapat dilihat class yg umum digunakan :

gps.location.isValid()
gps.location.lat()
gps.location.lng()
gps.date.isValid()
gps.time.hour()
gps.time.minute()
gps.time.second()
gps.time.second()


Untuk loop utama seperti dibawah ini :

void loop()
{
  // Data ditampilkan hanya setelah data selesai di olah 
  while (ss.available() > 0)
    if (gps.encode(ss.read()))
      displayInfo();

  if (millis() > 5000 && gps.charsProcessed() < 10)
  {
    Serial.println(F("GPSMU pedot brooo! cek kabelmu."));
    while(true);
  }


}


Hasilnya ketika saya jalankan diluar ruangan sangat akurat apalagi saat cuaca ternag dan LED dari GPS rceiver tidak berkedip yg artinya FULLY LOCKED TO 3 SATELLITES.



Tidak terlalu sulit jika kita sudah mengetahui langkah-langkah "googling" yang sesuai untuk meng "oprek" arduino. Untung saja saya punya receiver GPS jadul kalau tidak harus keluar duit 200rb an untuk membeli modul GPS Ublox Neo.

.....TUNGGU YANG LEBIH KEREN DI TULISAN PART 2...

Selamat mencoba 
Share:

Selasa, 19 Mei 2020

{IOT} Memanfaatkan Raspberry Pi Sebagai Broker MQTT (Mosquitto) Yang dapat Diakses Publik



Beberapa hari terakhir penulis kembali disibukkan dengan project "tertunda" dari tahun 2019 milik seorang teman. Dapat dibilang sedikit beruntung karena penulis pada masa PSBB covid-19 ini  mempunyai waktu luang dikarenakan beberapa proyek yg seharusnya masa sebelum lebaran menjadi "sok sibuk" dengan terpaksa di cancel. Tapi live mas gogon - tetap berkreasi adalah pilihan yang terbaik daripada menjadi panik akibat virus yang tak kunjung ketemu vaksin nya.




Masih ingat gambar diatas ? Itu merupakan tulisan saat kawan yg mengajak saya mengerjakan proyek pengolahan data IOT membuat saya giat belajar teori + praktek pengiriman data IOT menggunakan protokol MQTT. Jika pembaca belum sempat memperhatikan ada baiknya menelaah dahulu pada link berikut : http://www.aisi555.com/2019/10/iot-lebih-lanjut-dengan-mqtt.html . Dan sangat terkejutnya ketika bulan mei 2020 saat mengerjakan proyek bersambung tadi, tersadar bahwa server/broker  CloudMqtt dot com yg saya sering gunakan, mulai memasang harga dan versi gratisnya dibilang "OUT OF STOCK". Ya saya maklum saja mereka butuh sewa server dan cari untung dan walau akun mqtt saya masih aman dan instance saya masih aktif akan tetapi kualitasnya menurun, putus-putus, dan mungkin ini sebabnya di berikan "meteran" agar terjadi keseimbangan antara penggunaan dan kapasitas server.


Lalu apakah yg harus saya perbuat ? Apakah mencari broker publik ? Dan pilihan tertuju ke sebuah alat kecil yg tergeletak di toolbox pemberian teman tadi, yang ditinggalkan mahasiswanya (seharusnya ikut mengerjakan proyek)  akibat kampus lockdown terdampak covid-19. Dan alat itu ternyata raspberry zero W.

Saya tidak akan membahas cara install raspi zero karena sangat umum ditemukan di internet, yang penting saran saya adalah gunakan SD CARD kualitas terbaik yaitu kelas EXTREME dengan kecepatan transfer s/d 100mbps dan lupakan membeli sd card class 10 yang banyak palsunya. Belilah di toko online yg jualan spesialis alat rekam video karena dijamin sudah terpercaya. Saya pilih OS yang paling umum yaitu RASPBIAN. Cara install mosquitto sangat gampang dan juga umum ditemukan dengan googling.


pi@raspberry:~ $ sudo apt install -y mosquitto mosquitto-clients

Jangan lupa untuk menjadikan mosquitto sebagai service sehingga auto start

pi@raspberry:~ $ sudo systemctl enable mosquitto.service

sudah...sederhana seperti itu dan bisa digunakan secara langsung..oh iya untuk mengetahui apakah broker mqtt sudah berjalan gunakan perintah 

pi@raspberry:~ $ mosquitto -v

secara default port yang digunakan adalah 1883 dan IP nya berapa ya ? Hayo coba googling sendiri cara menemukan IP dari raspberry kamu. Gampang kok...

dan script arduino kamu cukup dikosongkan username dan passwordnya seperti berikut :



Jika menginginkan MQTT brokernya lebih secure dengan user password, gunakan perintah berikut ini :

 pi@raspberry:~ $ mosquitto_passwd -c passwordfile user

nanti akan keluar perintah untuk memasukkan pasword. Nah..gampang begitu masak gak bisa? kalau melihat proyek sebelumnya menggunakan ESP8266 tinggal sambung ke wifi yang sama dan otomatis terhubung dengan mantap. 

Untuk melakukan sub dari topik pada raspberry gunakan perintah :

pi@raspberry:~ $ mosquitto_sub -h localhost -u namauser -P password -t TOPIKNYA 

Gunakan terminal telnet/ssh lainnya untuk PUBLISH message ke topic agar tertangkap pada terminal sebelumnya

pi@raspberry:~ $ mosquitto_pub -h localhost -u namauser -P password -t TOPIKNYA -m "saya publish pesan"


Lalu bagaimana jika menggunakan modem SIM800 sejenis yang mengakses servernya dari internet ? Cara termudah adalah dengan memanfaatkan PORT FORWARDING dari router wifi dari layanan internet rumahan indihome/mncplay/firstmedia dll. Secara umum langkahnya mirip yaitu mencari IP publik dari router dan melakukan port forwarding ke raspberry pi. 


Dengan setting diatas maka IP dari Raspberry yang kita gunakan akan bisa diakses dari luar begitu juga PORT MQTT nya. IP publik ini mungkin saja akan berubah saat terjadi rekonfigurasi dari pusat ISP, modem ter Reset atau lampu mati. Untuk itu agar memudahkan mengingat butuh DOMAIN PUBLIK yg khusus mengarahkan ke IP router kita dari jalur internet menggunakan Dynamic DNS atau DDNS. Salah satu layanan DDNS yang lumayan simple adalah noip dot com seperti gambar berikut :



Jadi pastikan servise DDNS tersedia dan aktif pada router kamu dan selanjutnya secara dinamis akan merubah pada public DNS domain dan IP routernya. Jika router kamu tidak memiliki fasilitas DDNS maka bisa menggunakan akses DDNS melalui aplikasi DUC pada raspberry pi kamu . Googling aja : " Raspberry noip DUC install "

Tuh kan..saya jadi bisa akses alat arduino saya melalui HP dengan koneksi 4G .


Selamat Mencoba


Share:

Rabu, 22 Januari 2020

Operasi Input Output Serial Bluetooth HM10 MLT-BT05-BLE4.0 - LED dan DHT11




Modul Bluetooth HM10 MLT-BT05-BLE4.0 yang saya beli ternyata merupakan emulator komunikasi serial pada BLE dan cocok untuk proses belajar mengenal parameter dan pengaturan dari device BLE pada umumnya. Harapan saya untuk dapat mengoprek UUID dan Service / Characteristic yg ada ternyata terbatas pada CHAR nama Bluetooth serta UUID 0xFFE0 yang merupakan layanan TX RX Serial seperti yg bisa dilihat di hasil scan pada aplikasi android BLE console ( gunakan google play).

Beberapa kali saya temukan kerancuan dalam mengartikan mana yg UUID dan mana CHARACTERISTIC, tapi dari kenyataan hasil praktek dan manual book maka modul saya ini memang hanya mempunyai 1 UUID dan 1 CHAR yaitu 0xFFE0 dan 0xFFE1. Ada beberapa blog yg mengatakan bahwa angka itu muncul dari kombinasi parameter serivis yg bisa read write dan notify. Daripada bingung kita ikut aja aturan seperti contoh yg ada di internet sana dimana harus disertakan AT command berikut ini :

  • AT+ROLE0              ==> Sebagai mode slave
  • AT+UUID0xFFE0   ==>  atur UUID
  • AT+CHAR0xFFE1  ==> atur Characteristic


Kembali ke kelanjutan praktek sebelumnya, kita kembali menghubungkan Arduino Uno dan modul BLE dan kali ini akan disertakan 2 buah lampu LED.



Jadi tujuan dari prakteknya adalah untuk menghidupkan dan mematikan LED melalui terminal android. Scriptnya bagaimana ? Kita bahas satu persatu bagian yuk..

#include <SoftwareSerial.h> // library serial
#define merah 5   // pin LED merah
#define hijau 6   // pin LED hijau

SoftwareSerial mySerial(3, 4); // RX, TX



void setup() {

  pinMode(merah, OUTPUT);     //inisialisasi led merah
  pinMode(hijau, OUTPUT);     //inisialisasi led merah
  digitalWrite(merah, HIGH);  //test led saat awal
  digitalWrite(hijau, HIGH);  // Nyala lalu mati
  delay(500);
  digitalWrite(merah, LOW);
  digitalWrite(hijau, LOW);
  
  mySerial.begin(9600);  // inisialisasi serial BLE
  Serial.begin(9600);    // inisialisasi serial UNO

  // inisialisasi UUID dan BLE sebagai slave mode
  sendCommand("AT");
  sendCommand("AT+ROLE0");
  sendCommand("AT+UUID0xFFE0");
  sendCommand("AT+CHAR0xFFE1");
  sendCommand("AT+NAMEwww.aisi555.com");
}



Nah begitu aturan awal menginisialisasi modul BLE pembaca cukup ikuti saja aturan ini. Lalu untuk mengirim AT command secara serial ke BLE digunakan function / routine bernama sendCommand()

void sendCommand(const char * command){
  Serial.print("Command kirim :");  // menulis command ke monitor
  Serial.println(command);
  mySerial.println(command);  // kirim AT command ke BLE
  //tunggu bntar
  delay(100);
  
  char reply[100]; //kumpulkan reply dalam char array 
  int i = 0;
  while (mySerial.available()) { 
    reply[i] = mySerial.read(); 
    i += 1;
  }
  //akhir string selalu '\0'
  reply[i] = '\0';  
  Serial.print(reply);

  Serial.println("Pesan Dibalas");



Untuk menerima perintah dari lawan yaitu Smartphone Android dengan aplikasi BLE Console maka diperlukan pembacaan perintah dan dicompare sesuai kata "kunci" yg dipakai. Misal "LED ON" maka akan di compare melalui script STRCMP seperti berikut :



if (strcmp(reply,"merah on")==0) digitalWrite(merah, HIGH);
else if (strcmp(reply,"merah off")==0) digitalWrite(merah, LOW);
else if (strcmp(reply,"hijau on")==0) digitalWrite(hijau, HIGH);
else if (strcmp(reply,"hijau off")==0) digitalWrite(hijau, LOW);
  
  if(strlen(reply) > 0){
    Serial.println(reply);
    Serial.println("Perhatikan LED nya");


  }
}  

Simple bukan ? Dengan kreasi menambahkan delay maka kita bisa juga menambahkan fasilitas flip- flop pada hijau merah seperti pada script dan video dikakhir tulisan ini

void loop() {
  readSerial();
  delay(500);

  if( flip == true) {
      if(flop == false) {
        digitalWrite(merah, LOW );
        digitalWrite(hijau, HIGH);
        flop = true;
      }

      else  {
        digitalWrite(merah, HIGH );
        digitalWrite(hijau, LOW);
        flop = false;
      }
  }

}


Bagaimana jika kita tambahkan DHT11 dan akan membaca suhu udara? Kita cukup menambahkan proses pembacaan DHT11 saat ada perintah serial masuk dari BLE yg dikirim smartphone,  misalnya seperti gambar dibawah. Saya menggunakan aplikasi BLE console dengan setting Notify centang dan Send Enter jangan di centang.



Jadi modifikasi script sama saja seperti pembahasan pembacaan DHT 11 pada percobaan yang lalu lalu, yg ditambahkan hanya reply ke  BLE melalui serial port.


void SendTempHumid(bool jenis){ // jenis suhu apa humi

    //script umum pembacaan DHT11
    float h = dht.readHumidity();
    float t = dht.readTemperature();

    if (isnan(h) || isnan(t)) {
      Serial.println("Failed to read from DHT sensor!");
      //return; This will ensure that data is always sent
    }

    
    if(jenis == false) // baca suhu
    {
    
    Serial.print("Temperature: "); 
    Serial.print(t);
    Serial.println(" °C ");

    mySerial.print("T: "); //kirim suhu ke BLE
    mySerial.print(t); 
    mySerial.println("°C ");

    }
    else
    {
    Serial.print("Humidity: "); 
    Serial.print(h);
    Serial.println(" %");

    mySerial.print("H: "); //kirim humi ke BLE
    mySerial.print(h); 
    mySerial.println(" %");
    }
}

Sedangkan pada function readSerial() kita tambahkan seperti ini  untuk menangkap pengiriman kata "suhu" dan "humi" yg dikirimkan oleh smartphone.

      else if (strcmp(reply,"suhu")==0) SendTempHumid(false);
    else if (strcmp(reply,"humi")==0) SendTempHumid(true);



Hasil selengkapnya bisa dilihat pada video berikut ini :



 SELAMAT MENCOBA ..
Share:

Hello World modul Bluetooth HM10 MLT-BT05-BLE4.0


BLE alias bluetooth low energy merupakan pengembangan terbaru teknologi wireless jarak dekat yaitu versi bluetooth 4.0 keatas dimana merupakan salah satu penggerak dunia IOT yang sangat digemari. Apabila anda jalan-jalan ke MALL dan melakukan scan bluetooth melalui perangkat HP smartphone maka anda akan terkejut  melihat banyaknya perangkat disekitar kita yang menggunakan komunikasi BLE. Contohnya dapat saya gambarkan disebuah mall di surabaya dengan hasil scan pada toko sepatu dan saya terkejut melihat hasilnya ...





Kira-kira barang apa yg ada disekitar saya ya ? Kok bisa banyak banget..dan ternyata setelah saya menengadah diatas kepala saya terdapat ratusan lampu LED dengan bentuk yg sedikit "oversize" dan ketika saya googling hasilnya lampu itu merupakan smartlamp BLE yang secara IOT dapat mengatur posisi dan kecerahannya sesuai kondisi yang diinginkan. Canggih bukan ?

Blog ini sempat juga berkenalan dengan modul bluetooth versi jadul yang bisa anda baca disini : http://www.aisi555.com/2013/09/tutorial-avr-bluetooth-android-its-easy.html , dan dapat diperoleh penjelasan dari praktek tentang kemudahan berkomunikasi serial secara wireless. Bagaimana dengan versi terbaru yang sudah mengadopsi teknologi BLE 4.0 ? Ternyata ada istilah baru yg harus digoogling apabila pertama mengenal BLE yaitu ADVERTISING, UUID, SERVICE, GATT, CHARACTERISTIC  dan sebagainya. Untuk mempersingkat pemahaman bisa dilihat pada hasil scanning di smart TV berikut.

dan ketika kita bonding dengan alat BLE semacam smart watch bisa dilihat akan muncul beberapa UUID dan Characteristicnya dalam format yg sedikit menakutkan bagi orang awam.



Jadi biar tidak bingung cukup dibayangkan UUID  sebagai bapaknya, Characteristic sebagai anaknya. Prosesor yg terhubung dengan BLE akan menentukan properties dari masing CHAR apakah bisa dibaca, ditulis atau memberikan notifikasi. Nah data CHAR inilah  yg nanti akan diisikan data oleh prosesor Input Output BLE dan pihak lawan membacanya atau merubah nya seperti umumnya client/server yg berkomunikasi secara wireless.

Dipasaran modul siap pakai BLE hanya ditemukan satu model yaitu "clone" yg mengaku BT09-AT . Tetapi ketika penulis mencoba berkenalan "hello world" ternyata modul ini lebih ke versi MLT-BT05 yang memang sudah ber versi BLE 4.0 . Mari kita bahas cara berkenalan dengan modul BT05 ini. Kesan saya pertama kalinya memegang alat ini:

  • Power supply bisa gunakan 5Volt jadi aman menggunakan micon atau arduino
  • Level serial ditulisan 3.3V , tapi serial TTL cukup juga kok levelnya
  • Jika menggunakan USBSERIAL untuk mencoba berkomunikasi maka akan sangat kesulitan sebab batasan muncul ketika perintah serial yg dikirim tanpa memerlukan CR (enter) dan LF (\n). Jadi AT command yg dikirim akan sedikit berbeda seperti pada modem GSM
  • Akibatnya untuk hello world sebaiknya langsung menggunakan arduino saja seperti gambar rangkaian dibawah ini.



Dengan script berikut ini yg berdasarkan komunikasi serial biasa maka akan dapat di test hasil dari AT command paling dasar yaitu AT+NAME<nama nya bluetooth> .

include <SoftwareSerial.h>

SoftwareSerial mySerial(3, 4); // RX, TX

void setup() {
  
  mySerial.begin(9600);
  Serial.begin(9600);

  sendCommand("AT");
  sendCommand("AT+NAMEwww.aisi55.com");
}

void sendCommand(const char * command){
  Serial.print("Command send :");
  Serial.println(command);
  mySerial.println(command);
  //delay bentar
  delay(100);
  
  char reply[100];
  int i = 0;
  while (mySerial.available()) {
    reply[i] = mySerial.read();
    i += 1;
  }
  //biar string end
  reply[i] = '\0';
  Serial.print(reply); //tulis jawaban dari BLE
  Serial.println("Sukses");
}

void loop() {

}


jika dilihat monitor terminal serial  akan muncul jawaban sebagai berikut 


Dan hello world saya sukses dengan berhasil memancarkan sinyal BLE dengan nama www.aisi555.com. Bisa dicoba juga menambahkan beberapa AT command lainnya seperti AT+VERSION  dan  AT+ADDR . Selamat mencoba.
Share:

Kamis, 16 Januari 2020

Mudahnya mengkoding pengiriman SMS melalui Mblock

Pada tahun 2013 silam saya telah menuliskan cara berkirim SMS melalui modem dan microcontroller AVR ( dapat dibaca disini ) dan begitu ringkasnya perintah AT command yg dikirimkan. Untuk merubah coding nya ke format Mblock mungkin bukan menjadi masalah besar bagi saya, cukup mengikuti alur langkah pengiriman serial. Tapi kali ini saya akan memposisikan ke kondisi dimana saya anggap yang melakukan koding adalah anak-anak. Jadi sebelumnya kita akan berkenalan dengan AT COMMAND dari modem yg kita gunakan yaitu SIM800L



Ketika barang datang mungkin kita butuh melakukan penyolderan kaki-kaki header dan antena ke board, tapi jika kamu membeli yg sudah tersolder mungkin akan lebih gampang. Jadi pertimbangan jika perkenalan koding pengiriman sms diberikan ke anak-anak maka sebaiknya dilakukan penyolderan sebelumnya dibantu oleh orang dewasa. Dengan alat tambahan USB to TTL Serial maka kita dapat melakukan perintah dasar AT command seperti pada umumnya yg telah saya bahas tahun 2013. Perintah yg umum perlu ditest melalui terminal serial / putty adalah :


ATE1 <enter>   :  untuk menampilkan penekanan keyboard
AT+IPR? <enter>   : Untuk mengetahui baudrate serial, umumnya saat datang baudrate default 115200 (pas dengan baud rate serial pada Mblock)
AT+IPR=9600 <enter>  : Jika ingin merubah baudrate ke 9600 bps , gunakan default saja karena sesuai dengan baudrate serial pada Mblock
AT&W <enter>  : Menyimpan setting ke eeprom SIM800
AT+CMGF=1  <enter>  : Mengubah SMS menjadi mode teks
AT+CMGS="081xxxxxx" <enter> : Mengirim sms ke nomer yg dituju
AT+CMGR=1  <enter>  :  membaca sms pada memori no 1

Lebih khususnya ketika kita mengirimkan AT COMMAND untuk perintah kirim SMS seperti berikut :

AT+CMGS="081xxxxxx" <enter> 

maka pada terminal akan muncul caret

> masukkan teks yang akan dikirim

lalu setelah teks di tuliskan maka harus dilakukan pengiriman tombol CTRL+Z  atau ASCII (0x1A)

Bagaimana dengan pengiriman SMS menggunakan MBLOCK ? Kita akan bahas satu persatu dengan menggabungkan project lanjutan dari pembacaan DHT11 ke LCD yang bisa dibaca terlebih dahulu disini . Kita akan mengirimkan SMS yg berisikan pesan berupa pembacaan suhu dan kelembaban.




Dari gambar diatas merupakan blocks inisialisasi setup dari perangkat yaitu berupa sensor DHT11 , dua buah variabel suhu dan humi, inisialisasi port LCD serta perintah inisialisasi modem yaitu :

AT+CMGF = 1    serta   ASCII 13  


Kita tahu AT+CMGF=1 merupakan perintah untuk merubah menjadi modem menjadi SMS format teks (bisa juga langsung disimpan saja seting nya dan modem menjadi selalu bermode SMS teks), lalu ASCII 13 itu apa? itu artinya CR (cariage return) alias enter, dimana 13 decimal dalam tabel ascii berarti CR (enter) , lalu kalau CTRL+z (0x1A) ? Kita gunakan kalkulator saja dan kita dapatkan angka desimalnya 26 dan cocok pada tabel ascii nya.



Blok diatas telah kita bahas pada pembahasan DHT11 vs LCD cuma ada perbaikan dimana nilai pembacaan data kita simpan ke variabel suhu dan humi sehingga dapat digunakan lagi (alias pembacaan sensor sekali saja dalam satu periode loop).


Kelanjutannya adalah blocks untuk pengiriman SMS dengan perintah yg dikirim melalui serial ke modem SIM800 yaitu : AT+CMGS ="081xxxxxx" , dan kemudian diikuti dengan penyusunan kalimat SMS berupa " saat ini suhu = (suhu dht11) celsius , kelembaban = (humi dht11) %rH. Diakhiri dengan pengiriman desimal 26 yang dalam tabel ASCII berarti CTRL+Z . Pesan SMS akan dikirimkan setiap 30 detik (LOOP FOREVER) dan hasilnya seperti dalam gambar dan video dibawah. 







Bagaimana ? Mudah bukan ?
Share:

Berkreasi Lebih Jauh Dengan Mblock Extension - DHT11 dan LCD matrix



Mungkin jika anda mencari di mesin pencari google dengan kata kunci "DHT11 LCD ARDUINO" maka ratusan website dengan bahasan yg sama akan muncul. Saking mudahnya membuat iri penulis ketika mesin pencari yahoo 20 tahun lalu hanya menunjuk ke website yang itu lagi dan lagi. Anak jaman sekarang mungkin jarang melakukan aktivitas mencari buku referensi di perpustakaan yg memakan waktu tidak sebentar. Tapi itulah kemajuan jaman kita harus flexibel dalam pemanfaatan semua teknologi yang telah disediakan. Termasuk dalam hal pemrograman arduino secara drag and drop yang kita bahas kali ini.



Mblock yang dasar-dasarnya telah kita bahas ditulisan sebelumnya http://www.aisi555.com/2020/01/berkenalan-dengan-makeblock-vs-arduino.html juga mengijinkan penambahan extension yg dikreasikan oleh developer luar atau kita sendiri juga bisa menambahkan. Salah satunya yg tersedia dan tinggal download adalah extension library untuk sensor DHT11 dan LCD matrix 16x2 . Jadi sangat mudah sekali untuk melakukan pembacaan DHT11 yg kemudian dihubungkan ke Arduino Uno dan output nya dituliskan ke serial port.



Cukup sederhana hanya 6 baris blocks yang dibutuhkan dan mungkin anak-anak yg belajar akan menjadi bosan karena saking simplenya. Yang seharusnya dikembangkan agar menarik perhatian anak adalah pemanfaatan pembacaan dari sensor ke penggunaan yang lebih aplikatif semisal untuk pengaturan kenyamanan didalam mobil dan lain sebagainya. Menyambung dengan penggunaan DHT11 di kontrol suhu ruang mobil sepertinya akan menjadi lebih menarik jika ada tampilan di LCD matrix. Kalau googling maka akan mendapatkan sebarek rangkaian seperti ini salah satunya.


Rangkaian seperti diatas merupakan rangkaian standar yg bisa disesuaikan port UNO yang ingin digunakan. Selanjutnya adalah kreasi pada scratch Mblock yang sangat mudah seperti pada penjelasan dibawah ini.




Untuk setting awal seperti biasanya pada library LCD bawaan arduino urutan pin nya adalah RS-EN-D4-D5-D6-D7 , sedangkan pin R/W tidak digunakan dan cukup di hubungkan ke ground. Jangan lupa memutar potensio untuk mendapatkan kontras karakter pada LCD.  Langsung upload dan ...voilla...muncul pembacaan DHT11 pada LCD...



Kreativitas tidak terbatas pada tampilan saja dan silahkan mencoba dengan buzzer-relay-switch dan lain sebagainya. SELAMAT MENCOBA !.
Share:

Kontak Penulis



12179018.png (60×60)
+628155737755

HP: 081331339072
Mail : ahocool@gmail.com

Site View

Categories

555 (6) 7 segmen (3) adc (3) amplifier (1) analog (9) android (11) arduino (6) attiny (1) attiny2313 (16) blog (1) bluetooth (1) cmos (2) crypto (2) dasar (35) display (3) gcc (1) iklan (1) infrared (2) Input Output (3) iot (7) jam (6) jualan (12) kereta api (1) keyboard (1) keypad (3) kios pulsa (2) kit (6) komponen (12) komputer (3) komunikasi (1) kontrol (2) lain-lain (8) lcd (2) led (9) led matrix (6) line tracer (1) lm35 (1) memory (1) metal detector (4) microcontroller (50) mikrokontroller (2) mikrotik (5) ninmedia (1) paket belajar (19) palang pintu otomatis (1) parabola (28) pcb (2) project (33) proyek (1) radio (3) raspberry pi (2) remote (1) revisi (1) rfid (1) robot (1) rpm (2) rs232 (1) script break down (3) sdcard (3) sensor (1) sharing (2) signage (1) sms (6) software (18) tachometer (2) telepon (7) televisi (53) television (1) transistor (1) troubleshoot (3) tulisan (50) tutorial (75) tvri (1) vu meter (1) vumeter (1) wav player (3) wayang (1) wifi (1)

Diskusi


kaskus
Forum Hobby Elektronika