Semua Tentang Belajar Teknologi Digital Dalam Kehidupan Sehari - Hari

  • 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

  • Ayo Migrasi TV Digital

    Kami bantu anda untuk memahami lebih jelas mengenai migrasi tv digital, apa sebabnya dan bagaimana efek terhadap kehidupan. Jasa teknisi juga tersedia dan siap membantu instalasi - setting perangkat - pengaturan antena dan distribusi televisi digital ke kamar kos / hotel

  • 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

  • Node Red - Kontrol Industri 4.0

    Teknologi kontrol sudah melampaui ekspektasi semua orang dan dengan kemajuan dunia elektronika, kini semakin leluasa berkreasi melalui Node Red

Tampilkan postingan dengan label iot. Tampilkan semua postingan
Tampilkan postingan dengan label iot. Tampilkan semua postingan

Jumat, 20 Agustus 2021

Wemos ESP8266 - Part 4 - PubSub MQTT : Hello World !

Untuk memulai topik kali ini, sebaiknya kita pahami istilah Pub/Sub yg merupakan istilah kirim terima pesan / data dimana dimungkinkan berkomunikasi secara asinkronous, dengan latensi pada orde 100 milidetik.




Pub/Sub pada skala lebih besar di environment cloud semacam youtube digunakan untuk analitik streaming dan jalur integrasi data untuk menyerap dan mendistribusikan data. Ini sama efektifnya dengan middleware berorientasi pesan untuk integrasi layanan atau sebagai jalur antrian untuk memparalelkan tugas.

Pub/Sub memungkinkan membuat sistem "event" atau kejadian antara "Produsen"  dan "Konsumen", yang disebut Publisher dan Subscriber. Publisher berkomunikasi dengan Subscriber secara asinkron dengan mem-"broadcast" pesan dari suatu kejadian /event, bukan dengan pesan remote antar satu persatu bagian atau synchronous remote procedure calls (RPCs).




Publisher mengirim pesan kejadian/event ke layanan Pub/Sub, tanpa memperhatikan bagaimana atau kapan event ini akan diproses. Pub/Sub kemudian mengirimkan event ke semua Subscriber yang perlu bereaksi terhadapnya. Dibandingkan dengan sistem yang berkomunikasi melalui RPC, di mana penerbit harus menunggu pelanggan menerima data, integrasi asinkron semacam ini meningkatkan fleksibilitas dan ketahanan sistem secara keseluruhan.

Dalam  Pengiriman pesan diperlukan TOPIK sebagai tujuan dimana publisher mengirim pesan, secara asinkron topik ini juga di "subscribe / langganan" oleh pengguna datanya. Mirip seperti chatting melalui IRC atau group email millist jaman dulu dan memang benar, salah satu ide PUB/SUB memang dari aktivitas chatting melalui protokol XMPP. Ini berarti diperlukan suatu "Broker" sebagai pengatur jalannya pesan dan relay storage sementara yg berada diposisi layaknya Cloud. Salah satu protokol pesan PUB/SUB paling ramai digunakan saat ini adalah MQTT.




Protokol MQTT adalah standar de-facto untuk pesan IoT. Distandarisasi oleh OASIS dan ISO, protokol publish/subscribe MQTT menyediakan cara yang terukur dan andal untuk menghubungkan perangkat melalui Internet. Saat ini, MQTT digunakan oleh banyak perusahaan untuk menghubungkan jutaan perangkat ke Internet.

Klien MQTT memublikasikan pesan ke broker MQTT dan klien MQTT lainnya berlangganan pesan yang ingin mereka terima. Implementasi klien MQTT biasanya memerlukan footprint minimal sehingga sangat cocok untuk diterapkan pada perangkat kecil yang dibatasi dan sangat efisien dalam kebutuhan bandwidth mereka.

Broker MQTT menerima pesan yang dipublikasikan dan mengirimkan pesan ke klien MQTT yang berlangganan. Pesan MQTT berisi topik pesan yang menjadi langganan klien MQTT dan pialang MQTT menggunakan daftar langganan ini untuk menentukan klien MQTT untuk menerima pesan.





Kali ini kita gunakan broker HiveMQ yg menawarkan broker MQTT komersial dan open source. Karena kemudahannya maka menjadi rujukan umum bagi merkea yg belajar perpesanan IOT. Kalui ini kita akan mencoba PUB SUB pesan melalui broker ini menggunakan applikasi di PC yaitu : MQTT Explorer ( https://mqtt-explorer.com/ ) dan aplikasi di HP android : IOTMQTTPanel.



Kita akan terhubung dengan broker gratis dari HiveMq dengan alamat broker :


  • Adress : broker.hivemq.com
  • port : 1883

 

Kosongkan semua credensial username dan password bahkan certificate pun tidak diperlukan. Kali ini kita akan PUB ke topik : /e38/hello dan SUB ke topik :/e38/halo , untuk itu kita SUB dulu pada MQTTExplorer pada menu advance.




Pada sisi Smartphone Android / Iphone bisa gunakan MQTT browser lainnya, namun untuk kelanjutan project IOT maka diharapkan menginstall IOTMQTTPanel yg lumayan lengkap fasilitasnya. Setting koneksinya seperti berikut :



Lalu kita akan menambahkan 2 text panel, satunya LOG untuk menerima SUB pesan dari broker dan Text Input untuk menerima inputan text dan selanjutnya dikirim secara PUB ke broker.






Hasil dari chatting antara PC dan HP melalui broker HiveMQ dengan protokol MQTT sebagai berikut :






Dengan memahami proses diatas, maka diharapkan ada sedikit gamaran mengenai konsep PUB SUB melalui protokol MQTT, dan selanjutnya bisa kirim terima data sensor ke smartphone


MQTT menerapkan 3 tingkat kualitas layanan untuk kesepakatan antara pengirim dan penerima: 1) Paling banyak satu kali (0), 2) Setidaknya satu kali (1), dan 3) Tepat sekali (2). Level QoS ini memungkinkan aplikasi IoT yang lebih andal karena infrastruktur perpesanan yang mendasarinya dan beradaptasi dengan kondisi jaringan yang (mungkin) tidak dapat diandalkan.


MQTT memungkinkan sesi persisten antara klien dan broker. Ini memungkinkan sesi tetap ada meskipun jaringan terputus. Setelah jaringan terhubung kembali, informasi untuk menghubungkan kembali klien ke broker masih ada. Ini adalah salah satu fitur utama yang membuat protokol MQTT lebih efisien daripada HTTP untuk digunakan melalui jaringan seluler yang (mungkin) tidak dapat diandalkan.


Klien MQTT yang Subscribe topik baru tidak memiliki wawasan tentang kapan harus mengharapkan pesan pertama yang akan mereka terima. Namun, broker MQTT dapat menyimpan pesan yang disimpan yang dapat segera dikirim setelah berlangganan MQTT baru. Dalam hal ini, klien MQTT akan menerima setidaknya satu pesan setelah  Subscribe topik.


Klien MQTT dapat menentukan pesan kepada broker MQTT, yang disebut wasiat terakhir, yang akan dikirim jika klien MQTT terputus secara tidak wajar. Hal ini memungkinkan untuk pemberitahuan seluruh sistem yang lebih anggun bahwa klien telah terputus.

Share:

Kamis, 19 Agustus 2021

Wemos ESP8266 - Part 3 - Hello Internet : Kontrol Perangkat Dari Luar Rumah

 



