Membuat jam tangan dari e-book PRS-505





Anehnya, e-book Sony prs-505 lama adalah desainer yang sangat keren dari semua jenis produk buatan sendiri. Sekali lagi saya mengambil buku ini untuk membuat diri saya menjadi jam tangan "kertas". Saya suka solusi ini karena angkanya besar dan cerah, sementara tidak bersinar dalam gelap dan tidak mengganggu tidur. Ide jam di atas kertas elektronik bukanlah hal baru sama sekali, tapi saya hanya ingin bermain-main dengan e-book keren ini lagi. Hasilnya semacam proyek akhir pekan, karena saya bisa. Seperti biasa, saya mengumpulkan semua kemungkinan garu dan kesalahan. Saya menjelaskan jalan berduri saya di artikel ini.



Latar Belakang



Pasti banyak orang yang mengingat postingan saya " E-book as a display " di mana saya menceritakan cara kerja dengan tampilan e-book.





Foto dari posting " E-book sebagai tampilan ".



Di sana, sebenarnya, saya bekerja dengan framebuffer perangkat video, tempat saya menampilkan gambarnya. Masalah utama dalam artikel itu adalah mentransfer gambar ke perangkat. Kemudian, saya tidak menemukan cukup bubuk mesiu dan motivasi dalam diri saya untuk menyelesaikan rencana saya, karena buku itu diberikan kepada seseorang, dan gagasan untuk membuat alat semacam itu terlupakan. Tapi semuanya berubah setelah rilis artikel luar biasa dari penulisalexshnup: " Tinta elektronik untuk Wirenboard 5 atau menggambar barcode di Go ". Dalam artikel inialexshnupmemecahkan masalah menampilkan kode batang di layar buku ini untuk debugging pemindai kode batang. Dan baru saja memecahkan masalah mentransfer gambar ke buku.







Singkatnya, lalu alexshnupmembuat modul kernel yang, ketika sebuah buku dihubungkan melalui USB, membuat hard disk virtual tambahan, berukuran 600x800 = 480.000 byte. Lebih tepatnya, disk akan berukuran 1 MB, tetapi area yang terlihat hanya 480.000 byte. Faktanya, semua yang masuk ke memori disk akan masuk ke layar buku. Secara umum, ini adalah hal yang brilian, Anda bahkan dapat melihat secara visual bagaimana tata letak disk, jika, misalnya, Anda membuat sistem file di sana. Misalnya, Anda dapat mengirim gambar ke sebuah buku dengan perintah berikut:



djpeg -pnm -grayscale test.jpg | dd bs=1 skip=15 | dd of=/dev/sdx bs=480k


Semua yang dijelaskan lebih lanjut dalam artikel ini adalah kelanjutan ideologis dari dua eksperimen ini.



Mari kita mulai, perbaiki dan lakukan lagi



Setelah membaca artikel tersebut , saya menghubungi penulisnyaalexshnup... Dan dia memutuskan untuk memberi saya satu buku yang dibongkar untuk eksperimen. Hasilnya, karena memiliki peralatan yang berfungsi, saya dengan senang hati memulai eksperimen. Hal pertama yang perlu saya lakukan adalah menginstal firmware prs-plus . Dan setelah itu Anda dapat mencoba membuat hard drive virtual tersebut untuk mentransfer gambar sesuai dengan artikelalexshnup... Saya tidak akan mengutip artikelnya, ini adalah panduan komprehensif. Setelah itu saya coba transfer gambar menggunakan perintah dd.





Gambar ditransmisikan dengan cara baru.



Dengan gembira menyadari bahwa semuanya, semua kartu ada di tangan saya, ada antarmuka untuk mentransfer gambar, Anda dapat menggunakannya sesuka Anda, saya mulai melakukan banyak percobaan. Saya mulai menulis program jam, dan men-debug outputnya ke sebuah buku. Akibatnya, seperti yang biasanya terjadi dengan perintah "dd" ("disk destroyer"), saya membuat kesalahan dengan disk, dan ...

