roman romanovsky, sergey rak - "javascript в iot "

Post on 21-Jan-2018

162 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

РоманРомановский

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 eLuaRun on MCUFull support ES5.1,Partially ES6/ES7

Run on MCUFull support ES5.1,Partially ES6

Run on MCUFull support ES5.1,+IoT.js = Max Node.js compatibility

Run on MCULua 5.1,Async ModelBest C/C++ API

Топ проектов, совмещающих скриптовые языки и прикладное ПО

14

Duktape Espruino JerryScript eLuaRun on MCUFull support ES5.1,Partially ES6/ES7

Run on MCUFull support ES5.1,Partially ES6

Run on MCUFull support ES5.1,+IoT.js = Max Node.js compatibility

Run on MCULua 5.1,Async ModelBest 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 screen2. Pip - sudo apt-get install python-pip3. Esptool - pip install esptool4. 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 115200var 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/webstore/detail/espruino-web-ide/bleoifhkdalbjfbobjackfdifdneehpo

31

32

33

34

35

36

37

Пример кода

38

var wifi = require("Wifi");var http = require("http");var host = "some-host.com";var path = "/";

var options = { host: host, port: 80, path: path, method: "POST", headers: { "Content-Type": "application/json" }};

(function loop () { var isLightOn = analogRead(D0) > 0.2; var data = JSON.stringify({ "ip": info.ip, "deviceId": info.mac, "status": isLightOn }); var request = http.request(options, function (response) { console.log("posted:", data); console.log("response:", response); }).end(data);

setTimeout(loop, 3000);}());

39

Давайте пошкодим

40

Пример подключения“произвольного” датчика

41

Live Coding

1. Подключим библиотеку «IRReceiver»и научимся принимать коды нажатий кнопок пульта

2. Подключим библиотеку «RGBLed»и помигаем светодиодом в ответ на определенные нажатия кнопок пульта

Демонстрация Restroom Revolution

42

43

44

Фоторезистор RGB светодиод

45

Батарейка «Крона»

Импульсный преобразователь

напряжения

46

Итоговая стоимость устройства

47

var wifi = require("Wifi");var http = require("http");var host = "some-host.com";var path = "/";

var options = { host: host, port: 80, path: path, method: "POST", headers: { "Content-Type": "application/json" }};

(function loop () { var isLightOn = analogRead(D0) > 0.2; var data = JSON.stringify({ "ip": info.ip, "deviceId": info.mac, "status": isLightOn }); var request = http.request(options, function (response) { console.log("posted:", data); console.log("response:", response); }).end(data);

setTimeout(loop, 3000);}());

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/restroom-revolution

Версия кода с презентации находится на ветке united-dev-conf-2017

Ссылка на эту презентацию:http://goo.gl/jDN7Id

Сергей Ракsergrak@klika-tech.com

top related