عندما يلتقي JavaScript مع الأجهزة: كلمة جديدة في الأنظمة المدمجة
عندما نقول "تطوير الأنظمة المدمجة"، عادةً ما تتبادر إلى الذهن ارتباطات بلغة C، والمعادن العارية، وإدراجات لغة التجميع، وجلسات التصحيح التي لا نهاية لها باستخدام راسم الذبذبات. والآن تخيل أنك تكتب برنامجًا ثابتًا لمستشعر درجة حرارة ذكي باستخدام TypeScript. يبدو وكأنه خيال علمي؟ لكنه ليس كذلك.
يشهد عالم الأنظمة المدمجة ثورة هادئة. فقد أصبحت المتحكمات الدقيقة الحديثة مزودة بذاكرة كافية وسرعة ساعة كافية لتنفيذ لغات البرمجة النصية. ويصبح TypeScript، بفضل كتابته الثابتة ونظامه البيئي الغني، مرشحًا مثاليًا لمشاريع الأنظمة المدمجة حيث تكون الموثوقية وقابلية قراءة الكود أمرًا مهمًا.
في هذه المقالة، سنشرح كيف يتغلغل TypeScript في عالم الأنظمة المدمجة، وما هي الأدوات اللازمة لذلك، وسنكتب كودًا حقيقيًا للتحكم في مصباح LED عبر GPIO. هيا بنا!
لماذا TypeScript وليس C أو Python؟
الاختيار الكلاسيكي للأنظمة المدمجة هو C. إنه سريع، يمكن التنبؤ به، ويستهلك ذاكرة قليلة. لكن له جانب مظلم: إدارة الذاكرة يدويًا، وغياب الكتابة الطبيعية على مستوى المترجم، و"الجحيم" مع وحدات الماكرو. Python (MicroPython) أبسط، لكنه بطيء وديناميكي - ستكتشف الخلل فقط في وقت التشغيل عندما يتجمد الجهاز في مكان ما على الرف.
TypeScript يقدم حلاً وسطًا:
- كتابة صارمة — يكتشف المترجم الأخطاء في مرحلة البناء. لا مزيد من
stringالعشوائية بدلاً منnumberفي سجلات المتحكم الدقيق. - بناء جملة حديث — async/await، الأدوية العامة، الواجهات. يصبح الكود موثقًا ذاتيًا.
- النظام البيئي npm — آلاف المكتبات التي يمكن تكييفها مع الأجهزة.
- أمان الأنواع — أنت تعرف بالضبط ما تمرره إلى الدالة
setPin(17, HIGH)، وليسsetPin("17", true).
بالطبع، لن يحل TypeScript محل C للأنظمة عالية التحميل في الوقت الفعلي. لكن بالنسبة لأجهزة استشعار إنترنت الأشياء، والمصابيح الذكية، ومحطات الأرصاد الجوية، والنماذج الأولية - فهو الخيار المثالي.
الأدوات: ما تحتاجه للبدء
لكتابة TypeScript للأجهزة، نحتاج إلى بيئة تشغيل يمكنها تفسير JavaScript على المتحكم الدقيق. الخيارات الأكثر شيوعًا:
- JerryScript — محرك JS خفيف الوزن من سامسونج. يشغل حوالي 1 ميجابايت من Flash.
- Espruino — برنامج ثابت متخصص لـ STM32 و ESP32. يدعم TypeScript من خلال الترجمة.
- Moddable SDK — إطار عمل قوي لإنترنت الأشياء مع دعم TypeScript "مباشر من الصندوق".
سنستخدم Espruino على لوحة ESP32 (أو Raspberry Pi Pico مع برنامج Espruino الثابت). هذه هي أسهل طريقة لتجربة TypeScript في الأنظمة المدمجة بدون مكواة لحام وأوراق بيانات.
التثبيت والإعداد
- قم بتنزيل البرنامج الثابت لـ Espruino للوحة الخاصة بك من الموقع الرسمي.
- قم ببرمجة اللوحة عبر USB (استخدم أداة
esptoolلـ ESP32). - قم بتثبيت Node.js و npm إذا لم يكونا مثبتين بالفعل.
- قم بتثبيت
espruino-cliبشكل عام:npm install -g espruino-cli. - أنشئ مشروعًا:
mkdir my-embedded-ts && cd my-embedded-ts && npm init -y. - قم بتثبيت TypeScript:
npm install --save-dev typescript @types/espruino.
الآن لديك مشروع TypeScript يعرف أنواع Espruino! أنشئ ملف tsconfig.json:
{ "compilerOptions": { "target": "ES2015", "module": "commonjs", "strict": true, "outDir": "./dist", "rootDir": "./src", "types": ["espruino"] }, "include": ["src/**/*"]}