Setelah anda berhasil mengenal fungsi dasar dari Wemos D1 R2 dan berhasil mengirim data pengukuran suhu DHT 11 melalui protokol TCP ke smartphone, kini saatnya membawa data suhu kelembaban dan kontrol I/O ke luar rumah melalui jalur Internet. Jika sebelumnya data hanya berupa teksmelalui TCP, maka ini akan terlihat menjadi kurang menarik. Kita akan manfaatkan fasilitas Web Server yg dimiliki oleh ESP8266. Wihh kok canggih ? alat sekecil itu bisa menjadi web server ?

Library dasar yg digunakan adalah ESP8266WiFi.h dimana ada class WifiServer yg bisa dimasukkan kedalamnya teks berformat HTML  dan juga terdapat fungsi dasar response HTTP  baik GET maupun POST. 

Masih ingat kan, project sebelumnya untuk menghidupkan LED pada board wemos ? Kali ini kita buat versi lain dalam bentuk website yg lebih menarik dan mengandung CSS, sehingga UI tombolnya tampil lebih keren, script nya seperti berikut :


// Load Wi-Fi library
#include <ESP8266WiFi.h>

// Ganti dengan nama wifi yg digunakan
const char* ssid     = "nama wifi";
const char* password = "password";

// Set web server port :80
WiFiServer server(80);

// Variable menyimpan HTTP request
String header;

// Variabel menyimpan status LED SCK(14) dan Led ESP (2)
String LedSCKState = "off";
String LedESPState = "off";

// Pilih GPIO pin untuk kedua LED
const int LedSCK = 14; //LED SCK
const int LedESP = 2;  //LED ESP

// variabel untuk delay timer asynchronous tanpa mengganggu fungsi utama
unsigned long currentTime = millis();
// Previous time
unsigned long previousTime = 0; 
// Define timeout time in milliseconds (example: 2000ms = 2s)
const long timeoutTime = 2000;

