صنع ساعة من الكتاب الإلكتروني PRS-505





من المثير للدهشة أن كتاب Sony prs-505 الإلكتروني القديم مصمم رائع جدًا لجميع أنواع المنتجات محلية الصنع. أخذت هذا الكتاب مرة أخرى لأجعل من نفسي ساعة "ورقية". يعجبني هذا الحل لأن الأعداد كبيرة ومشرقة بينما لا تتوهج في الظلام ولا تتداخل مع النوم. إن فكرة الساعة على الورق الإلكتروني ليست جديدة على الإطلاق ، لكنني أردت فقط أن ألعب بهذا الكتاب الإلكتروني الرائع مرة أخرى. والنتيجة هي نوع من مشروع عطلة نهاية الأسبوع ، لأنني أستطيع ذلك. كالعادة ، جمعت كل الأخطاء والأخطاء المحتملة. لقد وصفت طريقي الشائك في هذا المقال.



خلفية



من المؤكد أن الكثير من الناس يتذكرون رسالتي " الكتاب الإلكتروني كشاشة عرض " التي أخبرت فيها كيفية العمل مع عرض كتاب إلكتروني.





صورة من منشور " الكتاب الإلكتروني كشاشة عرض ".



هناك ، في الواقع ، كنت أعمل مع الإطار المؤقت لجهاز الفيديو ، حيث عرضت الصورة. كانت المشكلة الرئيسية في تلك المقالة نقل الصورة إلى الجهاز. ثم لم أجد ما يكفي من البارود والحافز في نفسي لإنهاء خطتي ، لأن الكتاب أعطي لشخص ما ، وفكرة صنع مثل هذا الجهاز نسيت. لكن كل شيء تغير بعد صدور مقال رائع من المؤلفاليكسشنوب: " حبر إلكتروني لـ Wirenboard 5 أو رسم رموز شريطية أثناء التنقل ". في هذه المقالةاليكسشنوبحل مشكلة عرض الباركود على شاشة هذا الكتاب لتصحيح ماسح الباركود. وفقط حل مشكلة نقل الصور للكتاب.







باختصار إذن اليكسشنوبأنشأ وحدة kernel ، والتي ، عند توصيل كتاب عبر USB ، تنشئ قرصًا ثابتًا افتراضيًا إضافيًا ، بحجم 600 × 800 = 480،000 بايت. بتعبير أدق ، سيكون حجم القرص 1 ميغابايت ، لكن المساحة المرئية تبلغ 480 ألف بايت فقط. في الواقع ، كل ما يدخل في ذاكرة القرص سوف ينتقل إلى شاشة الكتاب. بشكل عام ، هذه قطعة رائعة ، يمكنك حتى أن ترى بصريًا كيف يسير تخطيط القرص ، على سبيل المثال ، إذا قمت بإنشاء نظام ملفات هناك. على سبيل المثال ، يمكنك إرسال صورة إلى كتاب باستخدام الأمر التالي:



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


كل ما تم وصفه بمزيد من التفصيل في هذا المقال هو استمرار أيديولوجي لهاتين التجربتين.



لنبدأ ونصلح ونفعل ذلك مرة أخرى



بعد قراءة المقال ، اتصلت بمؤلفهاليكسشنوب... وقرر إعطائي كتابًا واحدًا مفككًا للتجارب. نتيجة لذلك ، بعد أن كنت في متناول اليد ، شرعت في التجارب بسعادة. أول شيء كنت بحاجة إلى القيام به هو تثبيت البرنامج الثابت prs-plus . وبعد ذلك يمكنك محاولة إنشاء محرك أقراص ثابت افتراضي لنقل الصور وفقًا للمقالاليكسشنوب... لن أقتبس من المقال ، إنه دليل شامل. بعد ذلك أحاول نقل الصورة باستخدام الأمر dd.





تنتقل الصورة بطريقة جديدة.



