استغرقت المحاضرة ساعتين تقريبًا ، لذا من الأفضل مشاهدتها مباشرة على Youtube ؛ يوجد جدول محتويات في وصف الفيديو. سيتبع الفيديو نص مكتوب في شكل مختصر (خاص بحبر).
مشاهدة أو قراءة سعيدة. :)
وصف المشكلة ومفهوم الحل
لنبدأ بالبيانات الأولية. لدينا ماسح ضوئي عادي (في حالتي Canon CanoScan LiDE 120) يتصل بمنفذ USB للكمبيوتر ويمكنه المسح إلى الكمبيوتر. ولكن هنا ، على سبيل المثال ، يظهر جهاز كمبيوتر ثانٍ ، ومع الحاجة العامة للمسح الضوئي ، من غير الملائم تبديل الماسح الضوئي بين أجهزة الكمبيوتر في كل مرة. ماذا أفعل؟ نعم ، هناك الآن طابعات متعددة الوظائف للشبكة ، ولكن لسبب ما ، هذا ليس خيارًا بالنسبة لنا.
لحل المشكلة ، نحتاج بشكل أساسي إلى تجهيز مكان منفصل للماسح الضوئي ، وتنظيم محرك أقراص الشبكة ، وتوصيل جميع أجهزة الكمبيوتر الموجودة على شبكتنا المنزلية به وتعليم الماسح الضوئي إجراء المسح الضوئي إلى محرك الشبكة نفسه. سيكون المستخدم في عملية المسح بالقرب من الماسح الضوئي ، ويضغط على الأزرار ويغير الأوراق الممسوحة ضوئيًا ؛ لا يحتاج إلى الركض إلى الكمبيوتر في كل مرة لإعطاء أمر للمسح. وبعد ذلك ، عندما يتم فحص كل ما يحتاج إليه ، سيذهب إلى جهاز الكمبيوتر الخاص به ، لنسخ أو نقل الملفات الممسوحة ضوئيًا من محرك الشبكة إلى نفسه وسيواصل العمل معهم.
لذلك ، نختار مكانًا لوضع الماسح الضوئي ، ونقوم بإحضار كابل إليه من جهاز التوجيه الخاص بشبكتنا المحلية (شبكة WiFi ممكنة أيضًا ، لكننا سنترك هذا اختياريًا) ، نضع منفذًا لمصدر طاقة 220 فولت - وماذا بعد ذلك؟
من الناحية النظرية ، يجب توصيل الماسح الضوئي بجهاز كمبيوتر. لكن شراء وتثبيت جهاز كمبيوتر منفصل لهذه الأغراض مكلف وغير مبرر. حسنًا ، سيحتاج إلى لوحة مفاتيح وماوس مع شاشة ، كما يحتاجون إلى مكان. في الوقت نفسه ، ليس لدينا أي شيء خاص ، فنحن نقوم بمسح تنسيق واحد بشكل أساسي (A4). لذلك دعونا ننظر إلى شيء أكثر قابلية للنقل.
في مشروعنا ، نستخدم الكمبيوتر ذو اللوحة الواحدة Raspberry Pi 2 Model B. على الرغم من أنه ليس جديدًا وليس قويًا جدًا ، إلا أن قوته كافية بالنسبة لنا للمهمة ، فهو لا يستهلك الطاقة حقًا ، حسنًا ، GPIO ستكون في متناول اليد.
بالنسبة لأولئك الذين يرغبون على الفور في تكرار كل شيء على أساس الماسح الضوئي الحالي ، أوصيك بالذهاب أولاً إلى موقع مشروع SANE، انتقل إلى قائمة الأجهزة المدعومة وتأكد من أن طراز الماسح الضوئي المحدد مدعوم بشكل كافٍ من قبل المشروع. خلاف ذلك ، يمكن للجهود وربما المال أن تتدفق في الأنبوب. علاوة على ذلك ، قد يكون من المفيد تنظيم آلة (افتراضية أو حقيقية) باستخدام Debian 10 (بشكل أكثر دقة ، الإصدار الحالي في وقت التحقق من الإصدار الذي صنعت منه Raspberry Pi Foundation نظام التشغيل) وعقلانية خارج الصندوق وفحص العمل باستخدام أداة scanimage ؛ إذا كان كل شيء طبيعيًا ، فمن المحتمل أن يعمل على توت العليق.
ضروري مساعد
بالنسبة لمصدر الطاقة الخاص بتوت العليق والماسح الضوئي ، في المشروع التجريبي ، أستخدم شاحن MicroUSB بسعة 2 أمبير. ولكن ، إذا كان من المفترض أن يعمل التوت على مدار الساعة ، فلا أنصح باستخدامها. هذه ليست مهمتهم ، وليست حقيقة أن شحنًا معينًا لن يفشل إذا لم يعطي مثل هذا التيار الصغير لفترة طويلة في وضع 24/7. من الأفضل عدم توفير المال وأخذ وحدة إمداد طاقة مسجلة الملكية ، أو تكييف وحدة أخرى مناسبة لمثل هذا العمل.
أيضًا ، لا أوصي بتوصيل الماسح الضوئي بكابل USB بطول طويل أو من أي مصدر. هذا من أكثر من ستة أشهر من الخبرة العملية ؛ يمكن أن تحدث مفاجأة في أكثر اللحظات غير المناسبة.
بالنسبة لذاكرة "القرص" - في التوت ، كما تعلم ، يتم استخدام بطاقات microSD. يناسب نظام التشغيل Raspberry Pi العاشر بطاقة 4 أزعج. ولكن لا يزال لدينا برنامج لائق قابل للتثبيت هناك ، بالإضافة إلى مجلد شبكة لعمليات الفحص. لذا ركز على 8 على الأقل ؛ يتم استخدام 16 في المشروع.أيضًا ، للتسجيل الأولي لصورة نظام التشغيل ، ستحتاج إلى جهاز كمبيوتر مزود بقارئ بطاقات ، يمكن توصيل البطاقة به. لقد استخدمت محولًا لقارئ بطاقة SD مدمجًا في الكمبيوتر المحمول.
نحن أيضا بحاجة إلى جسد. هناك الكثير من الخيارات. في المتغير الموضح ، استخدمت حالة غير أصلية لزيادة السماكة ؛ جعل هذا من الممكن تركيب مخطط من زرين ومصباح LED مقدم من المشروع على الغطاء العلوي (المزيد حول هذا لاحقًا) ، وكان ارتفاع العلبة كافياً للأزرار وللتوت ولموصلات BLS للاتصال بدبابيس GPIO. هذا الجسم مصنوع من زجاج شبكي. هذه هي الطريقة التي تبدو بها الدائرة المجمعة ، ولكن بدون التوت:
الآن أستخدم هذه الحالة لتصحيح الأخطاء والعروض التوضيحية ، وفي الإصدار القتالي ، يتم توصيل التوت في لوحة كهربائية مخصصة جنبًا إلى جنب مع مصدر الطاقة ويتم استخدامه في نفس الوقت لمهمة أخرى ، ويتم تثبيت الدائرة في علبة صغيرة منفصلة ، متصلة بتوت العليق بكابل هاتف مسطح رباعي النواة.
مشكلة أخرى مع توت العليق هي تسخين اللب. إذا كنت تخطط للعمل على مدار الساعة ، فنحن نلصق مشعًا صغيرًا بشيء مناسب للتوصيل الحراري.
تجهيز بطاقة ذاكرة
لنبدأ في تجهيز بطاقة الذاكرة. في الآونة الأخيرة ، لم تقم مؤسسة Raspberry Pi بإعادة تسمية Raspbian إلى Raspberry Pi OS فحسب ، بل أصدرت أيضًا برنامجًا يسمى Raspberry Pi Imager لنظام التشغيل Windows و macOS و Ubuntu. قم بتنزيل هذا البرنامج وتثبيته على جهاز الكمبيوتر الخاص بك وتشغيله.
بادئ ذي بدء ، في نافذة البرنامج ، سنقوم باختيار نظام التشغيل. هناك العديد من الخيارات. بشكل افتراضي ، يتم تقديم Raspberry Pi OS (32 بت) ، ولكن مع سطح المكتب ، ولأثنين ، يكون سطح المكتب كذلك. لذلك ، نذهب إلى Raspberry Pi OS (أخرى) وهناك نختار الخيار البسيط ؛ نحن بالكاد نحتاج إلى أي شيء آخر غير سطر الأوامر. ثم نضع بطاقة ذاكرة ونختارها ونكتب صورة عليها. تظهر هذه العملية في الفيديو الساعة 00:12:15 .
الإعداد الأولي
يمكنك وضع بطاقة الذاكرة في التوت والذهاب إلى الإعداد الخاص به. للقيام بذلك ، بالإضافة إلى الطاقة ، وشبكة مع الإنترنت وماسح ضوئي ، نحتاج إلى توصيل لوحة مفاتيح USB وشاشة بكبل HDMI (للجيل الرابع من التوت ، يوجد MicroHDMI). نقوم بتوصيل مصدر الطاقة أخيرًا. وتذكر السلامة عند العمل بأجزاء موصلة مفتوحة ، خاصةً إذا لم يكن التوت في العلبة ، وكان مصدر الطاقة مشكوكًا فيه من حيث التلامس الكهربائي مع 220 فولت.
قم بتشغيل ، تمهيد ، تسجيل الدخول باستخدام تسجيل الدخول الافتراضي لكلمة مرور pi وكلمة مرور raspberry. تبدأ عملية الإعداد في الفيديو الساعة 00:18:43 .
بادئ ذي بدء ، تأكد من العمل على sudo apt update و sudo apt Upgrade. في وقت تسجيل الفيديو ، عرض المستودع تحديث 30 حزمة ، على الرغم من أنني سجلت صورة بطاقة الذاكرة قبل الإعداد الأولي مباشرة. على ما يبدو ، لا يتم جمعها في كل مرة يتم فيها تحديث المستودع.
علاوة على ذلك ، إذا رغبت في ذلك ، فإننا نحل مشكلة المربعات في وحدة التحكم بدلاً من الحروف الروسية. نحن نسمي sudo dpkg-recfigure console-setup وننتقل إلى القوائم. نضع (أو نترك) المعلمات التالية:
- ترميز للاستخدام على وحدة التحكم - UTF-8
- مجموعة الأحرف لدعم - تخمين مجموعة الأحرف المثلى
- حجم الخط - 8x16
نعيد التشغيل لأول مرة. نقوم بذلك بطريقة منتظمة ، عبر sudo reboot. قم بتسجيل الدخول مرة أخرى ، وقم بتشغيل sudo raspi-config وانتقل إلى الإعداد الأولي للمعلمات. نقوم فيه بالمهام التالية:
- ( : System options — Password )
- SSH (Interface options — SSH)
- (Localisation options — Locale; en_GB.UTF-8 UTF-8, en_US.UTF-8 UTF-8 ru_RU.UTF-8 UTF-8, )
- (Localisation options — Timezone; , )
- (Advanced options — Expand filesystem).
بعد ذلك ، حدد إنهاء. سيعرض البرنامج إعادة التشغيل ، وهو ما نقوم به.
ثم نقوم بتسجيل الدخول مرة أخرى (بالفعل بكلمة مرور جديدة) ، انتقل إلى sudo raspi-config ، وحدد خيارات الترجمة ثم لوحة المفاتيح. سيكتب برنامج إعداد لوحة المفاتيح باللغة الروسية بالفعل.
في نموذج لوحة المفاتيح ، كمعيار ، نختار "Ordinary PC with 105-key (Int.)
في التخطيط ، حدد أولاً" Other "، ثم" Russian "ثم الخيار (فقط" Russian "أو خيار أكثر ملاءمة للوحة المفاتيح الحالية).
بعد ذلك ، حدد طريقة تبديل التخطيطات والمفاتيح المختلفة الأخرى ، إذا كنت تريد ذلك. كل شيء سوف يتغير بسرعة كافية. يبقى في قائمة تكوين raspi الرئيسية للذهاب إلى إنهاء. لن نعود إلى هذه الأداة مرة أخرى.
تثبيت وتكوين البرامج الإضافية المستخدمة في المشروع
نحن نفعل sudo apt install wiringpi samba sane. لقد أضفت mc إلى هذه القائمة (وإلى المحاضرة) وأظهر كيفية العمل معه ، لكن هذه مسألة تفضيل شخصي بحت ، لا أفرضها على أحد.
ثم (يفضل في معظم الحالات) اضبط عنوان IP الدائم على malinka. أعتقد أنه من الأفضل القيام بذلك على جهاز توجيه ، ولكن إذا لم يكن ذلك ممكنًا ، فيمكنك تعيين إعدادات شبكة ثابتة عن طريق تحرير /etc/dhcpcd.conf بعد التعليق مثال على تكوين IP الثابت. يتم تضمين حزمة dhcpcd مع نظام التشغيل Raspberry Pi OS خارج الصندوق ، ولا تحتاج إلى تثبيته.
المهمة التالية هي إنشاء دليل لتخزين ملفات المسح. اخترت هذه الحالة وأنشأت الدليل / var / scanned. يحتاج هذا الدليل إلى تعيين مثل هذه الأذونات حتى يتمكن السامبا من العمل معه.
الآن ، بالطبع ، نقوم بتكوين السامبا. نذهب إلى /etc/samba/smb.conf ونسجل الإعدادات العامة والقسم الذي يحتوي على بيانات مورد الشبكة الجديد والمسار إلى الدليل الذي أنشأناه هناك. يظهر الفيديو الساعة 00:41:51 . ولكن ، بالطبع ، يمكن أن تعطي تفاصيل الشبكة بعض الاختلافات عن الإعدادات الواردة هناك.
بعد التكوين ، يوصى بشدة بإعادة تشغيل التوت وفحص محرك أقراص الشبكة من الكمبيوتر. من هناك ، في معظم الحالات ، ستحتاج إلى الوصول الكامل إلى الملفات الموجودة في الدليل.
قبل الانتقال إلى الإبرة والبرمجة ، يتبقى لدينا مهمتان - لتحديد الجزء الحديدي وتحديد معلمات برنامج المسح أولاً.
لنبدأ بالجزء الحديدي. للقيام بذلك ، قم بتشغيل gpio readall. سيعرض Malinka ترقيم المسامير على موصل GPIO في الأعمدة المادية والغرض منها في أعمدة الاسم. بالنسبة للدائرة ، نحتاج إلى ثلاثة منافذ GPIO وسلك مشترك واحد (في عمود الاسم ، يُسمى 0v ؛ يوجد الكثير منها على الموصل ، لكننا لسنا بحاجة إلى الكثير ، فقط اختر أيًا منها). نكتب أسمائهم وأرقامهم على الموصل. بالنسبة لي ، اخترت GPIO.1 في رقم التعريف الشخصي 12 ، و GPIO.2 في الدبوس 13 و GPIO.3 في الدبوس 15. وسوف أقوم بتوصيل السلك المشترك برقم التعريف 9.
الآن دعنا نقرر الماسح الضوئي ، الذي قمنا بتوصيله بالفعل بـ USB. عمل sudo sane-find-scanner. إذا لم يكن الماسح الضوئي مرئيًا بهذه الأداة المساعدة ، فقد تكون هناك مشكلة في الماسح الضوئي أو التوت أو الكابل أو مصدر الطاقة ؛ هذا يحتاج إلى معالجة بشكل منفصل. الآن قم بعمل sudo scanimage –help | أقل وشاهد الخيارات المسموح بها لجهازنا. لنفسي ، سأقوم بتدوين الخيارات l ، t ، x ، y ، الدقة والشكل. ستنتقل هذه الخيارات إلى سطر الأوامر الخاص ببرنامج المسح.
هذا يكمل الإعداد الأولي للتوت. قبل تجميع الدائرة ، يجب إيقاف تشغيل التوت. هذا ، إذا كان أي شخص لا يتذكر ، يتم باستخدام الأمر sudo shutdown –h now. بعد فترة ، ستختفي الصورة على الشاشة ، وستنطفئ جميع مصابيح LED الموجودة على التوت ، باستثناء مصباح الطاقة LED. هذا يعني أن النظام قد انتهى من العمل ، يمكنك إيقاف تشغيل الطاقة وبدء الأعمال اليدوية.
GPIO في التوت هو رقمي فقط (أي مستويين 0 و 1) ويمكن أن يعمل في ثلاثة أوضاع: مجرد إدخال (يسمى الوضع) ، ومدخل بمقاوم سحب بمقاومة 50-65 كيلو أوم (يتم استدعاؤه) ومخرج (يسمى). سوف نستخدم الوضعين الأخيرين.
كما كتبت سابقًا ، سنحتاج إلى توصيل زرين عبر GPIO (دعنا نسميهم "ابدأ" و "إيقاف") ومصباح LED. بطبيعة الحال ، للحد من التيار ، سوف تحتاج إلى توصيل المقاوم المحدد في سلسلة معه ؛ اخترت المقاوم الناتج بقيمة اسمية 2.2 كيلو أوم وقوة تبديد 0.25 واط ؛ هذا عادة ما يكون كافيا. مخطط الاتصال هو كما يلي:
بناءً على استخدام الوضع الأعلى ، تذكر أنه عند الضغط على الزر ، ستتم قراءة القيمة 0 من إدخال GPIO ، وعند تحريرها - 1. يكون كلا الزرين مفتوحين بشكل طبيعي ، بدون تثبيت.
لن أتطرق إلى تفاصيل الإعدام هنا ، خاصة وأنني عرضت سابقًا صورة للقضية المنتهية ، حيث كان كل شيء موجودًا بالفعل. لأسباب تتعلق بالسلامة ، أوصي فقط باختيار الأزرار التي تكون أجزائها الخارجية كلها بلاستيكية حتى لا تلتصق بأجزاء موصلة مكشوفة. لقد قمت بتوصيل دبابيس GPIO بموصلات BLS أحادية السن ، مماثلة لتلك المستخدمة في صناديق الكمبيوتر ؛ بالنسبة لهذا العرض التوضيحي ، قمت ببساطة بأخذ مجموعة من الأسلاك من مشاريع Arduino ذات الموصلات المناسبة ، واخترت أربعة منها متعددة الألوان ، وقمت بإزالة الأطراف غير الضرورية ، وقمت بتنظيفها ولحامها بالتفاصيل. خيار آخر هو استخدام موصل كبل مسطح من صف مزدوج مكون من 40 سنًا ، أو حتى قطعة من كبل IDE قديم من محركات الأقراص الثابتة أو محركات الأقراص المضغوطة ، إذا كان لدى أي شخص أي شيء آخر. هذا الخيار ، بالمناسبة ، مناسب أيضًا لحالات الارتفاع القياسية ؛لديهم فتحة لمثل هذه الحلقة للإخراج إلى الخارج.
حسنًا ، وأتذكر أيضًا ، لقد عانيت من حقيقة أنه على ألواح التوت (على أي حال ، 2 نموذج B و 3 نموذج B) لم تتم الإشارة إلى ترقيم دبابيس موصل GPIO. سوف أصلحه الآن. هذان النموذجان ليس لهما اختلافات في هذا الصدد.
تنفيذ الجزء البرمجي
يتم تنفيذ جزء البرنامج (tadam!) في شكل نصي برمجي bash - config و script العمل نفسه. يوجد شرح مفصل لمخطط التدفق والتنفيذ في الفيديو الساعة 01:08:30 . لا أعتقد أنه من المنطقي الخوض في التفاصيل هنا ؛ يمكن تنزيل الكود المصدري للنصوص هنا ودراستها في وقت فراغك.
تمت كتابة بدء تشغيل البرنامج النصي الرئيسي لبدء التشغيل في /etc/rc.local. الشيء الوحيد - كان عليّ أولاً تسجيل تغيير دليل العمل إلى الدليل باستخدام البرامج النصية. لكن لا يوجد شيء رهيب هنا ، فهو لا يتعارض مع المزيد من العمل. وبالطبع ، لا تنس إضافة الرمز & بعد أمر التشغيل ، وإلا فستكون هناك مشاكل في تمهيد النظام.
حسنًا ، بعد ذلك بقي في الواقع فقط لإظهار عملية المسح الفعلية ، بالإضافة إلى اتصالات ssh وتعديل المعلمات - بالطريقة التي كانت معي بها. يمكنك مشاهدته في الفيديو الساعة 01:41:04 .
بطريقة ما حدث ذلك. في الإصدار القتالي ، من الاختلافات ، يذهب المسح فقط إلى NAS منفصل ، لذلك يتم تغيير البرامج النصية قليلاً. وهكذا ، أعتقد أنه يمكن حتى إرسال عمليات المسح إلى برنامج المراسلة باستخدام روبوت في مكان ما ، ستكون هناك رغبة فقط في فهم واجهة برمجة التطبيقات المقابلة والقيام بشيء من هذا القبيل على curl. هناك الكثير من الخيارات. حظا سعيدا مع التنفيذ. :)