void setup() {
  Serial.begin(9600);
  // Inisialisasi PIN
  pinMode(LedSCK, OUTPUT);
  pinMode(LedESP, OUTPUT);
  // Buat LED mati
  digitalWrite(LedSCK, LOW);
  digitalWrite(LedESP, HIGH); //logika terbalik aktif LOW

  // konek ke wifi
  Serial.print("Terhubung ke jaringan ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  // Print local IP address lalu mulai web server
  Serial.println("");
  Serial.println("WiFi terhubung ...");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
  server.begin();
}

void loop(){
  WiFiClient client = server.available();   // Listen for incoming clients

  if (client) {                             // If a new client connects,
    Serial.println("New Client.");          // print a message out in the serial port
    String currentLine = "";                // make a String to hold incoming data from the client
    currentTime = millis();
    previousTime = currentTime;
    while (client.connected() && currentTime - previousTime <= timeoutTime) { // loop while the client's connected
      currentTime = millis();         
      if (client.available()) {             // if there's bytes to read from the client,
        char c = client.read();             // read a byte, then
        Serial.write(c);                    // print it out the serial monitor
        header += c;
        if (c == '\n') {                    // if the byte is a newline character
          // if the current line is blank, you got two newline characters in a row.
          // that's the end of the client HTTP request, so send a response:
          if (currentLine.length() == 0) {
            // HTTP headers always start with a response code (e.g. HTTP/1.1 200 OK)
            // and a content-type so the client knows what's coming, then a blank line:
            client.println("HTTP/1.1 200 OK");
            client.println("Content-type:text/html");
            client.println("Connection: close");
            client.println();
            
            // Nyalain LED on and off sesuai header GET 
            if (header.indexOf("GET /SCK/on") >= 0) {
              Serial.println("Led SCK on");
              LedSCKState = "on";
              digitalWrite(LedSCK, HIGH);
            } else if (header.indexOf("GET /SCK/off") >= 0) {
              Serial.println("Led SCK off");
              LedSCKState = "off";
              digitalWrite(LedSCK, LOW);
            } else if (header.indexOf("GET /ESP/on") >= 0) {
              Serial.println("Led ESP on");
              LedESPState = "on";
              digitalWrite(LedESP, LOW);
            } else if (header.indexOf("GET /ESP/off") >= 0) {
              Serial.println("Led ESP off");
              LedESPState = "off";
              digitalWrite(LedESP, HIGH);
            }
            
            // Display the HTML web page & CSS
            client.println("<!DOCTYPE html><html>");
            client.println("<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">");
            client.println("<link rel=\"icon\" href=\"data:,\">");
            // CSS to style the on/off buttons 
            // Feel free to change the background-color and font-size attributes to fit your preferences
            client.println("<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}");
            client.println(".button { background-color: #195B6A; border: none; color: white; padding: 16px 40px;");
            client.println("text-decoration: none; font-size: 30px; margin: 2px; cursor: pointer;}");
            client.println(".button2 {background-color: #77878A;}</style></head>");
            
            // Web Page Header
            client.println("<body><h1>ESP8266 Web Server</h1>");
            
            // Display current state, and ON/OFF buttons for LED SCK
            client.println("<p>Status LED SCK " + LedSCKState + "</p>");
            // If the output5State is off, it displays the ON button       
            if (LedSCKState=="off") {
              client.println("<p><a href=\"/SCK/on\"><button class=\"button\">ON</button></a></p>");
            } else {
              client.println("<p><a href=\"/SCK/off\"><button class=\"button button2\">OFF</button></a></p>");
            } 
               
            // Display current state, and ON/OFF buttons for LED ESP 
            client.println("<p>Status LED ESP " + LedESPState + "</p>");
            // If the output4State is off, it displays the ON button       
            if (LedESPState=="off") {
              client.println("<p><a href=\"/ESP/on\"><button class=\"button\">ON</button></a></p>");
            } else {
              client.println("<p><a href=\"/ESP/off\"><button class=\"button button2\">OFF</button></a></p>");
            }
            client.println("</body></html>");
            
            // The HTTP response ends with another blank line
            client.println();
            // Break out of the while loop
            break;
          } else { // if you got a newline, then clear currentLine
            currentLine = "";
          }
        } else if (c != '\r') {  // if you got anything else but a carriage return character,
          currentLine += c;      // add it to the end of the currentLine
        }
      }
    }
    // Clear the header variable
    header = "";
    // Close the connection
    client.stop();
    Serial.println("Client disconnected.");
    Serial.println("");
  }
}


Dan lanjutkan mengcompile dan download menuju wemos, perhatikan IP address yg muncul pada serial monitor :



Lanjutkan masuk ke alamat IP tadi pada browser dan akan muncul layar berisikan status LED dan tombol ON - OFF :



Perhatikan ketika salah satu tombol ditekan maka akan ada perintah GET menuju ke header dari websever, mengikuti script a href sepert berikut :


client.println("<p><a href=\"/ESP/on\"><button class=\"button\">ON</button></a></p>");


Artinya saat tombol ditekan maka a href akan mengarahkan browser masuk ke http://ipnya/ESP/on , lalu dibaca headernya dan di baca oleh IF untuk menentukan  LED mana yang nyala dan yang mati.


 if (header.indexOf("GET /SCK/on") >= 0) {

              Serial.println("Led SCK on");

              LedSCKState = "on";

              digitalWrite(LedSCK, HIGH);

            } else if (header.indexOf("GET /SCK/off") >= 0) {

              Serial.println("Led SCK off");

              LedSCKState = "off";

              digitalWrite(LedSCK, LOW);

            } else if (header.indexOf("GET /ESP/on") >= 0) {

              Serial.println("Led ESP on");

              LedESPState = "on";

              digitalWrite(LedESP, LOW);

            } else if (header.indexOf("GET /ESP/off") >= 0) {

              Serial.println("Led ESP off");

              LedESPState = "off";

              digitalWrite(LedESP, HIGH);

            }



            


Memang agak sedikit primitive, ada juga cara lain yg asyncronous tapi memerlukan pemahaman webserver lebih lanjut seperti tulisan saya disini.

 

Lalu bagaimana jika ingin menambahkan pembacaan sensor DHT 11 dan tampil pada laman web ? Cukup ambahkan library DHT11 seperti penjelasan di tulisan  sebelumnya dan  buat function berikut, letakkan diatas setup :


String SendTempHumid(){
  
 String datae ="";
  
  float h = dht.readHumidity();
  float t = dht.readTemperature();


   if (isnan(h) || isnan(t) ) {
    Serial.println(F("Failed to read from DHT sensor!"));
    return "error";
  }

datae+= String(t).substring(0, 4); // tampilkan hanya 3 digit 
datae+= "&deg;C / " ;
datae+= String(h).substring(0, 2); //tapilkan hanya 2 digit
datae+= "%";
Serial.println(datae);
return datae;

}

Function diatas akan menghasilkan string berupa pembacaan suhu dan kelembaban, selanjutnya akan ditampilkan pada layar web. Karena pembacaannya tidak periodik, maka butuh tombol refresh seperti script berikut :


 client.println("<br>");
 client.println("<p>Kondisi : " + SendTempHumid() + "</p>");
 client.println("<p><a href=\"/refresh/\"><button class=\"button\">Refresh</button></a></p>");

Tambahkan script diatas tadi dibagian sebelum client.println("</body></html>"); dan selanjutnya bila ingin mengupdate pembacaan sensor bisa tekan tombol refresh.


Pekerjaan belum selesai sampai disini, naggung ! Masih cuman bisa ngontrol wemos dari lokasi yg dekat dengan wifi routernya, lalu bagaimana menghubungkannya ke Internet ? 

Kita manfaatkan fasilitas DDNS, yaitu Dynamic DNS yg memungkinkan membuat nama domain gratis dan diarahkan ke IP publik yg bisa berubah-ubah. Ada syarat utama yaitu kamu harus menggunakan router wifi dari jaringan kabel/optik dengan ip publik , dan tidak bisa untuk koneksi melalui GSM /4G yang IP nya umumnya lokal / sharing IP. Untuk itu pastikan IP yg didapatkan oleh Router wifi kamu adalah IP publik seperti pada gambar.



Urutannya seperti berikut :

  • Masuk ke konsole GPON atau wifi router (IP nya belakangnya mesti 1) , syukur-syukur masih admin:admin atau user passwordnya kamu ketahui, kalau tidak ya jangan lanjutkan praktek ini.
  • Cek WAN status dan bandingkan dengan IP yg muncul dari  myipadress.com
  • Daftar ke noip.com , tambahkan nama domain DDNS sesuai yg kamu inginkan seperti contoh diatas.
  • Lanjut tambahkan DDNS pada wifi router seperti gambar berikut ini.




  • Pada DDNS masukkan username dan password noip.com 
  • Lakukan port forwarding di 80 (wan dan lan) sehingga setiap yg masuk ke domain akan di routing forward menuju IP Wemo s8266. Jadi jangan sampai salah menambahkan IP wemos kamu.
  • Buka website seperti contoh dibawah ini : http://rumahnyo.ddns.net dan kini bisa mengontrol lampu dan mengetahui suhu dari luar rumah menggunakan jaringan GSM / Internet.










Cara ini adalah cara paling dasar untuk mempelajari IOT menggunakan wemos D1 R2, tujuannya agar mengerti prinsip dasarnya dan tidak bergantung pada platform siap pakai yg ada diluaran sana. Contohnya BLYNK yg sudah umum dipakai tugas IOT mahasiswa dengan library dan platform gratis, cukup menuliskan sebaris script pada sketch arduino dan kemudahan drag drop GUI pada smatphone.

Pada bagian selanjutnya kita akan kirim-kirim data menggunakan standar komunikasi IOT ke cloud yaitu MQTT - PUB SUB.





Share:

Wemos ESP8266 - Part 2 - Hello TCP / IP

 



Praktek kedua dari Wemos D1 R2 kali ini mulai membahas fungsi wifi dari ESP8266, yang merupakan modul wifi + GPIO (General Purpose Input Output) yang siap dipakai mengirimkan berbagai data ke sistem lain yg memerlukan menggunakan jalur TCP/IP atau kerennya internet. 

Sebelum kita lanjut pada prakteknya, kita perlu mengenal I/O pin yg dimiliki oleh wemos dan ada beberapa catatan yg sedikit berbeda dari modul arduino UNO yg berusaha dijiplak oleh Wemos D1.







Port atau pin pada wemos d1 r2 memiliki level logic 5 volt, ada 14 buah I/O yg sering dipakai dan 1 buah analog input untuk tegangan ADC (0-5 volt 10 bit). Penamaan pin nya ada 2 jenis dan umumnya dapat dilihat pada marking tulisan di sebelah portnya. Kalau dilihat dari atas maka Pin nya dinamakan D0 - D13 , sedangkan kalau di balik pada belakang board, nama markingnya ditulis sebagai GPIO X yang nilainya acak. Kadang ada library seperti DHT11 yg bisa menggunakan pin marking atas, namun sebaiknya agar mengikuti pola GPIO Arduino (marking bawah) seperti berikut :



  • D0 dan D1 = RX dan TX dari uart, jangan dipakai karena berhubungan dengan debug, kecuali memang terpaksa
  • D2 (GPIO 16) = Pin ini entah kenapa ter pull down (ada resistor didalamnya yg default GND) , jadi dihindari untuk komunikasi data semisal DHT 11
  • D3 - D10 ( GPIO lihat gambar) = Pin I/O yg aman digunakan
  • D11 - D13 = Terhubung dengan port SPI/programming, jadi kadang ada yg butuh dilepas saat download program dari sketch menuju wemos
  • D14 - D15 = jarang dipakai karena berhubungan dengan data Esp8266
  • A0 = Input analog untuk ADC


Pin I/O 14 terhubung LED pada tengah  board  wemos (marking led SCK)  dan Pin I/O  2 terhubung juga dengan LED pada  Modul ESP8266  sehingga kita dapat bermain-main seperti script dibawah atau menggunakannya untuk keperluan lain. Led pada Pin 14 aktif High sedangkan Led pada pin 2 aktif Low. 






#define LED1 14  //Led board wemos
#define LED2 2 //Led Esp 8266
void setup() {


 pinMode(LED1, OUTPUT);
 pinMode(LED2, OUTPUT);

}

void loop() {
  
 digitalWrite(LED1, LOW);
 digitalWrite(LED2, LOW);
 delay(1000);
 
 digitalWrite(LED1, HIGH);
 digitalWrite(LED2, HIGH);
 delay(1000);
  

}


Hasilnya seperti ini :


*) jika menggunakan LED diluar board, jangan lupa menambahkan resistor 220/330 ohm agar tidak jebol.


Okey kita cukupkan bermain LED yg menyilaukan mata ini, kita kembali ke inti dari tulisan yaitu kita akan melakukan komunikasi TCP ke perangkat lain yaitu Smrtphone. Untuk itu install aplikasi bernama TCP Terminal, atau aplikasi sejenis lainnya. Ini tidak terbatas pada aplikasi simulasi TCP terminal lainnya pada PC, tapi akan terlihat lebih keren pada smartphone.



Untuk koneksi wifinya bisa menggunakan 2 mode yaitu mode router di rumah  atau kata lain jika berlangganan indihome / firstmedia dan lain lain maka bisa memanfaatkan wifi dirumah. Atau jika kamu hanya menggunakan smartphone, maka gunakan fasilitas WIFI Hotspot / tethering  pada smartphone kamu.

Selanjutnya kita akan menjalankan TCP terminal dan memanfaatkannya sebagai TCP server seperti setting berikut :





Script dibawah ini saya buatkan dalam dua mode Router wifi di rumah atau Hotspot smartphone, buka tutup comment untuk menyesuaikan. Untuk kelancaran praktek, sebaiknya membaca dulu praktek DHT 11 di bagian sebelumnya  PART 1.



#include <ESP8266WiFi.h>  //library wifi
#include "DHT.h" //Library DHT 11

#define DHTPIN D7   // lib dht bisa menggunakan penamaan pin DX
#define DHTTYPE DHT11
  
DHT dht(DHTPIN, DHTTYPE);

const char* ssid = "nama wifi"; // Nama wifi yg dipakai
const char* password =  "password"; //  WiFi password

const char* host = "192.168.0.100"; // mode router, gunakan IP HP kamu
//String host="";  //mode Hotspot atau tethering smartphone
const uint16_t port = 4000; //port TCP

WiFiClient klien; 

void setup() {
  Serial.begin(9600);
  dht.begin();
 
  WiFi.begin(ssid, password);
 
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.println("Terhubung ke WiFi..");
  }
    Serial.println("Koneksi WiFi Berhasil");

  Serial.println("");
  Serial.println("IP address: ");
//  host = WiFi.gatewayIP().toString(); //buka comment jika mode hotspot
  Serial.print("Host IP : ");
  Serial.println(host);
  Serial.print("Local IP : ");
  Serial.println(WiFi.localIP());
  
}


