Desember 17, 2017

Cara Compile Telegram Cli pada Raspberry pi 3B

Telegram adalah applikasi chatting yang menurutku adalah yang terbaik saat ini bisa chat dari smartphone, laptop,bahkan dari sbc dengan menggunakan tgcli nah karena inilah aku akan menuliskan catatanku ketika mengompile telegram cli di raspberry pi 3b.
sebelum ngompile siapkan dependensi yang dibutuhkan
pi@raspberry:~$ sudo aptitude update
pi@raspberry:~$ sudo aptitude install libreadline-dev libconfig-dev libssl1.0-dev lua5.2 liblua5.2-dev libevent-dev libjansson-dev libpython-dev make





pi@raspberry:~$ git clone --recursive https://github.com/vysheng/tg.git && cd tg
pi@raspberry:~/tg$ nano tgl/mtproto-utils.c
cari static unsigned long long BN2ull (TGLC_bn *b) pada else if (sizeof (unsigned long long) == 8) cari assert(0); kasih komen seperti ini //assert(0); atau hapus aja hehe selanjutnya
pi@raspberry:~/tg$ ./configure
tunggu sampai selesai selanjutnya compile dengan
pi@raspberry:~/tg$ make -j3
tunggu sampai selesai ngompilenya
pi@raspberry:~/tg$ nano response.lua
 function on_msg_receive (msg)  
    if msg.out then  
      return  
    end  
    if (msg.text=='/ganteng') then  
        send_msg (msg.from.id, 'aku emang paling ganteng kok', ok_cb, false)  
    end  
 end  

save kemudian jalankan telegram cli dengan
pi@raspberry:~/tg$ bin/telegram-cli -k tg-server.pub -W -s response.lua
nanti akan diminta untuk memasukan no telpon dan juga code ikut instruksinya untuk mengirim chat  ketik msg displayname pesan yang akan dikirim dan satu lagi buka telegram dari smartphone atau device lainnya buka saved message dan chat dengan /ganteng atau kata kunci apapun yang kamu buat dio response.lua tgcli akan membalas sesuai yang terdefinisikan di response.lua

Agustus 14, 2017

menggunakan lcd 1602 pada arduino uno

lcd atau liquid crystal display adalah alat yang digunakan untuk menampilkan sesuatu agar terlihat pada suatu panel jadi kita bisa melihat text,gambar atau apapun yang akan kita lihat. lcd 1602 merupakan layar atau display yang hanya mampu menampung 16 karakter dan 2baris saja jadi tidak bisa digunakan menampilkan banyak karakter, meskipun demikian cukup kok untuk menampilkan informasi suhu, kelembaban, jarak, tegangan dll. tapi tidak cukup untuk menuliskan status alay eh.

tanpa banyak basa basi ayo mulai percobaan kita, solder kabel jumper male to male or male to female silahkan pilih sendiri. solder kabel jumper lubang vss, vdd, v0, rs, rw, e, d4, d5, d6, d7, anoda dan katoda
setelah itu hubungkan vss ke ground, vdd ke 5v, v0 ke ground/potentiometer, rs ke pin 10 arduino, rw ke ground , e ke pin 9, d4 ke pin 7 ,d5 ke pin 6, d6 ke pin 5, d7 ke pin 4, anoda ke resistor yang terhubung dengan 5v, katoda ke ground sebaiknya groundnya ditaruh di breadboard dengan menghubungkan pin ground arduino ke lubang -(biru) pada breadboard dan pin 5v ke lubang +(merah) pada breadboard



kurang lebih seperti inilah bray



buka arduino ide buat sketch seperti ini

 #include <LiquidCrystal.h>  
 LiquidCrystal disp(10, 9, 7, 6, 5, 4);  
 void setup() {  
  // put your setup code here, to run once:  
  disp.begin(16,2);  
 }  
 void loop() {  
  // put your main code here, to run repeatedly:  
  for(int r=0;r<2;r++){  
   for(int c=0; c<16;c++){  
    disp.clear();  
    disp.setCursor(c,r);  
    disp.print("->");  
    delay(1000);  
   }  
  }  
 }  

dan hasilnya seperti ini





dan solderan lcdnya seperti ini

Agustus 04, 2017

Mendengarkan dan membaca data yang dikirim arduino uno di pc menggunakan python serial

python serial merupakan modul yang dapat kita gunakan untuk menerima dan mengirim data melalui port serial jadi bisa kita gunakan untuk berkomunikasi antara komputer yang kita miliki dengan arduino dalam hal ini yang saya gunakan adalah arduino uno.

dengan menggunakan python serial dan sensor dht11 kita bisa membuat project mengukur suhu dan kelembaban udara suatu ruangan dan hasilnya bisa kita lihat di komputer entah itu langsung disajikan pada terminal di linux ataupun kita tulis kedalam sebuah file text yang kita simpan jadi kita bisa buka kapan saja melalui text editor.

hubungkan pin + ke pin 5v , pin out ke pin a5, pin - ke pin ground kemudian buat source code di arduino sketch kurang lebih seperti ini

#include <DHT.h>
#define DHTTYPE DHT11
#define DHTPIN A5
DHT dht (DHTPIN, DHTTYPE);

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

