Saturday, February 1, 2025

Power Transistor MJ11016G short

 

MJ11016G
ini adalah bacaan MJ11016G yang diambil dari multimeter.

B-E: 0.482V (forward) dan E-B: 0.939V (reversed)

B-C: 0.459V (forward) dan C-B: OL (open)

E-C: 0.388V dan C-E: OL

Untuk transistor NPN yang normal, sepatutnya:

Simpang B-E: sekitar 0.6-0.7V semasa forward, dan beberapa MΩ atau OL semasa reversed

Simpang B-C: sekitar 0.6-0.7V semasa forward, dan beberapa MΩ atau OL semasa reversed

E-C dan C-E: kedua-duanya sepatutnya menunjukkan nilai rintangan tinggi atau OL

Dari bacaan yang diukur, terdapat beberapa tanda tidak normal:

Voltan hadapan B-E terlalu rendah (0.482V)

Bacaan E-B sepatutnya OL, bukan 0.939V

E-C menunjukkan 0.388V yang menandakan ada litar pintas atau kebocoran


Kesimpulannya, transistor ini berkemungkinan besar sudah rosak dan perlu diganti. Semoga bermanfaat. 73 Zaki

Thursday, January 23, 2025

TL494 PWM Controller : bahagian pertama

 

TL494

ini adalah bacaan yang diperoleh daripada PWM TL494, 

pin1=2.474v     pin16=000.8mv

pin2=2.474v     pin15=0.384v 

pin3=3.6v         pin14=4.98v

pin4=0.3v        pin13=4.98v

pin5=1.477v     pin12=14.52v

pin6=3.58v       pin11=14.52v

pin7=0v            pin9=000.9mv

pin8=14.52v      pin9=000.9mv


Berdasarkan bacaan voltan pada pin TL494, mari kita analisis keadaan litar 
dan kenalpasti punca masalah LED overload menyala tanpa load


Analisis Bacaan Pin TL494

  1. Pin 1 (Error Amplifier Input 1): 2.474V  -  Bacaan ini adalah normal.
  2. Pin 2 (Error Amplifier Input 2): 2.474V - Bacaan ini sepadan dengan Pin 1. tiada masalah
  3. Pin 3 (Feedback): 3.6V : Bacaan ini kelihatan tinggi. Pin 3 biasanya bekerja pada 2.5V, kena check resistor dan capacitor dalam tracknya.

        

Pin 4 (Dead Time Control): 0.3V - kelihatan rendah. kena check transistor dlm linenya
Pin 5 (Control Voltage): 1.477V - tiada masalah sbb berada dlm rangenya.
Pin 6 (Error Amplifier Output): 3.58V - Bacaan ini menunjukkan TL494 cuba menghantar  active control, tetapi jika output tidak stabil (Pin 15 dan Pin 16 rendah), protection problem                  Pin 7 (Ground): 0V - normal                                                                                                                Pin 8 (VCC): 14.52V - normal sbb ada 14.52v                                                                                    Pin 9 dan Pin 10 (Output PWM): 0.9mV - sangat rendah, menunjukkan tiada signal dari PWM  yg boleh/mungkin jadi punca. MUNGKIN berpunca drp transistor atau resistor di-linenya                    Pin 11 (VREF): 14.52V - salah ni, biasanya 5V, mungkin TL494 ini rosak?                                       Pin 12 (Power Supply for Reference): 14.52V                                                                                        

     12. Pin 13 dan Pin 14 (Input for Oscillator Timing): 4.98V - normal                                                  13. Pin 15 dan Pin 16 (Output PWM): 0.384V dan 0.8mV - Output PWM sangat rendah            Mungkin TL494 ni rosak? ataupun proteksen dia aktif?