void SendTempHumid(){
  
 String datae ="";
  
  float h = dht.readHumidity();
  float t = dht.readTemperature();


   if (isnan(h) || isnan(t) ) {
    Serial.println(F("Failed to read from DHT sensor!"));
    return;
  }



datae+= F("Humidity: ");
datae+= String(h);
datae+= F("%  Temperature: ");
datae+= String(t); 
datae+= F(" °C") ;

Serial.println(datae);

  Serial.print("Terhubung ke ");
  Serial.print(host);
  Serial.print(':');
  Serial.println(port);

  Serial.println("...kirim data ke server..\n");
  

   if (!klien.connect(host, port)) {
    Serial.println("connection failed");
    delay(5000);
    return;
  }

  // kirim data TCP ke server
  if (klien.connected()) {
    klien.println(datae);
  }


}


void loop() {
 
SendTempHumid();
delay(5000);

}


Tampilan di monitor sketch kamu seperti ini :





Dan jika koneksi sukses maka pada smartphone kamu akan terkirim data pengukuran dari sensor suhu dan kelembaban DHT 11.



Praktek selanjutnya disini.

Share:

Rabu, 18 Agustus 2021

Wemos Esp8622 - Part 1 - Hello World !

 

WeMos-D1R2 adalah kit mikrokontroller berkemampuan WiFi berbasis ESP8266-12 yang kompatibel dengan kit Arduino-UNO. Itu berarti papan circuitnya didesain sama dan berfungsi (layaknya) seperti UNO. Tampaknya beberapa shield, sensor, dan perangkat I/O yang dibuat untuk platform Arduino akan bekerja pada WeMos-D1R2 dengan keuntungan sudah tersedia modul WiFi bawaan.


Ada dua produk WeMos yg beredar di pasaran online dan rata-rata merupakan clone ( KW ) namun harganya terjangkau. Yang pertama adalah WeMos-D1 R2 seperti penjelasan diatas, jangan sampai beli versi jadulnya ya. Sedangkan versi mungilnya D1 mini yg menyediakan versi " siap launching " semisal anda mau menjual kontrol elektronik yg packingnya lebih sederhana. D1 R2 memiliki level tegangan I/O 3.3 - 5Volt, sedangkan D1 mini umumnya menggunakan level logic 3,3 volt. Namun anda tidak perlu dipusingkan dengan level logic karena modul siap pakai yg beredar umumnya mampu menghandel logic ini, kecuali menggunakan tambahan IC TTL jadul maka harus menggunakan logic 5 volt 


Saya akan berfokus pada D1 R2 karena sudah tersolder dan siap pakai. Jadi dalam praktek hello World kali ini perlu disiapkan perangkat tambahan :


DHT11 / DHT22





Kabel Jumper Male Female untuk koneksi ke komponen lainnya




Sebelum instalasi pada komputer maka butuh sesuatu untuk menghubungkan wemos ke komputer berupa kabel data micro usb, yg pasti anda temui di charger hp jaman now. Untuk power supply tegangan dari Wemos D1 R2 cukup menggunakan catuan PC dari kabel data micro USB itu juga, jadi tanpa butuh adaptor atau power supply lagi. 

Wemos D1 R2 memiliki chipset USB to serial jenis ch340, sehingga butuh mendapatkan driver yg sesuai, bisa diunduh untuk berbagai jenis OS komputer disini . Jika sukses maka akan muncul com portnya seperti gambar dibawah.







Sedangkan untuk software IDE yg digunakan adalah sketch milik Arduino yang berbasis java. Jadi kalau windows mungkin akan memakan memory namun untuk linux dapat dikatakan lebih cepat eksekusinya. Unduh saja di websitenya : https://www.arduino.cc/en/software






Karena kita akan menggunakan boards yg merupakan bukan boards asli arduino, maka langkah pertama setelah instalasi selesai adalah memberikan library/packages untuk board wemos. Pilih menu preferences pada gambar.




Lalu masukkan pada additional boards : 

http://arduino.esp8266.com/stable/package_esp8266com_index.json 






Jika OK maka pada menu boards manager maka akan dapat menambahkan boards microcontroller berbasis ESP8266 seperti wemos dan sejenis.






Tunggu sebentar untuk loading daftar boards dan ketika sudah loading semua, pilihlah yg paling bawah seperti pada gambar berikut :




Lanjutkan install boards berbasis esp8266, jika selesai lanjutkan dengan memilih board wemos D1 R2 pada menu boards.





Langkah selanjutnya hanya meilih PORT COM yang sesuai, dan kemudian buka sketch dan tambahkan script hello world seperti berikut :



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

}

void loop() {
  Serial.println("Hello World");
  delay(1000);

}

Script singkat diatas akan mengirimkan "hello world" ke serial com di PC kamu dengan baud rate 9600.






Serial monitor pada pojok kanan atas sketch arduino merupakan alat debugging paling powerful terutama saat melihat output pada suatu kejadian atau perubahan variabel.

Lalu bagaimana dengan sensor suhu kelembaban DHT 11? Untuk praktek ini kita perlu menginstall library  unified sensor "adafruit" dan library  DHT. Pilih tools => Manage libraries dan ikuti gambar dibawah.





Selanjutnya hubungkan DHT11 dengan header female, (+) (Out) (-) , sedangkan male nya colokkan ke wemos dengan pin (+) ke 5V, (-) ke GND dan kabel jumper (Out) masukkan ke pin D3 (cari label atau tulisan di atas board) . Script contohnya sebagai berikut :




#include "DHT.h"

#define DHTPIN D3     
#define DHTTYPE DHT11   // DHT 11

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600);
  Serial.println(F("DHT HELLO WORLD!"));
  
  dht.begin();
}

void loop() {
  
  delay(2000);

  //read kelembaban
  float h = dht.readHumidity();
  // Read temperatur celcius
  float t = dht.readTemperature();
 

  // Check error
  if (isnan(h) || isnan(t) ) {
    Serial.println(F("Gagal Terhubung Sensor DHT!"));
    return;
  }

  Serial.print(F("Humidity: "));
  Serial.print(h);
  Serial.print(F("%  Temperature: "));
  Serial.print(t);
  Serial.println(F("°C "));
}



