Ubuntu boot not enough

Saat akan update ubuntu:

Terjadi masalah seperti ini:

ubuntu_boot_not_enough_1Not enough free disk space. Bla bla bla free at leas an additional 102 M of disk space on ‘/boot’.

Menurut di sini hal tersebut terjadi karena partisi tempat ‘/boot‘ sudah penuh, dalam kasus ini perlu 102 MB. Tau darimana?

  • Dimana disimpan partisi ‘/boot’?

Partisi /boot ada di /dev/sda2.

  • Sudah digunakan berapa itu partisi?

Sisa hanya 17MB, pantas saja tidak bisa update.

So what? What so?

Lihat dulu ada berapa kernels yang terinstall, lalu bisa kita hapus yang sudah jadul.

Ada 4 kernel:

  • 4.4.0-47
  • 4.4.0-51
  • 4.4.0-53
  • 4.4.0-57

Kernel yang sekarang dipakai?

Yang digunakan adalah kernel 4.4.0-57 jadi bisa kita hapus kernel 4.4.0-47, 4.4.0-51 dan 4.4.0-53. Namun untuk amannya sebaiknya tetap sisakan 1 old kernel misal 4.4.0.-53, dan tentu 4.4.0-57 tidak dihapus karena itu yang sekarang digunakan oleh ubuntu.
Secara umum gunakan perintah ini untuk menghapus kernel.

Atau gunakan perintah ini untuk sekaligus menghapus beberapa kernels.

Untuk menghapus kernel 4.4.0-47 kita dapat gunakan.

atau

Hapus kernel 4.4.0-47.

Setelah 4.4.0-47 dihapus maka tersisa 4.4.0-51, 4.4.0-53 dan 4.4.0-57.

Setelah ini kita dapat melakukan instalasi kernel baru (update ubuntu).

Singkatnya langkah yang ditempuh:

  1. Dimana partisi boot terinstal
  2. Berapa sisa partisi boot
  3. Kernels apa saja yang terinstall
  4. Kernel apa yang sedang digunakan
  5. Hapus satu atau beberapa old kernels
  6. Update ubuntu

Salam.

Lebih lanjut:

http://askubuntu.com/questions/298487/not-enough-free-disk-space-when-upgrading

PHP Baca Gmail dan Simpan di MySQL (Bagian 2)

Melanjutkan post sebelumnya tentang baca gmail pake PHP, setelah berhasil mengambil email sekarang waktunya memparsing body email. Kita akan memanfaatkan fungsi imap fetchstructure untuk mengetahui apakah body email hanya terdiri dari teks saja atau multipart (berisi html). Untuk email yang hanya teks, sepertinya tidak terlalu rumit, cukup search saja kata yang dibutuhkan.

Jika body berisi html maka akan digunakan parser buatan kak Borisevich.

Pertama kita buat script untuk membaca email ini.

email-to-read
Kode read_gmail2.php.

Ups, error lagi. Ternyata butuh ekstensi dom/xml untuk menggunakan karya kakak dari Rusia itu. Pengguna Ubuntu cukup ketik perintah.

Akses lagi script read_gmail2.php.

show-recent-emailKita akan mengambil kata Ipsum pada ordered list. Baca-baca dokumentasi html parser untuk tujuan kita, dapat disederhanakan begini.

Contoh sederhana penggunaan html parser adalah.

Kembali ke script read_gmail2.php, dengan inspect element (F12) pada browser diketahui bahwa kata tersebut terdapat pada list ber-id yui_3_16_0_ym19_1_1481460480726_2769. Karena tiap li diberi id berbeda oleh yahoo (email itu dibuat melalui Yahoo) maka dapat digunakan pendekatan seperti contoh. Namun untuk email lain bisa jadi metode yang ditempuh harus berbeda. Jadi yang utama adalah inspect element dan fungsi yang tersedia dari html parsernya kakak Dmitry.

inspect-elementJadi untuk mendapatkan Ipsum, cukup mengganti read_gmail2.php di bagian ini.

Dan hasilnya.
parsing-resultOkesip, berhasil parsing html.

