Първи поглед: Javascript микроконтролери за уеб разработчици - 💡 Fix My Ideas

Първи поглед: Javascript микроконтролери за уеб разработчици

Първи поглед: Javascript микроконтролери за уеб разработчици


Автор: Ethan Holmes, 2019

Дъската на Tessel (отляво) и дъската Espruino (вдясно)

Espruino е изпратил до своите поддръжници на Kickstarter, а Tessel е на графика за доставка до май, а ние се готвим да придобием предпроизводствения хардуер на Tessel и скоро можете да очаквате задълбочен преглед.

Въпреки експлозията на нови платки, които идват на пазара - и поради общността, която се е развила около тях - без колебание препоръчам Arduino, ако имате нужда от 8-битова платка за микроконтролери или Raspberry Pi, ако имате нужда от едноплатков компютър, работещ под Linux.

Това са тези общности, които правят Arduino и Raspberry Pi толкова полезни, всеки проблем, който може да срещнете, е вероятно някой друг да се е натъкнал на него и решението, или поне ключът към решението, вече ви очаква и е само едно търсене от Google.

Логично след това, единственият начин за успех на един нов съвет е или да поеме една от тези съществуващи общности, да създаде своя собствена общност, или да създаде общност, която вече съществува, но не е свързана с съществуващ микроконтролер.

В момента има две нови планове за микроконтролери, които търсят финансиране - едно на Kickstarter, а другото на новата платформа за краудфандинг на Dragon Innovation - които са малко по-различни. Тези дъски не са просто още един клонинг на Arduino, или още един възможен - Убиецът на Raspberry Pi. Тези две платки, Tessel от technical.io и Espruino от Pur3, възнамеряват да вземат най-малко пътуващия път и да си сътрудничат със съществуваща общност, която традиционно не е свързана с общността на създателите.

Насочени директно към пропастта между Arduino в долния край и Raspberry Pi на най-високата точка, и двете платки използват Javascript като свой език за програмиране и и двата го използват възможно най-близо до метала. Това е хардуерно хакване за уеб програмисти и ще бъде интересно да се види дали тяхното пристигане ще доведе Javascript общността с тях, когато пристигнат.

Това ще е краят на месеца, предшестващ усилията за краудфандинг за тези съвети, макар че и двете вече са удвоили своите цели за финансиране, а началото на следващата година, преди производителят на улицата да види крайния производствен хардуер. Но едно от предимствата на работата на Make е, че понякога се опитвате да използвате хардуер пред други хора, а аз имам прототипи за производство на плочите Tessel и Espruino, които седят на бюрото ми сега - един от дванадесет в случая на на Tessel, и един от само две в случая с Espruino.

The Tessel

Tessel от technical.io беше един от осемте продукта, които стартираха новата платформа за трансфериране на Dragon Innovation миналата седмица и първите, които постигнаха целта си за финансиране. Tessel е насочен към високия край на пропастта между Arduino и Raspberry Pi, директно в приложения, свързани с интернет, насочени към физически устройства, и има вграден WiFi. Това означава не само, че платката е винаги онлайн, позволявайки тя да се използва както като сървър, така и като клиент, но имате възможност за отдалечено разгръщане на кода върху дъската през мрежата.

Както и стандартната GPIO банка в единия край, която включва SPI, I2C и UART възможности, както и 6 въвеждащи / изходни игли за общо предназначение, 6 аналогово-цифрови конвертора, 5V пин, 3,3-пинов и заземен щифт. платката поддържа модулна система, което улеснява добавянето на възможности към проекта без запояване. Има два вида модули, като и двата имат същия конектор. Модули клас А - реле, темп / влажност, серво, акселерометър и микро-SD карта - и малко по-скъпи модули от клас Б - RFID, Bluetooth LE, GPS и аудио платки.

Моят pre-production Tessel дойде със Servo модул, който изисква второ захранване, предназначено за сервомеханизмите.

Дъската Tessel със сервомодул, управляващ стандартен серво.

Кодът за задвижване на серво модула е доста прост,

