Back to Top
  • Expert SEO Services for Winning Inetrnet Marketing Campaign

    Nullam dignissim convallis est.Quisque aliquam. Donec faucibus. Nunc iaculis suscipit dui.Nam sit amet sem. Aliquam libero nisi, imperdiet at, tincidunt nec, gravida vehicula, nisl.

    LEARN MORE

  • We Exceed Your Expectation to Improve Rank and Traffic of Your Business

    Nullam dignissim convallis est.Quisque aliquam. Donec faucibus. Nunc iaculis suscipit dui.Nam sit amet sem. Aliquam libero nisi, imperdiet at, tincidunt nec, gravida vehicula, nisl.

    LEARN MORE

Membuat Lampu LED Mengikuti Irama Musik

Pernah melihat konser yang dipenuhi dengan berbagai lampu ? dan Lampunya berkedap kedip sesuai dengan irama musik yang ditampilkan. 

Arduino sebagai base utama, menggunakan FFT Library untuk mendecode suara ke dalam oktaf, kemudian Fastled library untuk memberikan informasi ke Led Strip.

Nah, Kali ini kita akan mencoba untuk membuatnya. Berikut bahan-bahan dan resepnya :

Komponen Hardware:

  1. Arduino Nano R3
  2. LED Strip
  3. Max 4466 Amplifier
  4. Potensiometer 10K Ohm
          Berfungsi untuk untuk mengontrol suara
  1. Power Supply 12 V 1.5 A
  2. 5V DC-DC Converter
Software :
Arduino


SKEMA RANGKAIAN




SKETCH  ARDUINO




#include "FastLED.h"

// How many leds in your strip?
#include 


#define OCTAVE 1 //   // Group buckets into octaves  (use the log output function LOG_OUT 1)
#define OCT_NORM 0 // Don't normalise octave intensities by number of bins
#define FHT_N 256 // set to 256 point fht
#include  // include the library
//int noise[] = {204,188,68,73,150,98,88,68}; // noise level determined by playing pink noise and seeing levels [trial and error]{204,188,68,73,150,98,88,68}


// int noise[] = {204,190,108,85,65,65,55,60}; // noise for mega adk
//int noise[] = {204,195,100,90,85,80,75,75}; // noise for NANO
int noise[] = {204,198,100,85,85,80,80,80};
float noise_fact[] = {15, 7, 1.5, 1, 1.2, 1.4, 1.7,3}; // noise level determined by playing pink noise and seeing levels [trial and error]{204,188,68,73,150,98,88,68}
float noise_fact_adj[] = {15, 7, 1.5, 1, 1.2, 1.4, 1.7,3}; // noise level determined by playing pink noise and seeing levels [trial and error]{204,188,68,73,150,98,88,68}


#define LED_PIN     5
#define LED_TYPE    WS2811
#define COLOR_ORDER GRB


// Params for width and height
const uint8_t kMatrixWidth = 11;
const uint8_t kMatrixHeight = 27;
 #define NUM_LEDS (kMatrixWidth * kMatrixHeight)
//#define NUM_LEDS    15

CRGB leds[NUM_LEDS];

int counter2=0;



void setup() { 
//  Serial.begin(115200);
  delay(1000);
  FastLED.addLeds(leds, NUM_LEDS).setCorrection( TypicalLEDStrip );
  
  FastLED.setBrightness (200);
  fill_solid(leds, NUM_LEDS, CRGB::Black); 
  FastLED.show();    
// TIMSK0 = 0; // turn off timer0 for lower jitter
  ADCSRA = 0xe5; // set the adc to free running mode
  ADMUX = 0x40; // use adc0
  DIDR0 = 0x01; // turn off the digital input for adc0

}