Post selanjutnya tinggal bagaimana menambahkan ke dalam MySQL.

Salam.

Lebih lanjut:

http://php.net/manual/en/function.imap-fetchbody.php

PHP Baca Gmail dan Simpan di MySQL (Bagian 1)

Belakangan saya senang mendaftar pekerjaan data entri pada situs lowongan kerja untuk freelance, berharap jenis pekerjaannya cukup sederhana untuk dapat diotomasi dengan script (Python, PHP, Bash) dan ngerjainnya ga butuh banyak waktu.

Salah satu pekerjaan yang menarik yang ditawarkan, ‘saya ingin mengambil bagian tertentu dari email dan menyimpan dalam database.’ At first saya ingin menggunakan Python untuk mengerjakannya, tapi lalu terpikir bagaimana kalau script itu harus dijalankan di shared hosting? Maka PHP lah pendekatan yang paling masuk akal. Karenanya saya coba dulu pake PHP.

Pertama saya perlu instal ekstensi IMAP pada PHP. Karena lingkungan pemrograman saya adalah PHP7 pada Nginx dalam Ubuntu maka  saya cukup mengetik pada terminal.

Untuk lingkungan pemrograman lain proses di atas dapat menyesuaikan, misal aktivasi imap di cpanel tentu berbeda.

Setelah instalasi, untuk memastikan ekstensi terload pada servis php maka.

Sebelum ngoding, kita lihat dulu inbox gmail yang akan kita akses.

Inbox

Inbox

Lalu ketik kode read_gmail.php.

Selengkapnya untuk fungsi dari php imap ada di sini.

Lalu (drum roll).

Ups! Error! (Ba dum tss).

error-authenticatePerbaiki dengan:

  1. Enable imap di Gmail Settings sesuai petunjuk mereka.
  2. Gunakan pilihan less secure di sini.
  3. Enable dengan link ini.

Dan alakazam!

read-gmailInbox gmail setelah semua dibaca.

gmail-inbox-seen

Kita berhasil baca email yang belum terbaca, tapi hasilnya masih amburadul karena semua isi dari body ditampilkan.

Lalu ternyata cukup panjang proses untuk membaca body email, karenanya tulisan ini akan dibagi menjadi 3.

Bagian 2 (Parsing Email Body)

Salam.

Lebih lanjut:

http://www.namasteui.com/read-gmail-emails-using-php-imap/

https://arjunphp.com/reading-emails-from-gmail-using-php-imap/

http://tecadmin.net/install-php-7-on-ubuntu/

http://stackoverflow.com/questions/24525284/access-emails-using-imap

https://support.google.com/mail/answer/7126229?hl=en

http://php.net/manual/en/book.imap.php

Raspberry Pi 2 GPIO Ultrasonic Range Sensor

Kemarin beli juga ultrasonic range HC-SR04 seharga Rp47.500, harga yang sepadan dibandingkan dengan akurasinya. Mengkomunikasikan sensor ini dengan Raspberry Pi 2 ternyata tidak sukar.

HC-SR04

HC-SR04

Terdapat 4 pin pada sensor ini.

  1. VCC, untuk sumber tegangan 5V.
  2. TRIG, trigger pulse input, berfungsi mengirim perintah untuk mentrigger sensor untuk mengirim ultrasonic pulse (dan menyimpan waktu pengiriman) yang akan menabrak obyek terdekat. Kembalian dari gelombang tersebut akan ditangkap oleh sensor (mengingat waktunya), kemudian sensor menghitung waktu yang dibutuhkan antara pengiriman gelombang dan kembalinya. Sensor kemudian mengirim sinyal HIGH (5V) pada ECHO.
  3. ECHO, durasi HIGH pada pin ini sama dengan durasi antara waktu kirim dan kembali gelombang (ultrasonic pulse). Kode kita menghitung durasi tersebut untuk mendapatkan nilai jarak.
  4. GND, sepertinya tidak perlu penjelasan untuk pin Ground (GND).

