KEMBAR78
Roman Romanovsky, Sergey Rak - "JavaScript в IoT " | PDF
Роман
Романовский
1
Сергей
Рак
О чем мы сегодня поговорим
2
● Поделимся своим опытом в области IoT
● Расскажем о своем проекте Restroom Revolution
● Немного покодим
● Расскажем о перспективах JavaScript в IoT
● Ответим на ваши вопросы и разыграем пару маек
С чего все начиналось
3
4
5
6
Как мы представляли себе процесс
прототипирования
1. Взять какие-то железки
2. Скопировать откуда-то примеры кода
3. ???
4. PROFIT!!!
7
8
Ожидание Реальность
Как создать прототип устройства
1. Купить какие-то железки
2. Скопировать откуда-то примеры
3. А еще:
● Настроить среду разработки
● Изучить основы С/С++
● Узнать о работе микроконтроллера
● Узнать, что такое Push-Pull/Analog pin/тактирование шины
● Узнать, что такое прерывания
● Узнать, что за интерфейс SPI/I2C/UART
● Узнать, что дебага нет
● Узнать, что такое инверсия приоритетов
● ...
4. PROFIT!!!
9
Никогда не сдавайся
10
Только JavaScript, только hardcore
11
Проекты совмещающие скриптовые
языки с прикладным ПО
12
Топ проектов, совмещающих
скриптовые языки и прикладное ПО
13
Duktape Espruino JerryScript eLua
Run on MCU
Full support ES5.1,
Partially ES6/ES7
Run on MCU
Full support ES5.1,
Partially ES6
Run on MCU
Full support ES5.1,
+IoT.js = Max
Node.js compatibility
Run on MCU
Lua 5.1,
Async Model
Best C/C++ API
Топ проектов, совмещающих
скриптовые языки и прикладное ПО
14
Duktape Espruino JerryScript eLua
Run on MCU
Full support ES5.1,
Partially ES6/ES7
Run on MCU
Full support ES5.1,
Partially ES6
Run on MCU
Full support ES5.1,
+IoT.js = Max
Node.js compatibility
Run on MCU
Lua 5.1,
Async Model
Best C/C++ API
Espruino
15
Espruino Firmware Espruino Web IDE Espruino devices
Как работает Espruino
16
Как работает Espruino
17
Как работает Espruino
18
Как работает Espruino
19
Как работает Espruino
20
Как работает Espruino
21
Как это было
22
1. Загрузили прошивку
2. Настроили Wi-Fi на устройстве
3. Настроили Web IDE
Как это было
23
1. Загрузили прошивку
2. Настроили Wi-Fi на устройстве
3. Настроили Web IDE
Загрузили прошивку
24
Что нам понадобилось?
1. Screen - sudo apt-get install screen
2. Pip - sudo apt-get install python-pip
3. Esptool - pip install esptool
4. Espruino - http://www.espruino.com/Download
Загрузили прошивку
25
sudo esptool.py --port /dev/ttyUSB0 --baud 115200 
write_flash --flash_freq 80m --flash_mode qio --flash_size 32m 
0x0000 "boot_v1.6.bin" 0x1000 espruino_esp8266_user1.bin 
0x3FC000 esp_init_data_default.bin 0x3FE000 blank.bin
http://www.espruino.com/ESP8266_Flashing
Загрузили прошивку
26
Как это было
27
1. Загрузили прошивку
2. Настроили Wi-Fi на устройстве
3. Настроили Web IDE
Настроили Wi-Fi на устройстве
28
sudo screen /dev/ttyUSB0 115200
var wifi = require("Wifi");
wifi.connect("my-ssid", { password: "my-password" }, function (error) {
console.log(error || "connected!");
});
wifi.getIP();
wifi.save();
Как это было
29
1. Загрузили прошивку
2. Настроили Wi-Fi на устройстве
3. Настроили Web IDE
Настроили Web IDE
30
Espruino
Web IDE
https://chrome.google.com/web
store/detail/espruino-web-ide/bl
eoifhkdalbjfbobjackfdifdneehpo
31
32
33
34
35
36
37
Пример кода
38
39
Давайте пошкодим
40
Пример подключения
“произвольного” датчика
41
Live Coding
1. Подключим библиотеку «IRReceiver»
и научимся принимать коды нажатий кнопок пульта
2. Подключим библиотеку «RGBLed»
и помигаем светодиодом в ответ на определенные нажатия
кнопок пульта
Демонстрация Restroom Revolution
42
43
44
Фоторезистор RGB
светодиод
45
Батарейка
«Крона»
Импульсный
преобразователь
напряжения
46
Итоговая стоимость устройства
47
Witty Cloud
~$5
Импульсный
преобразователь
напряжения
~$2
Батарейка
«Крона»
~$2
Муляж
камеры для
видеонаблюдения
~$8
~$17
48
Проблемы с которыми мы столкнулись
49
Энергопотребление
Потребление (мА)
Tx 802.11g,OFDM 54Mbps,Pout=+15dBm 140
Tx 802.11n, MCS7, Pout=+13dBm 120
Rx 802.11g, 1024 bytes packet length, -70dBm 56
Rx 802.11n, 1024 bytes packet length, -65dBm 56
Modem-Sleep 15
Light-Sleep 0.5
Deep-Sleep 0.01
50
Энергопотребление
Потребление (мА)
Принять пакет данных 140
Отправить пакет данных 56
Поддержание соединения 15
Выключить WiFi и процессор 0.5
Глубокий сон 0.01
51
Энергопотребление
require("ESP8266").deepSleep(5000);
Если хочется повторить
52
Всё начиналось не так...
53
Что выбрать?
Хотим компактное устройство с WiFi
54
Raspberry Pi 3b
(Zero W)
Arduino
+ Wi-Fi Shield
ESP8266
Witty Cloud
Linux + Node.js
Питание
~ 20$
Не все типы подходят,
Большой размер
~ 40$
Малый размер,
Малое потребление,
~ 5$
Поддерживаемые
устройства
проектом
Espruino
55
http://www.espruino.com/Other+Boards
https://www.espruino.com/Order
Поддерживаемые датчики
56
http://www.espruino.com/Sensors
Поддержка
из коробки
Поддерживаемые датчики
57
Любой
SPI/I2C датчик
совместимый
с Arduino или
Raspberry Pi
Безграничные возможности
58
Перспективы
59
Перспективы: JavaScript IoT
60
● Низкий порог входа – большее число доступных программистов
● Overhead производительности за счёт интерпретатора
незначительный для задач управления
● Оперативность и продуктивность – на рынок за выходные :)
● Возможность загружать код динамически по сети - upgrade
прошивки OTA из коробки
● Безопасность – JS в своей песочнице
Перспективы: JavaScript IoT
61
Задавайте любые вопросы :)
62
Роман Романовский
rromanovsky@klika-tech.com
Репозиторий проекта:
https://github.com/rromanovsky/r
estroom-revolution
Версия кода с презентации
находится на ветке
united-dev-conf-2017
Ссылка на эту презентацию:
http://goo.gl/jDN7Id
Сергей Рак
sergrak@klika-tech.com

Roman Romanovsky, Sergey Rak - "JavaScript в IoT "