39
TESSEL JavaScript на реальных устройствах Елифантьев Олег, Тензор Yaroslavl Frontend Meetup, 10.12.2014

Tessel. JavaScript на реальных устройствах

Embed Size (px)

Citation preview

Page 1: Tessel. JavaScript на реальных устройствах

TESSELJavaScript на реальных устройствах

Елифантьев Олег, Тензор Yaroslavl Frontend Meetup, 10.12.2014

Page 2: Tessel. JavaScript на реальных устройствах

TESSEL — что это?

• Tessel — микроконтроллер, способный выполнять JavaScript

• Node-совместимый

• Поставляется со встроенным WiFi-модулем

• Питается от USB (достаточно 3.3V, 500 mA)

2

Page 3: Tessel. JavaScript на реальных устройствах

Frontend? Микроконтроллер?• Frontend? JavaScript!

• До 2009 года — JavaScript широко распространен лишь в браузере.

• 2009 год — появляется Node.JS, можно писать на JavaScript на сервере!

• 2013 год — появляется Tessel. На JavaScript можно программировать железяки!

3

Page 4: Tessel. JavaScript на реальных устройствах

Frontend! Микроконтроллер!

• В 2014 можно, используя один и тот же набор привычных инструментов (язык, IDE, etc…) писать п/о:

‣ для клиента

‣ для сервера

‣ для железа

4

Page 5: Tessel. JavaScript на реальных устройствах

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

Page 6: Tessel. JavaScript на реальных устройствах

TESSEL

6

Page 7: Tessel. JavaScript на реальных устройствах

TESSEL — что это?• Процессор ARM Cortex M3

• 32Мб RAM, 32Мб Flash

• CC3000 WiFi-чип

• 4 «стандартных» разъема для модулей

‣ GND, Power, I2P, SPI, GPIO/UART

• 20-пин GPIO-коннектор

‣ + 10-битный АЦП/ЦАП

7

Page 8: Tessel. JavaScript на реальных устройствах

Модули

8

Page 9: Tessel. JavaScript на реальных устройствах

Акселерометр

• 3 оси

• 3 шкалы (2g, 4g, 8g)

9

Page 10: Tessel. JavaScript на реальных устройствах

Ambient

• Может замерять условный уровень света и звука

• Подойдет для устройств, активируемых звуком — например хлопком в ладоши (совместить с реле или IR-передатчиком)

10

Page 11: Tessel. JavaScript на реальных устройствах

Audio• Декодирует MP3, AAC, WMA,

MIDI, FLAC, OGG

• Линейный вход, линейных выход или наушники

• Можно записывать аудиопоток через встроенный микрофон

11

Page 12: Tessel. JavaScript на реальных устройствах

Audio

• К сожалению, сейчас НЕ живет вместе с SD, Ambient, IR

• Низкая производительность

• Проблема решается, ведутся работы.

12

Page 13: Tessel. JavaScript на реальных устройствах

BLE - Bluetooth Low Energy

• Master или Slave

• Совместим с iOS 5+, Android 4.3+

13

Page 14: Tessel. JavaScript на реальных устройствах

Камера

• 640x480, 320x240, 160x120

• Только фото, не поток!

14

Page 15: Tessel. JavaScript на реальных устройствах

Климат-сенсор

• Влажность (0-80% относительной влажности)

• Температура (0-70 °С ±1°)

15

Page 16: Tessel. JavaScript на реальных устройствах

GPRS

• 2G-интернет

• Аудио: линейный вход/выход

16

Page 17: Tessel. JavaScript на реальных устройствах

GPRS• Управляется через AT-команды

