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

Kamis, 25 Juni 2020

[IOT Itu Gampang] BUG pada Library antares Mqtt ESP8266 - part1



[youtube version dapat klik disini]

Antares merupakan sebuah entitas IOT yang dikembangkan oleh PT TELKOM INDONESIA untuk menjawab tantangan teknologi terbaru jaman now. Penulis yang pernah 10 tahun berhubungan dengan perusahaan BUMN ini  sangat memahami bahwa telkom merupakan pelopor banyak teknologi mutahir di negeri ini. Jadi setiap ada tren baru diluar sana maka telkom dan groupnya dengan RnD yang kelas wahid akan segera mempelajari dan selanjutnya  mendeploy layanannya. Dari laman web antares.id, perkenalan dari antares seperti yg saya baca :

ANTARES merupakan sebuah Horizontal IoT Platform, yang berarti kami mencoba untuk menjadikan layanan kami se-umum mungkin agar solusi vertikal IoT anda dapat menyesuaikan dengan arsitektur yang umumnya digunakan. Banyak kasus-kasus IoT yang dapat dipecahkan dengan menggunakan layanan kami, contohnya adalah smart home, smart metering, asset tracking, smart building, dan lain-lain.

Kebutuhan akan platform IOT dalam negeri memang sangat saya dukung agar kita tidak hanya menjadi pengguna tapi juga bisa menjadi penyedianya. Lawan berat dari luar sana seperti AWS, Google IOT, ThingSpeak dll. dan  memang akan membuat ciut nyali dengan nama besar itu apalagi  melihat prospek meng "uang" kan belum secepat jualan fiber optik ke pelanggan indihome. 


Perkenalan penulis dengan antares terjadi sekitar tahun 2019, saat penulis kembali menekuni dunia 8 bit. Dari saran beberapa teman menujulah ke platform iot lokal ini dan terkejutnya karena terlalu banyak sisi IT nya dan menyoldernya hampir sedikit sekali, dan otak serta otot solderan saya berontak ketika melihat perintah pengiriman data melalui REST API seperti dibawah ini:




Bingung dan terkesan sulit dan saya beralih ke MQTT berbasis Mosquitto yang sangat mudah bagi tukang solder ini. Saya tinggalkan menggunakan antares sampai ada request dari seorang pembaca blog dan kebetulan saya sudah sedikit paham mengenai mqtt dengan esp8266. Apalagi pada sketch arduino, library ANTARES sudah terpampang dengan gagahnya di library manager.






Kita akan mencoba mencontoh example pada libraries ini dengan sedikit modifikasi mengirimkan counter penekanan tombol, scriptnya sederhana saja , saya gunakan wemos d1 r1:



#include <AntaresESP8266MQTT.h>

//gunakan acces key antares kamu
#define ACCESSKEY "access:key"

#define WIFISSID "myIOT" //wifi ssid
#define PASSWORD "selaluterhubung" //wifi pass

//Nama project dan device antares
#define projectName "AHOCOOL_IOT"
#define deviceName "test_pubsub"

AntaresESP8266MQTT antares(ACCESSKEY);

int counter=0;


void setup() {
  pinMode(16, INPUT); //Tombol pada wemos
  Serial.begin(9600);//Serial monitor
  //koneksi antares
  antares.setDebug(true);
  antares.wifiConnection(WIFISSID, PASSWORD);
  antares.setMqttServer();
}

void loop() {
  
  // ngecek koneksi
  antares.checkMqttConnection();
  
  //tombol ditekan = 0, pin pullup
  if( digitalRead(16) == 0 ){
  //tambah counter
  counter++;
  //kirim mqtt ke antares
  antares.add("counter", counter);
  antares.publish(projectName, deviceName);
  delay(300);
  }
}



Dan hasil yg saya dapatkan sedikit mengecewakan..


Seperti kembali ketahun lalu dan saya kembali membaca manual pada website antares dan de-ja-vu dengan bahasa Inggris yg di paksakan menjadi Bahasa Indonesia. Jadi maaf sepertinya developer antares hanya berusaha menterjemahkan manual ke bahasa Indonesia tapi bukan berusaha menjelaskan secara teknisnya. Ayo kita perhatikan debug diatas, saya menemukan bahwa yg belum konek WIFI NYA ! ESP saya rusak? Oooo tidak ketika saya mencoba script mqtt lain lancar saja, berarti ada salah di library antaresesp8266mqtt, dan saya coba buka script library AntaresESP8266MQTT.cpp