---------------------------------------------------------------------------------------------------------------------
     Plan saya ialah check komponen sekitar TL494 dahulu sebab pin 3 bacaan dia tinggi,              samada perintang atau capacitor problem pada linenya. Check transistor pada line pin 15 dan 16 sbb output low, mungkin ada yang short. Jika semuanya ok, MUNGKIN TL494 rosak sbb Vref 14.52volt,  sepatutnya dlm keadaan standby ianya 5volt saja.

     Ok sambung bahagian 2, ngantuk dah ni... apa-apa saya roger. 73 de 9m2zak

Saturday, January 18, 2025

GPS Monitoring : ESP32-DA Module

 


Percubaan untuk menghasilkan sebuah GPS monitoring berjaya. Projek ini saya gunakan : 

  1.  ESP32 Wroom
  2. GPS module GPS6MV2
  3. 2.4 oled lcd module SPI
  4. Expansion board

 setelah beberapa minit, rasanya tak sampai 5 minit, GPS saya trus lock dan hasilnya seperti di bawah.


di bawah ini saya sertkan skrip yang sudah banyak kali debug dan akhirnya sukses. have fun!!!

---------------------------------------------------------------------------------------------------------------

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <TinyGPS++.h>

// Tetapan OLED
#define OLED_MOSI   21    
#define OLED_CLK    22    
#define OLED_DC     15    
#define OLED_CS     13    
#define OLED_RESET  14    
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT,
  OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);

// Tetapan GPS
#define RXPin 16  // Sambungkan ke pin TX GPS
#define TXPin 17  // Sambungkan ke pin RX GPS
#define GPSBaud 9600
TinyGPSPlus gps;

void setup() {
  // Memulakan Serial Monitor
  Serial.begin(115200);
  Serial.println("GPS Monitor Starting...");

  // Memulakan sambungan GPS menggunakan UART bawaan
  Serial2.begin(GPSBaud, SERIAL_8N1, RXPin, TXPin);
 
  // Memulakan OLED SPI
  if (!display.begin(SSD1306_SWITCHCAPVCC, OLED_RESET)) {
    Serial.println(F("SSD1306 allocation failed"));
    for (;;); // Berhenti jika OLED gagal
  }
  display.clearDisplay();
  display.setTextSize(1); // Saiz teks
  display.setTextColor(SSD1306_WHITE); // Warna teks
  display.setCursor(0, 0);
  display.println(F("GPS Monitor"));
  display.display();
  delay(2000);
}

void loop() {
  // Membaca data GPS dari Serial2
  while (Serial2.available() > 0) {
    char c = Serial2.read();
    if (gps.encode(c)) {
      displayGPSInfo(); // Paparkan maklumat GPS pada OLED
    }
  }
 
  // Debug di Serial Monitor
  if (millis() > 5000 && gps.charsProcessed() < 10) {
    Serial.println(F("Tiada isyarat GPS diterima."));
  }
}

void displayGPSInfo() {
  display.clearDisplay();
  display.setCursor(0, 0);
 
  if (gps.location.isValid()) {
    display.print(F("Lat: "));
    display.println(gps.location.lat(), 6);
    display.print(F("Lon: "));
    display.println(gps.location.lng(), 6);
    display.print(F("Alt: "));
    display.println(gps.altitude.meters());
    display.print(F("Sat: "));
    display.println(gps.satellites.value());
  } else {
    display.println(F("Mencari satelit..."));
  }
 
  display.display();
}


ESP32-WROOM : Jam azan


 Dibawah ini adalah scriptnya, semoga bermanfaat.

--------------------------------------------------------------------------------------------------------------------

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <WiFi.h>
#include <NTPClient.h>
#include <WiFiUdp.h>

// Tetapan OLED
#define OLED_MOSI   21    
#define OLED_CLK    22    
#define OLED_DC     15    
#define OLED_CS     13    
#define OLED_RESET  14    
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT,
  OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);

// Tetapan WiFi
const char* ssid = "XXXX";    // Ganti dengan SSID WiFi anda
const char* password = "XXXX"; // Ganti dengan kata laluan WiFi anda

