Wednesday, 22 September 2021

Cara upload HEX file untuk arduino Pro Mini

Salam sejahtera kepada semua pembaca. 

Pengenalan. 
Terdapat banyak cara untuk upload HEX file ke arduino uno, mega dan nano. Tetapi kali ni saya ingin berkongsi cara untuk upload HEX file ke dalam ARDUINO PRO MINI melalui USB FTDI.

Langkah.
1. Plug arduino anda ke PC. sambungkan arduino dan FTDI converter seperti disini.
2. Pilih board. Tool > Board > Arduino Pro or PRO Mini.
3. Pilih processor board. Tool > Processor > ATMega328p (5v,16Mhz)
4. Pilih port board. Tool > COMxx (mengikut com usb anda)
5. Tekan File > Preference - Show verbose output during - (check box) upload.
6. Upload  sebarang coding kedalam arduino anda.

pada bahagian bawah Arduino IDE. baris ketiga akan terdapat kenyataan begini.

C:\Users\Eawan\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/bin/avrdude -CC:\Users\Eawan\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf -v -patmega328p -carduino -PCOM8 -b57600 -D -Uflash:w:C:\Users\Eawan\AppData\Local\Temp\arduino_build_102101/Blink01.ino.hex:i 

7. Pilih dan salin AVRDUDE command tersebut.
8. Tukar pada bahagian yang saya underline mengikut lokasi file HEX anda.
9. Salin semula AVRDUDE command tersebut dan paste pada windows COMMAND PROMPT.
10. Tekan ENTER dan tunggu sehingga process selesai.





Selesai....


Selamat mencuba...



PENAFIAN : EAWAN, 9W2NFE sama sekali tidak akan bertanggungjawab diatas sebarang ketidaktepatan maklumat yang didapati dilaman blog ini dan segala kemungkinan yang timbul disebabkan ketidaktepatan maklumat tersebut. Segala pengambilan maklumat dan ujikaji yang dilakukan melalui laman blog ini adalah diatas risiko sendiri Sebarang kemuskilan atau pertanyaan boleh hubungi saya. 
WHATAPSS MAFeS

Wednesday, 1 September 2021

Arduino Semi Auto wire dispenser

Salam sejahtera kepada semua pembaca. 

Pengenalan. 
Projek ini menggunakan stepper motor untuk mengukur secara automatik kepanjangan wayar yang diperlukan apabila push button ditekan. seterusnya menambah nilai 1 kepada counter. 

Komponen yang digunakan.
1. Arduino Uno
2. A4988 stepper driver
3. Stepper motor
4. Push button
5. Resistor 10K
6. Jumper wire.


Penyambungan. 





Coding. 

// Define stepper motor connections and steps per revolution:
#define dirPin 2
#define stepPin 3
#define stepsPerRevolution 400 //tuning step feeding
#define button01 7 // start button
int buttonState = 0; 
int count =0; // counter

void setup() {
  // Declare pins as output:
  pinMode(stepPin, OUTPUT);
  pinMode(dirPin, OUTPUT);
  pinMode(button01, INPUT);
  Serial.begin(9600);
}

void loop() {
    buttonState = digitalRead(button01);

  if (buttonState == HIGH){
  // Set the spinning direction clockwise:
  digitalWrite(dirPin, LOW);

  // Spin the stepper motor 1 revolution slowly:
  for (int i = 0; i < stepsPerRevolution; i++) {
    // These four lines result in 1 step:
    digitalWrite(stepPin, HIGH);
    delayMicroseconds(2000);
    digitalWrite(stepPin, LOW);
    delayMicroseconds(2000);
  }
  count = count+1;
  Serial.println(count);
  delay(500);
  
  }

  else{
    
  }

}



PENAFIAN : EAWAN, 9W2NFE sama sekali tidak akan bertanggungjawab diatas sebarang ketidaktepatan maklumat yang didapati dilaman blog ini dan segala kemungkinan yang timbul disebabkan ketidaktepatan maklumat tersebut. Segala pengambilan maklumat dan ujikaji yang dilakukan melalui laman blog ini adalah diatas risiko sendiri Sebarang kemuskilan atau pertanyaan boleh hubungi saya. 
WHATAPSS MAFeS

Wednesday, 14 July 2021

Pengujian Jarak NRF24L01


Salam sejahtera kepada semua pembaca. 