var servo = require ('servo-pca9685'); // Инициализиране на серво. console.log ( "initalizing"); // Порт A, серво 1, калибрирайте min / max PWM на 4-15 var cs61 = servo.port ('A'). Connect (1, 4, 15); cs61.on ('connected', function () {var pos = 0; setInterval (функция () {console.log ("Deg ротация:", pos); cs61.move (pos); // увеличение от 45 градуса + = 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 - вече е отворена за работа с хардуер. Това е голяма победа за Тесел, зад тях има незабавна общност. Това е много важно.

Говори с Тим Райън

Говорих с Тим Райън, един от съоснователите на Technical Machine,

Каква е целта на проекта Tessel?

Нашата цел е да направим хардуерното развитие естествено предложение за разработчиците на софтуер. Огромна част е да се даде възможност на уеб и мобилните разработчици да използват съществуващите си умения за контрол на физическия свят.

Каква е основната архитектура на борда на Tessel?

Вътрешно ние разработихме интерпретатор на JavaScript, изграден около средата на изпълнение Lua, който е съвместим с API на Node.js. Няма родния C ++ модул, но лесно управлявате потока и HTTP модулите. Нашата операционна система всъщност е примка за събития на голия метал. Контролът на високоскоростния сигнал и реакцията се контролират асинхронно. Имаме експерименти, които контролират високоскоростните LED матрици за опресняване и SPI периферни устройства, което показва, че това е достъпна алтернатива на кода в реално време, като същевременно е много по-интуитивен за писане.

Например, по-голямата част от нашите периферни (най-вече SPI и I2C) кодови часовници са с около 50 или 100 реда коментарен код. Времето ни за изпълнение дори ни дава възможност да правим симулация направо на командния ред, преди да приложите кода, като дадете на уеб разработчиците друг познат инструмент, автоматизирано тестване. За да започнете с който и да е модул, който произвеждаме е толкова просто, колкото "npm install accelerometer-mma8542q" и го изисквате с код. Нашият опит за разработване и внедряване е проектиран да бъде само няколко крачки от полето за работа с пример - включете в библиотеката, изтеглете инструмента за командния ред, разположите.

Защо Javascript?

За Tessel, ние сме изцяло фокусирани върху това да направим същите инструменти за уеб / мобилни разработки върху вградени дъски. Между пакетния мениджър на Node и приложните програмни интерфейси (API) и избора ви на IDE, идеята трябва да бъде, че същите тези умения и работен поток на натискане на сървър са тези, които използвате тук. В процеса на създаване на нови приложни програмни интерфейси участва много сътрудничество "JavaScript подобни"така че се надяваме, че следващото поколение дъски на Javascript могат да използват едни и същи SPI библиотеки, например.

Вие пуснахте своя собствен Javascript стек, защо?

Tessel определено губи от скоростта си, като не използва съвременен JavaScript механизъм. Но в сравнение с Linux + V8, който се нуждае от стартираща памет от 8-10MB, паметта ни, благодарение на Lua, е минимална, по-малка от 70kb.

Ние не възнамеряваме да се конкурираме с микропроцесорите като Raspberry Pi, ние се интересуваме повече от развитието, което намалява - а не нагоре - до по-малко мощни табла и SoC. В бъдеще има място за $ 3 Cortex-M3 микропроцесор, който работи с JavaScript, защото това е естествено решение за свързан с Интернет или IO-тежък код, и това е историята, която искаме да получим пред разработчиците, че ви позволява много повече от алтернатива на C.

Какви са бъдещите ви планове?

Нашата пътна карта трябва да започне с Tessel - a "Мощни" устройство - и да работят към по-малко мощни устройства. Имаме потенциала да насочваме дъски като Espruino с много по-бързо време на изпълнение и инвестираме много усилия, за да се уверим, че времето на изпълнение на Tessel е опция закойто и да еинтернет устройство. И дългосрочно, "Tessel" вероятно няма да остане платформа само за JavaScript, но е лесна платформа за прокарване на фърмуер от други езици - C / C ++, Lua, Rust, Go и логично дори Python и Ruby. Нашата стойност е в лесен работен процес и библиотеки, а не само в самия JavaScript.

Затова залагаме на разработени от JavaScript дъски за разработки, които са само първата стъпка. След една година тенденцията ще бъде насочена към достъпна вградена електроника, която ви позволява да програмирате на какъвто език искате - доколкото вашият отговор не е „С“! Tessel ще остане на върха на тази тенденция.

