النظرة الأولى: Javascript Microcontrollers لمطوري الويب - 💡 Fix My Ideas

النظرة الأولى: Javascript Microcontrollers لمطوري الويب

النظرة الأولى: Javascript Microcontrollers لمطوري الويب


مؤلف: Ethan Holmes, 2019

لوحة Tessel (يسار) ولوحة Espruino (يمين)

لقد تم شحن Espruino إلى مؤيدي Kickstarter ، ومن المقرر أن يتم شحن Tessel بحلول شهر أيار (مايو) ، ونحن على وشك الحصول على أجهزة Tessel لما قبل الإنتاج ويمكنك توقع إجراء مراجعة متعمقة قريبًا.

على الرغم من انفجار لوحات جديدة قادمة إلى السوق - وبسبب المجتمع الذي نشأ من حولهم - أود دون تردد التوصية بـ Arduino ، إذا كنت بحاجة إلى لوحة تحكم صغيرة 8 بت أو Raspberry Pi إذا كنت بحاجة كمبيوتر ذو لوحة واحدة يعمل بنظام Linux.

تلك المجتمعات التي تجعل Arduino و Raspberry Pi مفيدة للغاية ، وأي مشكلة قد تصادفها من المحتمل أن يكون شخص آخر قد صادفها بالفعل وأن الحل ، أو على الأقل مفتاح الحل ، ينتظر منك بالفعل وهو مجرد بحث جوجل بعيدا.

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

يوجد حاليًا مجلسان جديدان للتحكم المصغر يبحثان عن التمويل - أحدهما على كيك ستارتر ، والآخر على منصة التمويل الجماعي الجديدة من Dragon Innovation - مختلفان بعض الشيء. هذه الألواح ليست مجرد نسخة أخرى من Arduino ، أو أخرى محتملة "التوت بي القاتل." تنوي هاتان اللوحتان ، Tessel من technical.io و Espruino من Pur3 ، اتخاذ المسار الأقل سفرًا والتعاون في مجتمع قائم لا يرتبط تقليديًا بمجتمع المُصنّعين.

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

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

السفينة

كانت Tessel من technical.io واحدة من المنتجات الثمانية التي أطلقت منصة التمويل الجماعي الجديدة Dragon Innovation الأسبوع الماضي ، وأول من حقق هدف التمويل. يهدف Tessel إلى الحد الأقصى للفجوة بين Arduino و Raspberry Pi ، بشكل مباشر في التطبيقات المتصلة بالإنترنت التي تستهدف الأجهزة المادية ، ويحتوي على شبكة WiFi مدمجة. هذا لا يعني فقط أن اللوحة تكون دائمًا على الإنترنت ، مما يسمح باستخدامها كخادم وعميل ، ولكن لديك القدرة على نشر رمزك عن بُعد على اللوحة عبر الشبكة.

بالإضافة إلى بنك GPIO القياسي في طرف واحد - والذي يتضمن قدرة SPI و I2C و UART بالإضافة إلى 6 دبابيس للإدخال / الإخراج للأغراض العامة و 6 دارات تناظرية إلى محولات رقمية ودبوس 5 فولت ودبوس 3.3 فولت ودبوس أرضي - تدعم اللوحة نظام وحدة ، مما يجعل من الأسهل إضافة إمكانيات لمشروع دون لحام. هناك نوعان من الوحدة النمطية ، كلاهما له نفس الموصل. وحدات الفئة (أ) - لوحات الترحيل ، درجة الحرارة / الرطوبة ، المؤازرة ، مقياس التسارع وبطاقة بطاقة micro-SD - وحدات من الفئة ب أغلى قليلاً - RFID ، Bluetooth LE ، لوحات GPS والصوت.

لقد تم إنتاج Tessel الخاص بي قبل الإنتاج مع وحدة مؤازرة ، والتي تتطلب مصدر طاقة ثاني مخصصًا لأجهزة الماكينات.

لوحة Tessel مع وحدة سيرفو تقود سيرفو قياسي.

رمز قيادة الوحدة المؤازرة بسيط للغاية ،

var servo = require ('servo-pca9685') ؛ // تهيئة المؤازرة. console.log ( "initalizing")؛ // Port A، servo 1، معايرة min / max PWM من 4-15 var cs61 = servo.port ('A'). connect (1، 4، 15)؛ cs61.on ('متصل' ، function () {var pos = 0 ؛ setInterval (function () {console.log ("Deg rotation:"، pos)؛ cs61.move (pos)؛ // Increment by 45 deg pos + = 45 ؛ إذا (pos> 180) {pos = 0؛}}، 1500)؛})؛