void loop(){
    float t= dht.readTemperature();
    float h = dht.readHumidity();
    if(isnan(t) || isnan(h){
        Serial.println("terjadi kesalahan dalam pemasangan sensor dht");
    }else{
         Serial.print("suhu ruangan: ");
         Serial.print(t);
         Serial.print(" °C");
         Serial.print("\tkelembaban udara: ");
         Serial.print(h);
         Serial.println(" %");
    }
}


sekarang saatnya untuk kita membuat program di linux dengan menggunakan bahasa python dan dibantu oleh modul pySerial alias python serial untuk mengirim dan menerima data melalui jalur serial.

sekarang import serial dengan perintah import serial lalu buat variabel ser dan inisiasi dengan seperti berikut ini.

ser = serial.Serial('/dev/ttyACM0', 9600, timeout=5)

/dev/ttyACM0 adalah port yang terhubung ke arduino kalo diwindows biasanya com 9600 merupakan baudrate yang kita tentukan pada sketch arduino tadi timeout=5 artinya kita menset timeout dengan 5. Selanjutnya buat perulangan yang terus menerus berjalan menggunakan while untuk mendapatkan datanya.
Selanjutnya buat variable data yang akan kita gunakan untuk menampung data yang kita terima dari arduino dengan cara seperti ini.

data = ser.readline()

source code selengkapnya adalah seperti ini

import serial

ser = serial.Serial('/dev/ttyACM0', 9600 , timeout=5)
while True:
  data = ser.readline()
  if data != None and data != "":
     print data

seperti inilah yang akan kita lihat




 catatan /dev/ttyACM0 mengikuti port anda yang terhubung ke arduino jadi sebaiknya cek terlebih dahulu anda menggunakan port berapa bisa saja menggunakan port /dev/ttyACM1 atau port yang lain.

Juli 31, 2017

menggunakan pir sebagai saklar led

PIR (Passive InfraRed) adalah infrared passive yang dapat digunakan untuk mendeteksi keberadaan pergerakan manusia binatang dll, sensor pir hanya mendeteksi pergerakan bukan keberadaan sesuatu jadi jika objek tersebut diam tidak akan terdeteksi oleh sensor pir, pir hanya dap at mendeteksi satu titik jadi dibutuhkan banyak pir untuk mendeteksi banyak titik gerakan objek.

pir menjangkau kurang lebih 10 meter dengan sudut 15 derajat. pir sensor kita jadikan saklar lampu rumah kita berdasarkan gerakan tangan atau pun gerakan kaki bisa juga untuk project lain yang membutuhkan pendeteksi gerakan objek.

pir memiliki 3pin, pir yang aku punya pin 1 (sebelah kiri) adalah 5v, pin 2 (tengah) adalah out dan pin 3 (kanan) adalah GND (ground). hubungkan pin satu ke pin 5v atau bisa juga hubungkan pin 5v ke lubang + pada breadboard masukkan pin 1 pir ke lubang + breadboard, masukan pin 2 pir kedalam pin 2 arduino (saya menggunakan arduino uno), hubungkan pin 3 pir ke pin GND arduino atau bisa juga hubungkan pin GND arduino ke lubang - breadboard dan hubungkan pin 3 pir ke lubang - breadboard, pada led hubungkan anode dengan pin 3 arduino.

Buat sketch di arduino IDE tulis seperti source code dibaris paling bawah dari tulisan ini. demikian tulisan gaje saya semoga bisa memberikan inspirasi.


led mati setelah mendeteksi gerakan kedua

gambar pir

led menyala setelah mendeteksi gerakan



 // mendefinisikan PIR sebagai integer 2  
 #define PIR 2  
 // mendefinisakan LED sebagai integer 3  
 #define LED 3  
 int s,a; // membuat variabel s dan a  
 //variabel s untuk menampung hasil sensor, sedangkan var a untuk perulangan ketika //menyiapkan sensor pir  
 boolean dipakai=false; // variabel untuk menandai hasil sensor pir pernah dipakai  
 boolean pernah = false; // untuk mengeliminasi hasil sensor yang kedua dalam satu gerakan  
 void setup() {  
  // put your setup code here, to run once:  
  Serial.begin(9600); // menginiasiasi untuk digunakan komunikasi antara arduino dengan pc  
  pinMode(LED, OUTPUT); //set mode pin sebagai output digital  
  pinMode(PIR, INPUT); //set mode pin sebagai input digital  
  digitalWrite(LED, LOW);  
  Serial.print("menyiapkan pir ");  
  for(a=1; a < 8; a++){  
   delay(1000);  
   Serial.print(a);  
   Serial.print(".");  
  }  
  Serial.println("selesai");  
 }  
 void loop() {  
  // put your main code here, to run repeatedly:  
  s = digitalRead(PIR); // membaca sensor pir  
  if(s== HIGH && !pernah){  
   pernah = !pernah;  
   Serial.print("objek bergerak... ");  
   Serial.println(millis()/1000);  
   delay(1000);  
   if(!dipakai){  
    analogWrite(LED, 255);  
    dipakai=!dipakai;  
   }else if(dipakai){  
    analogWrite(LED, 0);  
    dipakai=!dipakai;  
   }  
  }  
  if(s==LOW && pernah){  
   pernah=!pernah;  
   Serial.print("objek diam... ");  
   Serial.println(millis()/1000);  
   delay(1000);  
  }  
 }  

Juli 26, 2017

mengetahui suhu dan kelembaban udara menggunakan sensor dht11 dan arduino uno r3 atau clone

DHT11 merupakan sensor yang dapat membaca suhu dan kelembaban udara sekaligus, sensor dht11 merupakan sensor dasar dan versi lowcost (yang termurah) dari seluruh sensor dht. meskipun demikian sensor dht11 didalamya sudah terdapat mikrokontroler 8bit yang digunakan untuk mengolah sensor suhu dan kelembaban udara sehingga data yang diterima oleh pin arduino merupakan data yang siap untuk disajikan.

dht11 membutuhkan power supplay 3,5v- 5,5v dan mengkonsumsi arus ketika pengukuran 0,3mA dipasaran dht11 terdapat dua jenis yaitu yang punya kaki 3 dan kaki 4 biasanya yang kaki 4 hanya dipakai 3 kaki saja satu kakinya diabaikan alias tidak digunakan.

Berikut ini pin-pin sensor dht11 (saya punya yang versi 3 kaki):
  • Pin 1 atau VCC disimbolkan dengan lambang positive (+).
  • Pin 2 atau data disimbolkan dengan tulisan out.
  • pin 3 atau GND disimbolkan dengan lambang negatif (-)
Cara memasangnya:
  •  hubungkan pin-pin DHT11 dengan breadboard
  • hubungkan pin 1 DHT11 dengan pin 5v arduino uno/ clone. 
         yang saya lakukan pin 1 DHT11 saya tancapkan (masukkan) ke 23e pada   breadboard dan kabel jumper male to male dari 5v ke 23a breadboard.
  • hubungkan pin 2 dengan analog 5 pada arduino(A5).
  • hubungkan pin 3 dengan ground (GND).
 kemudian terlebih dulu masukkan library DHT kedalam arduino ide dengan klik sketch lalu pilih include library cari library pilih DHT sensor library apabila tidak ada maka pilih manage library dan pada filter search DHT sensor.

memprogram arduino menggunakan arduino IDE, dalam sebuah sketch biasanya filenya berekstensi dot ino terdiri dari dua bagian yaitu setup yang berisi inisiasi yang akan kita gunakan dalam loop , setup ini hanya akan dijalankan ataupun digunakan sekali , bagian kedua adalah loop dimana semua kode program yang berada didalamnya akan dijalankan secara terus menerus.



sumber referensi yang saya gunakan salah dua dari berbagai website yang saya kunjungi, sebenarnya masih banyak yang saya baca cuma saya cuma ingat 2 situs ini, yaitu:
paling bawah saya sertakan kode suhu.ino yang saya buat  
1:  //import atau memberitahukan pada compiler bahwa saya menggunakan library itu  
2:  #include <DHT.h>  
3:  // mendifiniskan ataupun meminta kompiler mengganti yang depan dengan yang //dibelakangnya  
4:  #define DHTTYPE DHT11  
5:  #define DHTPIN A5  
6:  // inisiasi bahwa kita akan menggunakan DHT module atau fungsi DHT sebagai dht dengan //pin dan type yang sudah terdefinisi  
7:  DHT dht(DHTPIN, DHTTYPE);  
8:  void setup() {  
9:   // put your setup code here, to run once:  
10:   Serial.begin(9600);//inisiasi untuk komunikasi arduino dengan komputer pada 9600 baud //bitrate  
11:   pinMode(BUZZER, OUTPUT);  
12:   Serial.println("mulai mendeteksi...");//print kedalam output monitor serial pada arduino IDE  
13:   dht.begin();//memulai menggunakan dht  
14:  }  
15:  void loop() {  
16:   // put your main code here, to run repeatedly:  
17:   float t = dht.readTemperature();// membaca suhu  
18:   float h = dht.readHumidity();// membaca kelembaban udara  
19:   //mengecek nilai t dan h apakah terdapat nilai yang illegal  
20:   if(isnan(t)|| isnan(h)){  
21:    Serial.println("sensor tidak bekerja semestinya");  
22:   }else{  
23:    Serial.print("suhu ruangan: ");  
24:    Serial.print(t);  
25:    Serial.print(" °C");  
26:    Serial.print("\tkelembaban udara: ");  
27:    Serial.print(h);  
28:    Serial.println(" %");  
29:    delay(900000);  
30:   }  
31:  }  

Juli 22, 2017

Bermain dan Belajar dengan Arduino Uno R3

Setelah beberapa bulan menabung ahirnya terbeli juga Arduino Uno R3, setelah sampai langsung saya coba untuk membuat blink( kedip-kedip) led yang terdapat pada board arduino uno r3. hubungkan kabel usb arduino ke komputer dan board arduino(yang portnya kotak logam) kemudian buka arduino ide klik tools kemudian klik port kemudian pilih /dev/ttyACM0 arduino/genuino uno di distro ubuntu 16.04 saya kalo di windows biasanya com. pilih berkas kemudian pilih example kemudian pilih basics kemudian pilih blink. setelah muncul sketch program blink compile dengan pilih sketch kemudian pilih verify/ compile dan untuk upload (memasukkan program) ke arduino dengan memilih sketch terus pilih upload kalo builtin lednya berkedip-kedip seperti di sketch artinya upload berhasil dan arduino uno anda baik-baik saja.

Setelah kita mencoba contohnya dan berhasil maka saatnya kita membuat led berkedip bergantian, yang kita perlukan adalah breadboard, led, resistor 220 ohm. Kenapa kita menggunakan breadboard dan bukan menggunakan pcb karena breadboard ngga perlu melakukan soldering jadi mudah untuk dilepas kalo nanti kita tidak memerlukannya lagi atau mau ganti prototyping yang lain lagi. Membaca breadboard adalah begini yang ada tanda - dan + itu konduktornya vertical dan tidak akan horizontal jadi tidak akan terhubung positif dan negatif, kemudian pada abcde konduktor terhubung horizontal sehingga 1a tidak akan terhubung dengan 2a bahkan 1a tidak terhubung dengan 1f karena udah beda tempat sehingga jika kita pasang kabel ke 1a maka akan terhubung dengan 1b, 1c, 1d dan 1e.

yang saya bengkokin adalah untuk  dihubungkan dengan resistor, masukkan bagian anoda (yang akan dihubungkan dengan resistor) ke lubang 1a kemudian katoda ke lubang 3a masukan resistor ke lubang 1e dan 4e, masukkan kabel jumper dari ground di arduino ke lubang negatif, masukkan kabel jumper lagi ke lubang kedua dari lubang yang ada tanda minus (-) dan masukan sisi lain kabel jumper tersebut ke lubang 3b yang sejalur dengan anoda. masukkan kabel jumper ke 4a yang sejalur dengan resistor, sisi yang lain kabel jumper yang tadi dimasukkan ke lubang 4a masukkan ke pin 4 pada arduino uno. lakukan hal ini sekali lagi (tentu saja dipin yang beda ya) kalo ingin menggunakan dua led, kemudian buatlah programnya pada sketch save, kompil, upload.

berikut ini hasilnya maafkan kalo gambarnya jelek maklum reso kamera rendah
  
inilah source code yang saya buat
sekian curhat saya mengenai arduino uno r3 semoga bermanfaat

April 27, 2017

Orange pipc2 ane hidup lebih dari sehari

berawal dari penasaran dan iseng saya mencoba orange pipc2 ane agar tetep nyala selama berhari-hari apakah akan mengurangi performanya ternyata tidak sama sekali masih asyik dipake ngoding lua dan golang jadi kepikiran mau pake ngrock agar dapat diremote dari jauh hehe tapi sepertinya niat ini ditunda dulu karena ada banyak hal yang perlu saya pertimbangkan yaitu saya jarang keluar dari kantor so jadi buat apa diremote dari jauh sbc saya ini

arba@orangepipc2:~$ uptime
 19:41:55 up 1 day, 19:03,  1 user,  load average: 0.03, 0.01, 0.00

April 23, 2017

Free Software

Free Software adalah gerakan memastikan masyarakat mendapatkan empat kebebasan berikut ini:
  • bebas meilihat atau pun mendapatkan source code 
  • bebas memodifikasi source code supaya bekerja sesuai dengan kehendak kita
  • bebas menyebarkan software dengan modifikasi atau tanpa modifikasi
  • bebas menggunakan software tersebut tanpa membayar lisensi
kebebasan untuk melihat/mendapatkan source code kemudian diijinkan memodifikasi source code tersebut sangat penting agi mereka yang belajar pemrograman karena mereka bisa belajar dari siitu.

April 22, 2017

multiple asynctask

 applikasi android yang saya buat menggunakan banyak sekali asynctask dan ada satu proses yang harus selalu dieksekusi dengan cepat kalo ngga akan berbahaya banget hehehe dan yang menyakitkan sejak honeycomb asynctask secara default asynctask tidak mengerjakan task secara paralel lagi jadi akan melakukan antrian.

kita bisa membuat asynctask secara paralel dengan mengexecute async dengan code berikut ini


 FirstAsyncTask asyncTask = new FirstAsyncTask(); // First  
 asyncTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);  