// Tetapan NTP (Masa Internet)
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "sg.pool.ntp.org", 8 * 3600, 60000); // GMT+8

// Jadual waktu azan (untuk lokasi tertentu, ubah ikut lokasi anda)
struct PrayerTime {
  String name;
  int hour;
  int minute;
};

PrayerTime prayerTimes[] = {
  {"Subuh", 5, 45},
  {"Zohor", 13, 10},
  {"Asar", 16, 30},
  {"Maghrib", 19, 5},
  {"Isyak", 20, 15}
};
const int numPrayers = sizeof(prayerTimes) / sizeof(prayerTimes[0]);

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

  // Sambungkan WiFi
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("\nWiFi Connected");

  // Mulakan NTP
  timeClient.begin();

  // Mulakan OLED
  if (!display.begin(SSD1306_SWITCHCAPVCC)) {
    Serial.println(F("OLED initialization failed"));
    while (1);
  }
 
  display.clearDisplay();
  display.setTextColor(SSD1306_WHITE);
  display.setTextSize(1);  // Saiz font kecil
  display.setCursor(0, 0);
  display.println("Jam Azan");
  display.println("Memuatkan...");
  display.display();
  delay(2000);
}

void loop() {
  // Kemas kini masa
  timeClient.update();

  // Dapatkan masa semasa
  int currentHour = timeClient.getHours();
  int currentMinute = timeClient.getMinutes();
  int currentSecond = timeClient.getSeconds();

  // Periksa waktu azan
  checkPrayerTime(currentHour, currentMinute);

  // Paparkan masa dan waktu solat
  displayTime(currentHour, currentMinute, currentSecond);
  delay(1000);
}

void checkPrayerTime(int hour, int minute) {
  for (int i = 0; i < numPrayers; i++) {
    if (hour == prayerTimes[i].hour && minute == prayerTimes[i].minute) {
      // Notifikasi azan (anda boleh sambung ke buzzer/speaker di sini)
      Serial.println("Waktu Azan: " + prayerTimes[i].name);
      playAzan();
    }
  }
}

void playAzan() {
  // Gantikan dengan kod untuk memainkan azan (buzzer atau audio file)
  Serial.println("Memainkan Azan...");
}

void displayTime(int hour, int minute, int second) {
  display.clearDisplay();
  display.setTextSize(1);  // Saiz font kecil
 
  display.setCursor(0, 0);

  // Paparkan masa semasa
  if (hour < 10) display.print("0");
  display.print(hour);
  display.print(":");
  if (minute < 10) display.print("0");
  display.print(minute);
  display.print(":");
  if (second < 10) display.print("0");
  display.print(second);

  // Tambahkan "9m2zak" pada hujung jam
  display.print(" 9m2zak");

  // Paparkan waktu solat
  display.setTextSize(1);  // Saiz font kecil
  display.setCursor(0, 20);  // Ubah kedudukan ke atas sedikit
  for (int i = 0; i < numPrayers; i++) {
    display.print(prayerTimes[i].name);
    display.print(": ");
    if (prayerTimes[i].hour < 10) display.print("0");
    display.print(prayerTimes[i].hour);
    display.print(":");
    if (prayerTimes[i].minute < 10) display.print("0");
    display.print(prayerTimes[i].minute);
    display.println();
  }

  display.display();
}

Friday, January 17, 2025

ESP32 WIFI Analyzer with OLED Display

Wifi Analyzer

Skrip dibawah  ini berfungsi untuk scan WiFi berdekatan dan memaparkan maklumatnya pada screen OLED. Fungsi utamanya ialah:

  1. Scan WiFi setiap 5 saat.
  2. Tunjuk maklumat rangkaian seperti:
    • Nama (SSID)
    • Kekuatan signal (RSSI dalam dBm)
    • Nombor channel (Channel)
    • Jenis (WPA2, WPA, Open, dll.)
    • Bar kekuatan isyarat.