تستفيد اللوحة من npm ومجتمع node.js المتراكم - ما عليك سوى تثبيت الوحدة المؤازرة باستخدام npm في تثبيت node.js الخاص بك ، ثم دفع الرمز إلى لوحة Tessel باستخدام حزمة Tessel npm. ولكن ليست البنية الأساسية الخاصة بها هي التي تستفيد من npm ، بل ستكون اللوحة متوافقة مع الآلاف من وحدات node.js الحالية المتاحة عبر npm.

قد تكون حقيقة كونها متوافقة مع node.js عاملاً كبيرًا في نجاح لوحة Tessel ، فإن مجتمع العقدة كبير ومتحمس - كما يمكن ملاحظته من خلال جهود مثل nodecopter و Johnny Five - مفتوح بالفعل للعمل مع الأجهزة. هذا فوز كبير لـ Tessel ، لديهم مجتمع فوري خلفهم. هذا يعني الكثير.

التحدث مع تيم ريان

لقد تحدثت مع تيم ريان ، أحد مؤسسي آلة التقنية ،

ما هو الهدف من مشروع تيسيل؟

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

ما هو الهيكل الأساسي للوحة Tessel؟

في المنزل قمنا بتطوير مترجم جافا سكريبت JavaScript مبني حول وقت تشغيل Lua المتوافق مع Node.js API. لا توجد وحدات C ++ أصلية ، ولكن التحكم في التدفق ووحدات HTTP بسهولة. نظام التشغيل الخاص بنا هو فعلياً حلقة حدث على المعدن العاري. يتم التحكم في إشارة عالية السرعة والاستجابة بشكل غير متزامن. لدينا تجارب تتحكم في مصفوفات LED ذات التحديث الفائق السرعة والأجهزة الطرفية SPI التي تُظهر أنه بديل ميسور التكلفة لرمز الوقت الفعلي ، مع كونه أكثر سهولة في الكتابة.

على سبيل المثال ، فإن معظم كودنا المحيطي (معظمه SPI و I2C) يسجلان في حوالي 50 أو 100 سطر من الشفرة المعلقة. يمنحنا وقت التشغيل لدينا اقتراح إجراء المحاكاة مباشرة على سطر الأوامر الخاص بك قبل نشر التعليمات البرمجية ، وإعطاء مطوري الويب أداة مألوفة أخرى ، وهي الاختبار الآلي. للبدء في أي وحدة نمطية نقوم بتصنيعها بسيطة مثل "npm install accelerometer-mma8542q" وتتطلب ذلك في الكود. تم تصميم تجربة التطوير والنشر الخاصة بنا لتكون مجرد خطوات قليلة من المربع للحصول على مثال عملي - قم بتوصيل المكتبة ، وتنزيل أداة سطر الأوامر ، ونشرها.

لماذا جافاسكريبت؟

بالنسبة لـ Tessel ، نحن نركز اهتمامًا تامًا على صنع الأدوات نفسها لتطوير الويب / المحمول على اللوحات المدمجة. بين مدير الحزم في Node وواجهة برمجة التطبيقات واختيارك لـ IDE ، ينبغي أن تكون الفكرة هي أن نفس المهارات وسير العمل في الدفع إلى الخادم هما من تستخدمهما هنا. هناك الكثير من التعاون في صنع واجهات برمجة التطبيقات الجديدة "جافا سكريبت مثل"، لذلك نأمل أن يستخدم الجيل التالي من لوحات Javascript جميع مكتبات SPI نفسها ، على سبيل المثال.

توالت كومة جافا سكريبت الخاصة بك ، لماذا كان هذا؟

بالتأكيد تفقد Tessel السرعة من خلال عدم استخدام محرك جافا سكريبت المعاصر. لكن مقارنةً بنظام التشغيل Linux + V8 - الذي يحتاج إلى ذاكرة بدء التشغيل من 8 إلى 10 ميجابايت - فإن الذاكرة العامة لذاكرةنا بفضل Lua تعد أقل من 70 كيلو بايت.

لا نعتزم التنافس مع المعالجات الدقيقة مثل Raspberry Pi ، فنحن مهتمون أكثر بالتطوير الذي يتقلص - لا يصل - إلى مجالس إدارة الشركات والمؤسسات الصغيرة الأقل قوة. هناك متسع في المستقبل لمعالج كورتيكس- M3 المصغّر بقيمة 3 دولارات والذي يشغل جافا سكريبت لأنه حل طبيعي للرمز المتصل بالإنترنت أو IO - الثقيل ، وهذه هي القصة التي نريد توصيلها للمطوّرين ، وأنك تمكّن كثيرًا أكثر من مجرد بديل ل C.

ما هي خططك المستقبلية؟