bool AntaresESP8266MQTT::wifiConnection(String SSID, String wifiPassword) {
    char ssidChar[sizeof(SSID)];
    char wifiPasswordChar[sizeof(wifiPassword)];

    SSID.toCharArray(ssidChar, sizeof(SSID));
    wifiPassword.toCharArray(wifiPasswordChar, sizeof(wifiPassword) );

    int count = 0;
    _wifiSSID = ssidChar;
    _wifiPass = wifiPasswordChar;
   
    WiFi.begin(_wifiSSID, _wifiPass);
    

   
    printDebug("[ANTARES] Trying to connect to " + SSID + "...\n"); 
    //saya tambahkan debug wifi name dan password disini
    printDebug("ssid dan password setelah di char array:  "); 
    printDebug(String(_wifiSSID) +" : " + String(_wifiPass));
    
 for (count=0;count<20;count++)
    {
      delay(500);
      printDebug(".");
    }

    if(WiFi.status() != WL_CONNECTED) {
        printDebug("[ANTARES] Could not connect to " + SSID + ".\n");
        return false;
    }
    else {
        WiFi.setAutoReconnect(true);
        printDebug("\n[ANTARES] WiFi Connected!\n");
        printDebug("[ANTARES] IP Address: " + ipToString(WiFi.localIP()) + "\n");
        return true;
    }
}
Dan benar saja librarynya hanya merupakan penyesuaian dari library yang sudah banyak beredar yaitu pub sub client milik knoleary, tapi tidak mengapa namanya juga library OPEN SOURCE sah sah aja bikin, tapi dari hasil penambahan debug saya dapatkan kenyataan wifi saya tidak konek sesuai gambar berikut:



Ternyata ohh ternyata..terjadi lagi permasalahan classic pada C++ yaitu passing string ke function, dimana banyak yg mengeluh sampe ada yg pindah coding ke micropython. Password saya terpotong hampir 4 char array...jadi solusinya gampang saja..kita tambahkan panjang arraynya + 5.



Dan console Antares saya di website antares.id pun pertama kalinya merasakan data masuk...wkwkwkwkw


Yeahhhh...berhasil ...dan yg bikin saya geleng-geleng ada output pada layar sub MQTT.FX yang biasa saya gunakan untuk mencoba pub sub, awalnya saya sebelum menggunakan esp8266 saya gunakan mqtt.fx, lalu frustasi gak ada data masuk. Ehhhh nongol dia...


Ternyata memang data yg dikirim masih berupa JSON REST API ..ckkcckkkckkk , jadi cicak deh saya

Baiklah..demikian penelusuran BUG PADA ANTARES MQTT , semoga pihak antares bisa memperbaiki librarynya..

PS: BUG yang lebih gatel ternyata muncul juga..silahkan baca lanjutannya di :
Share:

Sabtu, 13 Juni 2020

Migrasi Siaran Televisi dari Satelit Palapa D ke Telkom 4



Q : Ada apa gerangan kok banyak yg rame membicarakan satelit telkom 4 bosku ?
A : Biasa aja masbro .. namanya juga barang elektronik yg gak bisa diservis karena letaknya di 36.000 km diatas katulistiwa. Sekali rusak ya direlakan aja ...
--------------------------------------------------------------------------
Q: Lhoo rusak kah satelit PALAPA D ? Di rumah saya masih lancar kok receiver GOL saya ?
A: Bukan rusak bro, tapi kata orang yg mengerti dunia satelit, Palapa D berakhir masa servisnya tahun 2020 dan bahan bakar roketnya habis ..
--------------------------------------------------------------------------
Q: Bahan bakar ? Bukannya pake listrik dari panel surya ?
A: Benar ! listrik di suply pake panel surya + baterai, akan tetapi tetap dibutuhkan bahan bakar roket pendorong / thruster untuk proses station keeping yaitu menstabilkan posisi satelit agar tetap di 108 derajat Bujur Timur.
--------------------------------------------------------------------------
Q: Saya kira setelah masuk orbit maka satelit akan tetap pada posisinya. Gimana itu penjelasannya?
A: Orbit GEO artinya kecepatan gerak satelit relatif terhadap bumi  sama dengan kecepatan rotasi bumi. Jadi kita gak perlu putar parabola terus menerus seperti orbit LEO atau Eliptical. Akibat dari pengaruh gravitasi bulan dan ternyata bumi tidak sepenuhnya BULAT maka diperlukan pendorong roket agar lokasi satelit terkoreksi.
--------------------------------------------------------------------------
Q: Oalahhh..kalau semisal nih PALAPA D benar-benar roket station keepingnya habis, apa yg terjadi bos?
A: Yang terjadi adalah inclined orbit , artinya posisi satelit dilihat dari bumi membentuk angka 8