Sensor ini menggunakan input 5V dan output yang dikirimkan pada pin ECHO juga 5V. Hal tersebut tidak sehat untuk GPIO pin pada Raspberry yang hanya membolehkan input 3,3V. Karena itu kita membutuhkan Voltage Divider menggunakan 2 resistor pada koneksi pin ECHO dan GPIO 24.

Peralatan yang digunakan selain Raspi dan ultrasonic sensor adalah kabel jumper, transistor 1KΩ dan 2KΩ, juga breadboard.

Diagram Rangkaian.

Diagram Rangkaian

Diagram Rangkaian

Wiring saya.

Wiring

Wiring

Wiring

Wiring

Kode distance.py.

Hasilnya.

Salam.

Lebih lanjut:

http://www.modmypi.com/blog/hc-sr04-ultrasonic-range-sensor-on-the-raspberry-pi

https://www.sparkfun.com/quiz/46

http://komponenelektronika.biz/sensor-ultrasonik.html

Raspberry Pi 2 GPIO 16×2 LCD

Setelah LED dan Servo, sekarang saya coba koneksi Raspberry Pi 2 dengan 16×2 LCD.

Peralatan yang saya butuhkan.

  • 16×2 LCD warna teks putih seharga Rp76.500.
16x2 LCD

16×2 LCD

    Layout pin pada LCD.
16x2 LCD Pin Layout

16×2 LCD Pin Layout

Pada pin paling pojok terdapat angka 1 dan 16, menunjukkan urutan pin. Kegunaan pin:

  1. Ground (GND)
  2. VCC (5volt)
  3. Contrast Adjustment (VO)
  4. Register Select (RS) berguna untuk mengirim perintah pada LCD (posisi LOW) dan menjadi data mode yang berguna untuk transer data saat posisi HIGH
  5. Read/Write (R/W)
  6. Clock (Enable)
  7. Bit 0
  8. Bit 1
  9. Bit 2
  10. Bit 3
  11. Bit 4
  12. Bit 5
  13. Bit 6
  14. Bit 7
  15. Backlight LED Anode (+)
  16. Backlight LED Cathode (-)

Karena akan menggunakan 4 bit operation maka Bit 0 sampai Bit 3 (pin 7 – 10) tidak digunakan. Selengkapnya koneksi antara pin LCD dan raspi:

Pin LCD GPIO Pin Raspi
1 GND
2 5V PWR
3 GND
4 GPIO 25
5 GND
6 GPIO 24
7 Tidak digunakan
8 Tidak digunakan
9 Tidak digunakan
10 Tidak digunakan
11 GPIO 23
12 GPIO 17
13 GPIO 21
14 GPIO 22
15 5V PWR (melalui Resistor)
16 GND

 

  • Tak lupa header male senilai Rp1.800 untuk menyambungkan LCD dengan perangkat lain (dalam kasus saya, breadboard). Header male inilah, yang pada bagian sebelumnya, disebut sebagai pin. Karena tidak memiliki solder, saya mampir di tukang reparasi elektronik (kalau dipikir-pikir ternyata kita menggunakan kata tukang untuk penyebutan hampir semua pekerjaan) untuk minta tolong menyolder header dan LCD.
Header 1 Pin

Header 1 Pin

Peralatan lain seperti breadboard, jumper wire dan resistor (menggunakan 1K Ω).

Untuk kemudahan ngoding, saya menggunakan library dari Adafruit.

Setelah berada di foler Adafruit_CharLCD, tambahkan kode cheap_lcd.py:

Seperti biasa, gunakan perintah sudo untuk mengakses GPIO.

Hasilnya:

16x2 LCD

16×2 LCD

Dengan sedikit modifikasi a la algoritma mahasiswa semester awal maka didapatkanlah running text.

Sederhana, penerapannya bisa untuk news ticker yang kontennya dari twitter atau RSS Feed. Pada layanan umum yang jamak kita temukan di bank, atau bahkan layanan publik yang diselenggarakan oleh pemerintah.

Salam.

Lebih lanjut:

http://raspberrypi.powersbrewery.com/project-9-16×2-lcd-screen-test/

https://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code