خارطة الطريق لدينا هي أن تبدأ مع Tessel - أ "مستوى رفيع" الجهاز — والعمل نحو أجهزة أقل قوة. لدينا القدرة على استهداف لوحات صغيرة مثل Espruino مع وقت تشغيل أسرع بكثير ، ونحن نستثمر الكثير من الجهد للتأكد من أن وقت تشغيل Tessel هو خيار لأيجهاز متصل بالإنترنت. وعلى المدى الطويل ، "Tessel" من المحتمل ألا تظل منصة فقط لجافا سكريبت ، ولكن منصة سهلة لدفع البرامج الثابتة من لغات أخرى - C / C ++ ، Lua ، Rust ، Go ، وحتى Python و Ruby منطقياً. القيمة لدينا هي سهولة سير العمل والمكتبات ، وليس فقط جافا سكريبت نفسها.

لذلك نحن نراهن على لوحات التطوير التي تدعم جافا سكريبت والتي هي مجرد الخطوة الأولى. بعد عام من الآن ، سيكون الاتجاه نحو إلكترونيات مضمنة يمكن الوصول إليها تتيح لك البرمجة بأي لغة تريدها - طالما أن إجابتك ليست "C"! سوف تبقى Tessel مباشرة على قمة هذا الاتجاه.

و Espruino

تم إطلاق لوحة Espruino من Pur3 قبل أيام قليلة من Tessel على Kickstarter ، في نهاية شهر أغسطس ، وهي أرخص بكثير من Tessel. بسعر 19 جنيهاً إسترلينياً - أي حوالي 30 دولارًا - هو في الواقع أقل من نصف سعر لوحة Tessel. بالطبع مواصفات Espruino أقل بكثير. على الرغم من أن كلاهما يمتلكان معالجات ARM Cortex-M3 ، إلا أن Espruino لديها فقط 48 كيلو بايت من SRAM مقارنة بـ Tessel من SRAM بسعة 32 ميجابايت. بينما يهدف Tessel إلى الحد الأقصى للفجوة بين Arduino و Raspberry Pi ، فإن Espruino يهدف إلى النهاية السفلى ، ولكن سعره مناسب للمطابقة.

يعد Espruino خروجًا مثيرًا للاهتمام عن معظم المجالس الحديثة. على عكس Tessel - أو Arduino - لا تقوم بتحميل الكود الخاص بك إلى اللوحة. بدلا من ذلك لديك مترجم تفاعلي. قم بتوصيل اللوحة بجهاز Mac أو الكمبيوتر الشخصي الخاص بك ، وقم بالاتصال باللوحة عبر منفذ USB التسلسلي ، وسيتم تزويدك بوحدة تحكم تفاعلية.

يتيح لك التكرار بسرعة ، والاستمتاع بالأشياء التي تصنعها. - جوردون ويليامز

يمكنك استخدام وحدة التحكم التفاعلية بالطريقة التي تتوقعها تمامًا - وبطريقة تكون مألوفة بالنسبة لأولئك منا الذين نشأوا مع أجهزة الكمبيوتر التي تعمل بنظام BASIC - فقط اكتب الرمز الخاص بك في الحال.

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

على سبيل المثال ، يمكننا إعداد وظيفة بسيطة ستراقب الضغط على الزر الموجود على متن الطائرة ،

setWatch (function () {if (! digitalRead (BTN)) return؛ var led = 10؛ var flasher = setInterval (function () {led--؛ digitalWrite (LED1، led & 1)؛ if (led <= 0) clearInterval ( المتعري) ؛} ، 200) ؛} ، BTN ، صحيح) ؛

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

لوحة Espruino تومض مؤشر LED بعد الضغط على زر

