مقدمة
منذ الشباب ، عندما كان لدينا DeskJet القديم ، كنت مهتمًا بخراطيش طابعة نفث الحبر. بدت هذه الخراطيش مثيرة للاهتمام للغاية وبمجرد نفاد الحبر ، أخذتها على الفور إلى نفسي. في ذلك الوقت ، لم يكن بإمكاني فعل شيء معهم ، باستثناء تفكيك يدي وسخه ... على الرغم من أنني علمت أن هناك نوعًا من الإلكترونيات المعقدة في الداخل ، لكن عندما لمست الاتصالات جهات الاتصال بالبطارية ، لم يحدث شيء مثير للاهتمام ، ومعرفتي بالإلكترونيات للمزيد ليس كافي
بعد ذلك بقليل ، عندما أصبحت طالبًا ، تمكنت من الحصول على طابعة نافثة للحبر قديمة. في ذلك الوقت ، استخدمت نفسي طابعة ليزر ، لذلك لم أكن مهتمًا بها ، ولكن كان من المثير للاهتمام فحص الخراطيش ومحاولة إعادة هندسةها. لقد
كتبت مقالًا حول إدارة هذه الخراطيش ، وعلى الرغم من أنها عملت بشكل جيد ، إلا أن هناك عيوبًا أيضًا: ما زلت لا أستطيع تحديد الترتيب الدقيق للفوهات ، فالخرطوشة كانت أحادية اللون فقط (مطبوعة بأرجواني) ، وأيضًا كانت قديمة جدًا ، وبالتالي كانت الدقة تبين أن تكون منخفضة جدا.
في الآونة الأخيرة ، بدأت صديقتي في الرسم ، لذا كان هذا ذريعة جيدة للعودة إلى خراطيش الحبر على أمل أن أتمكن من رسم شيء ما على قماش. هذه المرة كنت محظوظًا: تمكنت من إيجاد طريقة لربط جميع الفوهات بالإشارات الصحيحة. بالإضافة إلى ذلك ، تتحكم خراطيش الطابعة اليوم في المزيد من الفتحات باستخدام إشارات أقل ، مما يبسط إدارة الخرطوشة ويزيد من السطح الذي يمكن تغطيته في مسار واحد.
تمكنت أخيراً من التحكم في خرطوشة الألوان الثلاثة والطباعة بالألوان الكاملة!
إذا كنت تريد الانتقال معي من كومة من الطابعات لإكمال التحكم في خرطوشة الطابعة ، فقد قدمت تقريراً عنها في Hackaday Supercon 2018. تتم إضافة تسجيل الفيديو للكلام أدناه. إذا كنت مهتمًا بتفاصيل الهندسة العكسية ، فتحقق من ذلك. سأتحدث في المقال عن التفاصيل الفنية للإلكترونيات التي قمت بإنشائها ، فضلاً عن التفاصيل المحددة لإدارة الخرطوشة بحيث يمكنك أنت بنفسك رسم Nyancat باستخدام ESP32 أو متحكم آخر.
مرفق العرض
إذا لم تكن قد شاهدت الفيديو ، فإليك ملخصًا موجزًا: لقد قمت بفصل خرطوشة الألوان للطابعة HP1112 (في الصين إنها خرطوشة HP 803 ، ولكن رقم المقالة يعتمد على المنطقة) ، والتقطت صوراً للكريستال وحاولت معرفة كيفية عمله. عندما لم أتمكن من اكتشاف الكثير ، بدأت في قراءة الإشارات المرسلة بين الطابعة والخرطوشة ، وأكتشف الإشارات التي يجب إرسالها حتى يتسنى للخرطوشة الامتثال لأوامري ، ثم طبعت Nyancat وأشياء مضحكة أخرى.
كان جزء توقيت الإشارة من الدراسة بشكل أساسي عملية التجربة والخطأ. لا يمكنني إلا أن أخمن نوع الاتصال الموجود بين الإشارات ، لذلك كان من الصعب للغاية معرفة الترتيب بين الحواف والإشارات التي يمكن تأخيرها والتي ينبغي إرسالها في الوقت المحدد. لقد درست خرطوشة السيليكون لهذه المعلومات. اتضح أنني تمكنت بالفعل من الحصول عليها عن طريق وضع الخرطوشة تحت المجهر ، ولكن ليس على الإطلاق كما توقعت.
قبل التحدث في Supercon ، درست خراطيش الألوان لأنها بدت لي الأكثر إثارة للاهتمام. بعد العودة من Supercon ، أردت أن أعكس هندسة الخرطوشة السوداء: رأس الطباعة أكبر من خرطوشة الألوان ، لذلك يمكنني الطباعة أكثر في المرة الواحدة. قد لا يكون من الصعب إضافة دعم لهذه الخرطوشة أيضًا: يبدو ترتيب الدبوس كما هو ، وكنت أعرف أن البروتوكول سيكون على الأرجح مشابهًا ، لأنني حاولت بالفعل توصيل الخرطوشة السوداء بأجهزتي. على الرغم من أن البرنامج كان ينقل الصور الملونة ، إلا أنه لا يزال قادرًا على طباعة شيء ما.
إليك ما فعلته باستخدام خرطوشة الألوان: لقد علقتها تحت المجهر ، وأزلت طلاء السيليكون من جهات الاتصال ، وأعدت للجمع بين عدة لقطات في صورة واحدة كبيرة. ومع ذلك ، اختلفت الخرطوشة السوداء عن تلك الموجودة في اللون حيث كان هناك المزيد من النقوش على صفيحة معدنية بها فوهات: تحت طلاء السيليكون كانت هناك أسماء إشارة مخفية لجميع جهات الاتصال!
(بالمناسبة ، إذا كنت ترغب في رؤية صور مجهرية كاملة في كل عظمة 40 ميجا بكسل ، فهنا يوجد
درع وسيليكون خرطوشة الألوان! استمتع بتعقيد
الفوهات والصورة الكريستالية للخرطوشة السوداء!)
على الرغم من أن هذا قد لا يبدو كثيرًا ، إلا أنه في بحر من لوحات الدوائر المطبوعة غير المميزة ، ورقائق بدون مواد مرجعية ومقالات لا تؤدي إلى أي مكان ، فإن أسماء العديد من الإشارات هي اكتشاف حقيقي. على حدس ، دفعت أسماء إشارات فردية تحمل اسم "Hewlett Packard" إلى
براءات اختراع Google واكتشفت
براءة اختراع محددة (وأخرى ،
أقدم واحدة مشار إليها من قبل الأول) مع وصف واضح للتقنيات والإشارات المستخدمة في الخراطيش. هذا من شأنه أن يوفر لي الكثير من الوقت عندما كافحت مع توقيت خرطوشة ... حسنا. أستطيع أن أقول بصدق أن هذا التلميح كان من الصعب للغاية العثور عليه: لم تكن الإشارات مغطاة بفيلم من السيليكون فحسب ، بل تبين أيضًا أنها صغيرة جدًا: الأحرف بحجم 30 ميكرومتر فقط ، وهذا أقل من سمك شعرة الإنسان.
تصف براءة الاختراع العملية الداخلية للخرطوشة وتستحق القراءة (إذا أمكنك التعرف على المصطلحات القانونية المستخدمة هناك) لمجرد فهم كيفية استخدام المنطق الغريب من HP في بعض الأحيان للتحكم في جميع الفوهات. البراءة نفسها مفيدة ، ولكنها ليست كافية للسيطرة على الخرطوشة ؛ على الأقل ، لا يزال الجزء الأكبر من الأعمال الهندسية العكسية التي اضطلعت بها ضروريًا ، حتى لو حصلت على براءة الاختراع هذه.
هنا وأسفل سأستخدم أسماء الإشارات وجهات الاتصال المستخدمة في براءة الاختراع. يرجى ملاحظة أنه في الرمز لا يزال من الممكن العثور على أسماء الإشارات الخاصة بي ؛ سوف أدرج جدول ترجمة مع الوثائق.
تشفير البيانات
لذلك ، هنا هو ما تبدو خراطيش قيد الدراسة. بنظرة سطحية ، هذه أجهزة بسيطة إلى حد ما: في الداخل ، تتكون بالكامل تقريبًا من إسفنجة مغمورة بالحبر. في حالة الخرطوشة المرفقة بالطابعة ، يوجد عدد قليل جدًا من الحبر: نصف المساحة الموجودة في الخرطوشة فقط تشغلها الإسفنج ، والإسفنجيات نفسها نصف فارغة:
على الجانب هناك 16 جهة اتصال من الأسفل حيث يوجد رأس الطباعة. كما ترى في المجهر ، هناك ما يقرب من 336 فوهة في رأس الطباعة للخرطوشة السوداء ، و 612 فوهة في خرطوشة الألوان. يتم ترتيب الفتحات في صفوف رأسية على رأس الطباعة ، ويمكن التحكم في كل فوهة إلكترونياً بحيث تقوم بإسقاط قطرة صغيرة من الحبر لأسفل باتجاه جانب الورقة المدرجة في الطابعة. عن طريق تحريك الرأس عموديًا ، يمكن للطابعة طباعة "شريط" أو أي صورة أخرى ؛ في حالة وجود خرطوشة سوداء ، يبلغ طول هذا الشريط حوالي 15 مم و 8 مم لخرطوشة ملونة.
من الواضح ، يمكن التحكم في الفوهات باستخدام جهات الاتصال. وفقًا لنقوش رأس الطباعة الصغيرة ، تحتوي جهات الاتصال على الإشارات التالية:
نظرًا لوجود 16 جهة اتصال فقط ، يجب أن يكون هناك نوع من مخطط تعدد الإرسال للسيطرة على جميع الفوهات. تشرح البراءة كيف تعمل: يتم تقسيم التحكم في الفوهة إلى 14 مجموعة منفصلة. يتم تشغيل هذه المجموعات بالتسلسل: أولاً ، يتم استلام بياناتهم ويتم تشغيل المجموعة 1 ثم المجموعة 2 وما إلى ذلك. تتحكم كل مجموعة بحد أقصى 24 فوهة ، ويتم إرسال البيانات الخاصة بهم عبر ثلاث حافلات نقل بيانات. في حالة وجود خرطوشة ملونة ، تتوافق البيانات الموجودة في الحافلات الثلاثة مع الألوان: D1 هي البيانات الصفراء ، D2 هي بيانات أرجواني ، و D3 تتحكم في فتحات سماوي.
في براءة الاختراع ، يتم وصف العمل بالتفصيل باستخدام ناقل بيانات واحد كمثال. يوضح هذا الشكل من براءة الاختراع الإشارات المستخدمة:
ناقل البيانات يحتوي على ثمانية بايت ، 0-7. يتم التحكم في البايتات بواسطة الحافة الخلفية لـ DCLK ، ويتم التحكم في البايتات الفردية بواسطة الحواف الخلفية لـ S1-S4. يمكن تشغيل الفوهات التي يتم التحكم في بياناتها بواسطة وحدات البايت الأربعة الأولى من خلال توفير الطاقة عبر ناقل الطاقة F3 ؛ يتم تشغيل الفتحات المرتبطة بالبتات الأربعة الأخيرة بواسطة ناقل F5.
ليس لدي أي فكرة لماذا قررت HP استخدام مثل هذه الدائرة المعقدة لإدارة بيانات الفوهة. يمكننا القول أن شيئًا ما واضحًا ، مثل سجل التحويل ، كان من الممكن أن يعمل بشكل طبيعي هنا. أفهم أن HP تستخدم براءات اختراعها كسلاح ضد شركات إعادة تعبئة الخراطيش ؛ ربما شخص ما قد حصل بالفعل على براءة اختراع لحل أبسط ، وكان عليهم التوصل إلى هذا الحل الأكثر تعقيدًا ليكون فريدًا.
في هذا الرسم البياني ، الذي أعدته أنا على محلل منطقي ، ليس من الصعب العثور على الإشارات الموضحة في براءة الاختراع:
بالإضافة إلى التحكم في الفوهات ، تحتاج الخرطوشة أيضًا إلى إشارة (csync) للانتقال إلى المجموعة التالية من الفوهات أو لإعادة التعيين والعودة إلى المجموعة الأولى. يمكن رؤيته في الصورة من محلل منطقي: إنه يعرض المجموعات قبل الأخيرة والأخيرة من 14 ، ولإشارة csync شكل يمكن التعرف عليه في المجموعة الأخيرة ؛ يقوم "بإعادة ضبط" الخرطوشة بحيث تتلقى المجموعة الأولى البيانات التالية. يمكن أيضًا استخدام هذه الإشارة لتجاوز مجموعات الفوهات بالترتيب العكسي ؛ هذا مفيد عندما يتحرك رأس الطباعة من اليسار إلى اليمين ، ومن اليمين إلى اليسار. على الرغم من أن البراءة الثانية تصف كيفية عمل ذلك ، فقد قررت ببساطة ترميز الانتقال إلى المجموعة التالية وإعادة تعيين الإشارات التي تظهر في صوري بخط csync.
لاحظ أن كل هذا يحدث بسرعة عالية إلى حد ما. يبلغ التأخير بين الحافتين الرئيسيتين لإشارة DCLK حوالي 0.4 ،s ، والمسافة بين المجموعتين تقارب 4 μs.
نحن نعلم الآن أن كل بت في حافلات البيانات الثلاثة هذه ذات 14 بايت يحتوي على أمر تشغيل لفوهة واحدة. إذا كانت البتة 0 ، يتم تشغيل الفوهة المقابلة ؛ إذا كان يساوي 1 ، ثم فوهة لا يعمل. ما لا نعرفه هو المراسلات بين البتات والفوهات. إذا شاهدت العرض التقديمي ، فأنت تعرف كيف تمكنت من معرفة ذلك: قمت بطباعة نمط معروف على طابعة تعمل ، واعترض الإشارات باستخدام محلل منطقي ، ثم اكتشفت ما هو ترتيب الإشارات من أجل فك تشفير الإشارات إلى الصورة الأصلية.
.
لسوء الحظ ، فإن مطابقة البتات بالفوهات تبدو ثابتة إلى حد ما ، ولكن ليس منطقية تمامًا. يبدو أن هذا يرجع بشكل أساسي إلى الحاجة إلى نقل الفتحات فعليًا في وقت واحد على مسافة كافية (لتجنب ارتفاع درجة الحرارة أو حدوث فراغ محلي في خزان الحبر). بالإضافة إلى ذلك ، لقد وجدت أيضًا أن سهولة توجيه الإشارات في الخرطوشة يمكن أن تتسبب في مطابقة الفوهة بعض الشيء. في البرامج الثابتة الخاصة بي ، قمت ببساطة بتنفيذ هذا التعيين كمجموعة من جداول البحث.
إلكترونيات
الآن بعد أن عرفنا كيف تعمل الإشارات ، يمكننا التحكم في خرطوشة الطابعة باستخدام متحكم بسيط ، أليس كذلك؟ حسنا ، ليس على الفور. لا تستخدم خرطوشة الطابعة منطقًا بسيطًا بجهد 5 فولت أو 3.3 فولت ، ويتم التحكم في حافلات البيانات بواسطة حافلات 16 فولت أو 9 فولت ، كما يتم التحكم في حافلات الطاقة بقدرة 16 فولت ، وفي الواقع ، اعتمادًا على عدد فتحات التشغيل ، يمكن سحبها إلى تيار مزود الطاقة . نحن بحاجة إلى إجراء تحويل مستوى.
كمحول المستوى ، اخترت MC14504. هذه شريحة تحويل مستوى سداسي عشري أحادية الاتجاه قديمة يمكن أن تزيد الجهد إلى 18 فولت. على الرغم من أن هذه الرقاقة تعمل أيضًا ، إذا نظرنا إلى الوراء ، لا أستطيع أن أقول أن هذا لم يكن الخيار الأفضل: يمكن فقط إخراج بضعة مللي أمبير ولديه تأخير نشر كبير إلى حد ما. أعتقد أنه يوفر تأخيرًا لبعض إشارات الإخراج وفقًا للخرطوشة والحمل المطبق على مخرجات الرقائق. لدي خرطوشة واحدة على الأقل تحتاج إلى ضبط توقيت بسيط حتى تعمل الإشارات ، وأعتقد أن هذا هو السبب. لسوء الحظ ، لا يمكن الوصول إلى محولات مستوى 16V الجاهزة اليوم ، لذا لا يمكنني استبدالها بشيء أفضل. ومع ذلك ، فإن هذه الشريحة الكلاسيكية مع القليل من التعديل كافية.
مع الحافلات السلطة ، الأمور أكثر تعقيدا قليلا. بالإضافة إلى حقيقة أن هذه الاتصالات تأخذ جزءًا كبيرًا من التيار ، فهي أيضًا متصلة مباشرة بمقاومات الفوهات المضمنة: إذا تم توفير الطاقة لفترة طويلة جدًا ، فسوف تحترق هذه المقاومات الصغيرة وستفشل الفوهة تمامًا. بالإضافة إلى ذلك ، يعد هذا "طويل جدًا" بسيطًا للغاية: إنه يكفي لتشغيل الفتحات لبضع ثوانٍ فقط ، وإذا قمت بتوفير الطاقة لملي ثانية واحدة فقط ، فإنها تتبخر ببساطة ، وتكسر الفوهة تمامًا. لمنع حدوث ذلك نظرًا لوجود خطأ في البرنامج أو اتصال غير صالح ، أضفت منطقًا للجهاز يضمن قصر النبض على مضاعفات صغيرة تبلغ 10 μs.

