Upload
oelifantiev
View
397
Download
4
Embed Size (px)
Citation preview
TESSELJavaScript на реальных устройствах
Елифантьев Олег, Тензор Yaroslavl Frontend Meetup, 10.12.2014
TESSEL — что это?
• Tessel — микроконтроллер, способный выполнять JavaScript
• Node-совместимый
• Поставляется со встроенным WiFi-модулем
• Питается от USB (достаточно 3.3V, 500 mA)
2
Frontend? Микроконтроллер?• Frontend? JavaScript!
• До 2009 года — JavaScript широко распространен лишь в браузере.
• 2009 год — появляется Node.JS, можно писать на JavaScript на сервере!
• 2013 год — появляется Tessel. На JavaScript можно программировать железяки!
3
Frontend! Микроконтроллер!
• В 2014 можно, используя один и тот же набор привычных инструментов (язык, IDE, etc…) писать п/о:
‣ для клиента
‣ для сервера
‣ для железа
4
By The Way…• Nginx + JavaScript = ♡
‣ http://www.infoworld.com/article/2838008/javascript/nginx-has-big-plans-for-javascript.html
• PostgreSQL + JavaScript = ♡
‣ https://code.google.com/p/plv8js/wiki/PLV8
5
TESSEL
6
TESSEL — что это?• Процессор ARM Cortex M3
• 32Мб RAM, 32Мб Flash
• CC3000 WiFi-чип
• 4 «стандартных» разъема для модулей
‣ GND, Power, I2P, SPI, GPIO/UART
• 20-пин GPIO-коннектор
‣ + 10-битный АЦП/ЦАП
7
Модули
8
Акселерометр
• 3 оси
• 3 шкалы (2g, 4g, 8g)
9
Ambient
• Может замерять условный уровень света и звука
• Подойдет для устройств, активируемых звуком — например хлопком в ладоши (совместить с реле или IR-передатчиком)
10
Audio• Декодирует MP3, AAC, WMA,
MIDI, FLAC, OGG
• Линейный вход, линейных выход или наушники
• Можно записывать аудиопоток через встроенный микрофон
11
Audio
• К сожалению, сейчас НЕ живет вместе с SD, Ambient, IR
• Низкая производительность
• Проблема решается, ведутся работы.
12
BLE - Bluetooth Low Energy
• Master или Slave
• Совместим с iOS 5+, Android 4.3+
13
Камера
• 640x480, 320x240, 160x120
• Только фото, не поток!
14
Климат-сенсор
• Влажность (0-80% относительной влажности)
• Температура (0-70 °С ±1°)
15
GPRS
• 2G-интернет
• Аудио: линейный вход/выход
16
GPRS• Управляется через AT-команды
• Подключиться в интернет - тоже (ATD*#99#)
• «Поднять» IP-коннекцию и передать по ней данные — аналогично
‣ Умеет держать одновременно 8 соединений.
‣ Умеет поднимать сервер
17
GPS
• Точность: до 1.8м
• Частота обновления: до 10Hz
18
IR
• Инфракрасный приемник/передатчик
• Дальность: до 30 см.
19
MicroSD
• Поставляется с картой памяти на 1Gb
20
nRF24
• Беспроводная связь (не WiFi) с устройствами аналогичного стандарта
• 2.4GHz, 64 канала
• Скорость обмена до 2Mbit
21
Реле
• 240V, 5A
22
RFID
• 13.56 MHz
• Поставляется с 1 RFID карточкой
23
Серво
• Можно подключить до 16 сервомоторов
• 1 поставляется в комплекте
24
So what?
25
Соединяем!• GPRS + Audio = Автоответчик
26
Соединяем!• GPRS + Audio = Автоответчик
• Акселерометр + IR = Пульт управления
27
Соединяем!• GPRS + Audio = Автоответчик
• Акселерометр + IR = Пульт управления
• WiFi + Реле + ??? = Система мониторинга сайта
28
Соединяем!• GPRS + Audio = Автоответчик
• Акселерометр + IR = Пульт управления
• WiFi + Реле + ??? = Система мониторинга сайта
• GPRS + Реле + ??? = Удаленная активация устройства по SMS
29
Соединяем!• GPRS + Audio = Автоответчик
• Акселерометр + IR = Пульт управления
• WiFi + Реле + ??? = Система мониторинга сайта
• GPRS + Реле + ??? = Удаленная активация устройства по SMS
• GPRS + GPS = Трекер. + Реле = Автосигнализация.
30
Соединяем!• GPRS + Audio = Автоответчик
• Акселерометр + IR = Пульт управления
• WiFi + Реле + ??? = Система мониторинга сайта
• GPRS + Реле + ??? = Удаленная активация устройства по SMS
• GPRS + GPS = Трекер. + Реле = Автосигнализация.
• Серво + ??? = Роботы
31
$$$
32
Стоимость• Tessel — 75$
• Class A module (Акселерометр, Ambient, Климат-сенсор) — 25$
• Class B module (GPS, RFID, Audio) — 50$
• GPRS — 60$
• Доставляют в РФ (EMS?), ~50$
33
JavaScript?
34
Как программировать?
• Модули в NPM
• Консольная утилита для взаимодействия с контроллером
‣ Настроить WiFi, залить код, обновить прошивку
• Для каждого модуля — свой NPM-модуль
35
Как работает JavaScript?• Внутри — Lua VM (5.1)
• При загрузке JavaScript-кода он «компилируется» в Lua
• Основные JS-объекты реализованы на Lua
• Для доступа к железу — код на C «проброшенный» в Lua VM.
• Совместимость с Node — Lua (require, Buffer, etc…) + JavaScript.
• Недавно прикрутили LuaJIT!
36
Demo Time!
37
Demo• Соединим Climate, Ambient, GPRS
• Получим извещение о «погоде» по SMS
‣ Температура, влажность
‣ «Освещенность», «шумность»
• https://github.com/Olegas/tessel-climate-over-sms
38