Disini saya lampirkan skripnya.

-------------------------------------------------------------------------------------------------------------------

 #include <Wire.h>

#include <SPI.h>

#include <Adafruit_GFX.h>

#include <Adafruit_SSD1306.h>

#include <WiFi.h>


#define OLED_MOSI   21    

#define OLED_CLK    22    

#define OLED_DC     15    

#define OLED_CS     13    

#define OLED_RESET  14    

#define SCREEN_WIDTH 128

#define SCREEN_HEIGHT 64

#define BUTTON_NEXT 0     // Button for scrolling networks


Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, 

  OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);


#define MAX_NETWORKS 20

int networkCount = 0;

int currentNetwork = 0;

const int scanTime = 5; // In seconds

unsigned long lastScan = 0;


struct WiFiNetwork {

  String ssid;

  int32_t rssi;

  wifi_auth_mode_t encryptionType;

  int channel;

};


WiFiNetwork networks[MAX_NETWORKS];


void setup() {

  Serial.begin(115200);

  pinMode(BUTTON_NEXT, INPUT_PULLUP);

  

  // Setup OLED

  if (!display.begin(SSD1306_SWITCHCAPVCC)) {

    Serial.println(F("OLED initialization failed"));

    while (1);

  }

  

  display.clearDisplay();

  display.setTextColor(SSD1306_WHITE);

  

  // Show initial message

  display.setTextSize(1);

  display.setCursor(0,0);

  display.println("WiFi Analyzer");

  display.println("Initializing...");

  display.display();

  

  // Setup WiFi

  WiFi.mode(WIFI_STA);

  WiFi.disconnect();

  delay(100);

}


void loop() {

  // Scan networks every 5 seconds

  if (millis() - lastScan >= scanTime * 1000) {

    scanNetworks();

    lastScan = millis();

  }

  

  // Change network when button is pressed

  if (digitalRead(BUTTON_NEXT) == LOW && networkCount > 0) {

    currentNetwork = (currentNetwork + 1) % networkCount;

    delay(200); // Debounce

    displayNetworks();

  }

}


void scanNetworks() {

  display.clearDisplay();

  display.setTextSize(1);

  display.setCursor(0,0);

  display.println("Scanning...");

  display.display();

  

  networkCount = WiFi.scanNetworks();

  

  if (networkCount == 0) {

    display.clearDisplay();

    display.setCursor(0,0);

    display.println("No networks found!");

    display.display();

  } else {

    networkCount = min(networkCount, MAX_NETWORKS);

    for (int i = 0; i < networkCount; i++) {

      networks[i].ssid = WiFi.SSID(i);

      networks[i].rssi = WiFi.RSSI(i);

      networks[i].encryptionType = WiFi.encryptionType(i);

      networks[i].channel = WiFi.channel(i);

    }

    displayNetworks();

  }

  

  // Clear scan results

  WiFi.scanDelete();

}


String getEncryptionTypeString(wifi_auth_mode_t encryptionType) {

  switch (encryptionType) {

    case WIFI_AUTH_OPEN:

      return "Open";

    case WIFI_AUTH_WEP:

      return "WEP";

    case WIFI_AUTH_WPA_PSK:

      return "WPA-PSK";

    case WIFI_AUTH_WPA2_PSK:

      return "WPA2-PSK";

    case WIFI_AUTH_WPA_WPA2_PSK:

      return "WPA/WPA2";

    case WIFI_AUTH_WPA2_ENTERPRISE:

      return "WPA2-ENT";

    default:

      return "Unknown";

  }

}