http://www.forum-raspberrypi.de/Thread-python-lcd-mit-adafruit

http://crumpspot.blogspot.co.id/2013/05/using-20×4-lcd-displays-with-mcp23017.html

http://raspberrypi.stackexchange.com/questions/9298/what-is-the-maximum-current-the-gpio-pins-can-output

http://aderubiar.blogspot.co.id/2012/05/cara-menghitung-resistor-buat-lampu-led.html

https://www.raspberrypi.org/forums/viewtopic.php?f=91&t=104034

https://learn.adafruit.com/drive-a-16×2-lcd-directly-with-a-raspberry-pi?view=all

http://www.modmypi.com/blog/how-to-drive-a-character-lcd-display-using-the-raspberry-pi

Raspberry Pi 2 GPIO Servo

Pindah dari LED ke Servo kali ini saya ingin menjajal bagaimana mengontrol servo dengan Raspberry Pi 2. Nantinya bisa diaplikasikan untuk membuat RC Car, kaki robot atau yang lain.

Perlengkapan yang diperlukan, selain raspi:

  • Servo, pakai GWS S03N STD seharga Rp154ribu.
Servo

Servo

Servo memiliki 3 kabel, dalam kasus GWS S03N STD berwarna cokelat, merah dan merah lebih terang, menurut keterangan di sini, begini aturannya:

  1. Kabel gelap (cokelat, hitam) negatif.
  2. Kabel terang (merah), yang di tengah, selalu positif.
  3. Kabel lebih terang (merah terang atau putih) untuk sinyal.

Servo yang digunakan adalah servo yang umum ditemukan, bergerak 180°. Cara mengendalikannya adalah dengan mengirim Pulse-width Modulation (PWM) melalui kabel sinyal. Sudut putaran (0°, 90°, 180°) motor ditentukan oleh  lebar pulsa yang diterima.

  1. Lebar 1ms (miliseconds) atau < 1,5ms akan memutar servo ke sudut (ke kiri).
  2. Lebar 1,5ms menghasilkan sudut 90°.
  3. Lebar 2ms atau > 1,5ms menjadikan posisi servo ke 180° (ke kanan).
Servo PWM

Servo PWM

Untuk mempertahankan posisinya, servo membutuhkan sinyal diulang tiap 20ms. Jika terdapat sinyal HIGH selama 1ms maka posisi servo akan berada di sudut , demikian seterusnya untuk 1,5ms dan 2ms. Python script kita akan menggunakan frekuensi 50Hz, alternatif lain yang biasa digunakan adalah 100Hz.

Dengan frekuensi (f) 50Hz maka periode (T) yang dihasilkan adalah:

Period

Period

Sehingga periode (T) = 1/50 = 0,02seconds atau 20ms, tepat sesuai dengan kebutuhan servo. Pada raspi kita tidak menggunakan pulse width tapi Duty-Cycle dengan rumusan.

Duty-Cycle = Pulse width/Period

Period = 1/frequency

Duty-Cycle = Pulse width * frequency

Jika pulse width sebesar 1ms dengan frekuensi 50 Hz  maka Duty-Cycle yang dibutuhkan adalah:

Duty-Cycle = o,001 * 50 = 0,05 = 5%

Ilustrasi perhitungan selengkapnya untuk sudut , 90° dan 180° sebagai berikut.

Sudut Pulse Width frequency Duty-Cycle
0,001 50 5%
90° 0,0015 50 7,5%
180° 0,002 50 10%
  • Resistor, 1KΩ untuk mengamankan raspi.
Resistor

Resistor

  • Baterai AA, 4 buah biar kuat gerakin servo yang membutuhkan tenaga 5V 1A.
Baterai AA

Baterai AA

Jika ingin lebih rapi, 4 baterai AA dapat dikemas dalam boks, seharga Rp12ribuan.

Boks Baterai

Boks Baterai

Jumper wire

Jumper wire

  • Dan tentu saja tak ketinggalan, breadboard. Agar tak payah menyolder.
Breadboard

Breadboard

Diagram Rangkaian:

Diagram Rangkaian