بالطريقة نفسها ، قامت شركة Apple [[+ ، وبدرجة أقل TRS-80 ، بتزويد مشاهد مألوفة في المدارس الأمريكية ، في المملكة المتحدة خلال الثمانينيات والتسعينيات من القرن الماضي ببرامج BBC Micro. لقد تركت إرثًا دائمًا ، وعلى الرغم من عدم تسويقه صراحةً نحو التعليم ، أعتقد أن هذا المنتدى أمر لا بد منه للمدارس ، ولتعليم الناس البرمجة.

يعد Espruino ، وربما أكثر من مشروع Raspberry Pi - وهو مشروع آخر مقره المملكة المتحدة ويهدف إلى المدارس وتعليم الأطفال للبرنامج - خليفة لهيئة الإذاعة البريطانية BBC.

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

لقد تحدثت مع جوردون ويليامز ، خالق Espruino ، حول اللوحة وحملته كيك ستارتر ،

لدى Espurino مترجم شفهي تفاعلي ، لماذا فعلت أشياء بهذه الطريقة؟

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

لذلك أردت لغة يمكن تفسيرها وتفتيشها وتعديلها على الفور ، لكن هذا يشبه إلى حد كبير لغة C - وأردت استخدام شيء موجود بالفعل بدلاً من مجرد إنشاء لغتي الخاصة ، مثلما فعل رفاق Electric Imp مع Squirrel . لقد قمت بتطبيق نسخة صغيرة من JavaScript ، تسمى TinyJS ، لمشروع سابق لذلك كان من المنطقي أن أسند Espruino على ذلك. لقد جاء قرار استخدام نموذج قائم على الأحداث بالفعل بسبب جافا سكريبت - وبدا أنه مناسب تمامًا.

لماذا يعد طراز الحدث القائم أفضل من النموذج القائم على العروة والذي تستخدمه وحدة التحكم Arduino وغيرها؟

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

توالت كومة جافا سكريبت الخاصة بك ، لماذا كان هذا؟

كتابة مترجم خاص بي كان ضرورة حقًا وليس خيارًا. إذا نظرت إلى متطلبات الذاكرة للمترجمين الفوريين الرئيسيين مثل V8 - التي تستخدمها node.js - و SpiderMonkey ، فهي ضخمة جدًا - في منطقة ميغابايت. لديهم أيضًا روابط في أنظمة التشغيل الأساسية ، لذا فإن محاولة تشغيلها على أجهزة صغيرة مثل وحدة تحكم صغيرة - مع حوالي 1000 × أقل من ذاكرة الوصول العشوائي - دون وجود نظام تشغيل يكاد يكون مستحيلًا.

يستخدم Espruino ARC بدلاً من تجميع البيانات المهملة ، إنه يناسب فقط الطريقة التي يعمل بها المترجم الشفهي ، ويجعل كل تخصيص / إلغاء تخصيص الذاكرة سريعًا للغاية - خاصة وأن جميع الكتل متساوية في الحجم.

أنه يؤدي إلى نقطة مثيرة للاهتمام حول هذه ميكروكنترولر ARM. يعمل Espruino بسرعة 72 ميجا هرتز مع 48 كيلو بايت من ذاكرة الوصول العشوائي ، لذلك وفقًا لتقدير تقريبي للغاية ، يمكنه قراءة كل بايت من ذاكرته في حوالي دقيقة واحدة. قارن هذا بـ Raspberry Pi بسرعة 800 ميجاهرتز و 512 ميجابايت من ذاكرة الوصول العشوائي مع وقت قراءة يقترب من ثانية واحدة - وهذا يعني أنه يجب عليك التفكير في كيفية التعامل مع البيانات بشكل مختلف تمامًا ، وهذا أحد الأسباب التي تجعلني لا أستطيع بسهولة استخدام مترجم حالي .

الكثير من مشاريع كيك ستارتر لديها مشاكل في التوسع. إذا كان مشروعك ناجحًا ، هل أنت مستعد؟

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

ما هي خططك المستقبلية؟

إذا وصلنا إلى 50،000 جنيه إسترليني في حملتنا الحالية ، فسنضيف دعمًا لوحدة CC3000 WiFi في لوحة Espruino. لن ننتج درع شبكة WiFi - يجب أن نركز على Espruino نفسها - لكننا سنضيف دعمًا لـ CC3000 في برنامج لوحة Espruino قبل أن يتم شحنه إليك. هذا يعني أنك ستكون قادرًا على شراء وحدة مسبقة الصنع وتوصيلها وإمكانية الوصول الفوري إلى الإنترنت. لكنني أيضًا أميل إلى بناء "درع درع" ينزلق أسفل لوحة Espruino لإعطائه دبوسًا متوافقًا مع Arduino. للمضي قدمًا أنا مهتم أيضًا ببناء نسخة أصغر بكثير من لوحة Espruino.

هل اثنين من لوحات جعل الاتجاه؟

لدى مجتمع Javascript اهتمامًا فعليًا بالأجهزة - ما عليك سوى إلقاء نظرة على nodecopter لمعرفة ذلك - ووصول ليست واحدة ، ولكن لوحتي ، كلاهما من Javascript أصليًا وقائمين على الحدث ستقابلان كثيرًا من الاهتمام. الحقيقة المحظوظة المتمثلة في أن المجالس لا تتنافس حقًا مع بعضها البعض ، حيث تستهدف Tessel الطرف العلوي و Espruino الطرف الأدنى ، وربما يعني أن كلاهما سيجدان مكانًا مناسبًا - وأن هذا المكانة ستكون واسعة إلى حد ما.

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

 



قد تكون مهتمة

كيفية تقييم صنع 2015: مجسات اختبار 3DP

كيفية تقييم صنع 2015: مجسات اختبار 3DP


تقديم: مشاريع يمكن ارتداؤها على المدرج

تقديم: مشاريع يمكن ارتداؤها على المدرج


Engadget Expand: عرض شرائح لمقابلة Maker للمستهلك Tech

Engadget Expand: عرض شرائح لمقابلة Maker للمستهلك Tech


MOMA يضيف اردوينو ، Makey Makey ، وأكثر من ذلك

MOMA يضيف اردوينو ، Makey Makey ، وأكثر من ذلك