tulisan ini saya buat supaya tidak terputus one day one article hehe

April 21, 2017

Clustering Orange pi pc2 dan orange pi zero dengan menggunakan dispy

Dispy merupakan framework clustering yang komprehensive dan sejauh ini mudah digunakan. dibuat untuk menjalankan komputasi secara paralel dan lintas multi prosesor dalam satu mesin (SMP), dispy juga baik untuk dipake untuk paradigma SMID.

dispy menggunakan assyncoro framework dalam proses assyncronous dan concurentnya, dispy dibuat menggunakan bahasa pemrograman python, jadi kita bisa menggunakan python untuk membuat program client yang mengakses cpu dari server dalam hal ini orange pi pc2 dan orange pi zero.

saya menggunakan in untuk riset pengetahuan seberapa powerfullkah SBC itu ternyata bagus juga untuk digunakan sebagai alternative pc mungkin baginya ngga punya dana besar pengen membuat superkomputer sbc bisa dijadikan alternatif meskipun tidak seratus persen sama dengan superkomputer tapi setidaknya kita sudah berusaha untuk membuat hal itu hehe malah jadi curhat, untuk informasi lebih lanjut soal dispy baca disini

sekarang kita unduh dan install terlebih dahulu dispy supaya bisa digunakan hehe, jika belum memiliki pip pasang terlebih dahulu pip dengan sudo apt install pip di armbian xenial xerus(ubuntu) / armbian jessie(debian) setelah itu install dispy dengan mengetikkan sudo pip install dispy.