void loop() { 
int prev_j[8];
int beat=0;
int prev_oct_j;
int counter=0;
int prev_beat=0;
int led_index=0;
int saturation=0;
int saturation_prev=0;
int brightness=0;
int brightness_prev=0;

 while (1) { // reduces jitter

      cli();  // UDRE interrupt slows this way down on arduino1.0
     
  for (int i = 0 ; i < FHT_N ; i++) { // save 256 samples
      while (!(ADCSRA & 0x10)); // wait for adc to be ready
      ADCSRA = 0xf5; // restart adc
      byte m = ADCL; // fetch adc data
      byte j = ADCH;
      int k = (j << 8) | m; // form into an int
      k -= 0x0200; // form into a signed int
      k <<= 6; // form into a 16b signed int
      fht_input[i] = k; // put real data into bins
    }
    fht_window(); // window the data for better frequency response
    fht_reorder(); // reorder the data before doing the fht
    fht_run(); // process the data in the fht
    fht_mag_octave(); // take the output of the fht  fht_mag_log()

   // every 50th loop, adjust the volume accourding to the value on A2 (Pot)
    if (counter >= 50) {
      ADMUX = 0x40 | (1 & 0x07); // set admux to look at Analogpin A1 - Master Volume
 

      while (!(ADCSRA & 0x10)); // wait for adc to be ready
      ADCSRA = 0xf5; // restart adc 
  delay(10);      
      while (!(ADCSRA & 0x10)); // wait for adc to be ready
      ADCSRA = 0xf5; // restart adc 
      byte m = ADCL; // fetch adc data
      byte j = ADCH;
      int k = (j << 8) | m; // form into an int
      float master_volume=(k+0.1)/1000 +.5;  // so the valu will be between ~0.5 and 1.5
 // Serial.println (master_volume);


      for (int i=1; i<8; i++) {
          noise_fact_adj[i]=noise_fact[i]*master_volume;
      }

      ADMUX = 0x40 | (0 & 0x07); // set admux back to look at A0 analog pin (to read the microphone input
      counter = 0;
    }
        
    sei();
    counter++;
 
     
    // End of Fourier Transform code - output is stored in fht_oct_out[i].

    // i=0-7 frequency (octave) bins (don't use 0 or 1), fht_oct_out[1]= amplitude of frequency for bin 1
    // for loop a) removes background noise average and takes absolute value b) low / high pass filter as still very noisy
    // c) maps amplitude of octave to a colour between blue and red d) sets pixel colour to amplitude of each frequency (octave)
 
    for (int i = 1; i < 8; i++) {  // goes through each octave. skip the first 1, which is not useful

      int j;      
      j = (fht_oct_out[i] - noise[i]); // take the pink noise average level out, take the asbolute value to avoid negative numbers
      if (j<10) {j=0;}  
      j= j*noise_fact_adj[i];
       
      if (j<10) {j=0;}
      else {  
        j= j*noise_fact_adj[i];
        if (j>180) {
          if (i>=7) {
            beat+=2;
          }
          else {
            beat+=1;
          }
        }
        j=j/30;
        j=j*30; // (force it to more discrete values)
      }
      
      prev_j[i]=j;

//     Serial.print(j);
//     Serial.print(" "); 

 
// this fills in 11 LED's with interpolated values between each of the 8 OCT values 
       if (i>=2) {
        led_index=2*i-3;
        prev_oct_j=(j+prev_j[i-1])/2;
        
        saturation=constrain(j+30, 0,255);
        saturation_prev=constrain(prev_oct_j+30, 0,255);
        brightness=constrain(j, 0,255);
        brightness_prev=constrain(prev_oct_j, 0,255);
if (brightness==255) {
  saturation=50;
  brightness=200;
}
if (brightness_prev==255) {
  saturation_prev=50;
  brightness_prev=200;
}


        for (uint8_t y=0;y2){         
            prev_oct_j=(j+prev_j[i-1])/2;
            leds[ XY(led_index-2,y)]=CHSV(prev_oct_j+y*30,saturation_prev, brightness_prev);             
          }              
        }
       }
    }
      


      if (beat>=7) {
          fill_solid(leds, NUM_LEDS, CRGB::Gray);          
          FastLED.setBrightness(120);


 //    FastLED.setBrightness(200);

      }                 
    else {
      if (prev_beat!=beat) {
        FastLED.setBrightness(40+beat*beat*5);
        prev_beat=beat;
      }

    }

    FastLED.show(); 
    if (beat) {
      counter2+=((beat+4)/2-2);
      if (counter2<0) {counter2=1000;}
      if (beat>3 && beat<7) {
         FastLED.delay (20);
      }
      beat=0;
    }

// Serial.println();
 }
}