Q: Gambar angka 8 itu apa sih bosku ?
A: Itu merupakan pergerakan satelit pada umumnya dilihat dalam jangka waktu sehari (dari sudut pandang titik bumi yg tetap). Jika angka 8 nya masih pada box yg ditetapkan sesuai toleransi maka para pemirsa pengguna parabola dirumah tidak akan mengalami kendala penerimaan.   Ketika bahan bakar roket habis maka angka 8 nya melebihi toleransi sehingga mengganggu transmisi ke pemirsa. Butuh treking secara periodik jika ingin mendapatkan hasil yg bagus seperti yg bos alami tahun 90an pada satelit sinosat (cari siaran CCTV biasanya di rumah  cukong), parabolanya udah segede rumah dan butuh 2 aktuator yg menggerakkan parabola timur barat dan utara selatan.
--------------------------------------------------------------------------
Q: Ooo begitu..jadi Palapa D mau nyungsep kah?
A: Gak juga kok, palapa masih baik-baik saja. Ini dikarenakan elektroniknya masih bagus karena didesain 15 tahun lifetimenya.
--------------------------------------------------------------------------
Q: Kok 2020 kalkulatornya salah ya bos  ? Kan seharusnya dari wikipedia Palapa D diluncurkan tahun 2009 ? 11 tahun saja?
A: Begini, tahun 2009 itu terjadi kesalahan pada 3rd stage roketnya longmarch cina. Jadi satelitnya masih terlalu rendah ke orbit GEO. Untunglah yg buat satelit dapat melakukan improvisasi dengan mendorong kembali pelan-pelan ke orbit GEO menggunakan bahan bakar station keeping tadi. Nah menurut perhitungan bahan bakar yg digunakan mengurangi sisa bahan bakar  5 tahun.
--------------------------------------------------------------------------
Q: Gimana gimana? Jadi nyungsep gak bos ? kan habis bahan bakarnya?
A: Dibilangin kok ngeyel ! masih AMAN !...banyak satelit yg bahan bakarnya habis masih bisa digunakan kok...Tapi ya beresiko loss orbit kayak TELKOM 1 dulu. kalau beruntung kayak palapa B2P dijual ke filipina,  palapa C2 ke PSN , dan masih bisa dipake sampe elektronikanya melemah.
--------------------------------------------------------------------------
Q: Oooo begitu ..yang punya palapa gak pasang satelit baru ?
A: Udah ada penggantinya Palapa Nusantara , diluncurkan april 2020 tapi gagal roketnya  ..nunggu asuransi nya kelar buat penggantinya. Jadi inilah yang menyebabkan banyak penyedia TV satelit migrasi ke satelit TELKOM 4 ( 108E )
--------------------------------------------------------------------------
Q: Bosku mbingungi..katanya Palapa D masih bisa dipake ? Tapi pada migrasi telkom4, Mumet saya ?
A: Masih inget kasusnya Telkom 1 yg dipaksakan kerja diluar lifetime 15 tahun, Loss Contact pada 25 agustus 2017 sekitar jam 5 sore ? Karena itulah para pebisnis TV yg punya kontrak sewa transponder dengan Indosat / Palapa D gak mau memperpanjang sewa. Yang mau perpanjang pasti dikasi harga murah tapi resiko tanggung sendiri !
--------------------------------------------------------------------------
Q: Ohh iya agustus 2017 saya kebanjiran order geser parabola dari Telkom1 ke Telkom 3S..wahh kali ini migrasi lagi bakal banyak duit...
A: Lhhaaa gak ingatkah tahun lalu 2019 kamu udah mengembalikan posisi Telkom3S ke Telkom 4 (kembali ke posisi lama)
--------------------------------------------------------------------------
Q: WAHAHAHAHAH lupa saya...
A: Matanya di uang mulu...masih ada peluang buat cari uang karena ada migrasi PAY TV parabola C band / Parabola besar ke Telkom 4.
--------------------------------------------------------------------------
Q: Gimana itu maksudnya bos ?
A: Para pengguna layanan PAY TV Kvision - Matrix Garuda/Sinema/Mola - Nex Parabola umumnya memakai 1 LNB ke palapa aja. Jadi ada peluang jasa menggeser parabola ke barat dikit.
--------------------------------------------------------------------------
Q: Kalau LNB nya udah ada 2 PALKOM bagaimana ?
A: Ya gak perlu geser, tinggal scan ulang pada receiver nya aja. Atau mau cari tambahan sekiranya palapa benar-benar siarannya habis bisa gunakan LNB ex palapa menuju ke chinasat6B(geser menjauh) atau chinasat 10(geser sampe mepet telkom4)
--------------------------------------------------------------------------
Q: Sip-sip..paham deh bos...yang udah migrasi apa saja nih bos ku ?
A: Dasar males kenapa gak scan aja sendiri...nih aku kasi..