Hasilnya sebagai berikut :






Dibagian selanjutnya kita akan mulai menghubungkan wemos ke WiFi dan berkomunikasi secara TCP ke perangkat lainnya.

Share:

ATtiny2313 vs DHT11 - Jangan pernah pakai library arduino, kembali ke dasar koding GCC !

 


Pembahasan kali ini sudah pernah saya tulis sebelumnya 8 tahun yg lalu, dimana DHT11 merupakan sensor sejuta umat yg sangat umum dipakai untuk belajar IOT. Sensor ini memiliki sistem komunikasi serial 1 bus wire, dimana semua datanya dikirim melalui 1 buah jalur data dengan pembeda 1 dan 0 nya berdasarkan lebar pulsa atau timer dari level logicnya. Jadi untuk pemahaman dasar pembacaan sensornya dapat dibaca di sini : https://www.aisi555.com/2013/05/dht-11-sensor-suhu-dan-kelembaban-murah.html

Jadi jika ingin mengirimkan pembacaan DHT11 menuju serial com di PC, maka scriptnya lumayan memusingkan untuk dilihat, terutama dibagian pembacaan pulsanya.


Namun jangan lupa baca dulu  pembahasan pengaturan fusebit nya disini : https://www.aisi555.com/2021/08/attiny2313-vs-arduino-library-bagaimana.html


#define F_CPU 8000000UL //frek clock internal
#include <avr/io.h>
#include <util/delay.h>
#include <avr/pgmspace.h> 
#include <string.h>
#include <stdlib.h>


//rumus penentuan baudrate

#define USART_BAUDRATE 9600  // baudrate 9600 bps
#define BAUD_PRESCALE (((F_CPU / (USART_BAUDRATE * 16UL))) - 1)

//deklarasi menu & tulisan .
//gunakan memori flash(PROGMEM) biar cukup


const char suhunya[] PROGMEM = " suhu : ";
const char huminya[] PROGMEM = "C - kelembaban : ";



void init_usart(void)

{

	UCSRB |= (1 << TXEN);   // kirim aja
	UCSRC |= (1 << UCSZ0) | (1 << UCSZ1);
	UBRRL = BAUD_PRESCALE;
	UBRRH = (BAUD_PRESCALE >> 8);
}


//function untuk mengirim char

void USART_Tx(unsigned char data)

{	

	while (!(UCSRA & (1<<UDRE)));{} 
	UDR = data; // Send data to the computer


}



//function untuk kirim kalimat dari flash Progmem


void kirim_text(const char *data)

{

	while (pgm_read_byte(data) != 0x00)
	USART_Tx(pgm_read_byte(data++));

}

void kirim(char *data) //kirim teks dari ram

{

	while (*data != 0x00)
	USART_Tx(*data++);

}


uint8_t hitung(void)
{

	uint8_t a,counter,hasil;

	counter=0;
	hasil=0;

	for (a=8;a>0;a--) // 8 kali tiap perhitungan
	{


		while(counter <100) // deteksi saat LOW ( tidak ada perhitungan)
		{
			_delay_us(1);
			counter++;
			if (bit_is_set(PIND, 3)) break; //tunggu sampai high dan keluar loop
		}

		counter=0;

		while(counter <100)
		{
			_delay_us(1);
			counter++; // counter mendeteksi lebar pulsa
			if (bit_is_clear(PIND, 3)) break; //jika low maka keluar dari loop
		}

		// perhitungan 8 bit decimal dengan geser-geser bit
		//jika lebih 25us =1 , kurang < 25 us = 0
		
		if(counter > 25) hasil += (1 << (a-1)) ;

		counter=0;

	}

	return hasil;


}

void baca_sensor()
{

	char dum;  // variabel sementara

	int suhu;
	int suhuu;
	int humi;
	int counter=0;

	DDRD|=(1<<PD3); //PD3 sebagai output
	_delay_ms(250);

	PORTD &=~(1<<PD3); // nolkan PD3
	_delay_ms(18); //tunggu 18 ms

	PORTD |=(1<<PD3); // naikkan PD3
	_delay_us(40); //tunggu 40us


	DDRD &=~(1<<PD3); //PD3 sebagai input

	//tunggu response dari DHT11

	while(counter <100)
	{
		_delay_us(1);
		counter++;
		if (bit_is_set(PIND, 3)) break;
	}

	counter=0;

	while(counter <100)
	{
		_delay_us(1);
		counter++;
		if (bit_is_clear(PIND, 3)) break;
	}


	//baca data setelah response, lihat script di pembahasan selanjutnya untuk routine hitung()

	//8 bit pertama ( puluhan kelembaban )
	humi=hitung();
	//8 bit kedua( satuan kelembaban ), tidak usah di baca karena nilai selalu 0 untuk DHT11
	hitung();
	//8 bit ketiga ( puluhan suhu )
	suhu=hitung();
	//8 bit keempat ( satuan suhu ), tidak usah di baca karena nilai selalu 0 untuk DHT11
	suhuu=hitung();
	
	kirim_text(suhunya);
	itoa(suhu,&dum,10);
	kirim(&dum);
	USART_Tx('.');
	itoa(suhuu,&dum,10);
	kirim(&dum);
	USART_Tx(0xF8);
	kirim_text(huminya);
	itoa(humi,&dum,10);
	kirim(&dum);
	USART_Tx('%');
	USART_Tx('\n');
	USART_Tx('\r');
	
	
	
	
}




int main(void)

{
	
	
  init_usart();

  while(1) //muter tiada henti
	{

	baca_sensor();
	_delay_ms(5000);

	}

}









Wah ..segitu panjangnya, padahal jika dilihat kembali cara pembacaan DHT11 pada arduino, cukup mengikuti library buatan adafruit yg banyak contohnya beredar di internet dan cukup hanya beberapa baris coding saja. 

Namun ini dapat menjadi masalah besar saat ATtiny2313 yang digunakan, lalu bagaimana memampatkan nya di attiny menggunakan sketch arduino ? Bayangkan pembahasan sebelunya dimana attiny full hanya dengan script yg mengerjakan komunikasi serial, jadi jika menggunakan library DHT dari adafruit yg biasa dipakai pada arduino, dijamin flash memori akan melebihi 100% . Ada lagi yg penting yaitu butuh penanganan clock yang jauh berbeda. Dan hasilnay script saya diatas tidak berjalan  seperti yg diinginkan. Jadi pengaturan clock untuk mencari pewaktu 1 microseconds sangatlah critical.



Berikut ini script Attiny vs DHT11  pada  sketch arduino  :


#define USART_BAUDRATE 9600  // baudrate 9600 bps
#define BAUD_PRESCALE (((F_CPU / (USART_BAUDRATE * 16UL))) - 1)

const char suhunya[] PROGMEM = " suhu : ";
const char huminya[] PROGMEM = " C - kelembaban : ";



int DHT11_Pin = 5; // DHT11 ke pin PD3

int Humidity = 0;
int Temp = 0;
int TempComma = 0;
bool DHTError = false; // Checksum Error

// a Delay routine. Call DelayTimer(time in uSec)

void DelayTimer(long int DelayValue){
long int DelayTime = micros();
do {

}while (micros()-DelayTime < DelayValue);
}
// Main DHT Void