// Param for different pixel layouts
const bool    kMatrixSerpentineLayout = true;
// Set 'kMatrixSerpentineLayout' to false if your pixels are 
// laid out all running the same way, like this:

// Set 'kMatrixSerpentineLayout' to true if your pixels are 
// laid out back-and-forth, like this:

uint16_t XY( uint8_t x, uint8_t y)
{
  uint16_t i;
  
  if( kMatrixSerpentineLayout == false) {
    i = (y * kMatrixWidth) + x;
  }

  if( kMatrixSerpentineLayout == true) {
    if( y & 0x01) {
      // Odd rows run backwards
      uint8_t reverseX = (kMatrixWidth - 1) - x;
      i = (y * kMatrixWidth) + reverseX;

    } else {
      // Even rows run forwards
      i = (y * kMatrixWidth) + x;

    }
  }
  
  i=(i+counter2)%NUM_LEDS;  
  return i;
}

Mengenal ESP32

ESP32


ESP32 merupakan salah satu jenis mikrokontroller populer, yang biasanya digunakan untuk berbagai project IOT (Internet of Thing), ESP32 adalah generasi penerus dari ESP8266 (NodeMCU). ESP32 dilengkapi dengan fitur WIFI dan bluetooth. 


ESP8266

Secara fisik, tampilan ESP32 dengan NodeMCU terlihat identik sama, hanya saja perbedaannya ada pada processor yang digunakan dan penerapan bluetooth.

Perbandingan ESP32 dengan ESP8266



Deteksi Masker Menggunakan Python OpenCV dan NodeMCU


Turut berduka cita atas semua orang yang terkena kasus Covid 19, yang kian hari kian mengganas, saat ini negara yang terdampaknya sangat parah adalah India. 

Penggunaan masker adalah salah satu yang bisa kita terapkan guna meminimalisir terkena covid 19, namun masalahnya adalah masih banyak yang enggan menggunakan masker, maka disini perlu penerapan teknologi tepat guna agar masyarakat selalu sadar. 

Hardware yang dibutuhkan :

  1. Projectboard
  2. NodeMCU
  3. Sensor Ping
  4. Kabel Jumper
  5. Kamera Webcam
Software

Arduino IDE

Goal Project

Alat bisa mendeteksi orang yang menggunakan masker dengan yang tidak menggunakan.

Cara Kerja

Sensor Ping / Ultrasonik

Berfungsi untuk mendeteksi apakah ada orang didepan kamera atau tidak. 


NodeMCU
adapun NodeMCU berfungsi sebagai server, yang terhubung ke program python melalui kabel serial

import serial
m5 = serial.Serial('COM5', 115200, timeout=.1)# change port as per your Nodemcu Port
while True:
	da = m5.readline()[:-2]
	if da==b'H'
           print("data recived")



Kode untuk NodeMCU


#include 
#include 

const char* ssid = "ssid";
const char* password = "pass";

#define echoPin 5 
#define trigPin 4
long duration; 
int distance;
int val;
int irs = 2;
//int pump = 14;

Servo myservo;
WiFiServer server(80);

void setup() {
  WiFi.softAPdisconnect (true);
  Serial.begin(115200);
  delay(10);
  myservo.attach(0)
  myservo.write(0);
  pinMode(irs, INPUT);
  //pinMode(pump,OUTPUT);
  pinMode(trigPin, OUTPUT); 
  pinMode(echoPin, INPUT);
 
  WiFi.begin(ssid, password);
 
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
  }

  server.begin();
  
 Serial.print(WiFi.localIP());
  
}
 