void displayNetworks() {

  display.clearDisplay();

  display.setTextSize(1);

  

  // Header

  display.setCursor(0,0);

  display.print(networkCount);

  display.print(" Networks | ");

  display.print(currentNetwork + 1);

  display.print("/");

  display.println(networkCount);

  display.drawLine(0, 9, SCREEN_WIDTH-1, 9, SSD1306_WHITE);

  

  if (networkCount > 0) {

    // Network SSID

    display.setCursor(0,12);

    String ssid = networks[currentNetwork].ssid;

    if (ssid.length() > 20) {

      ssid = ssid.substring(0, 17) + "...";

    }

    display.println(ssid);

    

    // Signal strength

    display.print("RSSI: ");

    display.print(networks[currentNetwork].rssi);

    display.println(" dBm");

    

    // Channel

    display.print("CH: ");

    display.println(networks[currentNetwork].channel);

    

    // Encryption type

    display.print("Security: ");

    display.println(getEncryptionTypeString(networks[currentNetwork].encryptionType));

    

    // Signal strength bar

    int strength = map(networks[currentNetwork].rssi, -100, -40, 0, SCREEN_WIDTH);

    display.drawRect(0, 54, SCREEN_WIDTH, 10, SSD1306_WHITE);

    display.fillRect(0, 54, strength, 10, SSD1306_WHITE);

  }

  

  display.display();

}

---------------------------------------------------------------------------------------------------------------------

semoga bermanfaat, 73 9m2zak


Monday, January 13, 2025

Space Shooter Game Lilygo TTGO ESP32

 

Untuk bermain permainan ini, korang memerlukan 2 butang untuk mengawal pesawat angkasa.

Manakala tembakannya adalah auto, so kita hanya perlu kawal sahaja.

Untuk sambung 2 butang kawalan kiri kanan tu, 

- sambung butang ke pin GPIO0 (kiri) dan GPIO35 (kanan)

dan pastikan kedua-dua butang itu di gnd kan. Dalam video di bawah saya tiada butang tu.

Maka saya tap sajalah... hahahaha.


jika berminat, dibawah ini adalah scriptnya. have fun!!!.

-------------------------------------------------------------------------------------------------------------------

#include <Wire.h>

#include <SPI.h>

#include <Adafruit_GFX.h>

#include <Adafruit_SSD1306.h>


#define OLED_MOSI   21    

#define OLED_CLK    22    

#define OLED_DC     15    

#define OLED_CS     13    

#define OLED_RESET  14    

#define SCREEN_WIDTH 128

#define SCREEN_HEIGHT 64

#define BUTTON_LEFT 0     // Butang kiri (GPIO0)

#define BUTTON_RIGHT 35   // Butang kanan (GPIO35)


Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, 

  OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);


// Struktur untuk pesawat pemain

struct Player {

  int x = SCREEN_WIDTH/2;

  int y = SCREEN_HEIGHT-10;

  int width = 8;

  int height = 8;

  int score = 0;

  int lives = 3;

};


// Struktur untuk peluru

struct Bullet {

  int x = -1;

  int y = -1;

  bool active = false;

};


// Struktur untuk musuh

struct Enemy {

  int x;

  int y;

  bool active = false;

};


Player player;

Bullet bullet;

Enemy enemies[3];

unsigned long lastEnemySpawn = 0;

unsigned long lastBulletFired = 0;


void setup() {

  Serial.begin(115200);

  

  // Setup butang

  pinMode(BUTTON_LEFT, INPUT_PULLUP);

  pinMode(BUTTON_RIGHT, INPUT_PULLUP);

  

  if (!display.begin(SSD1306_SWITCHCAPVCC)) {

    Serial.println(F("OLED initialization failed"));

    while (1);

  }

  

  // Mulakan permainan

  initGame();

}


void initGame() {

  display.clearDisplay();

  display.setTextSize(1);

  display.setTextColor(SSD1306_WHITE);

  

  // Reset kedudukan musuh

  for(int i = 0; i < 3; i++) {

    enemies[i].active = false;

  }

  

  // Reset pemain

  player.x = SCREEN_WIDTH/2;

  player.score = 0;

  player.lives = 3;

}