Pengenalan. 
Projek ini bertujuan menilai jarak maksimum pemancaran dan penerimaan gelombang 2.4Ghz yang berkuasa rendah untuk penghantaran sesuatu data. Projek ini boleh digunakan untuk menilai Hardware Setup yang telah disediakan sebelum digunakan untuk penghantaran data sebenar mengguna hardware setup yang sama.
Transmitting dan receiving boleh ditambah baik dengan beberapa kaedah mengikut keadaan lokasi hardware berada seperti:- 
1. Ketinggian antenna dari paras tanah.
    - Lebih tinggi antenna dari tanah bermakna ia makin kurang halangan seperti pokok, bangunan dan sebagainya.
2. Jenis antenna.
   - Terdapat beberapa jenis antenna yang boleh digunakan mengikut keperluan. Contohnya antenna Yagi, berguna apabila kita tahu arah penalaan antenna yang membolehkan penerimaan atau pemancaran pada tahap yg optimum. Antenna omni yang berguna untuk penerimaan atau pemancaran gelombang pada kawasan yang lebih luas.
3. Kuasa pancaran.
  - Mempengaruhi jarak pemancaran dan penggunaan bekalan kuasa. Lebih kuat kuasa pancaran, lebih jauh capaian gelombang dan juga makin lebih penggunaan bekalan kuasa, ini bermakna bateri anda makin cepat lemah.


Biquad Omni Antenna


Omni Antenna

Parabolic antenna



Patch antenna



Yagi Antenna


Contoh cara pemasangan antenna mengikut keperluan.








Penyambungan




Coding

Transmitter

 
/*
Simple transmitter, just sends 12-byte packet continously
nRF24L01 library: https://github.com/gcopeland/RF24
 
nRF24L01 connections
 1 - GND
 2 - VCC 3.3V !!! Ideally 3.0v, definitely not 5V
 3 - CE to Arduino pin 9
 4 - CSN to Arduino pin 10
 5 - SCK to Arduino pin 13
 6 - MOSI to Arduino pin 11
 7 - MISO to Arduino pin 12
 8 - UNUSED
 
*/
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
 
const uint64_t pipeOut =  0xE8E8F0F0E1LL;
 
// The sizeof this struct should not exceed 32 bytes
struct PacketData {
  unsigned long hours;
  unsigned long minutes;
  unsigned long seconds;
};
 
PacketData data;
 
RF24 radio(9, 10);
 
void setup() {
  radio.begin();
  radio.setAutoAck(false);
  radio.setDataRate(RF24_250KBPS);
  radio.openWritingPipe(pipeOut);
 
  data.hours = 0;
  data.minutes = 0;
  data.seconds = 0;   
}
 
unsigned long lastTick = 0;
 
void loop() {
  unsigned long now = millis();
  if ( now - lastTick >= 1000 ) {
    data.seconds++;
    if ( data.seconds >= 60 ) {
      data.seconds = 0;
      data.minutes++;
    }
    if ( data.minutes >= 60 ) {
      data.minutes = 0;
      data.hours++;
    }
    lastTick = now;
  }
   
  radio.write(&data, sizeof(PacketData));   
}



Receiver

 
/*
Simple receiver to display how many packets per second are being received
nRF24L01 library: https://github.com/gcopeland/RF24
I2C OLED screen library: https://github.com/olikraus/u8glib
 
nRF24L01 connections
 1 - GND
 2 - VCC 3.3V !!! Ideally 3.0v, definitely not 5V
 3 - CE to Arduino pin 9
 4 - CSN to Arduino pin 10
 5 - SCK to Arduino pin 13
 6 - MOSI to Arduino pin 11
 7 - MISO to Arduino pin 12
 8 - UNUSED
 
OLED connections
 GND - GND
 VCC - VCC
 SDA - Arduino pin A4
 SCL - Arduino pin A5
 
*/
 
#include <SPI.h>
#include "U8glib.h"
#include <nRF24L01.h>
#include <RF24.h>
 
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST);       // Fast I2C / TWI
 
const uint64_t pipeIn =  0xE8E8F0F0E1LL;
 
RF24 radio(9, 10);
 
// The sizeof this struct should not exceed 32 bytes
struct PacketData {
  unsigned long hours;
  unsigned long minutes;
  unsigned long seconds;
};
 
PacketData data;
 
/**************************************************/
 