setelah semuanya terinstall ketikkan ini pada sbc anda dispynode.py -i 192.168.43.115 (orange pi pc2) dan dispynode.py -i 192.168.43.56 (orange pi zero), 192.168.43.xxx merupakan ip sbc anda tulis sesuai ip sbc anda masing-masing hasilnya seperti digambar
sekarang pada client kita atau device lain yang kita gunakan untuk menjalankan program python karena saya menggunakan program python hehe, saya menggunakan thinkpad t420 sebagai client mari kita mulai ngoding

 import random, dispy  
 def compute(n):  
   import time, socket, random, math  
   name = socket.gethostname()  
   a, b = 0, 1  
   for i in range(0,n):  
    a, b= b, a + b  
   return (name, a)  
 if __name__ == '__main__':  
   cluster = dispy.JobCluster(compute, nodes=["192.168.43.56","192.168.43.115"], ip_addr="192.168.43.161")  
   jobs= []  
   for n in range(0,15):  
    job = cluster.submit(n)  
    if job is None:  
      print( 'creating job %s failed'% n )  
      continue  
    job.id = n  
    jobs.append(job)  
   cluster.wait()  
   for job in jobs:  
    if job.status == dispy.DispyJob.Finished:  
      print('%s compute: deret fibonacci ke-%s %s'% (job.result[0], job.id, job.result[1]))  
    else:  
      print(job.exception)  
   cluster.print_status()  
   cluster.close()  

untuk ip_addr="" isi dengan ip client yang kamu gunakan untuk membuat source code itu ip berapa hehe dalam nodes itu isi dengan ip sbcmu
hasilnya kurang lebih seperti gambar ini
jalankan source code yang kita namakan fibonacci.py dengan python fibonacci.py, dan liat lah hasilnya hehe semoga bermanfaat.

NB: untuk penjelasan source code nantikan aja ya kelanjutannya

April 20, 2017

Mount samba file sharing dari orange pi zero(server) kedalam mesin kita(Orange pi pc2(client))

Kalo Kemarin kita bahas lua maka kita istirahat sejenak dari bahas lua, sekarang kita bahas file sharing menggunakan samba yang mana dulu saya punya proyek nas menggunakan orange pi zero maka sekarang saya yang sudah menambah orange pi pc2 sebagai client dan yups keduanya ane pake headless tanpa monitor,keyboard dan mouse.

Saya mengakses keduanya menggunakan SSH(Secure SHell) maka saya akses terlebih dahulu orange pi pc2 kemudian saya memuat berkas yang dibagi oleh orange pi zero, oh iya sebelum melakukan aksi ini usahakan orange pi pc2 sudah terinstall samba dan cifs-utils jika belum lakukan ini sudo apt install samba cifs-utils.

untuk memuat file tersebut ketikan ini

mount -t cifs -o user=arba //192.168.43.56/DATAKU /media/arba

mount = mount directory cifs
-o = option open
user=arba artinya usernamenya arba
//192blabla itu ip server(opi zero) dan DATAKU adalah file yang di bagi
/media/arba adalah tujuan mount

begitu saja deh tulisan saya ahiri Terima Kasih.

Programming Lua part 2

Kemarin saya tulis tentang syntax dasar lua sekarang saya akan menulis tentang pembuatan fungsi pada lua, fungsi adalah subsquence yang kita gunakan untuk mengorganisir squence yang kita buat supaya kita bisa menggunakan squence tersebut tanpa menuliskannya berulang jadi kita tinggal memanggil fungsi tersebut kapanpun kita butuh.

Saya akan mencontohkan membuat fungsi untuk melakukan operasi faktorial dan saya akan menggunakan fungsi rekursif sekalian. Apa itu fungsi rekursif? Fungsi rekursif adalah fungsi yang memanggil dirinya sendiri dalam squencenya.

baiklah kita buat file faktorial.lua ketik aja pada terminal nano faktorial.lua

 #!/usr/bin/env lua5.2  
 function faktorial(x)  
   if x == 0 then  
    return 1;  
   else   
    return x * faktorial(x-1)  
   end  
 end  
 io.write("Masukkan Angka : ");  
 a = io.read("*number");  
 print(faktorial(a));  
 output:  
 Masukkan Angka : 2  
 2  

function faktorial(x) disini kita mendefinisikan faktorial sebagai fungsi dengan parameter x jadi untuk menggunakan fungsi faktorial ini kita harus memasukkan parameter agar fungsi ini berjalan sebagaimana mestinya, if else kita gunakan sebagai suatu percabangan dari kondisi yang dimiliki parameter tersebut misalnya si parameter x tadi bernilai 0 apa yang akan dikerjakan komputer jika fungsi itu 0 maka diperlukan percabangan untuk menentukan action tiap kondisi tersebut nah dalam contoh ini action kita mereturn 1 atau kita memberikan hasilnya kepada si pemanggil dengan nilai 1 kenapa 1 bukan 2,3,4 atau yang lainnya? karena kita mendefinisikan faktorial dimana faktorial 0 adalah 1, nah kalo ternyata si x ini bernilai 2 dan itu tidak memenuhi syarat dari si if yang mensyaratkan harus sama dengan 0 maka masuk ke bagian else nah di else kita membuat action me return si dengan hasil dari x dikalikan dengan faktorial dari x - 1 faktorial disini adalah fungsi yang kita buat jadi bisa dikatakan kita menggunakan fungsi faktorial kenapa musti minus satu kenapa tidak plus 1 karena untuk mencegah itu memanggil fungsi tersebut berulang-ulang tampa berkesudahan tapi kalo kita memasukkan parameter dengan x minus 1 maka dia akan berhenti di if x==0 yang mereturn 1 begitu kira-kira penjelasannya hehe, dalam contoh tersebut return yang kita berikan adalah sebagai berikut 2 kali faktorial(1) kemudian menjadi 2 kali 1 kali faktorial(0) yang pada ahirnya menjadi 2 kali 1 kali 1 = 2.

