Espruino:Примеры/WiFi-термометр: различия между версиями
Myagkij (обсуждение | вклад) (Новая страница: «{{Espruino/Панель перехода}} {{Перевод от Сubewriter}} {{Myagkij-редактор}} =<ref>[ www.espruino.com - ]</ref>= <syntaxhighlig...») |
Нет описания правки |
||
(не показаны 3 промежуточные версии 2 участников) | |||
Строка 3: | Строка 3: | ||
{{Myagkij-редактор}} | {{Myagkij-редактор}} | ||
=<ref>[ www.espruino.com - ]</ref>= | =WiFi-термометр<ref>[https://www.espruino.com/WiFi+Enabled+Thermometer www.espruino.com - ]</ref>= | ||
[[File:WiFi_Enabled_Thermometer_graph.png|center]] | |||
В этой статье мы расскажем, как создать простой [[WiFi-термометр]]. Мы воспользуемся датчиком [[DS18B20]], с помощью которого будем считывать температуру, а также создадим график, на котором будем показывать динамику изменения температурных данных. | |||
Мы также воспользуемся WiFi-модулем [[CC3000]], на котором создадим веб-сервер. Запрос к этому веб-серверу будет показывать веб-страницу с графиком, о котором говорилось выше. | |||
== Нам понадобятся == | |||
* Одна [https://www.espruino.com/Original плата Espruino] | |||
* Температурный датчик [https://www.espruino.com/DS18B20 DS18B20] и [[резистор]] на [[4.7 кОм]] | |||
* WiFi-модуль [https://www.espruino.com/CC3000 CC3000] | |||
== Подсоединение == | |||
* О том, как подключить модуль [[CC3000]], читайте в [https://www.espruino.com/CC3000 этой статье]. | |||
* Температурный датчик [[DS18B20]] подключается следующим образом: | |||
{| class="wikitable" | |||
|- | |||
! Провод датчика !! Espruino !! Резистор на 4.7 кОм | |||
|- | |||
| Чёрный || GND || | |||
|- | |||
| Красный || 3.3v || 1-ый провод | |||
|- | |||
| Белый || A1 || 2-ой провод | |||
|} | |||
== Код == | |||
Подключитесь к [[Espruino]], скопируйте код ниже в правую часть [[Web IDE]] (не забудьте поменять в нём название точки доступа и пароль на те, что используются для вашей [[WiFi-сети]]), а затем кликните на кнопку загрузки кода на [[Espruino]]. | |||
<syntaxhighlight lang="javascript"> | |||
var ow = new OneWire(A1); | |||
var sensor = require("DS18B20").connect(ow); | |||
var history = new Float32Array(30); | |||
setInterval(function() { | |||
var temp = sensor.getTemp(); | |||
console.log(temp); | |||
// Двигаем «историю» назад: | |||
for (var i=1;i<history.length;i++) | |||
history[i-1]=history[i]; | |||
// Вставляем новые данные в конце: | |||
history[history.length-1] = temp; | |||
}, 2000); | |||
function onPageRequest(req, res) { | |||
res.writeHead(200, {'Content-Type': 'text/html'}); | |||
res.write('<html><head><meta http-equiv="refresh" content="5"></head>'+ | |||
'<body><canvas id="canvas" width="200" height="200" style="border:1px solid #888;"></canvas><script>'); | |||
res.write('var d='+JSON.stringify(history)+';'+ | |||
'var c=document.getElementById("canvas").getContext("2d");'+ | |||
'c.moveTo(0,100 - (d[0]-d[d.length-1])*10);'+ | |||
'for (i in d) c.lineTo(i*200/(d.length-1),100 - (d[i]-d[d.length-1])*10);'+ | |||
'c.stroke()'+ | |||
'</script>'); | |||
res.end('</body></html>'); | |||
} | |||
var wlan; | |||
function onInit() { | |||
wlan = require("CC3000").connect(); | |||
wlan.connect( "AccessPointName", "WPA2key", function (s) { | |||
if (s=="dhcp") { | |||
require("http").createServer(onPageRequest).listen(80); | |||
console.log("Сервер создан на "+wlan.getIP().ip); | |||
} | |||
}); | |||
} | |||
onInit(); | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Вот и всё. Инициализация [[CC3000]] требует времени, так что вам, возможно, придётся подождать минуту-две. Код будет печатать температуру каждые две секунды, а после подключения напечатает свой [[IP-адрес]]. Затем к этому [[IP-адрес]]у можно будет подключиться в веб-браузере, что откроет страницу с графиком изменения температурных данных, показывающим 30 последних считываний (этот график будет обновляться каждые 5 секунд). | |||
=См.также= | =См.также= | ||
=Внешние ссылки= | =Внешние ссылки= | ||
Строка 19: | Строка 91: | ||
<references /> | <references /> | ||
{{Навигационная таблица/Espruino | {{Навигационная таблица/Портал/Espruino}} | ||
Текущая версия от 19:54, 23 мая 2023
WiFi-термометр[1]

В этой статье мы расскажем, как создать простой WiFi-термометр. Мы воспользуемся датчиком DS18B20, с помощью которого будем считывать температуру, а также создадим график, на котором будем показывать динамику изменения температурных данных.
Мы также воспользуемся WiFi-модулем CC3000, на котором создадим веб-сервер. Запрос к этому веб-серверу будет показывать веб-страницу с графиком, о котором говорилось выше.
Нам понадобятся
- Одна плата Espruino
- Температурный датчик DS18B20 и резистор на 4.7 кОм
- WiFi-модуль CC3000
Подсоединение
- О том, как подключить модуль CC3000, читайте в этой статье.
- Температурный датчик DS18B20 подключается следующим образом:
Провод датчика | Espruino | Резистор на 4.7 кОм |
---|---|---|
Чёрный | GND | |
Красный | 3.3v | 1-ый провод |
Белый | A1 | 2-ой провод |
Код
Подключитесь к Espruino, скопируйте код ниже в правую часть Web IDE (не забудьте поменять в нём название точки доступа и пароль на те, что используются для вашей WiFi-сети), а затем кликните на кнопку загрузки кода на Espruino.
var ow = new OneWire(A1);
var sensor = require("DS18B20").connect(ow);
var history = new Float32Array(30);
setInterval(function() {
var temp = sensor.getTemp();
console.log(temp);
// Двигаем «историю» назад:
for (var i=1;i<history.length;i++)
history[i-1]=history[i];
// Вставляем новые данные в конце:
history[history.length-1] = temp;
}, 2000);
function onPageRequest(req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.write('<html><head><meta http-equiv="refresh" content="5"></head>'+
'<body><canvas id="canvas" width="200" height="200" style="border:1px solid #888;"></canvas><script>');
res.write('var d='+JSON.stringify(history)+';'+
'var c=document.getElementById("canvas").getContext("2d");'+
'c.moveTo(0,100 - (d[0]-d[d.length-1])*10);'+
'for (i in d) c.lineTo(i*200/(d.length-1),100 - (d[i]-d[d.length-1])*10);'+
'c.stroke()'+
'</script>');
res.end('</body></html>');
}
var wlan;
function onInit() {
wlan = require("CC3000").connect();
wlan.connect( "AccessPointName", "WPA2key", function (s) {
if (s=="dhcp") {
require("http").createServer(onPageRequest).listen(80);
console.log("Сервер создан на "+wlan.getIP().ip);
}
});
}
onInit();
Вот и всё. Инициализация CC3000 требует времени, так что вам, возможно, придётся подождать минуту-две. Код будет печатать температуру каждые две секунды, а после подключения напечатает свой IP-адрес. Затем к этому IP-адресу можно будет подключиться в веб-браузере, что откроет страницу с графиком изменения температурных данных, показывающим 30 последних считываний (этот график будет обновляться каждые 5 секунд).
См.также
Внешние ссылки