Diagram Rangkaian

Arus positif dari baterai AA dialirkan ke servo (kabel tengah), dari servo kabel cokelat (negatif) dialirkan ke pin GND dan baterai AA. Sedang kabel terang (sinyal) servo dihubungkan ke resistor kemudian ke pin no 7 pada raspi.

Python script:

Hasilnya.

Seperti biasa, tak terlalu sukar karena memang hanya fungsi dasar yang saya kerjakan. Hahahaha.

Salam.

Lebih lanjut:

http://www.rcpowers.com/community/threads/help-needed-with-servo-wire-polarity.12494/

http://digiwarestore.com/en/servo/gws-servo-s03n-std-f-713084.html

http://www.toptechboy.com/raspberry-pi/raspberry-pi-lesson-28-controlling-a-servo-on-raspberry-pi-with-python/

https://www.rhydolabz.com/wiki/?p=8271

http://razzpisampler.oreilly.com/ch05.html

http://trikueni-desain-sistem.blogspot.co.id/2014/03/Pengertian-Motor-Servo.html

http://www.geyosoft.com/2014/pwm-pulse-width-modulation

Raspberry Pi 2 DSLR Remote Shutter Release

Sesuai janji saat baru mendapatkan Raspberry Pi 2, saya akan cerita bagaimana membuat remote shutter release menggunakan raspi ini. DSLR yang digunakan adalah Nikon D90, menggunakan kamera lain mungkin saja tidak berhasil, sila periksa model apa saja yang kemungkinan besar berhasil.

Kenapa shutter release? Dengan shutter release fotografer dapat beberapa manfaat, seperti bisa swafoto dan menghindari goncangan pada kamera, yang umumnya terjadi saat kamera dipegang (oleh manusia) dan shutter speed diset pada nilai rendah.

Shutter release sendiri ada 3 jenis:

  • Dengan kabel, kekurangannya adalah ‘siapa yang butuh kabel saat ini? semua harus wireless! wireless!’
  • Infrared, sayangnya tidak semua kamera mendukung infrared, selain karena jarak maksimal hanya sekitar 5 meter.
  • Wireless, ini istilah yang aneh juga, toh infrared juga wireless. Di era sebelum ini, kamera harus dipasang receiver untuk dapat menggunakan wireless shutter speed dan mahal set perangkatnya, inilah yang disasar disubstitusikan oleh apa yang kita bahas sekarang. Ternyata rerata kamera (DSLR) sekarang sudah melengkapi perangkatnya dengan fitur ini, tinggal aktifkan di kamera, connect dengan gawai, lalu shutter dapat diakses nirkabel, persis yang dilakukan oleh kamera aksi.

Wireless shutter release dengan raspi ini dimainkan di lapangan raspbian dan gol indah tercipta melalui umpan lambung akurat gphoto2 yang kemudian dilanjutkan dengan tendangan voli oleh php. Siapa manager di balik permainan indah ini? Adalah Blaize, yang meramu taktik menawan yang dapat memadukan dua pemain kunci ini menjadi padan. Jangan lupakan agen bernama Gonzalo Cao Cabeza de Vaca yang membawa gphoto2 dapat berlaga di raspbian.

Dalam sistem ini, kalau boleh dikatakan sebagai sistem, Raspberry Pi 2 bertugas untuk:

  • Menjadi Access Point, agar gawai dapat melakukan koneksi nirkabel. Salah satu petunjuk agar raspi menjadi AP ada di sini.
  • Menyajikan antarmuka web, yang diakses melalui gawai.
  • Mengirim perintah pada kamera untuk memicu shutter.

Diagram dan flowchart sebagai berikut.

Diagram Sistem

Diagram Sistem

Flowchart

Flowchart

Cukup bualannya, mari dimulai meramu wireless shutter release a la raspi.

  1. Instalasi gphoto2, di raspi paling mudah menggunakan bantuan mas Gonzalo.

  1. Instalasi PHP5.

  1. PHP Script sebagai antarmuka sistem.

  1. Masuk ke direktori berisi PHP script yang akan jadi antarmuka.

  1. Eksekusi PHP script, menjadikan raspi sebagai peladen.

