Espruino:Примеры/Управление устройствами с помощью Puck.js и SMS
Поддержать проект | Содержание | Резерв | Справочник по API | Модули | Примеры | Резерв | Резерв | Резерв | Резерв | Резерв |
Управление устройствами с помощью Puck.js и SMS[1]
В видео ниже рассказывается, как использовать Puck.js и GSM-модем для управления устройствами при помощи текстовых SMS-сообщений.
Control Bluetooth Lights with SMS (Puck.js)
Ниже в разделе «Возврат данных о температуре» есть ещё одно видео о том, как считывать данные с находящихся рядом BLE-устройств и отправлять их обратно в виде текстового SMS-сообщения.
Примечание: Для этого прошивку Puck.js нужно обновить как минимум до версии 1v95 (или до самой свежей версии – той, что включает в себя все новейшие функции, но может быть нестабильна). Вот страница, с которой можно загрузить прошивку.
Нам понадобятся
- Устройство Puck.js (или другая Espruino-плата, если вам не нужен BLE)
- Модуль SIM800 или SIM900. В моей версии используется входное 5-вольтовое напряжение (если у вас не так, вам нужно будет переподключить контакты соответствующим образом)
- 3.3-вольтовый регулятор напряжения (LD1117AV33), если не собираетесь использовать батарею Puck.js
- 5-вольтовый источник напряжения
- Макетная плата и соединительные провода (если планируете собирать проект так же, как показано на видео)
Подсоединение
Подключите устройства друг к другу следующим образом:
LD1117AV33
Контакт | Куда подключить |
---|---|
1 (GND) | К любому контакту GND |
2 (Вывод) | 3V на Puck.js |
3 (Ввод) | Входное 5-вольтовое напряжение |
Puck.js
Контакт | Куда подключить |
---|---|
GND | К любому контакту GND |
3V | 3V на Puck.js |
D28 | RXD на SIM800 |
D29 | TXD на SIM800 |
SIM800
Контакт | Куда подключить |
---|---|
GND | К любому контакту GND |
5V | Входное 5-вольтовое напряжение |
RXD | D28 на Puck.js |
TXD | D29 на Puck.js |
Код
Управление светодиодом Puck.js при помощи SMS
Bluetooth.setConsole(1);
Serial1.setup(115200, { rx: D29, tx : D28 });
var ATSMS = require("ATSMS");
var sms = new ATSMS(Serial1);
sms.init(function(err) {
if (err) throw err;
console.log("Инициализировано!");
sms.list("ALL", function(err,list) {
if (err) throw err;
if (list.length)
console.log(list);
else
console.log("Сообщений нет");
});
// И отправляем сообщение:
//sms.send('+441234567890','Привет мир!', callback)
});
sms.on('message', function(msgIndex) {
console.log("Получили сообщение #",msgIndex);
sms.get(msgIndex, function(err, msg) {
if (err) throw err;
print("Чтение сообщения", msg);
var txt = msg.text.toLowerCase();
if (txt=="on") LED1.set();
if (txt=="off") LED1.reset();
// Удаляем все сообщения, чтобы избежать переполнения:
sms.delete("ALL");
});
});
Управление BLE-лампочкой Awox
Bluetooth.setConsole(1);
Serial1.setup(115200, { rx: D29, tx : D28 });
var ATSMS = require("ATSMS");
var sms = new ATSMS(Serial1);
sms.init(function(err) {
if (err) throw err;
console.log("Инициализировано!");
sms.list("ALL", function(err,list) {
if (err) throw err;
if (list.length)
console.log(list);
else
console.log("Сообщений нет");
});
// И отправляем сообщение:
//sms.send('+441234567890','Привет мир!', callback)
});
sms.on('message', function(msgIndex) {
console.log("Получили сообщение #",msgIndex);
sms.get(msgIndex, function(err, msg) {
if (err) throw err;
print("Чтение сообщения");
var txt = msg.text.toLowerCase();
if (txt=="on") setLight(1);
if (txt=="off") setLight(0);
// Удаляем все сообщения, чтобы не допустить переполнения:
sms.delete("ALL");
});
});
function setLight(isOn) {
var gatt;
NRF.connect("98:7b:f3:61:1c:22").then(function(g) {
// ^^^^^^^^^^^^^^^^^ место для адреса лампочки
gatt = g;
return gatt.getPrimaryService("33160fb9-5b27-4e70-b0f8-ff411e3ae078");
}).then(function(service) {
return service.getCharacteristic("217887f8-0af2-4002-9c05-24c9ecf71600");
}).then(function(characteristic) {
return characteristic.writeValue(isOn ? 1 : 0);
}).then(function() {
gatt.disconnect();
console.log("Готово!");
});
}
Возврат данных о температуре
Using SMS text messages to remotely monitor state (Puck.js)
Вот код Puck.js для отправки данных о температуре:
setInterval(function() {
NRF.setAdvertising({
0x1809 : [Math.round(E.getTemperature())]
});
}, 30000);
А полностью код будет выглядеть вот так:
Bluetooth.setConsole(1);
Serial1.setup(115200, { rx: D29, tx : D28 });
var ATSMS = require("ATSMS");
var sms = new ATSMS(Serial1);
sms.init(function(err) {
if (err) throw err;
console.log("Инициализировано!");
sms.list("ALL", function(err,list) {
if (err) throw err;
if (list.length)
console.log(list);
else
console.log("Сообщений нет");
});
// И для отправки сообщения:
//sms.send('+441234567890','Привет мир!', callback)
});
sms.on('message', function(msgIndex) {
console.log("Получили сообщение #",msgIndex);
sms.get(msgIndex, function(err, msg) {
if (err) throw err;
print("Чтение сообщения", msg);
var txt = msg.text.toLowerCase();
if (txt=="on") LED1.set();
if (txt=="off") LED1.reset();
if (txt=="get") getTemp(msg.oaddr);
// Удаляем все сообщения, чтобы не допустить переполнения:
sms.delete("ALL");
});
});
function getTemp(number) {
console.log("Считываем температуру");
NRF.findDevices(function(devs) {
devs.forEach(function(dev) {
if (dev.name=="Puck.js 5736") { // здесь нужно будет задать
// название вашего Puck.js
console.log("Прочли температуру");
var message = "Температура: "+dev.serviceData["1809"][0];
sms.send(number,message, function() {
print("Текст отправлен!");
});
}
});
});
}
Где купить
Ссылки, по которым можно купить лампочки Awox, ищите в этом руководстве.
Ссылки на то, где купить SIM900, ищите в соответствующей статье.
Устройства Puck.js можно заказать здесь.
См.также
Ссылки на полезные ресурсы
- AliExpress — глобальная виртуальная (в Интернете) торговая площадка, предоставляющая возможность покупать товары производителей из КНР;
- computeruniverse.net - Интернет-магазин компьютеров(Промо код 5 Евро на первую покупку:FWWC3ZKQ);
- DigitalOcean - американский провайдер облачных инфраструктур, с главным офисом в Нью-Йорке и с центрами обработки данных по всему миру;
- Викиум - Онлайн-тренажер для мозга
- Like Центр - Центр поддержки и развития предпринимательства.
- Gamersbay - лучший магазин по бустингу для World of Warcraft.
- Ноотропы OmniMind N°1 - Усиливает мозговую активность. Повышает мотивацию. Улучшает память.
- Санкт-Петербургская школа телевидения - это федеральная сеть образовательных центров, которая имеет филиалы в 37 городах России.
- Lingualeo.com — интерактивный онлайн-сервис для изучения и практики английского языка в увлекательной игровой форме.
- Junyschool (Джунискул) – международная школа программирования и дизайна для детей и подростков от 5 до 17 лет, где ученики осваивают компьютерную грамотность, развивают алгоритмическое и креативное мышление, изучают основы программирования и компьютерной графики, создают собственные проекты: игры, сайты, программы, приложения, анимации, 3D-модели, монтируют видео.
- Умназия - Интерактивные онлайн-курсы и тренажеры для развития мышления детей 6-13 лет
- SkillBox - это один из лидеров российского рынка онлайн-образования. Среди партнеров Skillbox ведущий разработчик сервисного дизайна AIC, медиа-компания Yoola, первое и самое крупное русскоязычное аналитическое агентство Tagline, онлайн-школа дизайна и иллюстрации Bang! Bang! Education, оператор PR-рынка PACO, студия рисования Draw&Go, агентство performance-маркетинга Ingate, scrum-студия Sibirix, имидж-лаборатория Персона.
- «Нетология» — это университет по подготовке и дополнительному обучению специалистов в области интернет-маркетинга, управления проектами и продуктами, дизайна, Data Science и разработки. В рамках Нетологии студенты получают ценные теоретические знания от лучших экспертов Рунета, выполняют практические задания на отработку полученных навыков, общаются с экспертами и единомышленниками. Познакомиться со всеми продуктами подробнее можно на сайте https://netology.ru, линейка курсов и профессий постоянно обновляется.
- StudyBay Brazil – это онлайн биржа для португалоговорящих студентов и авторов! Студент получает уникальную работу любого уровня сложности и больше свободного времени, в то время как у автора появляется дополнительный заработок и бесценный опыт.
- Автор24 — самая большая в России площадка по написанию учебных работ: контрольные и курсовые работы, дипломы, рефераты, решение задач, отчеты по практике, а так же любой другой вид работы. Сервис сотрудничает с более 70 000 авторов. Более 1 000 000 работ уже выполнено.
- StudyBay – это онлайн биржа для англоязычных студентов и авторов! Студент получает уникальную работу любого уровня сложности и больше свободного времени, в то время как у автора появляется дополнительный заработок и бесценный опыт.
Внешние ссылки