void loop() {
  int irsval = digitalRead(irs);
  digitalWrite(trigPin, 0);
  delayMicroseconds(2);
  digitalWrite(trigPin, 1);
  delayMicroseconds(10);
  digitalWrite(trigPin, 0);
  duration = pulseIn(echoPin, 1);
  distance = duration * 0.034 / 2; 
  if (distance < 45){
    Serial.println('H');
    delay(2000);
  }
  WiFiClient client = server.available();
  if (!client) {
    return;
  }
 
  while(!client.available()){
    delay(1);
  }
 
  String request = client.readStringUntil('\r');
  client.flush();
  
  if (request.indexOf("/M") != -1){
    myservo.write(90);
    delay(1000);
    myservo.write(0);
  }
  else if (request.indexOf("/P") != -1)  {
    Serial.println('D');
    delay(30000);
    if(irsval==0){
      Serial.println('S');
    }
  }
  
  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/html");
  client.println(""); 
  client.println("");
  client.println("");
  client.println("
"); client.println("

ATI SYSTEMS

"); client.println("
"); client.println(""); delay(1); }
Kode Untuk Python OpenCV


import cv2
import serial
import webbrowser
import pyttsx3

engine = pyttsx3.init('sapi5')
voices = engine.getProperty('voices')
engine.setProperty('voice', voices[1].id)

def say(audio):
    engine.say(audio) 
    engine.runAndWait()
    
m5 = serial.Serial('COM8', 115200, timeout=.1)

face_cascade = cv2.CascadeClassifier('/Users/HP/Desktop/haarcascade_frontalface_default.xml')
mouth_cascade = cv2.CascadeClassifier('/Users/HP/Desktop/Mouth.xml')

cap = cv2.VideoCapture(1)

while True:
    da = m5.readline()[:-2]
    if da==b'H':
        ret, img = cap.read()
        img = cv2.flip(img,1)
        gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
        (thresh, black_and_white) = cv2.threshold(gray, 80, 255, cv2.THRESH_BINARY)
        faces = face_cascade.detectMultiScale(gray, 1.1, 4)
        faces_bw = face_cascade.detectMultiScale(black_and_white, 1.1, 4)
        for (x, y, w, h) in faces:
            cv2.rectangle(img, (x, y), (x + w, y + h), (0, 0, 255), 2)
            roi_gray = gray[y:y + h, x:x + w]
            roi_color = img[y:y + h, x:x + w]
            mouth_rects = mouth_cascade.detectMultiScale(gray, 1.5, 5)
            if(len(mouth_rects) == 0):
                print("MASK DETECTED")
            else:
                for (mx, my, mw, mh) in mouth_rects:
                    if(y < my < y + h):
                        print("NO MASK DETECTED")
                        say("sir please wear mask")
                        webbrowser.open('http://192.168.43.212/M')
                        break    
    elif da==b'D':
        say("sir please sanitize your hands")
    elif da==b'S':
        webbrowser.open('http://192.168.43.212/P')
    else:
        print("YOU ARE GREAT AJ")
    #cv2.imshow('frame',img)    
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
cap.release()
cv2.destroyAllWindows()

Referensi: https://www.hackster.io/javedbasira/python-opencv-nodemcu-mask-detection-9279bc

Sharing Printer Pada Windows 7

Paling sedikit harus ada 2 laptop yang harus disediakan, jika lebih dari 2 lebih baik. Salah satu laptop dijadikan sebagai PC yang mentransfer data, mensharing printer, dan mensharing internet. Laptop ini kita asumsikan menggunakan sistem operasi MS. Windows 7. Jika menggunakan Windows XP atau Windows 8 gak masalah, prinsip cara konfigurasinya hampir sama. Untuk menyamakan persepsi, saya gambarkan topologinya sebagai berikut:

Cara Cepat Membuat Kaos di Corel Draw

1. Pertama kalian buat pola atau bentuk baju dengan menggunakan Freehand tool.


2. Tapi jika kalian kesulitan untuk membuatnya kalian bisa import gambar baju kemudian kalian ikuti polanya dengan menggunakan Brezier tool.

3. Kemudian jika sudah hapus gambar baju yang di import tadi.
4. Selanjutnya kasih warna menggunakan Smart Fill tool seperti di bawah ini.
5. Hilangkan garis pinggir dengan cara blok semua nya kemudian pilih Outline pen > No outline.

6. Kemudian buat garis seperti di bawah ini menggunakan Freehand tool.
7. Garis yang ada di bagian dada dibuat melengkung menggunakan Shape tool seperti ini. Kalau kalian belum tau caranya Klik Disini
8. Beri warna menggunakan Smart Fill tool dan hilangkan garis pinggirnya seperti cara nomor 5.
9. Kemudian buat teks menggunakan Teks tool, buat tulisan sesuai selera kalian.
10. Kemudian buat lah lingkaran dengan Menggunakan Ellipse tool.

Baca Juga :
11. Select lingkaran yang dibuat pilih Artistic Media, lalu pilih jenis garisnya maka hasilnya kan seperti ini.
12. Kasih warna putih kemudian atur seperti ini.
13. Atur garisnya menjadi di belakang tulisan yang sudah kita buat tadi. Jika belum tau caranya Klik Disini.
14. Selesai

Keren banget kan hasilnya, kalian bisa berkreasi sesuka kalian deh heehe. Sekian dulu tutorial Cara Membuat Desain Kaos Distro Di CorelDraw X7. Semoga bermanfaat buat kalian semua dan selamat belajar di rumah. :)

Referensi. Halamantutr.xyz

Membuat Baju Kaos SMK Darussalam Banjarmanis

 


1. Sebelum mulai silahkan buat pola garis putus dengan melakukan klik pada bagian penggaris, klik dan tarik kedalam canvas.

Cara Membuat Design Baju Distro

[sociallocker id=”135″]

2. Buat bola baju dengan menggunakan bezier tool

Cara Membuat Design Baju Distro
Cara Membuat Design Baju Distro

3. Rapihkan setiap garis-garisnya agar terlihat bergelombang dengan menggunakan shape tool, selalu gunakan sub dari shape tool misalnya convert to curve, Pilih Shape tool dan klik pada salah satu titik (lihat bualatn coklat besar ), setelah itu pilih convert to curve, lalu tarik garis ke dalam/keluar (lihat buletan coklat kecil) untuk membuat/mengubah garis menjadi bergelombang.

Cara Membuat Design Baju Distro

Hasil dari proses shape

Cara Membuat Design Baju Distro

Tambahkan beberapa garis dengan freehand tool atau dengan bezier tool agar baju terlihat efek kusut.

Cara Membuat Design Baju Distro

4. Untuk menambahkan efek kusut yang realistis, anda bisa menggunakan Artistic Media Tool,

Cara Membuat Design Baju Distro

Atur beberapa poin yang dilingkari

Cara Membuat Design Baju Distro

buatlah garis sesuai pola garis yang telah dibuat tadi

Cara Membuat Design Baju Distro
Cara Membuat Design Baju Distro

Sebelum lanjut, silahkan beri warna terlebih dahulu dengan menggunakan color pallete

Cara Membuat Design Baju Distro

Lanjutkan dengan membuat pola garis lainnya dengan Artistic Media Tool, untuk membuat efek kusut.

Cara Membuat Design Baju Distro

5. Untuk menambahkan objek pada banju, anda bisa membuat sendiri dengan membuat garis lurus (gunakan 2 poin line). Ubahlah ujung awal garis dan akhir. (lihat gambar)

Cara Membuat Design Baju Distro
Cara Membuat Design Baju Distro

Untuk text gunakanlah Tetx Tool

Cara Membuat Design Baju Distro



Jika anda masih belum bisa membuat objek, anda bisa menggunakan Symbol Character

Cara Membuat Design Baju Distro

Pilih jenis Webding

Cara Membuat Design Baju Distro

Pilih salah satu gambar, klik dan drag kedalam canvas

Cara Membuat Design Baju Distro

[/sociallocker]
Hasil Akhir sepert diatas.