Setelah instalasi, selanjutnya cukup menjalankan langkah 4 dan 5 untuk menggaktifkan sistem.

Melalui gawai, atau komputer, arahkan peramban ke alamat 0.0.0.0:8000. Angka 0.0.0.0 dapat diganti dengan ip raspi, misal 192.168.0.106. Begini hasilnya jika tampil pada gawai. (Foto dari postingan agan Blaize, sang kreator).

Antarmuka

Antarmuka

Hasilnya seperti ini.

Tidak sulit amat, hanya agak kecewa karena ternyata DSLR sekarang sudah dilengkapi dengan fitur ini. Mwahahaha.

Salam.

Lebih lanjut:

https://www.maketecheasier.com/set-up-raspberry-pi-as-wireless-access-point/

http://techlife.blaize.net/2014/04/20/gphoto-webui-a-php-web-ui-for-gphoto2/

https://github.com/gonzalo/gphoto2-updater

Raspberry Pi 2 GPIO LED (Bagian 3 – Selesai)

Setelah berhasil:

  1. Menyalakan LED
  2. Membuat LED berkedip

Sekarang saatnya menambahkan switch alias tactile pada rangkaian.

Tactile

Tactile

Switch 2 pin (kaki), gambar di atas 4 pin – abaikan, ditebus dengan harga Rp500 sebuah.

Diagram rangkaian yang baru seperti ini.

Diagram Rangkaian

Diagam Rangkaian

Flowchart rangkaian:

Flowchart Rangkaian

Flowchart Rangkaian

Intinya sih program ‘mendengar’ apakah GPIO 26 bernilai True (jika tactile ditekan), jika benar maka kirim sinyal HIGH ke GPIO 4 (pin 7).

Kode switch.py.

tinggal panggil switch.py lalu selesai.

Seperti biasa, modifikasi script python dapat menghasilkan tampilan yang lebih menghibur.

Ternyata mudah membuat rangkaian seperti ini (ga tau kalau pake microcontroller, sepertinya prinsipnya sama saja).

Salam.

Lebih lanjut:

http://raspberry.io/projects/view/reading-and-writing-from-gpio-ports-from-python/

http://razzpisampler.oreilly.com/ch07.html

Raspberry Pi 2 GPIO LED (Bagian 2)

Setelah berhasil membuat Raspberry Pi 2 menyalakan LED. Meski kalau dipikir-pikir terlalu sederhana karena hanya menyambungkan arus listrik positif dan negatif, sama seperti (atau bahkan lebih rendah tantangannya ketimbang) tugas yang dikerjakan semasa SD dulu.

Menyambung kisah sebelumnya, semua perangkat sama, bedanya hanya Anoda yang sebelumnya disambungkan dengan pin 3,3 volt dipindah ke salah satu pin GPIO (dalam kasus ini GPIO 4). Sebagai pengingat, berikut Diagram GPIO Raspi.

Raspberry Pi 2 GPIO

Raspberry Pi 2 GPIO

Sehingga Diagram rangkaian yang baru adalah sebagai berikut.

Diagram Rangkaian

Diagram Rangkaian

Script Python yang digunakan amatlah sederhana.

Selanjutnya script tinggal dipanggil dengan perintah sudo (harus sebagai root untuk dapat mengakses GPIO).

 

 

 

 

 


sedikit modifikasi script dapat membuat LED berkedip.

 

 

 

 


Ternyata mudah, tidak butuh waktu berjam-jam atau bahkan berhari-hari. Saya teringat tugas semesteran membuat LED berkedip menggunakan AT89S51 berakhir antiklimaks karena saya jiper duluan menghadapi rangkaian elektronika seperti resistor, kapasitor, IC regulator, xtall. Mungkin memang hikmahnya adalah fokus menghadapi masalah, berusaha tenang, karena ketenangan (juga antusiasme) dapat membuat masalah yang membuat kepala sakit selama satu semester ternyata bisa selesai dalam waktu kurang dari satu jam.

Salam.