PAY TV : K VISION (3980 V 31000)







PAY TV : MATRIX GARUDA/MOLA (3900V 29800)



PAY TV : NEX PARABOLA  (4180V 29800)





PAY TV : NUSANTARA HD (4109 H 10000)



EMTEK MPEG2 dan MPEG 4




TRANS GROUP






ANTV




WESAL GROUP


TELKOMSAT  (  3720H & 4020 V  SR 32727  SIARAN ISLAMI & TV LOKAL)









TV DAERAH - RRI & TVRI STASIUN DAERAH








SIARAN ROHANI KRISTIANI



MTA



Q: Terimakasih bos atas pencerahannya
A: Sama-sama..kalau ada rejeki bagi-bagi yaa....
Share:

Selasa, 09 Juni 2020

[Praktek Gampang] Jam di TV dengan Arduino - Part 3 - Esp8266-01 Kirim NTP via I2C



Kegemaran saya mengoprek jam kalender dan TV dimulai sejak  membaca tulisan mengenai steve wozniak dan steve jobs tentang bagaimana mereka bekerjasama membuat hardware video game "breakout" di Atari, hingga akhirnya menciptakan komputer apple yang legendaris itu. Dulu saat penulis kuliah sempat mendapat praktikum interfacing monitor VGA tapi hanya selintas aja dan menyesal juga kenapa gak sedari dulu bisa mengerti walau nilai praktikum dapat A (nyontek teman yg pinter sihhh). Dari dua latar belakang tersebut dan ketika microcontroller semakin murah dan mudah didapatkan menjadi tantangan tersendiri bermain micro di TV dan terlihat seperti main-main dan menghabiskan waktu, memang itu benar tapi asyik lhoo!  Tapi jangan berkecil hati karena penulis juga dapat banyak ilmu terutama mengenai pemrograman script yang lebih efisien. Salah satunya adalah ketika tantangan komunikasi arduino ke ESP agar tidak mengganggu timer Atmega328 untuk scanning TV. Jika menggunakan Serial baik Hardware atau emulasi software tetap aja akan menimbulkan interfrensi timer. Untuk itu digunakan komunikasi dengan timer  yg independen yaitu I2C. Dari hasil googling didapat bahwa ESP8266 bisa juga dimanfaatkan sebagai I2C master dan Arduino sebagai Slave nya. 




Komunikasi I2C sudah tersedia librarinya dalam instalasi default sketch,  yaitu dengan library " wire.h ". Untuk arduino uno / mini / micro yg berbasis ATmega328 pin SDA = A4 pin SCL =A5 . Dengan menggunakan I2C maka master dapat mengirim data atau meminta data ke slave. Tiap komponen yg diakses memiliki address masing-masing. Untuk ESP8266-01 memiliki 2 output GPIO yang bukan berfungsi sebagai I2C secara spesifik, sehingga perlu dilakukan inisialisasi port sendiri mana yg berfungsi sebagai SDA atau SCL. 

Menyambung tulisan mengenai jam di TV dan esp8266 , maka sebelum melanjutkan ke bahasan dibawah ada baiknya paca dulu PART1 dan PART2


- Praktek Testing I2C

Kita akan mencoba menghubungkan ESP sebagai master, terhubung secara I2C ke Arduino sebagai Slave dan tujuannya adalah mengirimkan data kalender secara periodik. Slave kemudian akan menuliskan hasil data yg diperoleh ke Serial port.

Script Master ( ESP8266-01)

#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
#include "TimeLib.h"
//library I2c
#include <Wire.h>
//library NTP , unduh jika blom ada
#include <NTPClient.h>

const char *ssid     = "Nama Wifi";
const char *password = "Password";
//Offset WIB +7 , sesuaikan
const long utcOffsetInSeconds = 25200;

long previousMillis = 0;   
long interval = 10000; //tiap 10 detik
//Array kalender
char tanggalan[] ="20,1,1,23,59,0" ;

