Relä kontroll med hjälp av alkohol Sensor (3 / 4 steg)
Steg 3: kodning
Intel har utvecklat en bra uppsättning av maskinvara, programvara och verktyg till koden IoT projekt. Intel XDK IoT Edition är en IDE för att enkelt göra IoT projekt med Intel Edison och med Node.js. Också, Intel publicerat två bibliotek för deras styrelser kallas MRAA och UPM. MRAA är avsedd att vara den lägsta-nivå-API för hårdvara kommunikation med dess sensorer. UPM är på hög nivå API och den är baserad på de flesta Grove sensorer.
Koden är mycket enkel och det gör följande:
- Vänta 2 minuter att värma alkohol sensorn ( Seeed Studio Wiki-sidan säger bäst förvärma tid för sensorn är 48 timmar!)
- Köra runAlcoholSensor() funktion var andra där:
- Lyssnar efter Touch sensor för att vara på
- Om någon vidrör sensorn, börjar det samla 100 prover av den alkohol sensorn
- Koden tar sedan det genomsnittliga värdet av proverna
- Om värdet är mellan 200 och 500 (jag arbetar fortfarande för att förstå varför jag gjorde det), då visar det på reläet.
Koden nedan:
< p > / * jslint nod: true, vars:true, bitvis: true, unparam:true * / < br > / * jshint oanvända: sant * /
Lämna ovanstående rader för propper jshinting < /p >< p > / / Ladda sensor moduler
var mq303a = require('jsupm_mq303a');
var lcd = require('jsupm_i2clcd');
var sensorModule = require('jsupm_ttp223');
var groveSensor = require('jsupm_grove'); < /p >< p > / / instansiera en mq303a sensor på analoga stift A0
Den här enheten använder en värmare som drivs från en analog I/O stift.
Om du använder A0 som data pin, måste du använda A1, som värmaren
PIN (om du använder en grove mq303a). För A1, kan vi använda D15 gpio,
setup som en utgång, och köra det låga att driva värmaren.
var myAlcoholObj = ny mq303a. MQ303A (0, 15);
var display = ny lcd. Jhd1313m1 (0, 0x3E, 0x62);
var touch = nya sensorModule.TTP223(3);
var relä = nya groveSensor.GroveRelay(2); < /p >< p > console.log ("Aktivera värmare och vänta 2 minuter för warmup."); < /p >< p > / / ge tid uppdaterar var 30 sekunder tills 2 minuter passerat
för alkohol sensorn att värma upp
statusMessage(1);
statusMessage(2);
statusMessage(3); < /p >< p > funktion statusMessage(amt) {
setTimeout(function() {
Console.log ((amt * 30) + "sekunder har gått");
}, 30000 * amt);
} < /p >< p > / / Kör alkohol sensorn på 2 minuter
setTimeout (runAlcoholSensor, 120000); < /p >< p > fungera runAlcoholSensor() {
var meddelande = "denna sensor kan behöva värma tills värdet sjunker under ungefär 450."
Console.log(Notice); < /p >< p > / / Skriv ut värdet upptäckta alkohol varje sekund
setInterval(function() {
IF(touch.isPressed()) {
var val = 0;
för (jag = 0; jag < 100; i ++) {
Val += myAlcoholObj.value();
}
Val = val / 100;
var sensor_volt = val / 1024 * 5.0;
var RS_air = sensor_volt / (5.0 - sensor_volt);
var msg = "alkohol:";
Console.log (msg + val) + "sensor_volt =" + sensor_volt;
display.setCursor(0,0);
display.write (msg + val);
om (val > 200 & & val < 500) {
Relay.on();
}
} annat {
Relay.off();
}
}, 1000);
} < /p >< p > / / Skriv ut meddelande när programmet avslutas
process.on (SIGINT, function() {
Console.log("Exiting...");
process.Exit(0);
{}); < /p >