طباعة تقويم جوجل على ورق الفواتير

طباعة تقويم جوجل على ورق الفواتير

مقدمة

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

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

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

لوازم

الأجزاء:

  • طابعة حرارية، تتضمن كابلين JST ثلاثي السنون (ثلاثة دبابيس) للتوصيل التسلسلي والطاقة.
  • كمبيوتر Raspberry Pi.
  • لوحة مفاتيح، فأرة (ماوس)، وشاشة عبر USB.
  • عدد 5 اسلاك توصيل بطرف أنثى.
  • أنابيب انكماش حراري أو شريط عازل.

الطابعة المحددة المستخدمة في هذا المشروع لم تعد متوفرة، ومع ذلك يمكن استخدام أي طابعة حرارية تعمل بالتوصيل التسلسلي بحيث تكون متوافقة مع جهاز Raspberry Pi كبديل مناسب.

الأدوات:

  • أداة قطع وتجريد الأسلاك (زَرديَّة) أو أداة تعرية أسلاك.
  • كاوية لحام.
  • جهاز قياس متعدد رقمي (DMM).
  • طابعة ثلاثية الأبعاد.
  • أداة دريميل أو ورق صنفرة خشن.

يُنصح باستخدام خيط طباعة من نوع PLA لصناعة صندوق الحماية الخارجي، ولكن يمكن استخدام أي نوع آخر من خيوط الطباعة ثلاثية الأبعاد أيضاً.

خطوة 1 : التوصيلات

للمزيد من التعليمات العامة التي تنطبق على الطابعات الأخرى، راجع هذا الدليل هذا حول توصيل الطابعات الحرارية، والذي يشمل أردوينو(Arduino)، راسبيري باي (Raspberry Pi)، وأجهزة الكمبيوتر الشخصية.

بداية، عليك توصيل كابلات JST ذات الـ 3 دبابيس المرفقة مع الطابعة بأسلاك التوصيل والتي يمكنها الإتصال بدبابيس GPIO في الراسبيري باي، وبالنسبة لهذه الطابعة فإن هناك كابل واحد للتيار الكهربائي، وآخر لخط الاتصال التسلسلي TTL كما هو موضح في الصورة في الأسفل، ونظراً لأن الطابعة وخط الاتصال التسلسلي يعملان على جهد 5 فولت، فإنه يمكن توصيل كليهما مباشرةً بدبابيس GPIO في الراسبيري باي دون الحاجة إلى مصدر طاقة منفصل.

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

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

وأخيرًا، استخدم غلاف الإنكماش الحراري أو شريطاً كهربائياً من أجل عزل الأسلاك عن بعضها البعض.

قبل توصيل أي شيء مع الراسبيري باي، تأكد من أنه مهيأ لاتصال الـ TTL التسلسلي، وللقيام بذلك، اذهب إلى: التفضيلات > إعدادات الراسبيري باي > الواجهات (Preferences > Raspberry Pi Configuration > Interfaces)، وتأكد من أن خاصية "المنافذ التسلسلية" مفعّلة، وأن "الكونسول التسلسلي" غير مفعّل.

والآن بعد أن أصبحت الكابلات جاهزة، حان الوقت لتوصيل الطابعة مع الراسبيري باي، فبداية عليك التأكد من توصيل كابلي JST بالطابعة، بحيث يكون الكابلات الأخضر/الأصفر/الأسود موصولة بمنفذ RX و TX، وكلاً من الكابل الأحمر/الأسود موصولان بمنفذ DC IN، وبعد ذلك قم بتوصيل السلك الأحمر من الطابعة بأي دبوس 5 فولت في الراسبيري باي، والسلكين الأسودين متصلين بأي دبوس أرضي، كما عليك التأكد من أن السلك المسمى TX في الطابعة متصل بدبوس GPIO المسمى RX، والعكس صحيح، بعد ذلك قم بتشغيل الراسبيري باي، فإذا كانت الطابعة تتلقى الطاقة، يجب أن يضيء ضوء أخضر في مقدمة الطابعة.

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

خطوة 2 : ضبط الطابعة