// NTP lokal, ubah jika perlu
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "ntp.bmkg.go.id", utcOffsetInSeconds);

void setup(){
  Serial.begin(9600); //monitor
  Wire.begin(0, 2); 
/* Koneksi i2c  SDA=0 and SCL=2  pada ESP-01 */

  WiFi.begin(ssid, password);

  while ( WiFi.status() != WL_CONNECTED ) {
    delay ( 500 );
    Serial.print ( "." );
  }

  timeClient.begin();
}

void loop() {

  unsigned long currentMillis = millis(); 

  if(currentMillis - previousMillis > interval) {

  previousMillis = currentMillis;
  timeClient.update();
  unsigned long epoch ;
  epoch = timeClient.getEpochTime();
  
//output ke array
  sprintf(tanggalan,"%2d,%02d,%02d,%02d,%02d,%02d", year(epoch)-2000, month(epoch), day(epoch), hour(epoch), minute(epoch), second(epoch));

  Wire.beginTransmission(8); /* address 8 */
  Wire.write(tanggalan);  /* kirim Kalender */
  Wire.endTransmission();    /* stop */
  Serial.print("tanggal : ");
  Serial.println(tanggalan);

  }
}



Script Slave (Arduino)

#include <Wire.h>


void setup()
{
Serial.begin(9600);
Wire.begin(8);
//rutin event receive i2c
Wire.onReceive(espWifiReceiveEvent);

}

void loop()
{
delay(1);
}

//Kirim ke serial saat ada data i2c masuk

void espWifiReceiveEvent(int count)
{
Serial.print("Received[");
while (Wire.available())
{
char c = Wire.read();
Serial.print(c);
}
Serial.println("]");

}


Nah jika dilihat output pada serial monitor / putty disisi arduino/slave seperti berikut:




- SCRIPT JAM LENGKAP

Terdapat beberapa hal yg menjadi perhatian saat data diterima arduino pada port I2C, dimana timer tetap akan kacau kalau data i2c nya panjang. I2C akan hang itulah yg terjadi saat 17 byte char diterima ,  jadi diakali dengan melakukan penonaktifan I2C setelah data kalender lengkap. Peng-update-an tanggalan dilakukan setiap jam atau sesuai keinginan misalnya tiap jam 3 pagi jika TV mau nyala terus dan gak dipake emak nonton sinetron..hehehehe...ayuk kita kupas satu persatu.


#include <TVout.h>
#include <Wire.h>
#include "fontALL.h"
#include <String.h>

TVout TV;

long previousMillis = 0;    
byte second, minute, hour, dayOfMonth, month, year;
long interval = 200;
int tvx,tvy,tvradius,x2,y2,x3,y3;
char buff[20]="20,08,06,23,58,58";
int buffindex=0;
char incomingByte ;

//status flag
bool ntpkomplit = false;
bool ntpupdate = false;