Akibatnya, saya menulisnya alih-alih disk virtual, ke disk (flash drive) buku itu sendiri, mengubahnya menjadi batu bata ... Saya hanya mengambil dan menulis 480.000 byte lemak -bagian. Saya bahkan tidak bisa menyampaikan semua perasaan yang saya alami saat itu.





Buku terbuka.



Hal utama bagaimana memulihkan buku ini tidak jelas. Jelas bahwa Anda perlu mengambil buku lain yang sama dan menginstal ulang firmware prs-plus di atasnya. Kemudian ambil 480.000 byte pertama ini darinya dan pindahkan ke bata ini.



Secara umum, saya sedih, ketakutan, dan membeli e-book Sony prs-505 baru di Avito. Pada saat yang sama, buku itu dengan semua tombol yang berfungsi, dalam kasus, kereta tidak robek. Itu bahkan bisa digunakan untuk tujuan yang dimaksudkan, satu-satunya hal adalah baterainya setengah mati. Tapi untuk tujuan saya, itu sudah cukup. Sekarang, dengan baterai mati, buku-buku ini dapat ditemukan hingga seribu rubel, menurut saya harga ideal untuk perangkat Linux, dengan sumber terbuka dan sistem hemat daya yang begitu indah.





E-book yang baru dibeli.



Dengan buku ini, saya mengulangi prosedur untuk menginstal firmware dengan cara yang sama, kemudian, seperti yang direncanakan, saya mentransfer 480.000 byte bagian lemak dari satu e-book ke e-book lainnya. Jadi, saya berakhir dengan dua buku, yang dengannya saya sudah bersenang-senang. Benar, yang dibongkar seluruhnya mulai menjadi buggy tak bertuhan, dan aku praktis tidak menggunakannya.



Kami menulis perangkat lunak



Ide jam tangan ini cukup sederhana. Kami hanya akan membentuk gambar waktu di kanvas, dan kemudian mengirimkannya ke framebuffer. Untuk melakukan ini, kami akan membentuk angka dan titik dua. Izinkan saya mengingatkan Anda bahwa resolusi buku itu 600x800 (saya tidak salah, yaitu 600x800), jika Anda melihatnya seperti selembar kertas.

HH: MM: SS - itulah yang kami dapatkan delapan karakter. Secara total, setiap digit berukuran 100x600. Untuk nomor saya memilih font yang bagus "Gideon's-Army-". Selanjutnya, menggunakan imagemagick, kami membentuk angka dan titik dua dengan perintah berikut:



for i in `seq 0 9`; do convert  -font Gideon’s-Army- -pointsize 150 -size 100x600\
-gravity center -rotate 90 -depth 8  caption:"$i" $i.pgm;done

convert  -font Gideon’s-Army- -pointsize 150 -size 100x600 -gravity center -depth 8\
-rotate 90 caption:':' dots.pgm




Hasilnya, kami mendapatkan angka dari 0 hingga 9 dan titik dua. Berikut adalah contoh nomor 2:







Jika Anda memotong header dari file pgm yang diberikan, maka data ini langsung cocok untuk penulisan ke buku. Saya membicarakan hal ini secara mendetail dalam artikel saya " Buku elektronik sebagai pajangan ", jadi saya tidak akan membahas ini secara mendetail.

Kemudian masalah teknologi untuk membentuk bitmap dari angka-angka ini untuk ditulis ke framebuffer hanya dengan menyalin matriks menggunakan pemetaan file ke dalam memori. Seluruh proyek tinggal di repositori: github.com/dlinyj/sony_prs-505_clock .



Seluruh program terdapat dalam file time.c... Saya tidak akan menganalisis seluruh kode, tetapi saya akan membahas beberapa poin. Dalam program ini, saya hanya melakukan pemetaan file ke dalam memori (baik frame buffer, atau file tes, atau file perangkat virtual disk e-book). Selanjutnya, kami sudah mengerjakan file sebagai area memori. Saya menyalin gambar simbol jam ke dalamnya, tergantung pada waktu saat ini.