int packetCounts[10];
int packetCountIndex = 0;
int packetCountTotal = 0;
 
#define AVG_SECONDS 10
 
int avgs[AVG_SECONDS];
int avgIndex = 0;
unsigned long avgTotal = 0;
 
void setup()
{
  Serial.begin(115200);
  // Set up radio module
  radio.begin();
  radio.setDataRate(RF24_250KBPS);
  radio.setAutoAck(false);
  radio.openReadingPipe(1,pipeIn);
  radio.startListening();
 
  u8g.setColorIndex(1);
  u8g.setFont(u8g_font_fur11);
 
  memset(&data, 0, sizeof(PacketData)); 
  memset( packetCounts, 0, sizeof(packetCounts) );
  memset( avgs, 0, sizeof(avgs) );
}
 
unsigned long packetsRead = 0;
unsigned long lastScreenUpdate = 0;
unsigned long lastAvgUpdate = 0;
unsigned long lastRecvTime = 0;
unsigned long drops = 0;
 
/**************************************************/
 
void recvData()

  while ( radio.available() ) {       
    radio.read(&data, sizeof(PacketData));
    packetsRead++;
    lastRecvTime = millis();
  }
}
 
/**************************************************/
 
char ppsBuf[16];
char avgBuf[16];
char hmsBuf[16];
 
void draw() {
  u8g.drawStr( 2, 24, ppsBuf);
  u8g.drawStr( 2, 40, avgBuf);
  u8g.drawStr( 2, 56, hmsBuf);
}
 
void updateScreen()

  unsigned long now = millis();
  if ( now - lastScreenUpdate < 100 )
    return;
   
  // moving average over 1 second
  packetCountTotal -= packetCounts[packetCountIndex];
  packetCounts[packetCountIndex] = packetsRead;
  packetCountTotal += packetsRead;
 
  packetCountIndex = (packetCountIndex + 1) % 10;
  packetsRead = 0;
 
  sprintf(ppsBuf, "PPS: %d", packetCountTotal);
  sprintf(avgBuf, "AVG: %ld", avgTotal / AVG_SECONDS);
  sprintf(hmsBuf, "%02ld:%02ld:%02ld", data.hours, data.minutes, data.seconds);
 
  u8g.firstPage();
  do {
    draw();
  }
  while( u8g.nextPage() );
 
  lastScreenUpdate = millis();
 
  if ( now - lastAvgUpdate >= 1000 ) {   
    // moving average of 1 second moving average
    avgTotal -= avgs[avgIndex];
    avgs[avgIndex] = packetCountTotal;
    avgTotal += packetCountTotal;
 
    avgIndex = (avgIndex + 1) % AVG_SECONDS;
    lastAvgUpdate = millis();
  }
}
 
/**************************************************/
 
void loop()
{
  recvData();
  updateScreen();
}
 
 

 

 

PENAFIAN : EAWAN, 9W2NFE sama sekali tidak akan bertanggungjawab diatas sebarang ketidaktepatan maklumat yang didapati dilaman blog ini dan segala kemungkinan yang timbul disebabkan ketidaktepatan maklumat tersebut. Segala pengambilan maklumat dan ujikaji yang dilakukan melalui laman blog ini adalah diatas risiko sendiri Sebarang kemuskilan atau pertanyaan boleh hubungi saya.

WHATAPPS MAFeS




Sunday, 29 November 2020

ESP-Now menggunakan WEMOS D1 mini Pro

Salam sejahtera kepada semua pembaca. 




Pengenalan. 
ESP-NOW adalah sejenis protokol komunikasi Wi-Fi tanpa sambungan yang ditentukan oleh Espressif. Dalam ESP-NOW, data aplikasi dipaketkan dalam satu kerangka dan kemudian dihantar dari satu peranti Wi-Fi ke yang lain tanpa sebarang sambungan Wi-Fi router. CTR with CBC-MAC Protocol (CCMP) digunakan untuk melindungi kerangka tindakan untuk keselamatan. ESP-NOW digunakan secara meluas dalam cahaya pintar, alat kawalan jauh, sensor dan pelbagai lagi.

Komponen yang digunakan.
1. WEMOS D1 mini Pro
2. Push button
3. LED
4. Jumper wire


Penyambungan. 
Amaran: Kebanyakan ESP module hanya menggunakan 3.3V logic level. Sila pastikan penyambungan anda sebelum memasukan bekalan kuasa untuk mengelakkan kerosakan modul.