الآن بعد أن أصبحت الطابعة قيد التشغيل، حان الوقت لتهيئتها على الراسبيري باي، حيث بدلاً من التواصل مع الطابعة يدوياً عبر الاتصال التسلسلي، ستتيح لك مكتبة CUPS إرسال مهام الطباعة بسهولة من الراسبيري باي، باستخدام إعداد مُسبق لطابعة حرارية مشابهة.

وبمجرد تشغيل الراسبيري باي، افتح سطر الأوامر وتحقق من وجود تحديثات وقم بتثبيت مكتبة CUPS باستخدام الأوامر التالية:

>Sudo apt update

>Sudo apt upgrade

>Sudo apt install cups

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

مكتبة ZJ-58 هي مكتبة طابعات حرارية تتيح للراسبيري باي طباعة ملفات نصية على الطابعة الحرارية باستخدام الأمر lp فقط.

ولاختبار ما إذا كانت الإعدادات صحيحة، أنشئ ملفًا نصيًا باسم text.txt وضع فيه أي نص، ثم اطبعه باستخدام الأمر:

lp text.txt

يُفترض أن ترى قائمة انتظار لمهام الطباعة، وبعد لحظات قليلة يجب أن تبدأ الطابعة في الطباعة.

خطوة 3 : الاتصال بواجهة برمجة التطبيقات API

للحصول على شرح أكثر تفصيلًا لهذه الخطوة، اتبع هذا الدليل على موقع Google Developer.

في هذه الخطوة، تأكد من تثبيت بايثون (Python) على الراسبيري باي الخاص بك، وأن لديك حساب جوجل يحتوي على تقويم يمكن سحب البيانات منه.

أولاً، قم بتفعيل واجهة برمجة تطبيقات تقويم جوجل Google Calendar API على حسابك مما يسمح للجهاز بعد الحصول على الصلاحيات بقراءة أو كتابة البيانات في تقويم حساب جوجل الخاص بك.

وإذا لم تستخدم مشروعًا على جوجل كلاود (Google Cloud) من قبل، فستحتاج أيضًا إلى إعداد موافقة OAuth من Google.

ولضبط موافقة OAuth، اتبع هذا الرابط Google Developer.

بعد ذلك، تحتاج إلى إنشاء بيانات اعتماد للسماح لـ Raspberry Pi الخاص بك بالوصول إلى تقويم جوجل الخاص بك، وللقيام بذلك، أولاً افتح قائمة عملاء جوجل (Google Clients List)، ثم انقر على إنشاء عميل (Create Client)، وبعد ذلك اختر نوع العميل "تطبيق سطح المكتب (Desktop App)"، ثم انقر على إنشاء، وبعد الإنشاء قم بحفظ ملف credentials.json الخاص بهذا العميل، حيث أن هذا الملف هو ما سيسمح لـ Raspberry Pi بالوصول إلى تقويمك على جوجل، وبعد ذلك قم بنسخ هذا الملف إلى نفس المجلد الذي يحتوي على ملفات مشروعك (السكربتات)، وتأكد دائمًا من أن credentials.json موجود في نفس المجلد مع السكربت الذي يحاول الوصول إلى تقويمك.

والآن حان وقت كتابة السكربت بلغة Python، ولكن قبل ذلك نحتاج إلى تثبيت المكتبات اللازمة للتعامل مع واجهة برمجة تطبيقات تقويم جوجل Google Calendar API.

قم بتثبيت المكتبات الضرورية باستخدام:

pip install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib

والآن نقوم بتشغيل سكربت البدء السريع (API quickstart scrip) الرسمي لواجهة برمجة تطبيقات تقويم جوجل من هنـــا، والذي سيقوم بجلب أحدث 10 أحداث من التقويم الأساسي لحسابك في جوجل، ويطبعها في الطرفية (terminal) مع تاريخ ووقت كل حدث (بصيغة ISO datetime).

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

خطوة 4 : التعديل والتشغيل التلقائي

تعديل برنامج بايثون