io.write() adalah fungsi yang digunakan untuk menampilkan kedalam monitor tanpa newline berbeda dengan print yang menyertakan newline
a = io.read("*number"); kita membaca inputan keyboard dan hanya mengambil yang angka  saja kemudian dimasukkan kedalam variabel a kalo kita masukkan huruf maka akan terjadi galat karena tidak ada yang diambil dan variabel a bernilai null aka nil dalam lua sehingga fungsi yang kita buat tidak berfungsi atau terjadi galat
print(faktorial(a)); kita mencetak hasil return dari fungsi faktorial yang kita buat dengan parameter a dimana a merupakan hasil dari inputan keyboard

demikian tulisan saya semoga mudah dipahami.

April 19, 2017

Programming lua part 1

Saya kemarin iseng-iseng nyari tau sesuatu yang bisa saya explore ahirnya saya menemukan lua, dan menurutku bahasa pemrograman lua cukup simple dan gampang dicerna. lua memang sengaja dirancang supaya dinamis, ringan dan ringkas dan yang paling penting tidak memiliki aturan yang ketat.

marilah kita mulai menulis skrip lua kita beri nama hello.lua

 #!/usr/bin/env lua5.2  
 print("Hello, Lua!");  
 -- ini sebuah komen satu baris  
 --[[ ini digunakan untuk membuat komen beberapa baris   
 dan tidak akan ditampilkan. ]] 
output: 
$ chmod +x hello.lua
$ ./hello.lua
Hello, Lua!
$

#!/usr/bin/env lua5.2 lua5.3 merupakan baris yang kita gunakan untuk pemberitahuan ke komputer kita bahwa kita ingin menggunakan intepreter lua5.2, lua5.3 dll bisa juga untuk python, bash dan semua script yang kita buat tapi karena kita membua script lua jadi kita memanggil intepreter lua sedangkan 5.2 atau 5.3 merupakan versi dari lua yang akan kita pake

print() merupakan sebuah fungsi atau method untuk mencetak tulisan kedalam monitor dalam hal ini pada terminal dan sekaligus create newline jika tidak ingin newline maka gunakanlah io.write().

begitulah aku harap dapat dipahami, aku sulit sekali menulis sesuatu yang bisa mudah ditangkap orang, pada part 2 nanti insya allah akan saya tuliskan mengenai pembuatan fungsi pada lua, terima kasih buat yang udah baca.

April 18, 2017

Akses Orange pi pc2 headless SSH melalui usb tethering android

Tulisan ini saya tulis berdasarkan permasalahan yang saya hadapi dikantor saya yang tidak ada televisi sehingga saya bingung gimana caranya akses orange pi pc2 yang mana belum support wifi setelah dirumah saya memiliki led tv saya kepiikiran untuk konek internet lewat tethering usb karena saya tidak mmemiliki router dan kabel lan eh ternyata bisa konek internet.

Jadi saya dapat ide lagi kalo gitu saya bisa ssh menggunakan juice ssh tapi ane dapet ide pake termux setelah baca blog pak apip(bluemeda) dalam artikel ini dan untuk mendapatkan ip orange pi pc2 menggunakan ip tools caranya bagaimana ikuti langkah-langkahnya sebagai berikut:

1. pasang power adapter kedalam port power dan jack 3.5 kedalam portnya dan juga kabel usb kedalam port usb dan pastikan juga terhubung ke smartphone via port microusb.

 2. tunggu sampai led menyala warna hijau untuk armbian selain armbian biasanya berwarna terus buka smartphone masuk ke menu setting kemudian cari usb tethering.

3.  buka ip tools terus menu kanan atas, pilih lan scanner terus masukkan ip 192.168.42.1 terus tekan panah tunggu sampai ketemu ip orange pimu.




4. buka juice ssh terus tekan actionbar sebelahnya pengaturan gambar yang mirip petir itu terus masukin username dan ipnya seperti ini contohnya arba@192.168.42.12 lalu tekan ok.
 keterangan: arba merupakan username orange pi anda dan 192.168.42.12 adalah ip orange pi anda yang didapat dari ip tools





disini masukkan password untuk usernamemu



dan hasilnnya akan seperti berikut

goodluck bray.

April 17, 2017

Install Zekr

Karena ALQuran saya dirumah kebanyakan rusak dimakan rayap jadi saya memutuskan utuk menginstall zekr pada armbian xenial xerus yang saya pasang pada Orange pi pc2. Saya memilih zekr karena tampilannya yang sederhana, mudah digunakan dan yang paling penting ada fiturmemutar audio murrotal para qari terkenal di seluruh dunia.

Saya menginstallnya dengan menggunakan sudo apt-get install zekr, kemudian ketika saya coba membuka zekr ternyata terdapat galat dan setelah saya browsing saya menemukan solusi yaitu dengan menginstall libwebkitgtk-1.0-0 maka saya memasang lib tersebut dengan sudo apt-get install libwebkitgtk-1.0-0 tunggu sampai proses instalasi selesai.

Jalankan kembali zekr maka tidak akan ada error lagi dan kita bisa memulai membaca alquuran dan mentadaburinya. Zekr merupakan aplikasi pilihan saya untuk aplikasi alquran karena saya benar-benar cocok dengan zekr.


gimana tertarik mencoba?

April 16, 2017

Sehari tanpa laptop

saya berencana mengadakan event tidak menggunakan laptop selamanya per 15 april 2017 sampai nanti ane nyerah dan berhenti dari event ini. event ini hanya saya lakukan di rumah karena dikantor saya memerlukan laptop untuk bekerja, lalu kalo tidak menggunakan laptop menggunakan apa dong? saya menggunakan Single Board Computer Orange pi pc2 mini pc buatan xunlong untuk kebutuhan komputasi harian dirumah setelah bekerja.

Internet menggunakan usb thetering yang awalnya aku pikir tidak bisa dilakukan ternyata bisa. Browser yang saya pakai adalah mozilla firefox, enak sekali ini browsing di sbc layaknya menggunakan pc desktop dan suhu sbc ini masih relative dingin tidak seperti opi zero saya yang langsung kepanasan

hari ini saya optimis bisa ngga menyalakan laptop dirumah , dirumah adalah waktu bersama dengan orange pi pc2 yang menurutku udah cukup buat ganntiin laptop saya untuk kebutuhan sehari-hari diluar kerjaan.

April 15, 2017

sebuah nalar

Apasih yang kita pikirkan tentang uang? apa fungsi uang? kenapa butuh uang? apa yang kita dapatkan dengan uang? lebih baik manakah uang atau integritas? berapa jumlah uang yang ada ditanganmu? pertanyaan-pertanyaan itulah yang terus menghantuiku ahir-ahir ini

