Espruino:Примеры/Беспроводной температурный датчик
Беспроводной температурный датчик[1]
![](/ruwiki/images/4/4d/Wireless_Temperature_Sensor_final.jpg)
В этом руководстве рассказывается, как быстро и просто сделать температурный датчик. В нашем проекте одна Espruino будет считывать данные с температурного датчика DS18B20 и каждые 10 секунд передавать их при помощи беспроводного NRF-модуля, а другая Espruino будет принимать эти данные и рисовать их на LCD-дисплее.
Нам понадобятся
- Две платы Espruino, подключенные друг к другу при помощи модуля NRF24L01+
- Температурный датчик DS18B20 и резистор на 4.7 кОм
- LCD-дисплей Nokia 5110
Подсоединение
Первая Espruino (передатчик)
- О том, как подключить беспроводной модуль NRF24L01+, читайте в этой статье.
- Температурный датчик DS18B20 подключается следующим образом:
Провод датчика | Espruino | Резистор на 4.7 кОм |
---|---|---|
Чёрный | GND | |
Красный | 3.3v | 1-ый провод |
Белый | A1 | 2-ой провод |
Вторая Espruino (приёмник)
- О том, как подключить модуль NRF24L01+, читайте в этой статье.
- О том, как подключить LCD-дисплей Nokia 5110, читайте в этой статье.
Код
Подключитесь Espruino-передатчику, скопируйте код ниже в правую часть IDE, а затем кликните на кнопку загрузки кода в центре IDE.
SPI1.setup({sck:A5, miso:A6, mosi:A7});
var nrf = require("NRF24L01P").connect( SPI1, B0, B1 );
var ow = new OneWire(A1);
var sensor = require("DS18B20").connect(ow);
function onInit() {
nrf.init([0,0,0,0,2], [0,0,0,0,1]);
}
onInit();
setInterval(function() {
var temperature = sensor.getTemp();
nrf.sendString(""+temperature);
}, 10000);
Теперь подключитесь ко второй Espruino (приёмнику) и загрузите на неё вот этот код:
SPI1.setup({sck:A5, miso:A6, mosi:A7});
var nrf = require("NRF24L01P").connect( SPI1, B0, B1 );
SPI3.setup({ baud: 1000000, sck:B3, mosi:B5 });
var g;
function onInit() {
nrf.init([0,0,0,0,1], [0,0,0,0,2]);
// Мы настраиваем LCD-дисплей здесь,
// потому что его нужно инициализировать при запуске платы:
g = require("PCD8544").connect(SPI3,B6,B7,B8);
}
// Рисуем температуру на LCD-дисплее:
function showTemperature(temp) {
g.clear();
g.setFontBitmap();
g.drawString("Temp",1,0);
g.drawLine(0,10,84,10);
g.setFontVector(20);
g.drawString(temp,1,15);
g.flip();
}
// Постоянно проверяем, не пришли ли новые данные...
dataLine = "";
setInterval(function() {
while (nrf.getDataPipe() !== undefined) {
var data = nrf.getData();
for (var i in data) {
var ch = data[i];
if (ch===0 && dataLine!=="") {
// Если получили «0» (конец строки),
// показываем всё, что получили:
showTemperature(dataLine);
dataLine = "";
} else if (ch!==0) {
dataLine += String.fromCharCode(ch);
}
}
}
}, 50);
onInit();
Теперь LCD-дисплей будет показывать данные о температуре, полученные от Espruino-передатчика, обновляя их каждые 10 секунд. Вот и всё! У нас получился беспроводной температурный датчик. Этот код можно расширить следующим образом:
- Воспользовавшись кодом из этой статьи, чтобы сделать беспроводной терморегулятор.
- Нарисовав график, показывающий динамику изменения температуры.
- Задействовав больше одного температурного датчика.
- Организовав запись температурных данных на SD-карту.
И так далее.
См.также
Внешние ссылки