أدركت بسعادة أن كل شيء ، كل البطاقات في يدي ، وهناك واجهة لنقل الصور ، يمكنك استخدامها كما تريد ، بدأت في إجراء مجموعة من التجارب. بدأت في كتابة برنامج على مدار الساعة ، وتصحيح إخراجهم في كتاب. نتيجة لذلك ، كما هو الحال عادةً مع الأمر "dd" ("القرص المدمر") ، أخطأت في القرص ، و ...

نتيجة لذلك ، كتبته بدلاً من قرص افتراضي ، إلى قرص (محرك أقراص فلاش) للكتاب نفسه ، وحولته إلى لبنة ... -الجزء. لا أستطيع حتى أن أنقل كل المشاعر التي عشتها في تلك اللحظة.





كتاب مفتوح.



الشيء الرئيسي ، كيفية استعادة هذا الكتاب ، لم يكن واضحًا. كان من الواضح أنك بحاجة إلى أخذ كتاب آخر من نفس الشيء وإعادة تثبيت البرنامج الثابت prs-plus عليه. ثم خذ أول 480.000 بايت منها وانقلها إلى هذا الطوب.



بشكل عام ، كنت حزينًا وخائفًا واشتريت كتابًا إلكترونيًا جديدًا من Sony prs-505 على Avito. في الوقت نفسه ، كان الكتاب يحتوي على جميع أزرار العمل ، وفي إحدى الحالات ، لم يتمزق القطارات. حتى أنه يمكن استخدامه للغرض المقصود منه ، والشيء الوحيد هو أن البطارية نصف ميتة. لكن من أجل أغراضي ، كان ذلك كافياً. الآن ، مع البطاريات الفارغة ، يمكن العثور على هذه الكتب حتى ألف روبل ، في رأيي السعر المثالي لجهاز Linux ، مع مصدر مفتوح ونظام رائع لتوفير الطاقة.





كتاب إلكتروني تم شراؤه حديثًا.



مع هذا الكتاب ، كررت إجراء تثبيت البرامج الثابتة بنفس الطريقة ، ثم ، كما هو مخطط له ، قمت بنقل 480،000 بايت من قسم الدهون من كتاب إلكتروني إلى آخر. وهكذا ، انتهى بي الأمر بكتابين استمتعت بهما بالفعل. صحيح أن الشخص الذي تم تفكيكه بالكامل بدأ يتحول إلى عربات التي تجرها الدواب بلا إله ، ولم أستخدمها عمليًا.



نكتب البرمجيات



فكرة الساعة بسيطة للغاية. سنقوم ببساطة بتكوين صورة للوقت على لوحة قماشية ، ثم نرسلها إلى المخزن المؤقت للإطار. للقيام بذلك ، سنشكل الأعداد والنقطتين. دعني أذكرك أن دقة الكتاب هي 600 × 800 (لم أكن مخطئًا ، بالضبط 600 × 800) ، إذا نظرت إليه مثل ورقة.

CC: MM: SS - هذا ما حصلنا عليه من ثمانية أحرف. في المجموع ، كل رقم هو 100x600. بالنسبة للأرقام اخترت خطًا رائعًا "Gideon's-Army-". بعد ذلك ، باستخدام imagemagick ، ​​نشكل الأرقام والنقطتين بالأوامر التالية:



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




نتيجة لذلك ، نحصل على أرقام من 0 إلى 9 ونقطتين. فيما يلي مثال للرقم 2:







إذا قمت بقطع رأس ملف pgm معين ، فستكون هذه البيانات مناسبة للكتابة على الفور في الكتاب. لقد تحدثت عن هذا بالتفصيل في مقالتي " كتاب إلكتروني كشاشة عرض " ، لذلك لن أتطرق إلى هذا بالتفصيل.

ثم كان الأمر يتعلق بالتكنولوجيا لتشكيل صورة نقطية من هذه الأرقام للكتابة إلى الإطارات المخزنة ببساطة عن طريق نسخ المصفوفة باستخدام تعيين الملف في الذاكرة. يعيش المشروع بأكمله في المستودع: github.com/dlinyj/sony_prs-505_clock .