jadi aku pilih mana punya uang tapi ngga punya integritas atau punya integritas tapi ngga punya uang? manakah yang akan aku pilih entahlah aku lebih memilih biarlah kehidupan ini mengalir apa adanya terus nikmati aja proses yang harus aku jalani. dan satu lagi hantu yang dihembuskan orang di sekitarku yaitu kapan nikah? dalam prinsipku jodoh itu akan bertemu pada saat dirimu sudah siap menjalani kehidupan dunia yang tak tertebak ini.

sedangkan aku belum siap menerima kejutan dari kehidupan karena aku adalah orang yang gampang sekali kagetan nah begitulah kisahku hari ini, ngomong-ngomong kalian pilih yang mana punya uang tapi tak memiliki integritas atau punya integritas tapi ngga punya uang?

April 14, 2017

Armbian Xenial Xerus

Armbian Xenial Xerus merupakan distro ubuntu yang di optimalisasi untuk SBC bisa orange pi, bananapi, odroid, nanopi, pesaingnya yang bagus adalah dietpi raspbian secara default hanya untuk raspberry pi. Armbian xenial xerus menggunakan Desktop Environment XFCE sejauh ini cukup bagus dan menjanjikan.

Armbian Xenial Xerus ini aku pasang pada Orange Pi Pc2 , secara default menyediakan libre office writer tanpa calc dan impress, xterm sebagai default terminal, calculator, mpv media player, armbian monitor, sysbench, browser firefox, python,gcc, gnu assembler.

begitulah armbian xenial xerus yang saya install semua aplikasi yang ada pada armbian xenial xerus merupakan bawaan dari imagenya karena saya mengoperasikan secara offline.

April 13, 2017

Menilik Openbsd 6.1

Setelah hampir 6bulan tidak pernah lagi berurusan dengan openbsd pada ahirnya saya dapat waktu sedikit untuk ngulik openbsd 6.1 yang menurut saya tidak ada perubahan berarti desktopnya. Dari sisi C compilernya masih menggunakan gcc versinya 4.2.1 padahal saya berharap yang openbsd 6.1 sudah menggunakan clang seperti saudaranya freebsd. Yang paling menggembirakan buat saya adalah sudah tersediannya gnu debuger sehingga cukup membantu saya dalam membuat software, serta menganalisa kesalahan algoritma yang saya buat.

as aka gnu assembler mungkin akan sering saya pakai di openbsd 6.1, openbsd 6.1 mungkin akan jadi laboratorium coba-coba saya mengganti debian SID ,tempat dimana saya berexperimen dengan apa yang dipunyai openbsd ini nantikan oprekan saya pada openbsd untuk masalah installasi masih sama seperti openbsd 6.0.

April 12, 2017

Emulasi Unix V7 dengan SIMH


Kali ini saya akan menulis tentang unix v7 cara mengemulasi tentu saja menggunakan simh emulator karena arsitekturnya berbeda dengan laptop saya thinkpad t420, simh terutama emulator yang untuk pdp11 dapat kita gunakan untuk menjalankan unix v7, unix v7 dibuat pada tahun 1979. ayo kita mulai bermain dengan unix v7, pastikan kamu sudah menginstall simh emulator kalo belum unduh source codenya di http://simh.trailing-edge.com/ atau untuk pengguna debian based anda bisa melakukan sudo apt-get simh dan tentu saja memiliki tape unix v7 download aja di https://simh.trailing-edge.com/kits/uv7swre.zip

untuk yang memilih mengompile seperti saya maka masuk ke source code simh kemudian buat directori BIN dengan mkdir BIN setelah directory bin terbentuk ketik make maka source code akan dikompilasi kedalam directori BIN jadi directory BIN digunakan untuk menampung hasil kompilasi. Pindah ke directory BIN dengan cd BIN setelah ketikan ./pdp11 nanti akan muncul prompt sim> setelah muncul prompt tersebut lakukan langkah berikut ini
1. set cpu 11/45.
perintah ini digunakan untuk menset tipe cpu ke pdp-11/45
2. set tto 7b.
Perintah ini untuk menset teletype output menjadi 7bit
3. att rl /home/arba/unixv7/unixv7rl.dsk
perintah untuk mengattach berkas unixv7rl.dsk ke rl device
4. boot rl.
Perintah untuk memboot
5. boot
6. rl(0,0)rl2unix
7. mkdir /tmp
8. chmod 777 /tmp
9. mkdir /usr/dmr
10. chown dmr /usr dmr
11. ctrl + d
12. login: dmr
step-step diatas diketikan pada prompt sim> .


 $ cat << EOF > t.c  
 > main(){  
 >  printf("Hello, Unix!\n");  
 > }  
 > EOF  
 $ cat t.c  
 main(){  
   printf("Hello, Unix!\n");  
 }  
 $ cc t.c  
 $ a.out  
 Hello, Unix!  
 $  

April 11, 2017

Perbandingan Assembly aarch64 dengan arm 32

kemarin saya mencoba iseng membuat program dengan gnu assembler pada aarch64 dengan prosesor allwiner h5, lumayan rumit jika dibandingkan dengan assembly di allwiner h2 atau allwiner h3 berikut ini perbedaannya.

assembly untuk allwiner h2 /h3

 .text   
 .global main  
 main:  
     push {ip, lr}   
     mov r1, #15  
     ldr r0, =text  
     bl printf  
     pop {ip, pc}  
 .data  
 text: .asciz "hello, world %d\n"  

assembly aarch64 untuk allwiner h5

 .text  
 .global main  
 main:  
     stp x29, x30, [sp, -16]!  
     add x29, sp, 0  
     adrp x0,text  
     mov x1, 15  
     add x0, x0, :lo12:text  
     bl printf  
     mov w0, 0  
     ldp x29, x30, [sp], 16  
     ret  
 .data  
 text: .asciz "hello, world %d\n"  

jelas sekali kan arm 32 lebih sedikit daripada aarch64 keduanya menghasilkan output hello, world 15
tapi prosesnya lebih panjang aarc64.
demikianlah hasil iseng saya kemarin nantikan keisengan saya selanjutnya

April 10, 2017

refresh otak

Rutinitas memang menjengkelkan maka sesekali kita perlu keluar sejenak dari rutinitas itu dengan mengerjakan sesuatu yang baru, seperti ahir-ahir ini saya mulai ngoprek orange pi pc2 dan orange pi zero. Dua SBC inilah yang membantuku untuk keluar dari rutinitasku dengan bermain dengan gpio dan lain-lainnya sangat banyak kegunaan sbc ini yang belum saya sentuh karena keterbatasan pengetahuan saya.