//function nulis kalender dan jam
void printTime()
{

second++;

if(second >=60){
  minute++;
  second=0;

}

if(minute >=60){
  hour++;
  minute=0;

  //reset flag
  ntpkomplit=false;
  ntpupdate=false;
  
  //restart i2C
   TWCR = 0;
   Wire.begin(8); //address 8
   Wire.onReceive(espWifiReceiveEvent);

}

if(hour >=24){
  hour=0;  
  dayOfMonth++;
}

//jika flag ntp komplit maka update kalender
if( ntpkomplit == true && ntpupdate == false ){
//parsing koma ke kalender
  char* ptr = strtok(buff, ",");
  byte i = 0;
  while (ptr) {
    if( i ==0 )year=atoi(ptr);
    else if( i == 1)month=atoi(ptr);
    else if( i == 2)dayOfMonth=atoi(ptr);
    else if( i == 3)hour=atoi(ptr);
    else if( i == 4)minute=atoi(ptr);
    else if( i == 5)second=atoi(ptr);
    
    ptr = strtok(NULL, ",");
    i++;
  }
  //flag ntp telah terupdate
  ntpupdate = true;
}

//tulis kalender

TV.set_cursor(0,0);
TV.print( char( hour/10 + 0x30) );
TV.print( char( hour%10 + 0x30) );
TV.print(":");
TV.print( char(minute/10 + 0x30));
TV.print( char(minute%10 + 0x30));
TV.print(":");
TV.print(char (second/10+0x30));
TV.print(char (second%10+0x30));


TV.set_cursor(8,9);
TV.print(char(dayOfMonth/10+0x30));
TV.print(char(dayOfMonth%10+0x30));
TV.print("/");
TV.print(char(month/10+0x30));
TV.print(char(month%10+0x30));
TV.set_cursor(10,18);
TV.print("20");
TV.print(char(year/10+0x30));
TV.print(char(year%10+0x30));
  
//status NTP connecting atau OK 

if( ntpupdate == false)
{
  TV.set_cursor(10,38);
  TV.print("con");
}

else{

  TV.set_cursor(10,38);
  TV.print("OK!");
}

//gambar Jam
//courtesy of Giant Metal Robot Blog 
  
TV.draw_circle(tvx,tvy,tvradius-5,BLACK,BLACK);

float angle = second*6 ;
angle=(angle/57.29577951) ; //Convert degrees to radians  
x3=(tvx+(sin(angle)*(tvradius-6)));
y3=(tvy-(cos(angle)*(tvradius-6)));
TV.draw_line(tvx,tvy,x3,y3,WHITE);
angle = minute * 6 ;
angle=(angle/57.29577951) ; //Convert degrees to radians  
x3=(tvx+(sin(angle)*(tvradius-11)));
y3=(tvy-(cos(angle)*(tvradius-11)));
TV.draw_line(tvx,tvy,x3,y3,WHITE);
angle = hour * 30 + int((minute / 12) * 6 )   ;
angle=(angle/57.29577951) ; //Convert degrees to radians  
x3=(tvx+(sin(angle)*(tvradius-15)));
y3=(tvy-(cos(angle)*(tvradius-15)));
TV.draw_line(tvx,tvy,x3,y3,WHITE);

}


void setup()  {
//TV di mode NTSC

TV.begin(_NTSC,150,71);
TV.select_font(font6x8);
TV.clear_screen();

tvx= TV.hres()/2;
tvy=TV.vres()/2;
tvradius=TV.vres()/2 ;
//clock face lingkaran
 TV.draw_circle(tvx,tvy,tvradius,WHITE);
//hour ticks
for( int z=0; z < 360;z= z + 30 ){
  //Begin at 0° and stop at 360°
  float angle = z ;
  angle=(angle/57.29577951) ; //Convert degrees to radians
  x2=(tvx+(sin(angle)*tvradius));
  y2=(tvy-(cos(angle)*tvradius));
  x3=(tvx+(sin(angle)*(tvradius-5)));
  y3=(tvy-(cos(angle)*(tvradius-5)));

  TV.draw_line(x2,y2,x3,y3,WHITE);
}
  
  
  TV.set_cursor(10,30);
  TV.print("NTP");
  TV.set_cursor(0,55);
  TV.print("aisi555");
  TV.set_cursor(3,63);
  TV.print(".com");



//buka serial kalau mau debug
//Serial.begin(9600);
Wire.begin(8); // I2C
Wire.onReceive(espWifiReceiveEvent);

}

void loop() {
  
unsigned long currentMillis = millis();

if(currentMillis - previousMillis > interval) {

  previousMillis = currentMillis;
  TV.delay(980); // Sesuaikan antara 950-1000
  printTime();

  }

}


void espWifiReceiveEvent(int count)
{

 //buka blok serial kalau mau debug
//Serial.print("Received[");

//jika i2c terima data dan blum komplit kalendernya
while (Wire.available() && ntpkomplit == false)
{
 char c = Wire.read();
 //Serial.print(c);
 buff[buffindex]=c;
 buffindex++;
}
//Serial.println("]");


//Ntpkomplit = true Jika buffer kalender sampe menit terpenuhi 
if(buffindex >=14) {
  ntpkomplit = true;
  TWCR = 0; //bunuh i2c
  
}

buffindex = 0;

}




HASIL :



Proses update yg saya gunakan adalah tiap JAM atau menit ke 0, jadi memang tidak akan langsung terupdate akibat proses BITBANG tabrak menabrak antar timer vs i2c. Jadi seperti video berikut ini dapat dilihat UPDATE ke waktu NTP terjadi hampir  2 menit kemudian.



Bagaimana ? Sudah Mumet ? Sebaiknya baca dari awal ya PART1 dan PART2 dan juga bagian sebelumnya mengenai TV menggunakan microcontroller yang sudah saya tulis sejak 2012. 

SELAMAT MENCOBA

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 (8) arduino (25) 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 (25) euro2020 (13) gcc (1) iklan (1) infrared (2) Input Output (3) iot (58) 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 (5) 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 (17) 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