Master.
1. Push button 1 - D1
2. Push button 2 - D2
3. LED 1 - D0

Slave.
1. LED 1 - D1
2. LED 2 - D2

Coding. 










PENAFIAN : EAWAN, 9W2NFE sama sekali tidak akan bertanggungjawab diatas sebarang ketidaktepatan maklumat yang didapati dilaman blog ini dan segala kemungkinan yang timbul disebabkan ketidaktepatan maklumat tersebut. Segala pengambilan maklumat dan ujikaji yang dilakukan melalui laman blog ini adalah diatas risiko sendiri Sebarang kemuskilan atau pertanyaan boleh hubungi saya. 
WHATAPSS MAFeS

Sunday, 30 August 2020

Konsep Sink dan Source.


    Semasa memilih jenis modul input atau output untuk sistem PLC anda, sangat penting untuk mempunyai pemahaman yang kuat mengenai konsep sink dan source. Penggunaan istilah ini sering berlaku dalam perbincangan mengenai litar input atau output. Tujuan posting ini adalah untuk menjadikan konsep-konsep ini mudah difahami, jadi anda dapat membuat pilihan yang tepat pada kali pertama ketika memilih jenis isyarat I / O untuk penggunaan anda. Catatan ini memberikan definisi pendek, diikuti oleh litar contoh umum.

    Anda akan melihat bahawa gambar rajah di halaman ini dikaitkan dengan litar DC sahaja dan bukan AC, kerana merujuk kepada polariti (+) dan (-). Oleh itu, istilah sinking dan soucing hanya berlaku untuk rangkaian input dan output DC. Isyarat input dan output sinking atau sourcing boleh mengalirkan arus dalam satu arah sahaja. Ini bermaksud mungkin untuk menyambungkan bekalan luaran dan peranti medan ke titik I / O, dengan arus cuba mengalir ke arah yang salah, dan litar tidak akan beroperasi. Walau bagaimanapun, alat bekalan dan medan dapat disambungkan setiap kali berdasarkan pemahaman mengenai sumber dan tenggelam.

    Gambarajah di bawah menunjukkan input sinking dan sourcing serta output sinking serta sourcing. Untuk menyambungkan bekalan luaran dengan betul, ia mesti disambungkan sehingga input bersambung penuh dengan bekalan common (-). Jadi, mulakan di terminal input PLC, ikuti litar isyarat input, keluar di terminal common, dan sambungkan bekalan (-) ke terminal common. Dengan menambahkan suis antara bekalan (+) dan input, litar bersambung penuh. Arus akan mengalir ke arah anak panah apabila suis ditutup.











PENAFIAN : EAWAN, 9W2NFE sama sekali tidak akan bertanggungjawab diatas sebarang ketidaktepatan maklumat yang didapati dilaman blog ini dan segala kemungkinan yang timbul disebabkan ketidaktepatan maklumat tersebut. Segala pengambilan maklumat dan ujikaji yang dilakukan melalui laman blog ini adalah diatas risiko sendiri Sebarang kemuskilan atau pertanyaan boleh hubungi saya. Whatsapp MAFeS One Stop Center

Wednesday, 3 June 2020

Jam RTC Dot Matrix


Komponen yang diperlukan:

  1. Arduino. (saya guna arduino pro mini)
  2. Module RTC DS1307
  3. Button
  4. Dot Matrix I2C


Penyambungan untuk modul DS1307:

  1. SDA ke Arduino analog pin 4
  2. SCL ke Arduino analog pin 5
  3. 5v ke Arduino pin 5v
  4. GND ke Arduino pin GND
  5. Penyambungan butang kawalan



  1. Button 1 ke Arduino digital pin 2 dan GND
  2. Button 2 ke Arduino digital pin 3 dan GND


CODING:
















PENAFIAN : EAWAN, 9W2NFE sama sekali tidak akan bertanggungjawab diatas sebarang ketidaktepatan maklumat yang didapati dilaman blog ini dan segala kemungkinan yang timbul disebabkan ketidaktepatan maklumat tersebut.
Segala pengambilan maklumat dan ujikaji yang dilakukan melalui laman blog ini adalah diatas risiko sendiri
Sebarang kemuskilan atau pertanyaan boleh hubungi saya.
Whatsapp MAFeS One Stop Center