Orange pi pc2 yang saya beli kemarin ahirnya saya jadikan desktop dirumah saya sekaligus lahan buat saya untuk bermain bahasa pemrogramman assembly aarch64. cukup mengejutkan saya yang terbiasa assembly arm 32 aka armv7 karena stylenya beda banget.

 Saya merasakan 4 usb port belum lah cukup saya masih membutuhkan port usb tambahan untuk harddisk external dan wireless dongle usb untuk keperluan internet wireless saya hehe, ada satu port orange pi pc2 yang belum saya coba yaitu port scsi untuk kamera yang belum saya coba padahal saya memang ingin sekali mencobanya namun apa daya belum terbeli hardwarenya hehe.

April 09, 2017

Review Orange Pi PC 2

kurang lebih seminggu yang lalu saya membeli orange pc2 dari kere keren store milik ceroberoz, saya membeli orange pi pc2 set 4 yang berisi board orange pi pc2 dan power adapter 5v/3a dc, kemudian saya membeli mouse usb, microsd 16gb dan kabel hdmi to hdmi totalnya 155 ribu rupiah, Dan hasilnya tak terlalu mengecewakan.

Tadi ane menginstall armbian ubuntu xenial xerus nightly image pada orange pi pc 2 yang sudah aarch64(armv8), saya menggunakan microsd sandisk ultra 16gb sebagai media penyimpanannya monitornya menggunakan ledtv sharp aquos, usb keyboard dan usb mouse untuk melakukan controling hasilnya luar biasa keren sbcnya bisa nih menggantikan pc untuk kebutuhan sehari-hari ane.
  
Orange Pi PC 2 menggunakan prosesor allwiner h5 yang sudah mengimplementsikan arm a53, sbc ini luar biasa untuk ukuran sbc dengan harga 400an ribu,memutar vdeo dan audio hasilnya cukup memuaskan buat ane, dan hasil bencmarkya lebih maknyus daripada opi zero ane, lebih fast dan suhu orange pi pc 2 2kali lebih dingin daripada opi zero ane yang bisa mencapai 70 derajat celsius sedangkan suhu opi pc 2 berkisar 46 derajat celsius tanpa heatsink ataupun kipas. Meskipun ram 1gb di share dengan gpu tidk menjadikan orange pi pc 2 lambat buat komputasi harian saya bahkan saya menggunakan os dan applikasi yang aarch64 pun tetap smooth benar benar luar biasa.

berikut ini hasil screenshot dan foto-foto karena kata orang no pic = hoax hehe







April 08, 2017

Beberapa Intruksi dalam Bahasa Assembly


Bahasa Assembly adalah bahasa pemrograman tingkat rendah untuk komputer ataupun untuk perangkat yang dapat di program, bahasa assembly berkaitan sangat erat dengan arsitektur processor oleh karenanya kode untuk processor arm akan berbeda dengan x64 bahkan arm32bit berbeda dengan arm64bit.

Source code bahasa assembly akan diterjemahkan oleh assembler menjadi bahasa yang dapat dipahami processor jadi tiap assembler memilik aturan sendir-sendiri. Saya menggunakan gnu assembler pada distro armbian jessie untuk sbc orange pi zero saya, saya akan menuliskan beberapa mnemonic bahasa assembly yang sering digunakan.

1. LDR
LDR adalah mnemonic yang digunakan untuk meload suatu variabel menjadi register atau untuk mengambil nilai dari suatu variabel yang telah kita load. Formatnya seperti ini

LDR target, asal

contoh:

LDR R0, =var
dan untuk mengambil nilai dari var
LDR R0,[R0]

2. MOV
MOV digunakan untuk melakukan inisiasi nilai sebuah register mov dalam bahasa lain seperti ini fungsinya int a=1, formatnya adalah seperti ini

MOV tujuan, asal
MOV R2, #43 artinya inisiasi atau memberi nilai register R2 dengan decimal 43 R2=43

3. ADD
ADD digunakan untuk melakukan operasi penjumlahan register , angka yang kita tuliskan.

ADD tujuan , asal
ADD R12, R1,R2 atau ADD R1, #1

contoh programnya adalah sebagai berikut

 .text  
 .global main  
 main:  
 push {ip, lr}  
 mov r1, #0xab  
 mov r2, #0xde  
 add r3, r1, r2  
 ldr r0, =output  
 bl printf  
 pop {ip,pc}  
 .data  
 output: .asciz "0x%08x + 0x%08x = 0x%08x\n"  

April 07, 2017

General Purpose Register ARM

Tulisan ini adalah lanjutan dari artikel kemarin yang membahas register pada ARM sekarang akan dilanjutkan dengan register general purpose. ARM membatasi penggunaan SP dan LR sebagai general purpose register kecuali processor yang berdasarkan ARMv6-M dan ARMv7-M, ada 30 (atau 32 jika security extension telah diimplementasikan) general purpose 32bit register, termasuk didalamnya register SP dan LR.

15 register terlihat pada satu waktu, tergantung mode processor yang dipakai saat ini. 15 register tersebut yaitu R0-R12,SP,LR sedangkan CP(R15) bukan merupakan generan purpose register. SP atau R13 merupakan stack pointer. Kompiler C atau C++ selalu menggunakan SP sebagai stack pointer. LR atau R14 digunakan pada mode user digunakan sebagai link register untuk menyimpan alamat return ketika sebuah subroutine call telah dibuat. Dapat juga digunakan sebagai general purpose register, jika alamat return telah disimpan pada stack.

Contohnya adalah sebagai berikut
 .text 

 .extern printf @inisialisasi fungsi external printf kalo dalam bahasa c didalam header stdio.h 

 .global main 

 main: 

 push {ip, lr} @ akses link register 

 ldr r0, =string @load variabel string sebagai R0 

 bl printf @ memanggil fungsi printf 

 pop {ip,pc} 

 .data 

 string: .ascii "Hallo, Assembly\n" 


simpan sebagai sample.s kemudian compile program ini dengan perintah
as -g -o sample.o sample.s
gcc -o sample sample.o
./sample

kamu akan melihat tulisan Hallo, Assembly

Maret 02, 2017

Menjadikan Orange pi zero sebagai Network Attach Storage

Dulu ada keinginan memiliki sebuah freenas ngga pernah terwujud ahirnya terpikirkan untuk membuat nas dengan menggunakan orange pi zero, saya menggunakan vsftpd sebagai ftp servernya juga samba. Storagenya saya menggunakan thumbdrive 32gb, speed yang saya dapatkan juga lumayan 300kbps lumayanlah untuk sebuah NAS kecil-kecilan.

Yang paling menyenangkan adalah ini NAS portable bisa saya bawa kemana-mana soalnya dengan powerbank murahan saja sanggup menyala 5jam, ringan untuk dibawa-bawa dan dimasukin saku celana. dengan memiliki mini NAS saya ngga perlu repot colok dan cabut thumbdrive saya ke perangkat yang akan mengakses thumbdrive cukup hubungkan wireless tethering maka kita bisa membuat atau edit file didalam thumbdrive darimana saja termasuk dari smartphone dengan os android anda, suatu file kita buka rame-rame pun bisa bro menarik bukan? Meskipun harus diakui bahwa speednya lambat dan suhu perangkat keras sangat panas.