Еспруино

Пуснат няколко дни преди Tessel на Kickstarter, точно в края на август, бордът Espruino от Pur3 е значително по-евтин от Tessel. На £ 19 - това е около 30 долара - това всъщност е по-малко от половината от цената на борда на Tessel. Разбира се, спецификацията на Espruino е много по-ниска. Въпреки че и двамата имат ARM Cortex-M3 процесори, Espruino има само 48KB SRAM в сравнение с 32MB на Tessel на SRAM. Докато Tessel е насочен към най-високия край на пропастта между Arduino и Raspberry Pi, Espruino е насочен към долния край, но цената му съответства.

Espruino е интересно отклонение от повечето съвременни дъски. За разлика от Tessel - или Arduino - не качвате кода си на дъската. Вместо това имате интерактивен преводач. Включете платката във вашия Mac или PC и се свържете с платката през USB серийния порт и ще получите интерактивна конзола.

Позволява ви да преживявате много бързо и да се наслаждавате на нещата, които правите. - Гордън Уилямс

Можете да използвате интерактивната конзола точно по начина, по който очаквате - и по начин, който наистина ще бъде познат на онези от нас, които са израснали с компютри с BASIC - просто напишете кода си в реда.

Тъй като Espruino е изцяло базиран на събития, това означава, че можете да пишете функции, които можете да модифицирате и добавяте, докато те се изпълняват. С Espruino не качвате код на дъската, а вие взаимодействате с него.

Например можем да настроим проста функция, която ще следи за натискане на вградения бутон,

setWatch (функция () {if (! digitalRead (BTN)) връща; var led = 10; var flasher = setInterval (функция () {led--; digitalWrite (LED1, led & 1); ако (led <= 0) clearInterval ( мигач);}, 200);}, BTN, true);

Веднъж настроена, тази функция ще следи за събитие за натискане на бутон във фонов режим и ще бъдете върнати в интерактивна подкана. Точно както очаквахте.

Платката Espruino мига светодиод след натискане на бутон