• Подключиться в интернет - тоже (ATD*#99#)

• «Поднять» IP-коннекцию и передать по ней данные — аналогично

‣ Умеет держать одновременно 8 соединений.

‣ Умеет поднимать сервер

17

Page 18: Tessel. JavaScript на реальных устройствах

GPS

• Точность: до 1.8м

• Частота обновления: до 10Hz

18

Page 19: Tessel. JavaScript на реальных устройствах

IR

• Инфракрасный приемник/передатчик

• Дальность: до 30 см.

19

Page 20: Tessel. JavaScript на реальных устройствах

MicroSD

• Поставляется с картой памяти на 1Gb

20

Page 21: Tessel. JavaScript на реальных устройствах

nRF24

• Беспроводная связь (не WiFi) с устройствами аналогичного стандарта

• 2.4GHz, 64 канала

• Скорость обмена до 2Mbit

21

Page 22: Tessel. JavaScript на реальных устройствах

Реле

• 240V, 5A

22

Page 23: Tessel. JavaScript на реальных устройствах

RFID

• 13.56 MHz

• Поставляется с 1 RFID карточкой

23

Page 24: Tessel. JavaScript на реальных устройствах

Серво

• Можно подключить до 16 сервомоторов

• 1 поставляется в комплекте

24

Page 25: Tessel. JavaScript на реальных устройствах

So what?

25

Page 26: Tessel. JavaScript на реальных устройствах

Соединяем!• GPRS + Audio = Автоответчик

26

Page 27: Tessel. JavaScript на реальных устройствах

Соединяем!• GPRS + Audio = Автоответчик

• Акселерометр + IR = Пульт управления

27

Page 28: Tessel. JavaScript на реальных устройствах

Соединяем!• GPRS + Audio = Автоответчик

• Акселерометр + IR = Пульт управления

• WiFi + Реле + ??? = Система мониторинга сайта

28

Page 29: Tessel. JavaScript на реальных устройствах

Соединяем!• GPRS + Audio = Автоответчик

• Акселерометр + IR = Пульт управления

• WiFi + Реле + ??? = Система мониторинга сайта

• GPRS + Реле + ??? = Удаленная активация устройства по SMS

29

Page 30: Tessel. JavaScript на реальных устройствах

Соединяем!• GPRS + Audio = Автоответчик

• Акселерометр + IR = Пульт управления

• WiFi + Реле + ??? = Система мониторинга сайта

• GPRS + Реле + ??? = Удаленная активация устройства по SMS

• GPRS + GPS = Трекер. + Реле = Автосигнализация.

30

Page 31: Tessel. JavaScript на реальных устройствах

Соединяем!• GPRS + Audio = Автоответчик

• Акселерометр + IR = Пульт управления

• WiFi + Реле + ??? = Система мониторинга сайта

• GPRS + Реле + ??? = Удаленная активация устройства по SMS

• GPRS + GPS = Трекер. + Реле = Автосигнализация.

• Серво + ??? = Роботы

31

Page 32: Tessel. JavaScript на реальных устройствах

$$$

32

Page 33: Tessel. JavaScript на реальных устройствах

Стоимость• Tessel — 75$

• Class A module (Акселерометр, Ambient, Климат-сенсор) — 25$

• Class B module (GPS, RFID, Audio) — 50$

• GPRS — 60$

• Доставляют в РФ (EMS?), ~50$

33

Page 34: Tessel. JavaScript на реальных устройствах

JavaScript?

34

Page 35: Tessel. JavaScript на реальных устройствах

Как программировать?

• Модули в NPM

• Консольная утилита для взаимодействия с контроллером

‣ Настроить WiFi, залить код, обновить прошивку

• Для каждого модуля — свой NPM-модуль

35

Page 36: Tessel. JavaScript на реальных устройствах

Как работает JavaScript?• Внутри — Lua VM (5.1)

• При загрузке JavaScript-кода он «компилируется» в Lua

• Основные JS-объекты реализованы на Lua

• Для доступа к железу — код на C «проброшенный» в Lua VM.

• Совместимость с Node — Lua (require, Buffer, etc…) + JavaScript.

• Недавно прикрутили LuaJIT!

36

Page 37: Tessel. JavaScript на реальных устройствах

Demo Time!

37

Page 38: Tessel. JavaScript на реальных устройствах

Demo• Соединим Climate, Ambient, GPRS

• Получим извещение о «погоде» по SMS

‣ Температура, влажность

‣ «Освещенность», «шумность»

• https://github.com/Olegas/tessel-climate-over-sms

38

Page 39: Tessel. JavaScript на реальных устройствах