第1步:工作原理
大腦該設(shè)備是粒子氬氣。 Argon是一個(gè)功能強(qiáng)大的支持Wi-Fi的開(kāi)發(fā)板,可以作為獨(dú)立的Wi-Fi端點(diǎn)或用于粒子網(wǎng)絡(luò)網(wǎng)絡(luò)的Wi-Fi網(wǎng)關(guān)。它基于Nordic nRF52840,內(nèi)置電池充電電路,因此可以輕松連接Li-Po并在幾分鐘內(nèi)部署您的本地網(wǎng)絡(luò)。氬氣非常適合將現(xiàn)有項(xiàng)目連接到粒子設(shè)備云或作為連接整組本地端點(diǎn)的網(wǎng)關(guān)。
為了收集空氣質(zhì)量,溫度,濕度和噪聲水平,幾個(gè)傳感器連接到粒子氬氣。 Argon從傳感器收集數(shù)據(jù)并將數(shù)據(jù)上傳到粒子云。一些Web服務(wù)用于數(shù)據(jù)可視化和分析。所有Web服務(wù)都通過(guò)webhook連接到粒子云。 Ubidots用于監(jiān)視和可視化來(lái)自瀏覽器的數(shù)據(jù),firebase用于存儲(chǔ)數(shù)據(jù)并將數(shù)據(jù)顯示給移動(dòng)應(yīng)用程序。 Zapier用于在電子表格中存儲(chǔ)數(shù)據(jù),電子表格可以通過(guò)IFTTT發(fā)送到任何電子郵件地址。
該設(shè)備由5W太陽(yáng)能電池板供電。鋰離子電池用于存儲(chǔ)太陽(yáng)能并且用于對(duì)電池DFRobot 5V充電,使用1A太陽(yáng)能電源管理器。
步驟2:準(zhǔn)備Grove電纜
兩個(gè)Grove傳感器用于收集空氣質(zhì)量數(shù)據(jù)和溫度和濕度數(shù)據(jù)。
Seeed Grove - 空氣質(zhì)量傳感器v1.3:該傳感器設(shè)計(jì)用于全面監(jiān)控室內(nèi)空氣狀況。它對(duì)各種有害氣體都有反應(yīng),如一氧化碳,酒精,丙酮,稀釋劑,甲醛等。由于測(cè)量機(jī)制,該傳感器無(wú)法輸出特定數(shù)據(jù)來(lái)定量描述目標(biāo)氣體的濃度。但它仍然足以用于僅需要定性結(jié)果的應(yīng)用,如自動(dòng)清新噴霧器和自動(dòng)空氣循環(huán)系統(tǒng)。
Seeed Grove - 溫度和濕度傳感器(DHT11): DHT11是Arduino和Raspberry Pi最常用的溫度和濕度模塊。它因其眾多優(yōu)點(diǎn)而受到硬件愛(ài)好者的廣泛青睞。例如。低功耗和出色的長(zhǎng)期穩(wěn)定性??梢砸苑浅5偷某杀精@得相對(duì)高的測(cè)量精度。單總線數(shù)字信號(hào)通過(guò)內(nèi)置ADC輸出,節(jié)省了控制板的I/O資源。
所有樹(shù)叢傳感器通過(guò)樹(shù)脂電纜連接到其他樹(shù)叢連接器。不幸的是,樹(shù)林連接器不是友好的。為了將樹(shù)叢傳感器連接到面包板,我在中間切割樹(shù)叢電纜,每個(gè)部分焊接到面包板上以連接兩個(gè)樹(shù)叢傳感器。
用于將氬板放置到PCB而不是直接焊接氬電路板到PCB我使用了母針頭,這樣就可以很容易地從PCB板上拔下氬板。
步驟3:用跳線連接
將溝槽電纜焊接到PCB板上并焊接氬板的母針頭后,我們需要將溝槽傳感器引腳連接到氬氣根據(jù)原理圖的引腳。我使用額外的跳線連接信號(hào)引腳。為了連接電源引腳,使用相同的跳線。
GPS模塊和模擬聲級(jí)計(jì)通過(guò)公引腳接頭連接到PCB。
步驟4:準(zhǔn)備Solar Power Manager
DFRobot太陽(yáng)能電源管理器5V是一款小型電源和高效太陽(yáng)能電源管理模塊,專為5V太陽(yáng)能電池板而設(shè)計(jì)。它具有MPPT(最大功率點(diǎn)跟蹤)功能,可最大限度地提高太陽(yáng)能電池板的效率。該模塊可通過(guò)USB充電器或太陽(yáng)能電池板為3.7V鋰電池提供高達(dá)900mA的充電電流。具有5V 1A輸出的ON/OFF可控DC-DC轉(zhuǎn)換器滿足各種太陽(yáng)能項(xiàng)目和低功率應(yīng)用的需求。該模塊還采用各種電池,太陽(yáng)能電池板和輸出保護(hù)功能,大大提高了太陽(yáng)能項(xiàng)目的穩(wěn)定性和安全性。
模塊配有一個(gè)散熱片,4個(gè)帶有4個(gè)螺絲的hax墊片。我使用雙面硅膠帶將散熱器放在標(biāo)記的位置。我還使用螺絲將hax墊片連接到每個(gè)孔。
步驟5:放置傳感器
使用三個(gè)傳感器制作設(shè)備。在前一步驟中討論了兩個(gè)樹(shù)叢傳感器。為了收集噪聲水平,使用了重力模擬聲級(jí)計(jì)。這是一款A(yù)rduino和Particle兼容的聲級(jí)計(jì)(也稱為分貝計(jì),噪音計(jì))。它使用儀器電路和低噪聲麥克風(fēng),使其能夠精確測(cè)量周?chē)h(huán)境的聲級(jí)。本產(chǎn)品采用儀表電路,低噪音麥克風(fēng),使其非常珍貴。它支持3.3~5.0V寬輸入電壓,0.6~2.6V電壓輸出。分貝值與輸出電壓成線性關(guān)系,無(wú)需復(fù)雜算法即可實(shí)現(xiàn)簡(jiǎn)單的轉(zhuǎn)換。該連接器即插即用,無(wú)需焊接,因此該產(chǎn)品可輕松應(yīng)用于您的應(yīng)用中。它可以應(yīng)用于環(huán)境噪聲測(cè)試,如公路噪聲監(jiān)測(cè)站,臥室噪聲監(jiān)測(cè)等。
為了將所有傳感器放置在PCB板上,我使用了泡沫型雙面膠帶。在不損壞傳感器或任何跡線的情況下,很容易將設(shè)備從PCB板上移除。
步驟6:放置電源管理器電路和GPS
NEO-6M GPS模塊如下圖所示。它配有一個(gè)外部天線,沒(méi)有插頭引腳。所以,你需要得到并焊接一些。
該模塊有一個(gè)外置天線和一個(gè)內(nèi)置EEPROM。
電源:3V至5V
默認(rèn)波特率:9600 bps
使用標(biāo)準(zhǔn)NMEA句子
NEO-6M GPS模塊還兼容其他微控制器板。 NEO-6M GPS模塊有四個(gè)引腳:VCC,RX,TX和GND。該模塊使用TX和RX引腳通過(guò)串行通信與Arduino進(jìn)行通信,因此布線不會(huì)更簡(jiǎn)單:
Neo 6 GPS也通過(guò)雙面膠帶連接。為了放置電源管理器我使用了螺絲。 請(qǐng)勿使用任何膠帶作為電源管理器,因?yàn)樗鼤?huì)產(chǎn)生足夠的磁頭,您應(yīng)該留出一些空間來(lái)循環(huán)空氣以防止損壞。
第7步:連接電線
一大使用DFRobot太陽(yáng)能管理器的優(yōu)勢(shì)在于它可以通過(guò)USB電纜直接為其他設(shè)備供電。因此,您可以通過(guò)USB電纜將氬板直接連接到電源管理器電路。另一個(gè)優(yōu)點(diǎn)是您還可以通過(guò)USB電纜將太陽(yáng)能電池板連接到充電器電路。因此不需要跨接線或焊接。
項(xiàng)目中使用的太陽(yáng)能電池板是PET封裝的高性能,輕便,便攜式單晶硅太陽(yáng)能電池板,集成穩(wěn)壓器輸出電壓為5V,帶有工作指示燈,USB A型母 - 端口輸出,即插即用。它可以在各種環(huán)境中提供充足的電力,以防止系統(tǒng)關(guān)閉,即使在下雨天。與DFRobot太陽(yáng)能電源管理板配合使用時(shí),太陽(yáng)能電池板的能量將特別高效。面板上有開(kāi)孔和銅扣,因此可以直接安裝在背包上,便于攜帶和使用。超薄,輕巧的設(shè)計(jì)僅重90克。它比傳統(tǒng)玻璃包裝中的太陽(yáng)能電池板輕得多。
步驟8:進(jìn)行電池連接
從太陽(yáng)能中收集的能量存儲(chǔ)在兩個(gè)并聯(lián)的鋰離子充電電池中。并聯(lián)連接會(huì)增加您的額定電流,但電壓將保持不變。在“并聯(lián)”連接中,2個(gè)3.7伏電池將提供3.7V輸出,但放大器增加到2倍。重要的是要注意,由于電池的安培數(shù)增加,您可能需要使用較重的電纜來(lái)防止電纜燒壞。
要并聯(lián)電池,請(qǐng)使用跳線連接兩者。正極端子和另一根跨接線將兩個(gè)電池的負(fù)極端子相互連接。消極負(fù)面和積極正面。您可以將負(fù)載連接到其中一個(gè)電池,它將同樣耗盡兩個(gè)電池。但是,保持電池均衡的首選方法是連接電池組一端的正極,另一端連接負(fù)極。
太陽(yáng)能管理器可以給兩個(gè)電池充電在距離5W太陽(yáng)能電池板的四小時(shí)內(nèi)。電池連接到專用于電池輸入的綠色連接器。 spdt開(kāi)關(guān)用于給出電路的開(kāi)/關(guān)選項(xiàng)。
步驟9:制作外殼
對(duì)于任何室外設(shè)備來(lái)說(shuō),外殼對(duì)于保護(hù)雨水和其他環(huán)境危害非常重要。我選擇膠合板制作封面。您可以使用3D打印的外殼。制作一個(gè)完整的盒子需要7個(gè)膠合板。
兩塊膠合板的切角為60度。這是我的城市達(dá)卡的平均傾斜角度。頂部有一個(gè)孔,可從面板上拔出USB線。
使用木質(zhì)環(huán)氧樹(shù)脂溶液和指甲將不同的木塊連接在一起。您可以使用砂紙來(lái)完成外觀。您可以制作任何尺寸的外殼,方便但請(qǐng)確保您有足夠的空間將電路板放入盒子內(nèi)。您還應(yīng)該允許盒子內(nèi)的空氣和聲音準(zhǔn)確讀取傳感器。
步驟10:放置太陽(yáng)能電池板
放置太陽(yáng)能電池板的定位與在特定情況下使用哪種類(lèi)型的太陽(yáng)能電池板同樣重要。當(dāng)太陽(yáng)光線垂直射到其表面時(shí),太陽(yáng)能電池板將利用最大的功率。確保太陽(yáng)能電池板面向正確的方向并具有適當(dāng)?shù)膬A斜度將有助于確保它們?cè)谧铋L(zhǎng)時(shí)間內(nèi)暴露在最高強(qiáng)度的陽(yáng)光下時(shí)產(chǎn)生最大能量。
在北半球,太陽(yáng)能電池板放置的一般規(guī)則是,太陽(yáng)能電池板應(yīng)該面向真南(以及南部,真正的北部)。通常,這是最佳方向,因?yàn)樘?yáng)能電池板將全天接收直射光。但是,必須考慮磁南和真南之間的差異。磁南是使用指南針時(shí)顯示的“南”,這個(gè)南指向地球的南磁極。然而,太陽(yáng)能電池板需要面向太陽(yáng)能或地理南部,這是朝向南極的方向。根據(jù)相同的推理,如果太陽(yáng)能電池板位于南半球,則面板應(yīng)朝向正北方向。
太陽(yáng)能電池板的角度或傾斜也是一個(gè)重要的考慮因素。應(yīng)該設(shè)定太陽(yáng)能電池板以在給定年份產(chǎn)生最多能量的角度由地理緯度決定。最佳年度能量產(chǎn)生的一般規(guī)則是將太陽(yáng)能電池板傾斜角度設(shè)定為等于地理緯度。例如,如果太陽(yáng)能電池陣列的位置在50°緯度,則最佳傾斜角也是50°?;旧?,太陽(yáng)能電池板越靠近赤道,電池板應(yīng)該越向上指向。面板離極點(diǎn)越近,它們?cè)较虺嗟纼A斜。
太陽(yáng)能電池板的角度也會(huì)因氣候和環(huán)境因素影響功率輸出。在北方氣候中,低傾斜面板上的積雪可以減少或完全阻擋太陽(yáng)光線在冬季到達(dá)太陽(yáng)能電池板。
步驟11:將設(shè)備放置在機(jī)柜內(nèi)
制作盒子后,是時(shí)候?qū)㈦娐钒宸旁诜忾]器內(nèi)。將電路板放在底部后,加上螺絲將電路固定在盒子上。使用熱膠將GPS天線和wifi天線固定。
步驟12:開(kāi)發(fā)和刻錄固件
該設(shè)備的程序是使用Particle Web IDE開(kāi)發(fā)的。要使用Particle web IDE開(kāi)發(fā)程序,您需要登錄粒子控制臺(tái)。登錄后打開(kāi)一個(gè)新項(xiàng)目并粘貼以下代碼:
//All external libraries are added here
#include “Particle.h”
#include “Adafruit_DHT.h”
#include
#include “Arduino.h”
#include
#define DHTPIN 2 // what pin DHT11 sensor is connected to
#define DHTTYPE DHT11 // Type of DHT sensor
#define SoundSensorPin A1 //this pin read the analog voltage from the sound level meter
#define VREF 5.0 //voltage on AREF pin, default:operating voltage
//Object declaration for DHT sensor
DHT dht(DHTPIN, DHTTYPE);
//Object declaration for air quality sensor
//AirQuality airqualitysensor;
//Object declaration for GPS
TinyGPSPlus gps;
//Global variables for the sensor data
char air_quality[20] = “”;
float temperature = 0.0;
float humidity = 0.0;
float dbValue = 0.0;
float latitude = 0.0;
float longitude = 0.0;
float startTime;
int current_quality =-1;
bool requestSent = false;
void hookResponseHandler(const char *event, const char *data);
void setup() {
Serial1.begin(9600); //default buad rate for NEO-6M gps is 9600
dht.begin(); //initialize dht sensor
airqualitysensor.init(A0);//initialize air quality sensor
//receive response after publishing data to particle cloud
Particle.subscribe(“hook-response/Ubidots”, hookResponseHandler, MY_DEVICES);
startTime = millis(); //time count start
}
void loop() {
if (millis() 》 startTime + 30000) { //publish data every 30 second
startTime = millis();
//all the global variables are automatically updated on functions call
read_dht_value();
read_air_quality();
read_sound_level();
publish_data();
delay(1000);
}
while (Serial1.available() 》 0){
if (gps.encode(Serial1.read())){
if (gps.location.isValid()){
latitude = gps.location.lat(); //get latitude and longitude
longitude = gps.location.lng();
}
delay(10000); //Check for gps data every 10 seconds
}
}
}
void hookResponseHandler(const char *event, const char *data) {
float elevation = atof(data);
}
//this function reads temperature and humidity from dht11 sensor
void read_dht_value() {
//Reading temperature or humidity takes about 250 milliseconds!
//Sensor readings may also be up to 2 seconds ‘old’ (its a
// very slow sensor)
float h = dht.getHumidity();
//Read temperature as Celsius
float t = dht.getTempCelcius();
// Check if any reads failed and exit early (to try again)。
if (isnan(h) || isnan(t)) {
return;
}
else {
temperature = t;
humidity = h;
}
}
//this function reads the quality of the air
void read_air_quality()
{
current_quality=airqualitysensor.slope();
if (current_quality 》= 0)// if a valid data returned.
{
if (current_quality==0)
air_quality = “Very High pollution”;
else if (current_quality==1)
air_quality = “High pollution”;
else if (current_quality==2)
air_quality = “Low pollution”;
else if (current_quality ==3)
air_quality = “Fresh air”;
}
}
//interrupt service routine for air quality sensor
ISR(TIMER2_OVF_vect)
{
if(airqualitysensor.counter==122)//set 2 seconds as a detected duty
{
airqualitysensor.last_vol=airqualitysensor.first_vol;
airqualitysensor.first_vol=analogRead(A0);
airqualitysensor.counter=0;
airqualitysensor.timer_index=1;
PORTB=PORTB^0x20;
}
else
{
airqualitysensor.counter++;
}
}
// This function read the data from sound sensor and convert the value into decibel.
void read_sound_level()
{
float voltageValue;
voltageValue = analogRead(SoundSensorPin) / 1024.0 * VREF;
dbValue = voltageValue * 5.0; //convert voltage to decibel value
}
void publish_data(){
char data[256];
char data1[256];
//I made two data array because ubidots required position value with a context, firebase doesn‘t
snprintf(data, sizeof(data), “{”position“: {”value“:1, ”context“:{”lat“: %.6f, ”lng“: %.6f}}, ”temp“:%.2f, ”noise“:%.2f, ”air“: {”value“:1, ”context“:{”quality“: ”%s“}}, ”humid“:%.2f}”,
latitude, longitude, temperature, dbValue, air_quality, humidity);
snprintf(data1, sizeof(data1), “{”lat“: %.6f, ”lng“: %.6f, ”temp“:%.2f, ”noise“:%.2f, ”air“:”%s“, ”humid“:%.2f}”,
latitude, longitude, temperature, dbValue, air_quality, humidity);
Particle.publish(“Ubidots”, data, PRIVATE); //trigger webhooks for Ubidots
Particle.publish(“Google_Sheet”, data1, PRIVATE); //trigger webhook to Zapier for uploading to Google Sheet
Particle.publish(“Firebase”, data1, PRIVATE); //Store data to firebase
Particle.publish(“Firebase_put”, data1, PRIVATE); //Update data to firebase.
//The main difference here is that the requestType is PUT, not POST. The PUT method doesn’t create a table of values;
//it just creates a single element to hold the data, overwriting any previous data at that location.
}
步驟13:為Ubidots配置粒子Webhook
項(xiàng)目中使用了多個(gè)Web服務(wù)。我使用Ubidots來(lái)顯示數(shù)據(jù),使用Firebase實(shí)時(shí)數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù)并通過(guò)智能手機(jī)應(yīng)用程序訪問(wèn)數(shù)據(jù),Zapier使用數(shù)據(jù)制作Google Sheet,使用IFTTT將Google Sheet發(fā)送到用戶的電子郵件。所有Web服務(wù)都通過(guò)Webhook連接到粒子云。
webhook(也稱為Web回調(diào)或HTTP推送API)是一種應(yīng)用程序?yàn)槠渌麘?yīng)用程序提供實(shí)時(shí)信息的方式。 webhook會(huì)在發(fā)生時(shí)將數(shù)據(jù)傳遞給其他應(yīng)用程序,這意味著您可以立即獲取數(shù)據(jù)。與典型的API不同,您需要非常頻繁地輪詢數(shù)據(jù)才能實(shí)時(shí)獲取數(shù)據(jù)。這使得webhooks對(duì)提供者和消費(fèi)者都更有效。使用粒子控制臺(tái)為粒子設(shè)備配置webhook非常容易。在接下來(lái)的幾個(gè)步驟中,我將向您展示如何為此項(xiàng)目中使用的不同Web服務(wù)配置webhook。
要開(kāi)始您的Particle - Ubidots連接,首先需要設(shè)置粒子設(shè)備(氬氣,光子,粒子帳戶中的Core或Electron)。點(diǎn)擊此處了解使用Particle設(shè)備平臺(tái)設(shè)置設(shè)備的簡(jiǎn)單步驟。
您還需要一個(gè)Ubidots帳戶。 Ubidots允許免費(fèi)教育帳戶,并免費(fèi)提供5000積分。
第1步:從https://ubidots.com/education/創(chuàng)建一個(gè)Ubidots帳戶登錄您的帳戶。
第2步:從右上角點(diǎn)擊API憑據(jù)并記下默認(rèn)令牌。
第3步:登錄您的粒子帳戶
第4步:轉(zhuǎn)到粒子控制臺(tái),選擇“集成”,然后單擊“新集成”
第5步:選擇“Webhook”
第6步:提供事件名稱( 1)。此名稱必須與Ubidots的Perticle.publish()方法的事件名稱相同。我把這個(gè)名字命名為“Ubidots”。
第7步:將您的網(wǎng)址放在網(wǎng)址文字框中。您的Ubidots的webhook URL將如下所示:(放置您自己的令牌,不帶雙引號(hào))
我們將自動(dòng)調(diào)用并分配粒子設(shè)備的設(shè)備ID以確保Ubidots中的設(shè)備標(biāo)簽仍然是獨(dú)特的為此,我們將使用Particle提供的預(yù)定義密鑰:{{{PARTICLE_DEVICE_ID}}}此調(diào)用將自動(dòng)為URL分配觸發(fā)webhook的設(shè)備的ID。
其他字段應(yīng)與圖中所示相同。
步驟8:選擇“高級(jí)設(shè)置”并使用以下文本完成文本編輯器:
注意:有關(guān)配置此項(xiàng)目中使用的所有Web服務(wù),請(qǐng)?jiān)L問(wèn)以下鏈接:https://www.hackster.io/taifur/urban-noise-air-pollution- monitoring-d14088
步驟14:為Firebase配置Webhook(實(shí)時(shí)數(shù)據(jù)庫(kù))
Firebase實(shí)時(shí)數(shù)據(jù)庫(kù)是一個(gè)云托管數(shù)據(jù)庫(kù),支持Android,iOS和Web多平臺(tái)。所有數(shù)據(jù)都以JSON格式存儲(chǔ),數(shù)據(jù)的任何變化都會(huì)立即通過(guò)在所有平臺(tái)和設(shè)備上執(zhí)行同步來(lái)反映。這使我們可以輕松輕松地構(gòu)建更靈活的實(shí)時(shí)應(yīng)用程序。
第1步:使用您的Gmail帳戶登錄Firebase控制臺(tái)console.firebase.google.com/console/login。點(diǎn)擊“添加項(xiàng)目”。
步驟2:提供項(xiàng)目名稱并接受條款,然后單擊“創(chuàng)建項(xiàng)目”。
步驟3:創(chuàng)建項(xiàng)目后,進(jìn)入數(shù)據(jù)庫(kù)選項(xiàng)卡,選擇創(chuàng)建數(shù)據(jù)庫(kù)。
步驟4:在測(cè)試模式下選擇“開(kāi)始”,然后單擊“確定”。下一步。
步驟5:從數(shù)據(jù)庫(kù)下拉列表中選擇Realtime Databse。
步驟6:記下數(shù)據(jù)庫(kù)的URL。稍后將需要從粒子控制臺(tái)配置Webhook以及制作Android應(yīng)用程序。
步驟7:從Rules選項(xiàng)卡設(shè)置讀寫(xiě)權(quán)限為真。
步驟8:轉(zhuǎn)到服務(wù)帳戶。
步驟9:選擇數(shù)據(jù)庫(kù)機(jī)密。
步驟10:點(diǎn)擊添加秘密然后復(fù)制它。
步驟11:轉(zhuǎn)到粒子控制臺(tái),從集成開(kāi)始新的webhook集成。填寫(xiě)所有字段,如下所示。用您自己的網(wǎng)址替換網(wǎng)址。
步驟12:點(diǎn)擊高級(jí)設(shè)置,選擇自定義選項(xiàng)并粘貼以下json代碼:
{
“temperature”: “{{temp}}”,
“humidity”: “{{humid}}”,
“air quality”: “{{air}}”,
“sound level”: “{{noise}}”,
“l(fā)atitude”: “{{lat}}”,
“l(fā)ongitude”: “{{lng}}”,
“published_at”: “{{PARTICLE_PUBLISHED_AT}}”
}
傳感器數(shù)據(jù)將作為此JSON數(shù)據(jù)發(fā)送到Firebase。它將如下所示。
最后,點(diǎn)擊創(chuàng)建webhook使其成為最終版。 Webhook for Firebase現(xiàn)已準(zhǔn)備好。
步驟15:為Zapier配置粒子Webhook
Zapier將用于將粒子數(shù)據(jù)保存到Google表格。每次將新數(shù)據(jù)發(fā)布到粒子云時(shí),Zapier都會(huì)在Google表格中創(chuàng)建一個(gè)新行,并使用適當(dāng)?shù)臄?shù)據(jù)值填充列。要做到這一點(diǎn),我們首先需要在Google云端硬盤(pán)中制作Google表格。
第1步:轉(zhuǎn)到您的云端硬盤(pán),然后選擇空白電子表格。
第2步:第一行將是數(shù)據(jù)字段(列)的名稱。根據(jù)您的數(shù)據(jù)輸入每列的名稱。在第二行中,只為每個(gè)數(shù)據(jù)放置一個(gè)樣本值。它將幫助Zapier正確識(shí)別數(shù)據(jù)字段。
第3步:如果您已經(jīng)創(chuàng)建了帳戶,請(qǐng)?jiān)L問(wèn)https://zapier.com/并登錄。否則先創(chuàng)建帳戶。開(kāi)始一個(gè)新的Zap。從連接這個(gè)應(yīng)用程序。..下拉選擇Zapier的Webhooks和從這個(gè)!下拉菜單選擇Google表格。
第4步:點(diǎn)擊Make a Zap!
步驟5:選擇Catch Hook并單擊Save + Continue。
第6步:將為您創(chuàng)建一個(gè)唯一的網(wǎng)絡(luò)訪問(wèn)網(wǎng)址。將URL復(fù)制到剪貼板。在不關(guān)閉選項(xiàng)卡的情況下,打開(kāi)瀏覽器的新選項(xiàng)卡并打開(kāi)粒子控制臺(tái)。
第7步:從集成標(biāo)簽啟動(dòng)新的網(wǎng)絡(luò)快速創(chuàng)建。
第8步:填寫(xiě)所有字段。將Zapier webhook URL粘貼到剪貼板的URL文本框中。對(duì)于請(qǐng)求格式,請(qǐng)選擇JSON。
步驟9:從“高級(jí)設(shè)置”中選擇“自定義”選項(xiàng),然后在文本框中粘貼以下JSON代碼。此JSON與您用于Firebase的JSON相同。 {
“temperature”: “{{temp}}”,
“humidity”: “{{humid}}”,
“air quality”: “{{air}}”,
“sound level”: “{{noise}}”,
“l(fā)atitude”: “{{lat}}”,
“l(fā)ongitude”: “{{lng}}”,
“published_at”: “{{PARTICLE_PUBLISHED_AT}}”
}
第10步:點(diǎn)擊創(chuàng)建WEBHOOK
步驟11:創(chuàng)建掛鉤后,單擊TEST將測(cè)試請(qǐng)求發(fā)送給Zapier。
如果一切順利,您將收到以下消息。
第12步:從瀏覽器轉(zhuǎn)到上一個(gè)標(biāo)簽,然后點(diǎn)擊“確定”,當(dāng)您從粒子云發(fā)送測(cè)試請(qǐng)求時(shí),我執(zhí)行了此按鈕。
步驟13:選擇掛鉤A并單擊繼續(xù)以轉(zhuǎn)至操作選項(xiàng)卡。
第14步:選擇Google表格作為您的應(yīng)用。
步驟15 :從Google表格操作選擇創(chuàng)建電子表格行,我們希望將所有值保存在一個(gè)工作表中。
步驟16:選擇工作表的Google帳戶,然后點(diǎn)擊保存+繼續(xù)。
步驟17 :從電子表格下拉列表中選擇您為此目的創(chuàng)建的工作表。
步驟18:為工作表字段選擇Sheet1。您將看到在工作表上創(chuàng)建的所有列字段。
步驟19:從“插入字段”選項(xiàng)中為每個(gè)列字段選擇適當(dāng)?shù)淖兞俊D鷮闹鞍l(fā)送的下拉列表中找到所有變量作為粒子云的測(cè)試請(qǐng)求。
步驟20:對(duì)所有字段執(zhí)行相同操作,然后單擊繼續(xù)。
步驟21:點(diǎn)擊發(fā)送測(cè)試到Google表格以測(cè)試它是否正常工作。
第22步:如果一切順利,您將收到成功的消息。
步驟23 :從云端硬盤(pán)打開(kāi)工作表,您將看到已創(chuàng)建新行。沒(méi)有時(shí)間,所有其他字段都是空的,因?yàn)槲覀儧](méi)有在測(cè)試請(qǐng)求上發(fā)送任何值。
第24步:請(qǐng)點(diǎn)擊在完成
步驟25:最后打開(kāi)Zap。
步驟16:配置IFTTT發(fā)送電子郵件
IFTTT將用于將Google表格發(fā)送給想要獲取它的用戶電子郵件。它將從Android應(yīng)用程序觸發(fā)。
步驟1:登錄IFTTT帳戶并單擊“我的小程序”。單擊New Applet。
第2步:點(diǎn)擊 + this 。
第3步:搜索webhook并選擇何時(shí)顯示。
第4步:繼續(xù)接收網(wǎng)絡(luò)請(qǐng)求。
第5步:輸入一個(gè)事件名稱,然后單擊“創(chuàng)建觸發(fā)器”。
步驟
第6步:點(diǎn)擊 +
第7步:選擇Gmail作為操作服務(wù)。
第8步:選擇發(fā)送電子郵件
第9步:對(duì)于To address字段,從Add ingredient
添加值1
第10步:根據(jù)您的要求填寫(xiě)主題和正文。將Google表格的鏈接粘貼到文本框附件網(wǎng)址。該文件將隨電子郵件附上。
步驟11:?jiǎn)螕粢员4嬉詣?chuàng)建小程序。
步驟17:使用MIT App Inventor開(kāi)發(fā)Android應(yīng)用程序
在這個(gè)階段,我們將構(gòu)建一個(gè)Android應(yīng)用程序來(lái)監(jiān)控來(lái)自的數(shù)據(jù)一部智能手機(jī)用戶還可以向他/她的電子郵件發(fā)送將數(shù)據(jù)發(fā)送的請(qǐng)求。
使用MIT App Inventor制作應(yīng)用程序非常簡(jiǎn)單。無(wú)需編碼。我們將使用該應(yīng)用程序從firebase讀取數(shù)據(jù)。 MIT App Inventor具有內(nèi)置擴(kuò)展,可與firebase進(jìn)行交互。我們只需要在項(xiàng)目中添加擴(kuò)展名。
對(duì)于使用firebase,您將需要您的firebase URL(我們?cè)谂渲脀ebhook時(shí)使用的URL相同) ),firebase令牌和存儲(chǔ)桶名稱。存儲(chǔ)桶名稱實(shí)際上是firebase中的表名。
塊編輯器解釋了不同UI元素之間的交互。為上傳到firebase的每個(gè)新數(shù)據(jù)觸發(fā)Firebase.DataChanged方法。應(yīng)用程序?qū)崟r(shí)反映的變化。
為了發(fā)送電子郵件,使用IFTTT制造商渠道。用戶將把他的電子郵件地址放在文本框中,然后單擊“發(fā)送”按鈕。將觸發(fā)以下塊,IFTTT頻道將收到webhook請(qǐng)求,以將電子郵件發(fā)送到用戶提供的地址。
下面附有完整的源代碼和apk文件。您可以下載源代碼,將其導(dǎo)入您的應(yīng)用程序創(chuàng)建者帳戶并根據(jù)您的要求進(jìn)行修改。
步驟18:結(jié)果
Web服務(wù)的配置將在下一節(jié)中討論。完成配置后,上載固件并打開(kāi)設(shè)備電源。您將從Ubidots設(shè)備選項(xiàng)卡中觀察到以下結(jié)果:
如果您配置任何儀表板,您可以在圖表中觀察數(shù)據(jù),如下圖所示。/p》
空氣質(zhì)量和GPS數(shù)據(jù)作為上下文發(fā)送??諝赓|(zhì)量數(shù)據(jù)背景如下。
您將觀察Firebase控制臺(tái)的以下輸出。這是在webhook中配置的PUT方法。不創(chuàng)建任何行數(shù)據(jù)只是更新。
對(duì)于POST請(qǐng)求,觀察到以下結(jié)果。每次firebase接收新數(shù)據(jù)時(shí),它都會(huì)存儲(chǔ)在新行中。如果您想導(dǎo)出數(shù)據(jù),這可能會(huì)有所幫助。
Zapier將數(shù)據(jù)保存在Google表格中,并且對(duì)于收到的每個(gè)數(shù)據(jù),都會(huì)創(chuàng)建一個(gè)新行。您還可以在工作表上顯示圖表。
Android應(yīng)用程序的視圖如下。
如果用戶發(fā)送完整的數(shù)據(jù)請(qǐng)求,他將收到一封電子郵件并收到電子郵件將如下所示:
-
傳感器
+關(guān)注
關(guān)注
2551文章
51099瀏覽量
753606 -
監(jiān)測(cè)裝置
+關(guān)注
關(guān)注
0文章
220瀏覽量
8639
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論