void loop() {

  // Baca input

  handleInput();

  

  // Update game state

  updateGame();

  

  // Lukis skrin

  drawGame();

  

  delay(50);

}


void handleInput() {

  // Gerakkan pemain ke kiri

  if(digitalRead(BUTTON_LEFT) == LOW) {

    player.x = max(player.width/2, player.x - 2);

  }

  

  // Gerakkan pemain ke kanan

  if(digitalRead(BUTTON_RIGHT) == LOW) {

    player.x = min(SCREEN_WIDTH - player.width/2, player.x + 2);

  }

  

  // Tembak peluru (automatik)

  if(!bullet.active && millis() - lastBulletFired > 500) {

    bullet.x = player.x;

    bullet.y = player.y - 5;

    bullet.active = true;

    lastBulletFired = millis();

  }

}


void updateGame() {

  // Update peluru

  if(bullet.active) {

    bullet.y -= 3;

    if(bullet.y < 0) bullet.active = false;

  }

  

  // Spawn musuh baharu

  if(millis() - lastEnemySpawn > 2000) {

    for(int i = 0; i < 3; i++) {

      if(!enemies[i].active) {

        enemies[i].x = random(10, SCREEN_WIDTH-10);

        enemies[i].y = 0;

        enemies[i].active = true;

        lastEnemySpawn = millis();

        break;

      }

    }

  }

  

  // Update musuh

  for(int i = 0; i < 3; i++) {

    if(enemies[i].active) {

      enemies[i].y += 1;

      

      // Periksa perlanggaran dengan peluru

      if(bullet.active && 

         abs(bullet.x - enemies[i].x) < 8 && 

         abs(bullet.y - enemies[i].y) < 8) {

        enemies[i].active = false;

        bullet.active = false;

        player.score += 10;

      }

      

      // Periksa perlanggaran dengan pemain

      if(abs(enemies[i].x - player.x) < 8 && 

         abs(enemies[i].y - player.y) < 8) {

        enemies[i].active = false;

        player.lives--;

        if(player.lives <= 0) {

          initGame();

          return;

        }

      }

      

      // Reset musuh jika keluar skrin

      if(enemies[i].y > SCREEN_HEIGHT) {

        enemies[i].active = false;

      }

    }

  }

}


void drawGame() {

  display.clearDisplay();

  

  // Lukis pemain

  display.fillTriangle(

    player.x, player.y - 4,

    player.x - 4, player.y + 4,

    player.x + 4, player.y + 4,

    SSD1306_WHITE);

  

  // Lukis peluru

  if(bullet.active) {

    display.drawPixel(bullet.x, bullet.y, SSD1306_WHITE);

  }

  

  // Lukis musuh

  for(int i = 0; i < 3; i++) {

    if(enemies[i].active) {

      display.drawRect(enemies[i].x - 4, enemies[i].y - 4, 8, 8, SSD1306_WHITE);

    }

  }

  

  // Papar skor dan nyawa

  display.setCursor(0,0);

  display.print("Score:");

  display.print(player.score);

  

  display.setCursor(SCREEN_WIDTH-30,0);

  for(int i = 0; i < player.lives; i++) {

    display.print("<3 ");

  }

  

  display.display();

}

-------------------------------------------------------------------------------------------------------------------------

Sunday, January 12, 2025

Lora APRS Igate setup

 

Lora Aprs Igate 9W2DCW-10 
Langkah 1

Pergi ke laman web ini untuk flash firmware Lora APRS Igate, link seperti di bawah.

https://richonguzman.github.io/lora-igate-web-flasher/installer.html

kemudian paparan ini akan kelihatan.


pada baris atas iaitu Board (enviroment) pilih board yang sesuai dengan board yang ada pada kita, 

pada saya ada board LILYGO TTGO  Lora32 V1.6.1 seperti gambar di bawah.

V1.6.1
maka saya pilih board ni lah pada web flasher tu.