По същия начин Apple] [+, и в по-малка степен TRS-80, съхранява познати забележителности в американските училища, в Обединеното кралство през 80-те и 90-те училища имаха BBC Micro. Той остави трайно наследство и въпреки че не е изрично рекламиран за образование, мисля, че този съвет е задължителен за училищата и да преподава хората.

Espruino, може би дори повече, отколкото Raspberry Pi - друг проект, базиран в Обединеното кралство, насочен към училищата и обучение на децата да програмират - е достоен приемник на BBC Micro.

Говори с Гордън Уилямс

Говорих с Гордън Уилямс, създателя на „Еспруино“, за борда и неговата кампания „Кикстартер“,

В Espurino има интерактивен преводач, защо правите нещата по този начин?

Наистина харесвам C, но когато пишете компилиран код за микроконтролери, има истинско прекъсване на връзката между вас и микроконтролера - той работи в черна кутия и единственият начин да взаимодействате със софтуера, тъй като той работи, е добавянето на още софтуер (или с помощта на дебъгер).Като пример направих кутия, за да контролирам променливото време на двигателя на двигателя на колата, но 90% от усилията, включени в това, всъщност бяха добавяне на код, така че да мога да проверя какво прави и да коригирам стойностите, докато двигателят работи , Ако имате интерактивен преводач, това е направено за вас.

Така че исках език, който може да бъде интерпретиран, инспектиран и модифициран в движение, но това изглеждаше много като С - и аз исках да използвам нещо, което вече съществуваше, а не само да създавам моите собствени, като момчетата от Electric Imp с Squirrel , Бях въвела малка версия на JavaScript, наречена TinyJS, за предишен проект, така че имаше много смисъл да се основава Espruino на това. Решението да се използва модел, базиран на събития, всъщност дойде поради JavaScript - и изглеждаше, че е много подходящ.

Защо моделът, базиран на събития, е по-добър от този на цикъла, който Arduino и други контролери използват?

Използването на модел, базиран на събития, има няколко големи предимства. Означава, че различните битове на код, които изпълняват различни задачи, могат да се изпълняват заедно, без да се намесват, и можете да редактирате кода между обработката на събитията, вместо да излизате от основния цикъл. Тя е по-интуитивна, защото имитира начина, по който хората естествено описват задачите в реалния свят, например"Когато е тъмно, включете светлината" отколкото, - Тъмно ли е? Тъмна ли е? Тъмна ли е? Да. Включете светлината! " и това е подходящо за графичната среда за програмиране, защото е по-модулна. Накрая намалява драстично консумацията на енергия, така че е страхотно за живота на батерията.

Вие пуснахте своя собствен Javascript стек, защо?

Писането на моя собствен преводач беше по-скоро необходимост, отколкото избор. Ако погледнете изискванията за паметта на главните преводачи като V8 - използвани от node.js - и SpiderMonkey, те са доста големи - в областта на мегабайта. Те също имат куки в основните операционни системи, така че се опитват да ги пуснат на малки устройства като микроконтролер - с около 1000 пъти по-малко RAM - без операционна система е почти невъзможно.

Espruino използва ARC, а не събиране на боклука, просто се вписва добре в начина, по който интерпретаторът работи, и прави почти всяко разпределение / освобождаване на паметта много бързо - особено след като всички блокове са с еднакъв размер.

Това води до интересен момент за тези ARM микроконтролери. Espruino работи на 72Mhz с 48KB RAM, така че на много груба оценка може да прочете всеки един байт от паметта си за около 1ms. Сравнете това с Raspberry Pi с 800Mhz и 512MB RAM с време за четене по-близо 1 секунда - това означава, че трябва да мислите за това как се справяте с данните съвсем различно, и това е една от причините, че не мога лесно да използвам съществуващ интерпретатор ,

Много от проектите на Kickstarter имат проблеми с мащабирането. Ако вашият проект е победен успех, готови ли сте?

Да. Имам готово за производство, което мога да изпратя до Seeed Studio, готово е да отиде. През последните два месеца работихме с Seeed, за да подобрим дизайна и снабдяването с компоненти от библиотеката на Open части на Seeed, за да гарантираме, че не правим компромис с качеството. Това ни даде възможност да изготвим проекта за сегашната версия на борда на Espruino. Въпреки това, ако проектът получи значително по-голямо финансиране, отколкото се очакваше, би било чудесно да се накара някой да помогне с уроците и документацията на Kickstarter. Мисля, че става дума само за това, да започнете с местата на хората, като проекта за електронни зарове на страницата ни Kickstarter.

Какви са бъдещите ви планове?

Ако достигнем 50 000 паунда на настоящата ни кампания, ще добавим поддръжка за WiFi модула CC3000 в борда на Espruino. Няма да произвеждаме WiFi щит - трябва да се съсредоточим върху самото Espruino - но ще добавим поддръжка за CC3000 в софтуера на Espruino, преди да бъде изпратен до вас. Това означава, че ще можете да си купите предварително създаден модул, да го включите и да имате незабавен достъп до интернет. Но също така се изкушавам да построя „щит-щит“, който да се промъкне под борда на Espruino, за да му придаде Arduino-съвместим щифт. В бъдеще се интересувам и от изграждането на много по-малка версия на борда на Espruino.

Две дъски правят ли тенденция?

Javascript общността вече има интерес към хардуера - трябва само да погледнете nodecopter, за да видите това - и пристигането на не една, а две дъски, които са както Javascript роден, така и базиран на събития, ще бъдат посрещнати с голям интерес. Щастливият факт, че съветите наистина не се конкурират помежду си, Tessel, насочен към високия клас и Espruino на долния край, вероятно означава, че и двете ще намерят ниша - и тази ниша ще бъде доста обширна.

Две табла може и да не променят тенденцията, но няма да се учудвам, когато видя, че тези две платки вдъхновяват новото поколение управлявани от събития микроконтролери, така че тези две дъски просто можеха.

 



Може Да Се Интересувате

Red Bull е взет от Alpha One Labs

Red Bull е взет от Alpha One Labs


Събиране на пари за екипа ви по роботика

Събиране на пари за екипа ви по роботика


Рейчъл "Висока текстура ръчна бродерия на Луната" печели в Etsy Contest

Рейчъл "Висока текстура ръчна бродерия на Луната" печели в Etsy Contest


Направете: Live 3/23/11 - Кинетични измислици (видеоклип)

Направете: Live 3/23/11 - Кинетични измислици (видеоклип)