void DHT11(){

long int DataTime = 0;

byte Result[45];
byte DataArray = 0;
byte DataCounter = 0;
byte DHTData[4];

bool BlockDHT=false;

// Trigger Sensor (described in the Datasheet)

pinMode(DHT11_Pin,OUTPUT);
digitalWrite(DHT11_Pin,HIGH);
DelayTimer(250000); //Wait 250millisec
digitalWrite(DHT11_Pin,LOW);
DelayTimer(30000); //Wait 30millisec
digitalWrite(DHT11_Pin,HIGH);
DelayTimer(50); //Wait 50microsec
pinMode(DHT11_Pin,INPUT);
// read the Bits and put them into a Result array (It will count 42 bits. The first two one are useless due my code)

do {
if (digitalRead(DHT11_Pin) == 0 && BlockDHT == false) {BlockDHT = true;Result[DataArray]=(micros()-DataTime);DataArray++;DataTime=micros();} //If DHT pin is low, go to next Dataset
if (digitalRead(DHT11_Pin) == 1) {BlockDHT = false;} // As long as DHT pin is Hight add time in Microseconds to Result

}while((micros()-DataTime) < 150); // if DTH Sensor high for more than 150 usec, leave loop

// Asign 1 or 0 to Result variable. If more than 80uS Data as “1”
// Starting at Data set 02. First two Datasets are ignored!

for (int i=2; i< DataArray; i++) {
if (Result[i] <= 90) Result[i]=0; else Result[i]=1;

}


for (int j=0; j< 5; j++){ // redo it for the 5 Bytes (40 Databits /8 = 5)
for (int i=0; i< 8; i++) {bitWrite(DHTData[j], 7-i, Result[i+2+(j*8)]);} // Create 5 Databytes from the 40 Databits (Ignoring the 2 first Databits)

}
// check checksum }

if (DHTData[4] == (DHTData[0]+DHTData[1]+DHTData[2]+DHTData[3])){Humidity = DHTData[0];Temp = DHTData[2];TempComma = DHTData[3];DHTError=false;} else DHTError=true; //If Checksum is worng, Temp=99 (Dataset 0-3 in addition = Dataset 4 = Checksum OK)

}



  void init_usart(void)

{

  UCSRB |= (1 << TXEN);   // kirim aja
  UCSRC |= (1 << UCSZ0) | (1 << UCSZ1);
  UBRRL = BAUD_PRESCALE;
  UBRRH = (BAUD_PRESCALE >> 8);

}

 void USART_Tx(unsigned char data)

{

 

  while (!(UCSRA & (1<<UDRE)));{} // wait till transmit Data register is empty

  UDR = data; // Send data to the computer



}



//function untuk kirim kalimat



void kirim_text(const char *data)

{

  while (pgm_read_byte(data) != 0x00)

  USART_Tx(pgm_read_byte(data++));

}

void kirim(char *data)

{

  while (*data != 0x00)
  USART_Tx(*data++);

}



void setup() {
  // put your setup code here, to run once:
init_usart();

}

void loop() {
char dum;  
DHT11();
if (DHTError == false)
{ kirim_text(suhunya);
  itoa(Temp,&dum,10);
  kirim(&dum);
  USART_Tx(',');
  itoa(TempComma,&dum,10);
  kirim(&dum);
  kirim_text(huminya);
  itoa(Humidity,&dum,10);
  kirim(&dum);
  USART_Tx('%');
  USART_Tx('\n');
  USART_Tx('\r');
  } 
  else kirim("Error");


DelayTimer(1000000); //wait 1 sec
}



Wew...jadi kembali ke dasar koding GCC yuk...wong sama aja ribetnya...
Share:

Kamis, 29 Juli 2021

Layanan IOT lewat Satelit (NBS IOT) - Murah dan Jangkauan Luas

Memang benar pendapat yg mengatakan bahwa sebagian besar layanan IoT satelit bertujuan untuk menawarkan platform kirim pesan dengan kecepatan data yang rendah, harga terjangkau, dan dengan jangkauan global. Cakupan global selalu menjadi keunggulan operator satelit. Keterjangkauan, baru-baru ini muncul dalam banyak percakapan bertema satelit, terutama dengan munculnya "cubesats".




Mengingat bahwa cubesat dapat diluncurkan dengan harga yang lebih murah daripada harga sebuah rumah sederhana di Sidoarjo Jaa timur, dan mengingat bahwa komponen RF yang sangat terintegrasi untuk UHF dan L-band dapat digunakan untuk membuat terminal dengan harga serendah puluhan Dolar amerika saja. Tampaknya layanan IoT global yang terjangkau dapat dijangkau untuk berbagai aplikasi yang mencakup pertanian, transportasi, dan logistik.


Mengonfigurasi layanan IoT satelit


Pada prinsipnya, orbit bumi rendah (LEO) menawarkan anggaran tautan yang lebih baik daripada orbit geostasioner (GEO), perbedaannya ada dalam kehilangan jalur ruang bebas di antara mereka bernilai sekitar 25 dB. Namun, perlu juga dicatat bahwa untuk cubesat khususnya, sebagian besar keuntungan itu hilang karena gain / power radio  dari antenanya yg berukuran kecil.

Mungkin perbedaan yang lebih signifikan adalah bahwa jangkauan dari satelit LEO akan terputus-putus kecuali jika konstelasi satelit yang padat disebarkan. Tergantung pada ketinggian dan pola antena, masing-masing satelit LEO mungkin, tergantung pada lokasi pengamat, hanya terlihat dalam hitungan menit tiga atau empat kali setiap hari. Sebaliknya satelit GEO secara nominal selalu tersedia.



Dalam hal frekuensi operasi, pita yang lebih rendah menawarkan Link Budget yang lebih baik. Untuk orbit tertentu, link 400 MHz akan menikmati keuntungan ~12 dB dibandingkan link L-band yang pada gilirannya, akan menikmati keuntungan ~19 dB dibandingkan link Ku-band. Namun, layanan Ku- dan Ka-band memiliki satu keunggulan berbeda: ketersediaan spektrum. Sementara operator pita rendah akan menyebarkan layanan dalam satuan MHz paling baik, operator pita tinggi memiliki alokasi 100-an MHz.

Namun, dalam konteks IoT ini, semua itu detail. Hukum Shannon memberi tahu kami bahwa jika link budget Anda dibatasi atau bandwidth Anda terbatas, Anda hanya perlu mengirimkan data Anda lebih lambat. Anda masih dapat menawarkan layanan IoT dengan kecepatan data yang rendah dan non-real time.




Fitur yang benar-benar membedakan adalah bahwa komponen RF secara signifikan lebih murah untuk sistem frekuensi yang lebih rendah dan desain radio UHF dan L-band relatif mudah. Semua ini digabungkan untuk memberikan poin harga perangkat yang jauh lebih rendah untuk terminal pita frekuensi rendah daripada mereka yg merancang frekuensi di Ku- atau Ka-band. Selain itu, antena pita frekuensi tinggi umumnya memerlukan penyelarasan yang tepat yang berarti bahwa biaya pemasangan yang lebih tinggi ditambahkan ke biaya unit yang sudah tinggi.

Secara keseluruhan, karakteristik ini membawa kita ke perangkat pita rendah dengan antena omnidirectional yang murah untuk diproduksi dan murah untuk digunakan baik untuk konstelasi LEO dan GEO. Sebaliknya, perangkat pita tinggi akan memerlukan pemasangan yang hati-hati dan penunjuk antena, bahkan untuk penerapan GEO, dan akan membutuhkan antena pelacakan yang sangat canggih (kode untuk 'mahal') untuk layanan LEO.




Apa hasilnya?