في النموذج الأولي الأول ، تركت العديد من محولات المستوى ولم أكن أعرف كيف سيعمل البرنامج ، لذلك قمت بحل المشكلة باستخدام هزاز متعدد الدورة حقيقي. في هذه الدائرة ، يتم استخدام اثنين من أجهزة الهزاز المتعددة في 74HC123 ، لتوليد نبضات ، يتم تعيين عرضها عن طريق مزيج من R / C متصلة دبوس RCExt. يتم إنشاء النبضة الناتجة فقط مع إشارة دخل متزايدة ، وبالتالي فإن الإشارة العالية باستمرار لن تؤدي إلى أي شيء آخر غير نبض الإخراج الهامشي المحدد بدقة. بعد ذلك ، يتم استخدام قناة MC14504 كمحول مستوي لرفع الجهد إلى +16 فولت ، ويوفر الترانزستور M-P P-channel التيار اللازم.

في لوحة الدوائر المطبوعة الثانية ، أدركت أنه إذا قمت بتغيير منطق جهات اتصال الطاقة بحيث لا تستخدم قناتين من دائرة تحول المستوى ، فلن تكون سوى ورقتي MC14504 كافية. لدي الآن تحكم برمجي جيد بما فيه الكفاية على عرض النبضة ، لكنني ما زلت أريد أن أحصل على حماية ضد إشارة اتصال عالية الدخل باستمرار. هنا هو الرسم البياني جئت ل. يعمل مثل هذا: في الحالة الطبيعية مع إشارة منخفضة PWRB_IN ، يكون المكثف C28 فارغًا ، لأن أي جهد فيه يتدفق ببطء على طول R20 و R21: بوابة الترانزستور Q4 مرتفعة ، ويتم فصل PWRB_OUT عن ناقل الطاقة 16 فولت. إشارة ، Q6 الأرض واحدة من نهاية C28 ؛ نظرًا لأن الجهد الكهربي عبرها يساوي 0 فولت ، في البداية ، يسحب ذلك أيضًا جانبه الآخر ، المتصل بالبوابة Q4. إن سحب مصراع Q4 لأسفل يجعله موصلًا ، وهذا يسمح بتدفق التيار من +16 فولت إلى PWRB_OUT. في الحالة الطبيعية ، يعود PWRB_IN إلى الحالة المنخفضة بسرعة كافية ، حيث يغلق البوابة Q4 ويقاطع التيار. ومع ذلك ، على الرغم من انخفاض PWRB_IN ، فإن C28 يشحن ببطء: يتم توجيه جانب إلى Q6 ، والآخر متصل بـ 16 V عبر R21 و R31. عندما تكون المكثف مشحونة بما فيه الكفاية ، "يرى Q4" مستوى عالٍ على البوابة الخاصة به ويغلق التيار في PWRB_OUT ، حتى لو كان PWRB_IN في حالة إشارة عالية. تضمن هذه الآلية أن PWRB_OUT يوفر فقط الطاقة لفترة محدودة من الوقت.
تحتوي الدائرة أيضًا على مقاوم صغير متصل في سلسلة مع ناقل الطاقة 16 فولت (R31) ، بالإضافة إلى مكثف صغير متصل بالتوازي مع إشارة الإخراج (C15). هناك حاجة إليها "لتخفيف الجهد" لإشارة الطاقة: بدونها ، سوف يؤدي تشغيل وإيقاف Q4 الحاد إلى حفنة من التداخل الكهرومغناطيسي ، مما يؤدي إلى تشويه الإشارات المرسلة إلى الخرطوشة.
بخلاف هذا المنطق ، لا شيء أكثر حاجة. من الواضح أن هناك حاجة إلى محولات +9 V و +16 V. يجب أن يكون مزود الطاقة +9 V متواضعًا جدًا: لم ألاحظ أن هذه الحافلات تستخدم عمومًا أكثر من بضعة مللي أمبير. نظرًا لأنه يغذي مقاومات الفوهة ، فيجب أن يكون مصدر الـ 16 فولت أقوى قليلاً: لقد صنعته بحيث يوفر المنجم ما لا يقل عن 400 مللي أمبير بشكل مستمر ، كما أضاف الكثير من السعة الفاصلة.
أخيرًا ، يقع العبء الأكثر أهمية في معالجة الصور وتوليد الإشارات على المتحكم الدقيق. لهذا الغرض ، اخترت ESP32 ، بشكل رئيسي لأنني أخذت بضع قطع من العمل ، ولكن أيضًا لأن لديها وحدة تحكم I2S قوية إلى حد ما تستخدم وضعًا متوازيًا مريحًا للغاية: في الواقع ، يمكننا ضبط تردد الساعة ، تحديد مساحة الذاكرة لوحدة تحكم I2S وسيتم إخراج هذه البايتات بشكل متواز. بفضل هذا ، فهو مثالي لتوليد إشارات التحكم اللازمة ؛ حقيقة أن لديها اثنين من النوى بقوة 240 ميغاهيرتز يساعد أيضا في معالجة الصور.
النموذج
بالطبع ، لا يمكن أن تصبح عدة محولات و الترانزستورات MOS وحدها وحدة تحكم خرطوشة طابعة تعمل. لذلك ، قمتُ بإنشاء جهاز منفصل ، تم تصميمه كمنصة لتجربة الخرطوشة وقدراتها. لديها وحدة ESP32 ، والمنطق اللازم للسيطرة على الخرطوشة ، والعديد من إمدادات الطاقة للعمل من خلية ليثيوم أيون. وهي مجهزة أيضًا بالعديد من أجهزة الاستشعار المصممة للتعويض عن الحركات غير الكاملة لأيدي الشخص ، وكذلك الأزرار والشاشة التي تقدم تعليقات على الصور المطبوعة. دعونا نلقي نظرة على المكونات ، ربما بالنسبة لشخص ما ، سيكون مصدر إلهام لاختراق الخراطيش:
لنبدأ بمصدر الطاقة. يتم توفير الطاقة من خلية ليثيوم أيون وتحويلها إلى 3.3 فولت و 16 فولت و 9 فولت. مطلوب جهد 3.3 فولت لأجهزة الاستشعار و ESP32 ؛ يتم إنشاؤه باستخدام منظم LD78 بسيط HT7833.
يتم إنشاء الفولتية من 9 V و 16 V بواسطة اثنين من المحولات دفعة على أساس رقاقة محول دفعة XR2203. يرجى ملاحظة أن مزود الطاقة 16 فولت يجب أن يعمل بجهد أكبر من مزود الطاقة 9 فولت ؛ تستهلك الخرطوشة من 9 فولت فقط عدد قليل من المللي أمبير. تم إنشاء محولين معززين على نفس الشريحة لمجرد أنه كان كافياً بالنسبة لي لشراء نوع واحد من المكونات لكليهما.نظرًا لأن الجهاز بأكمله مدعوم من خلية ليثيوم أيون ، فنحن بحاجة إلى شحنه بطريقة أو بأخرى. لدي مساحة صغيرة ، لذا أضفت شاحن بطارية ليثيوم أيون يستند إلى TP4056 حتى أتمكن من إعادة شحن البطارية من أي مصدر طاقة USB.يتم توفير ذكاء الجهاز من خلال وحدة ESP-Wrover32. لقد استخدمت الخيار مع 8 ميغا بايت من ذاكرة فلاش و 8 ميغا بايت من ذاكرة الوصول العشوائي ؛ بما فيه الكفاية لأداء معالجة الصور المعقدة. تحتوي الوحدة أيضًا على موصل من 5 أسنان يسمح لك ببرمجة البرامج الثابتة وتصحيحها ، بالإضافة إلى زرين يمكن استخدامهما لتحديد الخيارات وبدء التقديم عند تشغيل البرنامج الثابت.يتم عرض الخيارات المحددة على شاشة LCD صغيرة ملونة مقاس 160 × 80. تحتوي الشاشة على اتصال SPI ويمكن التحكم فيه مباشرة من خلال أحد موصلات SPI الطرفية المتوفرة في ESP32.هذه هي واجهة خرطوشة. كما ذكر أعلاه ، ليست معقدة بشكل خاص. يتم تحويل مستوى جميع الإشارات بواسطة زوج MC14504 ، وإشارة واحدة لمدة 9 فولت وواحدة لمدة 16 فولت.هنا ثلاثة أنواع من أجهزة الاستشعار التي استخدمتها. يتم توصيلهم جميعًا باستخدام ناقل I2C واحد ، أي في ESP32 يشغلون اثنين فقط من GPIOs. هذا هو وحدة استشعار بالقصور الذاتي MPU9250 (التسارع ، جيروسكوب والبوصلة الرقمية) لقياس الحركة ، ثلاثة أجهزة استشعار المسافة بالليزر VL53L0X (واحد فقط هو مبين) ، والموجهة ، اليسار واليمين. والفكرة هي أنه من خلال الجمع بين هذه المعلومات ، من الممكن من الناحية النظرية تحديد الموضع المطلق للخرطوشة. هذا مفيد ، على سبيل المثال ، عند رسم صور كبيرة بحركة يد حرة. هذا الأخير هو استشعار الألوان TCS3472. يقع مستشعر اللون بجانب الصمام الأبيض ؛ يمكن استخدامه "لنسخ" اللون من الموضوع أو للتعويض عن لون الوسيط الذي نطبع عليه.
منذ أن كنت بحاجة إلى GPIOs إضافية ، قمت بتوصيل موسع GPIO إلى الناقل. إنه يتحكم في حافلات إعادة التعيين لمستشعرات المسافات الثلاثة ، وحافلة إعادة التعيين لشاشة LCD ، وإدراج محول التعزيز واثنين من الترانزستورات MOS (غير مبين) التي تتحكم في LED الأبيض المستخدم لإلقاء الضوء على الهدف لجهاز استشعار الألوان ، والإضاءة الخلفية لشاشة LCD. تحتاج مستشعرات المسافة إلى حافلة إعادة ضبط منفصلة ، لأنها ستعمل على نفس عنوان I2C. ومع ذلك ، لديهم أمر يغير عنوان I2C بعد تشغيله. من خلال تشغيلها ونقلها واحدًا تلو الآخر إلى عناوين I2C مختلفة ، يمكنني التحكم في الثلاثة على نفس ناقل I2C.هنا هي لوحة الدوائر التي صممتها على أساس الدائرة. له شكل غريب ، لأنه يجب تقسيمه إلى أربع لوحات منفصلة و "تحيط" بخرطوشة الطابعة. ترتبط كهربائيا وجسديا. ميزة هذا أن مصنعي لوحات الدوائر المطبوعة لا يعتبرون هذه الدائرة أربع لوحات منفصلة وتحتاج فقط إلى دفع ثمنها.ميزة أخرى هي أنه يمكنني تجميع اللوحة كعنصر واحد ، ثم اختباره عندما تكون جميع المكونات على نفس المستوى. هذا يسمح لي بعدم موازنة الجهاز الذي تم تجميعه بعناية أثناء تصحيح الأخطاء. ملاحظة صغيرة: تستخدم أجهزة استشعار VL53L0X شعاع الليزر بالأشعة تحت الحمراء. يبدو أنه قوي بما يكفي لاختراق مرشح الحماية من الأشعة تحت الحمراء في "المرآة" الخاصة بي ويظهر في الإطار كبقع ضوئية أرجوانية صغيرة.وماذا ستكون النتيجة النهائية بعد التجميع. لاحظ أنه عندما تم فصل الألواح ، تم قطع الاتصال بينهما. تحتوي الألواح على منصات لحام صغيرة يمكنك من خلالها لحام قطعة صغيرة من الأسلاك وثنيها. من الواضح ، بالنسبة لمستوى الإنتاج ، ستحتاج إلى استخدام تقنيات مثل FPC PCB أو PCB المرن الصلب ، ولكن لنجاح هذا النموذج الأولي الرخيص.إذا كنت ترغب في استخدام هذا النموذج الأولي للرجوع إليه أو تجربته ، يمكنك تنزيل ملفات مشروع KiCad (هناك أيضًا مخططات pdf و gerber في نفس المكان) وتجميعها بنفسك أو استخدام أنظمتها الفرعية.نظرًا لأن هذا نموذج أولي ، فإن البرنامج بالأحرى ... غير متجانسة. سوف أعطي رابطًا إلى المستودع الذي تم تطويره فيه ، لكن ضع في اعتبارك أن هذا يمثل جزءًا من دورة التطوير بأكملها تقريبًا ، لذلك فهو يحتوي على كل شيء بالترتيب ، من تسجيلات إشارة محلل المنطق إلى مطبوعات Nyancat و Mona Lisa. لسوء الحظ ، هذا هو السبب في كون الشفرة فوضى غير موثقة تقريبًا مع مسارات نصف مكتملة وبقايا الكود القديم. إذا كنت لا تزال ترغب في معرفة ذلك ، يمكنك استنساخ عنوان URL هذا في بوابة .ومع ذلك ، إذا كنت مهتمًا أكثر بالبرنامج الذي يمكنه بسهولة إدارة خرطوشة الطابعة باستخدام ESP32 (ويحتوي على إجراءات مفيدة للتحكم فيها من خلال متحكم آخر) ، فتابع القراءة.نسخة العمل الحد الأدنى
لتسهيل استخدام الحرفيين الآخرين لخراطيش الطابعة في مشاريعهم الخاصة ، قمت أيضًا بإنشاء إصدار عمل بسيط من برنامج التشغيل. يفتقر إلى الدعم لجميع الأجهزة الطرفية والخارقة من رمز النموذج الأولي ، ولكن تم تنظيف الهيكل وبالتالي يمكن أن تصبح أساسا متينا لمزيد من التطوير. لدى برنامج التشغيل مثال بسيط لبرنامج يطبع عند الضغط على زر HELLO! اللون أو خرطوشة سوداء.لم أكن إنشائه لمعدات متخصصة، ولكن في الواقع، يمكنك إعادة استخدام "الأجهزة" من المقطع السابق: مجرد اتخاذ إمدادات الطاقة ، ESP32و تحويل مستوىوتطبيقها في المخطط الخاص بك. يمكنك أيضًا استخدام النموذج الأولي الموضح في القسم السابق بشكل كامل: يكفي توفير إشارة عالية ثابتة BOOST_EN بحيث تكون محولات دفعة 9 V / 16 V في وضع التشغيل دائمًا. (وبهذه الطريقة قمت بتصحيح الكود.)يمكن العثور على الكود نفسه على جيثب ، وهو منظم بشكل قياسي لمشروع ESP-IDF. رمز برنامج التشغيل الرئيسي في المكونات / printcart ؛ كود القراءة زر وتحديد موعد لتشغيل فوهة، وكذلك رمز التهيئة الواردة في / main.c الرئيسي . في المثال ، تتم قراءة بيانات الفوهة من صورة rgb المدمجة.يحتوي النظام على البنية التالية: printcart_i2s.cيحتوي على برنامج تشغيل بسيط لوضع متوازي الموصلات الطرفية I2S وحدة تحكم ESP32. وهو يختار اثنين من المخازن المؤقتة ونقل من الكلمات 16 بت المخازن المؤقتة مع تردد 3.3 ميغاهيرتز إلى جهات الاتصال GPIO (الحد الأقصى 16 جهات الاتصال). (هنا ، يتم توصيل دبابيس GPIO هذه بمحولات المستوى التي تتحكم في الخرطوشة.) في كل مرة يكون المخزن المؤقت فارغًا ، ينفذ برنامج التشغيل معالج حدث لملء المخزن المؤقت.يوجد معالج الأحداث في printcart_buffer_filler.c . يتلقى بيانات الفوهة من قائمة انتظار بيانات الفوهة ويمررها إلى دالة في printcart_genwaveform.c ، والتي تقوم بتحويل بيانات الفوهة هذه إلى قالب بواسطة إشارات. يعتمد القالب على نوع الخرطوشة (اللون أو الأسود) ، ويمكنك تغييره عن طريق تحميل tools / waveform_editor.html في المتصفح .من ناحية أخرى ، قائمة انتظار بيانات الفوهة هي إجراء الحلقة في main.c. ينتظر الضغط على زر ، وعند الضغط عليه ، يقوم بإنشاء بيانات فوهة عن طريق تحليل ملف صورة بسيط ، وتحويله إلى بيانات rgb أولية ومضمنة في ملف ثنائي مخيط ، ومسح البيانات من اليسار إلى اليمين. بفضل هذا ، يمكنك الضغط على الزر ، وإمساك الخرطوشة على الورق ، وطباعة محتويات الصورة في شكل شريط حبر.النتيجة النهائية تبدو مثل هذا:من الملاحظ جدًا هنا أن الخرطوشة السوداء تطبع ارتفاعًا بمقدار الضعف تقريبًا مثل اللون (0.7 سم و 1.5 سم) ، لذلك إذا كنت لا تحتاج إلى لون وتحتاج إلى رؤية جيدة ، فمن الأفضل اختيار خرطوشة سوداء. تجدر الإشارة أيضًا إلى أنه في main.c يوجد تعريف يقوم بالتبديل بين خراطيشين ؛ رمز يمكن أن تعمل مع كليهما. ليس من الواضح تمامًا سبب وجود خطوط ضبابية في الصورة السوداء: ربما يكون هناك خطأ في إشارتي ، أو ربما خرطوشة تعبت قليلاً من الاختبار. مهما كان الأمر ، فإن البيانات المطبوعة جميلة ويمكن التعرف عليها جيدًا.في الختام
كانت الهندسة العكسية لخراطيش الطابعة هذه مغامرة طويلة ، ولكن في النهاية كان عملي مثمرًا ؛ على الرغم من وجود بعض الألغاز المتبقية (على سبيل المثال: ماذا تفعل جهة اتصال المعرِّف؟) ، أعتقد أنني فهمت ألغاز الإشارات المستخدمة في الخرطوشة جيدًا. آمل أنه من خلال نشر الكود والمخططات الخاصة بهذا المشروع ، سأضيف استخدام خراطيش الطابعة إلى مجموعة أدوات الحرفيين والمتسللين والمبدعين. لا استطيع الانتظار لرؤية أمثلة الاستخدام المثيرة للاهتمام التي سيأتي بها المجتمع. إذا استطعت أن تفعل شيئا للاهتمام مع عملي، تأكد أن ترسل لي رسالة .أما عن نيتي في خلق فن ... أم ... فهل يمكن تسمية ذلك؟