البرنامج بأكمله وارد في ملف time.c... لن أقوم بتحليل الكود بالكامل ، لكنني سأركز على بضع نقاط. في هذا البرنامج ، أقوم فقط بتعيين ملف في الذاكرة (إما مخزن إطار مؤقت ، أو ملف اختبار ، أو ملف جهاز قرص افتراضي للكتاب الإلكتروني). بعد ذلك ، نحن نعمل بالفعل مع الملف كمنطقة ذاكرة. أنسخ صور رموز الساعة فيه ، اعتمادًا على الوقت الحالي.

نعرض ملفًا في الذاكرة سأكون فيه صورة.



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


يتم نسخ الصور في وظيفة print_symbol ، والتي أمرر إليها رقم موضع الرقم واسم ملف الرقم المراد نسخه.



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);
}


هنا أقوم بفتح ملف الأرقام ، ونسخه إلى الموضع المناسب في منطقة الذاكرة للصورة المعينة.

من حيث المبدأ ، كان من الممكن في كل مرة عدم فتح الملف ، وقراءته ، ثم إغلاقه ، ولكن ببساطة عمل نسخة في الذاكرة ونسخة من هناك ، ولكن الفكرة الجيدة جاءت الآن فقط.

إذا كنت تريد تشغيل هذا البرنامج على جهاز الكمبيوتر الخاص بك لتكوين صورة ، فلا تنس تغيير المترجم في Makefile وإزالة التعريف:



#   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


نقوم بتجميع البرنامج وتشغيله بدون معلمات. نتيجة لذلك ، حصلنا على ملف “test.pgm” بالوقت الحالي.







إذا قمت بتحديد جهاز ملف معين ، فسيتم إنشاء الصورة بالفعل بدون رأس ملف pgm ، وهو مناسب للتحميل إلى الكتاب. أيضًا ، يمكن تحميل هذا البرنامج في الكتاب ، ثم تحديث الوقت تلقائيًا.

قمت بتشغيل هذا البرنامج على جهاز كمبيوتر متصل به كتاب USB ، وعرضت الوقت عليه. يبدأ البرنامج ببساطة (البرنامج النصي start.sh ، يقبل ملف الجهاز):



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


نتيجة لذلك ، يمكنك مشاهدة الساعة تعمل على الشاشة.







الاستنتاجات



تمت كتابة البرنامج بطريقة يمكن جمعها وتعبئتها في كتاب إلكتروني لتحويلها إلى ساعة. قد يبدو من المضحك استخدام مثل هذا الجهاز التقني المعقد كساعة ، لكن لم لا. الآن البطاريات تموت في هذه الكتب ، واستبدالها مهمة شاقة إلى حد ما. إذا تم استبدال البطارية بمحاكيها (فراغ يسمح للكتاب بالعمل ، لكنه لا يخزن الطاقة) ، وكان الكتاب متصلاً بشاحن ، فسيعمل باستمرار.

أظهرت تجاربي أن الكتاب الموجود على الشاحن لا يدخل في وضع السكون ويمكن أن تعمل الساعة بشكل مستمر. بالإضافة إلى ذلك ، يحتوي الكتاب نفسه على ساعة مدمجة ، ويمكنه عرض الوقت بشكل صحيح.

من بين المشاكل التي واجهتها ولم أتمكن من حلها ، هذه هي كيفية إضافة برنامج الساعة إلى بدء تشغيل الكتاب ، مع خنق تحميل الواجهة الرسومية نفسها ، بحيث لا تكون هناك منافسة على العرض. بشكل عام ، لا يزال هناك مجال لمزيد من التجريب والتجريب. لكن هذا سيكون بالفعل قصة مختلفة تمامًا ، لقد فزت بهذا الكتاب ، وأعرض الساعة ، ويمكنك بدء مشاريع أخرى.

ما هي الاقتراحات المجنونة التي لديك لاستخدام الكتاب الإلكتروني Sony prs-505؟



الروابط:



  1. "الكتاب الإلكتروني كشاشة عرض".
  2. "حبر إلكتروني لـ Wirenboard 5 أو رسم رموز شريطية أثناء التنقل."
  3. مستودع المشروع.
  4. تاريخ تجاربي 1 ، 2 ، 3 ، 4 .



All Articles