Oleh karena itu, pada pita tinggi, sangat masuk akal untuk menerapkan sistem LPWAN terestrial, seperti LoRaWAN, dengan terminal VSAT konvensional untuk melakukan backhaul data dari gateway LPWAN ke server jaringan LPWAN. Biaya terminal satelit akan diamortisasi atas semua node LPWAN di area cakupan gateway. Dengan kepadatan node yang cukup, biaya terminal VSAT sebesar USD1.000 akan segera diabaikan.

Di pita rendah, biaya terminal yang rendah berarti bahwa sambungan langsung ke satelit masuk akal. Faktanya, mengingat kapasitas sistem pita rendah yang terbatas, konfigurasi 'agregasi dan backhaul' bahkan mungkin tidak layak tanpa tingkat pemrosesan tepi dan kompresi data.




Pendekatan cubesat dalam menerapkan teknologi murah dan siap pakai menghasilkan misi berbiaya rendah dan waktu pengiriman yang singkat. Namun, sementara adopsi bentuk gelombang dan protokol yang siap pakai dapat menekan biaya, hal itu juga berpotensi membatasi kapasitas sistem yang digunakan secara mendasar. Ambil mekanisme akses LPWAN sederhana berbasis aloha. Ini berfungsi dengan baik untuk gateway terestrial dengan jangkauan jangkauan 10 atau 20 km. Tetapi ketika dikerahkan, tidak berubah, pada satelit, kapasitas akses gerbang terestrial tunggal itu dibagi di seluruh area yang mencakup hampir seluruh Amerika Serikat dan Kanada atau seluruh Eropa.

Investasi dalam protokol khusus satelit yang lebih efisien dapat melipatgandakan atau bahkan melipatgandakan kapasitas sistem. Terlebih lagi, kapasitas ekstra itu akan menghasilkan pendapatan yang lebih tinggi pada setiap cubesat di konstelasi LEO dan — mengingat masa pakainya yang terbatas — pada setiap penggantinya.


Bagaimana operator jaringan satelit dapat menemukan kembali diri mereka sendiri untuk IoT


Jawabannya : Memetakan opsi ke pasar

Jadi bagaimana peta opsi IoT satelit ini ke pasar yang disebutkan sebelumnya?


Kepadatan perangkat tinggi, waktu kritis — menuntut solusi GEO

Untuk aplikasi pertanian dengan kepadatan tinggi — seperti kebun anggur dengan 10.000 sensor yang dipasang di lahan seluas 50 km2 — kombinasi agregator LPWAN dan backhaul GEO VSAT masuk akal. Kerugian biaya dari instalasi VSAT dapat diamortisasi selama ribuan node akhir, ke titik di mana hal itu dapat diabaikan. Sebaliknya, sistem direct-to-cubesat mungkin kesulitan untuk memenuhi tuntutan kapasitas aplikasi semacam itu.


Kepadatan perangkat rendah, non-waktu kritis — paling baik dilayani oleh LEO

Untuk penerapan sensor densitas rendah — seperti pengukuran CH4 di sepanjang garis pantai terpencil — konfigurasi satelit langsung ke LEO kemungkinan akan memberikan kinerja yang memadai dengan biaya terendah dan daya terendah, menawarkan masa pakai baterai yang lama dan layanan praktis tak terbatas dengan tambahan dari pasokan solar berbiaya rendah.


Mobilitas

Mengingat bahwa transportasi dan logistik adalah salah satu kasus penggunaan yang dibicarakan untuk IoT yang mendukung satelit, kita harus menyebutkan mobilitas.

Untuk menghindari biaya dan kerumitan penunjukan antena, aplikasi mobilitas paling baik dilayani oleh layanan frekuensi rendah, baik LEO atau GEO, yang dapat menggunakan antena omnidirectional berbiaya rendah. Pilihan LEO atau GEO akan dipandu oleh permintaan aplikasi secara real-time. Apakah Anda perlu melacak kontainer pengiriman di mana satu atau dua laporan per hari akan memadai? LEO baik-baik saja. Apakah Anda truk geofencing yang membawa muatan bernilai tinggi? Anda memerlukan kemampuan untuk mengirimkan pesan yang mendekati waktu nyata, Anda memerlukan konektivitas yang konstan, tetapi Anda tidak menginginkan biaya atau konsumsi daya dari sistem antena pelacak. Dalam hal ini, L-band GEO adalah kandidat alami.

Layanan Ku- atau Ka-band untuk aplikasi mobilitas memerlukan antena pelacak, tetapi meskipun banyak pekerjaan pada metamaterial dan kemudi sinar elektronik, masih belum ada antena yang dapat dikendalikan secara elektronik dengan biaya rendah di pasaran.



Kesimpulan

Sepintas, mungkin tampak mengejutkan bahwa banyak operator satelit mengusulkan untuk memberikan layanan IoT berbiaya rendah. Tetapi jika diamati lebih dekat, cukup jelas bahwa meskipun berbagai layanan yang ditawarkan jauh dari setara, ada kasus yang harus dibuat untuk setiap opsi pada menu. Meskipun tidak semua layanan IoT satelit akan berhasil, ada banyak alasan untuk percaya bahwa beberapa akan berhasil. Tantangan bagi operator dan pengguna adalah memahami apa yang sebenarnya ditawarkan dan memilih hidangan yang paling sesuai dengan selera mereka.


Penulis : Steve Baker

Share:

Sabtu, 24 Juli 2021

3D Drone - Dengan Teknologi 5G - Meriahkan Pembukaan Olimpiade Tokyo 2020

Olimpiade Tokyo 2020 secara resmi dimulai pada hari Jumat dengan setiap negara diperkenalkan selama Parade Bangsa-Bangsa dan nyala api Olimpiade dinyalakan oleh bintang tenis Naomi Osaka. Salah satu pertunjukan paling mengesankan, yang memikat penonton di seluruh dunia, menampilkan 3D drone di Stadion Olimpiade.





Menjelang akhir upacara pembukaan, 1.824 drone muncul di atas stadion dan dimulai sebagai simbol Olimpiade Tokyo. Drone kemudian terbentuk menjadi bentuk Bumi, yang merupakan pemandangan untuk dilihat.


"Pemandangan yang belum pernah dilihat sebelumnya, prestasi teknologi dan keindahan. Benda langit melayang di atas Tokyo. Dalam sekejap dan visi untuk dunia," Savannah Guthrie dari NBC menceritakan pada siaran selama pertunjukan.


Tampilan pesawat tak berawak berubah menjadi membawakan lagu John Lennon "Imagine," yang telah menjadi pokok di Olimpiade selama beberapa waktu. Itu adalah tampilan yang menakjubkan yang dilakukan dengan sangat presisi.





Itu bukan pertunjukan drone terbesar yang pernah ada, tapi tetap saja mengesankan.


Mungkin tidak ada penggemar di Stadion Olimpiade, tetapi Jepang masih menemukan cara untuk menampilkan pertunjukan untuk pembukaan Olimpiade Musim Panas 2020. Negara tuan rumah terpesona lebih awal dengan parade negara, yang menampilkan soundtrack video game yang diatur, dan kemudian memamerkan jenis kreativitas yang dikenalnya dengan pertunjukan yang melibatkan piktogram Olimpiade. Tapi Tokyo menyimpan tontonan terbesar untuk yang terakhir.


Menjelang akhir upacara, armada 1.824 pesawat tak berawak turun ke langit di atas Stadion Olimpiade. Awalnya disusun dalam simbol Olimpiade 2020, mereka kemudian mengambil bentuk Bumi sebelum membawakan lagu "Imagine" karya John Lennon, yang dikerjakan ulang oleh Hans Zimmer untuk Olimpiade, dimainkan di seluruh stadion.