Kami menampilkan file dalam memori di mana saya akan membentuk gambar.



image = mmap (0, file_lenght, PROT_WRITE, MAP_SHARED, fd, 0);


Gambar disalin dalam fungsi print_symbol, di mana saya meneruskan nomor posisi digit dan nama file digit untuk disalin.



void print_symbol (unsigned int position, char * filename) {
	void * numer_im;
	int numer;
	numer = open (filename, O_RDWR);
	numer_im = mmap (0, NUMER_SIZE, PROT_WRITE, MAP_SHARED, numer, 0);
	memcpy(&image[first_header + NUMER_PIXELS * position], &numer_im[16], NUMER_PIXELS);
	munmap (numer_im, NUMER_SIZE);
	close(numer);
}


Di sini saya membuka file digit, dan menyalinnya ke posisi yang sesuai di area memori dari gambar yang dipetakan.

Pada prinsipnya, dimungkinkan setiap kali untuk tidak membuka file, membacanya, lalu menutupnya, tetapi cukup membuat salinan dalam memori dan menyalin dari sana, tetapi ide yang baik baru datang sekarang.

Jika Anda ingin menjalankan program ini di komputer Anda dengan bentuk gambar, jangan lupa untuk mengubah compiler di Makefile dan menghapus define:



#   Makefile   .
#CFLAGS=-D __BOOK__
CC = gcc
#CC= /opt/cross/gcc-3.2.3-glibc-2.2.5/arm-unknown-linux-gnu/bin/arm-unknown-linux-gnu-gcc


Kami mengkompilasi program dan menjalankannya tanpa parameter. Hasilnya, kami mendapatkan file "test.pgm" dengan waktu saat ini.







Jika Anda menentukan perangkat file tertentu, maka sudah pembentukan gambar tanpa header file pgm, cocok untuk diunggah ke buku. Selain itu, program ini dapat dimuat ke dalam sebuah buku, dan kemudian secara otomatis memperbarui waktu.

Saya menjalankan program ini di PC dengan buku USB terhubung, dan menampilkan waktu di sana. Program ini dimulai dengan sederhana (skrip start.sh, menerima file perangkat):



#!/bin/bash
while true;do ./time $1;done


Hasilnya, Anda bisa melihat jam berjalan di layar.







kesimpulan



Program ini ditulis sedemikian rupa sehingga dapat dikumpulkan dan diisi menjadi e-book untuk diubah menjadi jam. Mungkin terlihat lucu menggunakan perangkat teknis yang rumit seperti jam, tetapi mengapa tidak. Sekarang baterai sedang sekarat dalam buku-buku ini, dan menggantinya adalah tugas yang agak melelahkan. Jika baterai diganti dengan emulatornya (bagian kosong yang memungkinkan buku berfungsi, tetapi tidak menyimpan energi), dan buku dihubungkan ke pengisi daya, maka buku akan terus berfungsi.

Eksperimen saya menunjukkan bahwa buku di pengisi daya tidak masuk ke mode tidur dan jam tangan dapat bekerja terus menerus. Ditambah lagi, buku itu sendiri memiliki jam built-in, dan dapat menunjukkan waktu dengan benar.

Salah satu masalah yang saya temui, dan tidak dapat dipecahkan, adalah bagaimana menambahkan program jam ke pemuatan otomatis buku, sambil menahan pemuatan antarmuka grafis itu sendiri sehingga tidak ada persaingan untuk tampilan. Secara umum, masih ada ruang untuk eksperimentasi dan eksperimentasi lebih lanjut. Tapi itu sudah menjadi cerita yang sama sekali berbeda, saya memenangkan buku ini, menampilkan jam, Anda dapat memulai proyek lain.

Saran gila apa yang Anda miliki untuk menggunakan e-book Sony prs-505?



Tautan:



  1. "E-book sebagai tampilan."
  2. "Tinta elektronik untuk Wirenboard 5 atau menggambar barcode di Go."
  3. Repositori proyek.
  4. Sejarah eksperimen saya 1 , 2 , 3 , 4 .



All Articles