saya masih ingin membeli harddisk external 1tb sehingga saya dapat menyimpan banyak file untuk backup data, menyimpan film-film favorit saya. saya dapat info opi zero dengan input 5V/2A sanggup mentenagai harddisk eksternal.

Februari 27, 2017

sharing data from flashdrive to all devices on the same network with samba

I use Orange pi zero to share my data in the flashdrive with a samba so you must have orange pi zero and flashdrive, firstly install armbian jessie to microsd an connect the microsd to microsd port in orange pi zero, next connect flashdrive to usb port in orange pi zero and now we must set samba.conf and fstab.

$ sudo blkid
to show uid the partition of flashdrive
$ sudo nano /etc/fstab
for editting the fstab file to setting mount and unmount the partition
and enter this sentence
/dev/sda1 /media/username/data ntfs defaults, umask=0022,uid=1000, gid=1000 0 0
create the mountpoint folder
$sudo mkdir /media/arba/data
$ sudo nano  /etc/samba/smb.conf
this file locate file or folder which we are share to other devices in the same network so modify this file
and i create like this
[MyData]
 comment = my data to share
 path = /media/username/data
 browseable = yes
 guest ok = yes
 read only = yes
 create mask = 0755
 force user = username
and the last we must reboot the system and voila we can access shared folder in difference devices, thanks you for reading

Orange pi zero sbc pertama saya

orange pi zero merupakan sbc pertama yang saya beli dan ternyata bermain dengan sbc cukup menyenangkan , ngoprek sbc juga tidak membosankan. Saya memakai distro armbian jessie dan microsd 8gb rasanya cukup untuk dipasang plexmediaserver, vesftpd, nginx dll. Dengan sbc ini saya belajar programming rust mungkin suatu hari nanti saya akan sharing tentang rust programming, mimpi saya bisa ngoding aplikasi android menggunakan sbc ini, mungkin terdengar gila tapi bagus juga jika dapat terwujud.

Saya membeli sbc ini dengan harga Rp. 200.000 worthlah dengan apa yang saya dapatkan dari sbc ini, kedepannya saya akan membeli nanopi 2 fire dan arduino R3 yang akan saya gunakan sebagai refreshing otak saya. masih banyak yang belum saya coba sih orange pi zero saya ini, meski demikian opi zero merupakan salah satu benda paling berharga yang aku punya setalah thinkpad t420.

bermain gpio orange pi zero dengan orange pi gpio python library

Orange pi zero adalah SBC( Single Board computer) yang dapat digunakan sebagai embeded server, embeded minipc atau project apapun yang kamu inginkan bahkan sangat memungkinkan untuk membuat superkomputer dengan menggunakan orange pi zero. Orange pi zero dibuat oleh xunlong, Orange pi zero menggunakan prosesor allwiner h2+ ram opsional 256mb atau 512mb aku pake yang 512mb , dengan orange pi zero kita dapat membuat sebuah server berdaya rendah cocok dipake untuk yang pasokan listriknya terbatas, orange pi zero juga dapat ditenagai menggunakan sebuah powerbank keren bukan?
baiklah tanpa panjang lebar saya membagikan pengalaman saya bermain gpio untuk sementara cukup menggunakan ledstatus opi zero yaitu led berwarna merah.

GPIO adalah general purpose Input Output yaitu pin generik pada sirkuit terpadu (chip) yang perilakunya (termasuk apakah pin itu input atau output) dapat dikontrol (diprogram) oleh pengguna saat berjalan. dengan GPIO sbc kita dapat berkomunikasi dengan sensor atau apapun yang kita hubungkan ke orange pi zero kita. orange pi gpio library dapat kita peroleh dari github https://github.com/duxingkei33/orangepi_PC_gpio_pyH3 kamu bisa mengklone repository tersebut atau mengunduh zip filenya kemudian ubah mapping.h yang terletak pada folder pyA20/gpio/ pada bagian
 //yang semula { "STATUS_LED", SUNXI_GPA(15),2 } meenjadi  
 {"LED",  
     {  
       {  "POWER_LED", SUNXI_GPL(10), 1  },  
       {  "STATUS_LED", SUNXI_GPA(17), 2  },  
       {  
         {  0, 0, 0}  
       },  
     }  
   },  
 };  

setelah itu sebagai root jalankan python setup.py install , tunggu sampai proses install selesai setelah semua selesai install saatnya kita membuat program untuk membuat status led berkedip sebanyak kata atau kalimat yang kita tuliskan pada monitor berikut ini soource codenya example.py

 #!/usr/bin/env python  
 import os  
 import sys  
 if not os.getegid() == 0:  
   sys.exit('script must be run as root')  
 from time import sleep  
 from pyA20.gpio import gpio  
 from pyA20.gpio import gpio as gpio2  
 from pyA20.gpio import port  
 __author__ = "Arba ZM"  
 __copyright__ = "Copyright 2017, Arba Lab"  
 __credits__ = ["Stefan Mavrodiev","ceroberoz","Arba","gojigeje"]  
 __license__ = "GPL"  
 __version__ = "3.0"  
 __maintainer__ = __author__  
 __email__ = "yujimaarif.ym@gmail.com"  
 from pyA20.gpio import connector  
 #ledP = port.POWER_LED  
 gpio.init()  
 gpio.setcfg(led, gpio.OUTPUT)  
 #gpio2.init()  
 #gpio2.setcfg(ledP, gpio2.OUTPUT)  
 try:  
   print("Press CTRL+C to exit")  
   n = 0  
   k = raw_input("masukkan kata atau kalimat yang akan membuat led status opi zero berkedip: "  
   longK = len(k)  
   print "{}".format(longK)  
   while n < longK:  
    print "n ke-{}\n".format(n+1)  
    gpio.output(led, -2)  
    sleep(0.2)  
    #gpio2.output(ledP, 0)  
    print "led set -2 \r\n"  
    #sleep(0.2)  
    #gpio2.output(ledP, 1)  
     print "led set -2 \r\n"  
    #sleep(0.2)  
    #gpio2.output(ledP, 1)  
    #sleep(0.2)  
    gpio.output(led, -0)  
    print "led set -0 \r\n"  
    sleep(0.2)  
    n += 1  
  except KeyboardInterrupt:  
   print("Goodbye.")  
setelah itu jalankan sebagai root  semoga bermanfaat dan terima kasih

mencoba menggunakan zram di raspberry pi

saya beberapa hari yang lalu mencoba mengaktifkan zram untuk membuat cadangan jika ram udah hampir penuh untuk dipindah ke zram, sejauh ini...