Kami telah melihat tampilan seperti ini sebelumnya. Di Super Bowl LI tahun 2017, segmen yang direkam sebelumnya menampilkan 300 drone Intel yang membentuk bendera AS menyelingi penampilan turun minum Lady Gaga. Secara teknis, pertunjukan drone yang terjadi di atas Tokyo bukanlah yang terbesar yang pernah ada. Pada awal tahun ini, perbedaan itu dimiliki oleh 3.281-display merek mobil milik Hyundai Genesis yang dipasang di Shanghai, Cina. Tetapi bahkan dengan lebih sedikit drone yang terlibat, pertunjukan drone Tokyo masih mengesankan.



Bagi anda penikmat olahraga di Indonesia dapat menonton siaran langsungnya melalui kenyamanan di layar TV dirumah anda. Bagaimana cara menontonnya ? Berikut kami ulas.



1. Melalui TVRI - SCTV - INDOSIAR yg kini sudah digital


Jika anda berada di kota besar yg menjangkau TV UHF baik analog ataupun digital, maka cukup mengarahkan antena ke stasiun TV terdekat, dan kabar baiknya TVRI menayangkan siaran sepakbola olimpiade lengkap.




SCTV dan Indosiar kemungkinan besar akan menghadirkan olahraga favorit masyarakat Indonesia yaitu Bulutangkis. Untuk anda di kota yang sudah menikmati siaran digital maka dapat menikmati SCTV dan Indosiar dalam kualitas HD.


Cara merubah TV anda menjadi televisi digital cukup gampang, langkahnya adalah :


  1. Periksa televisi anda apakah memiliki fasilitas tuner DVB-T2 , dimana merupakan standar penyiaran digital di Indonesia. TV LED terbaru yg beredar di pasaran sudah memiliki fasilitas ini jadi jangan khawatir.
  2. Menggunakan decoder atau Set Top Box (STB) digital yang tentunya berteknologi DVB-T2, anda dapat membelinya di toko elektronik terdekat atau melalui online shop. Harganya murah saja berkisar 130 - 250 ribu rupiah saja.
  3. Tetap gunakan antena UHF yang mungkin masih terpasang di rumah anda, karena jika TV analog lama anda sudah bisa mendapatkan sinyal sebelumnya maka sinyal TV digital tidak akan menjadi masalah.
  4. Untuk  kota besar di Indonesia, cukup dengan menggunakan antena INDOOR kecil sudah bisa menikmati siaran TV digital dengan sangat jernih.





Sebagai panduan, kami telah review beberapa merek STB digital yg sudah ada di pasaran dan anda kini bisa bandingkan sesuai fasilitas dan keunggulannya :


Matrix Apple  - Polytron PDV 600T2   - Venus Cabe Rawit  - Evinix H-1  - Akari ADS-2230  - Tanaka


Bagi anda yg berada di lokasi lain di Nusantara dapat juga membaca update perkembangan  migrasi TV digital di  kota-kota besar seluruh Indonesia :

Surabaya  MNC  ,  EMTEK , VIVA )

Malang

Jember 

Kediri

Jombang & Mojokerto

Madiun

Jogja

Semarang

Banjarmasin

Makasar

Medan

Palembang

Perbatasan Malaysia


2. Berlangganan Parabola Nex Parabola & K-Vision 




Champions TV adalah sebuah saluran televisi berlangganan di Indonesia yang khusus menyiarkan olahraga dari belahan dunia yang dimiliki oleh Emtek (lewat IEG). Hadir dengan 3 saluran HD champions tv 1,2,3 yg pada awalnya menyajikan sepakbola liga champions dan europa league di saluran 1 & 2, sedangkan champions 3 menghadirkan Bulutangkis dan NBA.

Untuk pengguna parabola baik yg mini ku band maupun parabola jaring C band, dapat menikmati Champions TV dalam kualitas SD melalui layanan pay tv K-vision dengan berlangganan paket ONS2.





3. Streaming  Champions TV melalui layanan OTT - Vidio Com


Pesta olahraga multievent Olimpiade Tokyo 2020 akan digelar pembukaannya pada 23 Juli 2021 mendatang. Pada acara Olimpiade ini akan disiarkan secara link live streaming Olimpiade Tokyo 2020 melalui platform Vidio. Nantinya saat acara pembukaan, tim merah putih mengirimkan dua wakil atlet dari cabang olahraga surfing dan angkat besi sebagai pembawa bendera merah putih.




Vidio (PT Vidio Dot Com) adalah layanan streaming video yang didirikan pada tanggal 1 Oktober 2014 yang sekarang dimiliki oleh PT Surya Citra Media Tbk, anak perusahaan Emtek. Isi layanan ini terdiri dari sajian kanal gratis (free-to-air), siaran langsung (live streaming), film dan drama, dan televisi.





Terdapat 15 saluran Champions TV khusus menayangkan olimpiade tokyo kali ini. Bagi pengguna smartphone dengan operator Telkomsel, cukup hanya menginstal aplikasi vidio com saja GRATIS ! Sedangkan bagi pengguna PC dan android box bisa membeli paket platinum seharga 29 ribu rupiah / 30 hari. Siapkan Quota internet yg UNLIMITED  untuk mendapatkan siaran tanpa kendala.


4. Melalui parabola jaring ke arah Thaicom.


7 siaran dari Thailand akan menayangkan Olimpiade Tokyo 2020, yaitu NBT, PPTV, Thai PBS, JKN TV, True4U, GMM 25, dan T Sports.




Bagi pengguna antena parabola yang ingin menyaksikan perhelatan akbar tersebut, silakan ke siaran-siaran diatas.

Apalagi karena tidak ada satupun pay TV di Thailand yang ikut menayangkan, maka 7 siaran diatas dapat menayangkan cabang olahraga lainnya yang tidak melibatkan atlet Thailand.


Share:

Kontak Penulis



12179018.png (60×60)
+628155737755

Mail : ahocool@gmail.com

Site View

Categories

555 (8) 7 segmen (3) adc (4) amplifier (2) analog (19) android (12) antares (9) arduino (26) artikel (11) attiny (3) attiny2313 (19) audio (5) baterai (5) blog (1) bluetooth (1) chatgpt (2) cmos (2) crypto (2) dasar (46) digital (11) dimmer (5) display (3) esp8266 (26) euro2020 (13) gcc (1) iklan (1) infrared (2) Input Output (3) iot (60) jam (7) jualan (12) kereta api (1) keyboard (1) keypad (3) kios pulsa (2) kit (6) komponen (17) komputer (3) komunikasi (1) kontrol (8) lain-lain (8) lcd (2) led (14) led matrix (6) line tracer (1) lm35 (1) lora (8) MATV (1) memory (1) metal detector (4) microcontroller (70) micropython (6) mikrokontroler (1) mikrokontroller (14) mikrotik (5) modbus (9) mqtt (3) ninmedia (5) ntp (1) paket belajar (19) palang pintu otomatis (1) parabola (88) pcb (2) power (1) praktek (2) project (33) proyek (1) python (7) radio (28) raspberry pi (4) remote (1) revisi (1) rfid (1) robot (1) rpm (2) rs232 (1) script break down (3) sdcard (3) sensor (2) sharing (3) signage (1) sinyal (1) sms (6) software (18) solar (1) solusi (1) tachometer (2) technology (1) teknologi (2) telegram (2) telepon (9) televisi (167) television (28) transistor (2) troubleshoot (3) tulisan (93) tutorial (108) tv digital (6) tvri (2) vu meter (2) vumeter (2) wav player (3) wayang (1) wifi (3)

Arsip Blog

Diskusi


kaskus
Forum Hobby Elektronika