kemudian tekan Flash Firmware dalam kotak hijau tu dan paparan ini akan muncul.


pilih port USB Single Serial tu dan tekan connect


paparan ini akan muncul dan klik Install ttgo-lora32-v21 factory.json. kemudian paparan dibawah akan muncul dan tick erase device dan tekan next.

kemudian paparan diatas akan muncul dan tick erase device dan tekan next.

kemudian paparan dibawah akan muncul dan klik install.


tunggu sehingga dia selesai spt dibawah


dan tunggu lagi seperti di bawah...


dan tunggu lagi 


sehinggalah keluar gambar ini.


dan selesai, anda boleh tutup web flasher ini dan jom ke langkah 2

Langkah 2

Dalam langkah 2 ini kita akan connect atau link-kan Lilygo kita dengan komputer untuk masuk ke dalamnya untuk proses setting. Cara untuk masuk ke dalam Lilygo ini adalah dengan menggunakan wifi.


cari SSID NOCALL-10-AP dan masuk, passwordnya ialah 1234567890


kemudian buka browser anda, dan taip IP 192.168.4.1. dimana saya dapat IP ini? saya dapat dengan melihatnya di screen LILYGO tersebut. 


pada browser anda taip IP tersebut. seperti di bawah.


kemudian, paparan seperti di bawah akan muncul, dan boleh lah kita isi segala butirannya.


Langkah 3 - Pengisian data

anda boleh mengisi seperti di bawah dan hanya perlu ubah ikut station anda seperti callsign, dan latitude dan longitud

Station

wifi


APRS-IS



                                                                           Beaconing


                                                                     Black list dan Digipeating


                                                 LORA, ubah freq ke 433.400

                                                                Display dan Battery


                                                            WXtelemetry, syslog dan tnc


                                                          reboot time, wifi auto IP dan OTA


kemudian tekan button save warna hijau tu dan siaplah... untuk pastikan samada jadi ke, sila tgk di aprs.fi. jika jadi akan keluar macam ni.


Igate Lora akan papar simbol L latarbelakang merah. dan pada screen Lilygo anda akan terpapar seperti ini. lihat bawah.


                     semoga bermanfaat, selamat ber-LORA dan semoga berjumpa lagi. 73 de 9m2zak

Monday, January 6, 2025

Meshtastic Setup

 Meshtastic setup : Flash board anda disini dahulu : https://flasher.meshtastic.org/ kemudian

 Pastikan lilygo/tbeam/heltec/tdeck anda connect dengan bluetooth di telefon

anda terlebih dahulu. Download dahulu apps meshtastic di google play (android) atau app store (apple).

Pada apps Meshtastic, terus klik Setting dan setup 3 perkara ini iaitu Lora, Channels dan MQTT.

---------------------------------------------------------------------------------------------------------------------------------------------

Lora

Modem preset = LONG_FAST

Frequency offset (MHz) = 0.0

Region (Frequency plan) = Malaysia 919MHz

Hop Limit = 3

TX enabled = True

TX power (dBm) = 27

Frequency slot = 16

Override Duty Cycle = False

SX126X RX boosted gain = True

Override frequency (MHz) = 922.875

Ignore MQTT = False

OK to MQTT = True

 

MQTT

MQTT Config

MQTT enabled = True

Address = mqtt.lucifernet.com

Username = meshdev

Password = large4cats

Encrytion enabled = True

JSON output enabled = False

TLS enabled = False

Root topic = msh/MY_919

Proxy to client enabled = False jika guna wifi, True jika guna Bluetooth

Map Reporting = True

Precise location = True

Map reporting interval (seconds) = 0

 

Channel

 Channels name = LongFast

PSK = AQ==

Uplink enabled = True

Downlink enabled = True

Position enabled = True

Precise location = True

 

Active satellites 9 Feb 2025

Semoga bermanfaat 73 de 9m2zak.