يمكنك أيضاً وفقاً لرغبتك أن تضبط السكربت ليقوم بجلب الأحداث من تقويم معيّن بدلاً من التقويم الافتراضي الخاص بك، ولجلب الأحداث من تقويم محدد فإن عليك أولاً أن تفتح تقويم جوجل google  calendar، ثم انقر على النقاط الثلاث التي بجانب التقويم الذي تريد الطباعة منه، بعد ذلك اختر الإعدادات والمشاركة، ثم مرِّر لأسفل حتى تصل إلى "معرّف التقويم (Calendar ID)" والذي سيكون عبارة عن رابط طويل أو عنوان بريد إلكتروني في سكربت بايثون، ثم استبدل "primary" بمعرّف التقويم هذا، بالشكل التالي:

calendarId="primary", #Original line

calendarId='12345@group.calendar.google.com', #new line

الآن، بدلاً من جلب 10 أحداث قادمة فقط، نريد جلب جميع الأحداث التي ستحدث خلال الـ 24 ساعة القادمة، وللقيام بذلك سوف نستخدم الكلمة المفتاحية timeMax في استدعاء واجهة برمجة التطبيقات (API).

events_result = service.events().list(calendarId='primary', timeMin=now,

                                              timeMax=tomorrow,

                                              singleEvents=True,

                                              orderBy='startTime').execute()

        events = events_result.get('items', [])

بعد ذلك، بدلاً من طباعة المعلومات في الطرفية، سنقوم بحفظ النتائج في ملف .txt، وذلك باستخدام الكود التالي:

       with open('/home/pi/PrinterScript/output.txt', 'w') as f:    

          print('now[5:10], file=f)

          for y in range(0,numEvents):

              print (times[y], file=f)

              print ('  ' + str(names[y]), file=f)

              print('', file=f)

تأكد من استيراد إمكانية الكتابة إلى الملفات بهذه الطريقة باستخدام:

import os.path  

وفي أعلى البرنامج كل ما تبقّى هو استدعاء الطابعة من داخل البرنامج باستخدام السطر التالي:

os.system("lp /home/pi/PrinterScript/output.txt")

حيث يقوم الأمر lp باستدعاء الطابعة لطباعة الملف النصي الذي أنشأته للتو.

وقد أرفقت نسختي من الكود تحت اسم PrinterScript.py.

الأتمتة (التشغيل التلقائي)

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

#!/bin/bash

cd /home/pi/PrinterScript

python UpdatedPrint.py

حيث أن:

"#!/bin/bash هو مسار shell الخاص بـ Bash،

/home/pi/PrinterScript هو مسار ملف البايثون الخاص بك،

وUpdatedPrint.py هو اسم ملف بايثون الخاص بك".

وبمجرد إنشاء هذا الملف، تأكد من جعله قابلًا للتنفيذ باستخدام الأمر التالي:

chmod +x dailyCalendar.sh

أخيرًا، تأكد من أن هذا السكربت يعمل بشكل صحيح عن طريق تشغيل ملف الـ .sh من سطر الأوامر باستخدام الأمر التالي:

./script.sh

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

وبمجرد التأكد من أن كل شيء يعمل بشكل صحيح، افتح محرر Cron باستخدام الأمر التالي:

crontab -e

ولتشغيل الكود الخاص بك يوميًا مثلاً في تمام الساعة 8 صباحًا على سبيل المثال، أضف هذا السطر إلى جدول Cron:

0 8 * * * /path/to/your/script.sh

بالترتيب، النمط 0 8 * * * يُمثل الدقيقة، الساعة، يوم الشهر، الشهر، يوم الأسبوع الذي يجب فيه استدعاء السكريبت.

الآن بعد أن أصبح الراسبيري باي جاهزاً تماماً، فقد حان الوقت فقط لوضعه داخل غلاف أو صندوق حماية.

لتحميل سكربت الطابعة بلغة بايثون اضغط هنــا

خطوة 5 : عمل صندوق الحماية الخارجي

الطباعة ثلاثية الأبعاد لصندوق الطابعة

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

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

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

التجميع النهائي

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

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

لتحميل ملف التصميم ثلاثى الأبعاد لصندوق حماية الطابعة اضغط هنــا.

للتحميل ملف التصميم ثلاثى الأبعاد لغطاء صندوق حماية الطابعة اضغط هنــا.

لا توجد تعليقات حتي الآن.
تسجيل الدخول مطلوب

يجب عليك تسجيل الدخول لإضافة تعليق.

تسجيل الدخول