電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>水位通知器家庭物聯(lián)網(wǎng)開源案例

水位通知器家庭物聯(lián)網(wǎng)開源案例

2022-12-22 | zip | 0.26 MB | 次下載 | 免費(fèi)

資料介紹

描述

所以,我一直渴望在家里做一個(gè)小小的 IoT 項(xiàng)目。我做的最后一件事是一個(gè)小小的“信息輻射器”告訴我們公共汽車離開之前還有多長(zhǎng)時(shí)間(這里)。現(xiàn)在我想做一些有趣和有用的事情。

所以在我們家的地下室里,我們有一個(gè)地?zé)峁┡谩?/font>當(dāng)水變暖并在泵內(nèi)膨脹時(shí),它必須處理它。我們地窖的那部分沒有地漏,所以它把水排到一個(gè)罐子里。當(dāng)它滿了我會(huì)清空它然后放回去。

為了讓我不必定期檢查它是否已滿,我整理了以下解決方案。當(dāng)水位達(dá)到某個(gè)閾值時(shí),我應(yīng)該會(huì)收到一條短信,告訴我時(shí)間到了。

使用的零件

所需零件

1 Particle Photon 微控制器- 一個(gè) arduinoish 微控制器,芯片上有 wifi 和周圍一些簡(jiǎn)潔的云服務(wù),如果你愿意,你可以使用,我認(rèn)為他們讓我的解決方案有點(diǎn)更容易,所以我使用了他們的云。我家里有一個(gè)。

1用于 arduino 的水傳感器- 根據(jù)水位返回不同電壓的便宜簡(jiǎn)單的東西。

1 個(gè)particle.io帳戶 - 用于設(shè)置 webhooks

Particle CLI 工具?——用它來(lái)注冊(cè) webhook 并從設(shè)備獲取數(shù)據(jù)。所以你可能沒有它也能繼續(xù),但我將在本文中使用它。

帶 4 根導(dǎo)線的模塊電纜- 你可以使用任何電纜,我從早期的項(xiàng)目中得到了這種電纜。

焊接裝置 - 您可能可以在不使用夾具或?qū)嶒?yàn)室跨接電纜的情況下使其工作。

不需要但使用過的零件

實(shí)驗(yàn)板 - 您可以使用面包板或?qū)㈦娋€焊接到引腳和其他電線上。

PBC 連接器 - 同樣,您可以將其焊接到引腳上。

收縮管 - 我曾經(jīng)固定一些業(yè)余焊接。

拉鏈領(lǐng)帶 - 只是為了把一些東西放在一起

構(gòu)建硬件

我實(shí)際上使用 Arduino Uno、面包板和一些跨接電纜證明了這個(gè)概念。但是當(dāng)我開始制作“真正的東西”時(shí),我開始將電纜的連接器焊接到水傳感器上。跟蹤顏色!我用紅色表示電源,黑色表示接地,綠色表示信號(hào)(信號(hào)根據(jù)水位提供不同的電壓)。然后我穿上一些收縮塑料來(lái)固定焊接。

?
poYBAGOjtfGAF6mdAACfoEZT6GE73.jpeg
?

我決定在原型電路板上放置一個(gè) PBC 連接器,這樣我就可以簡(jiǎn)單地更改用于水位傳感器的電線的長(zhǎng)度或類型。

?
poYBAGOjtfSAeToKAAEGO2TNTvc68.jpeg
?

所以要澄清布局:

?
pYYBAGOjtfmAGh2JAADV5GRfGys70.jpeg
?

這是我第一次看到粗略的原型。

?
pYYBAGOjtfyAVKVJAAD_MOfMFWk272.png
?

我讓它看起來(lái)更精致了一點(diǎn)。

?
poYBAGOjtgKAexjVAAGBl4FUqRk17.jpeg
?
?
pYYBAGOjthCAa6uGAAHSGqxIyLc41.jpeg
?

軟件

所以這個(gè)解決方案中有幾個(gè)部分。由于 particle.io 有云服務(wù)與他們的設(shè)備一起工作,并且 particle.io 上提供了SDK 。我選擇使用它而不是直接從 Particle Photon 到 Twilio 進(jìn)行 HTTP 調(diào)用,以更快地完成它。下面是解決方案的概述。

?
poYBAGOjthKAKdJKAABOajc2HqY163.png
?

設(shè)置 Twilio

首先,您需要在https://www.twilio.com/上設(shè)置一個(gè) twilio 帳戶。登錄后,您需要存入一些錢才能使用 Twilio。然后你需要獲得一個(gè)啟用短信的電話號(hào)碼。

?
poYBAGOjtheAXJXJAABPuUDLWzg894.png
?

您需要您的 twilio number accounted sidauth token 。

?
pYYBAGOjthmAUHMbAAAsgAg0hg0903.png
?

創(chuàng)建 Webhook

現(xiàn)在,當(dāng)我們要在我們的 Particle.io 帳戶中創(chuàng)建一個(gè) webhook 時(shí),我們將使用 Twilio 信息。粒子 webhook 是一種云服務(wù),充當(dāng)粒子與世界其他地方之間的橋梁。Particle SDK 為這些提供了很好的實(shí)用程序抽象。所以你在你的代碼中所要做的(我們稍后會(huì)看到)就是調(diào)用Particle.publish(“webhook-name”, “message”, 60, PRIVATE); 這有點(diǎn)整潔。

Webhook 文件非常簡(jiǎn)單。

{
 “eventName”: 
 “url”: “https://api.twilio.com/2010-04-01/Accounts//Messages",
 “requestType”: “POST”, 
“auth”: {
 “username”: “”, 
 “password”: “ }, 
 “form”: {
  “From” : “number>”,
  “To” : “<to number>”,
  “Body” : “{{SPARK_EVENT_VALUE}}” 
 }, 
 “mydevices”: true
}

像這樣創(chuàng)建一個(gè)名為 twilio-webhook.json 的文件。

$ particle webhook create twilio-hook.json

Using settings from the file twilio-hook.json
Sending webhook request 
{ 
    uri:/v1/webhooks’, 
    method: ‘POST’, 
    json: { 
        event: ‘twilio’, 
        url: ‘https://api.twilio.com/2010-04-01/Accounts//Messages', 
        deviceid: undefined, 
        requestType: ‘POST’, 
        mydevices: true, 
        eventName: ‘twilio’, 
        auth: { 
            username:’, 
            password:        }, 
        form: { 
            From:’, 
            To:’, 
            Body: ‘{{SPARK_EVENT_VALUE}}’ 
        } 
    }, 
    headers: { 
    Authorization: ‘Bearer 7d90b34725afede88ce0b6ec824712121212121212’ 
    } 
}
Successfully created webhook with ID 573069bd3f3354c212121

現(xiàn)在我們已經(jīng)設(shè)置好了一切,需要一些代碼來(lái)讓它運(yùn)行 :)。所有代碼都可以在https://github.com/nippe/waterlevel-notifier-particleio/tree/blogpost獲得。

設(shè)備上的代碼

首先,我聲明了一些變量和一個(gè)方法。

int sendSms(String command);
const int DELAY_IN_SECONDS = 10*60; // 10 minutes
bool isMessageSent = false;
int waterThreshold = 2880;
int waterLevelPin = A1;
    int waterLevel = 0;

DELAY_IN_SECONDS是檢查水位的頻率。sendSms是調(diào)用 webhook 的方法,waterLevelPin定義了我將水位傳感器連接到哪個(gè)模擬端口以及水位的一些值和跟蹤短信狀態(tài)。接下來(lái),設(shè)置:

void setup() { 
    Particle.variable(“waterLevel”, waterLevel); 
    Particle.function(“sendSms”, sendSms);
    pinMode(waterLevelPin, INPUT); 
    delay(1000);
}

使用Particle.variableParticle.function向 Particle 云服務(wù)公開變量和方法,用于測(cè)試目的。使用pinMode(..)將水位引腳的模式設(shè)置為輸入。

void loop() { 
    getWaterLevel(); 
    checkWaterLevel(); 
    delay(DELAY_IN_SECONDS * 1000);
}

int getWaterLevel() { 
    waterLevel = analogRead(waterLevelPin); 
    return waterLevel;
}

int sendSms(String command) { 
    if(command.length() > 0){ 
        Particle.publish(“twilio”, command, 60, PRIVATE); 
    } 
    return 0;
}

void checkWaterLevel() { 
    int currentLevel = analogRead(waterLevelPin); 

    if(currentLevel > waterThreshold) {   
        if(!isMessageSent){     
            char msg[255];     
            snprintf(msg, sizeof(msg), “Dags att t?mma vatten i k?llarn! Niv?: %d”, waterLevel);
            sendSms(msg);
            isMessageSent = true;   
        } 
    }

    if(isMessageSent && (currentLevel < waterThreshold)) { 
        isMessageSent = false; 
        sendSms(“Du har t?mt ser jag, lysande polarn!”); 
    }

這次的代碼塊更大。getWaterLevel() 獲取值并將其放入全局變量中,這樣我就可以通過粒子 cli 對(duì)其進(jìn)行監(jiān)控。

checkWaterLevel() 進(jìn)行實(shí)際檢查并在當(dāng)前值高于閾值且未發(fā)送消息時(shí)發(fā)送 SMS。

所以沒有火箭科學(xué),而是一個(gè)有趣的小項(xiàng)目。

然后我最終對(duì)它進(jìn)行了一些調(diào)整,添加了一些 LED 和其他東西只是為了好玩。

?
pYYBAGOjthCAa6uGAAHSGqxIyLc41.jpeg
?

?


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評(píng)論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
  2. 1.06 MB  |  532次下載  |  免費(fèi)
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費(fèi)
  5. 3TC358743XBG評(píng)估板參考手冊(cè)
  6. 1.36 MB  |  330次下載  |  免費(fèi)
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費(fèi)
  9. 5元宇宙深度解析—未來(lái)的未來(lái)-風(fēng)口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費(fèi)
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費(fèi)
  13. 7元宇宙底層硬件系列報(bào)告
  14. 13.42 MB  |  182次下載  |  免費(fèi)
  15. 8FP5207XR-G1中文應(yīng)用手冊(cè)
  16. 1.09 MB  |  178次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費(fèi)
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費(fèi)
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費(fèi)
  7. 4開關(guān)電源設(shè)計(jì)實(shí)例指南
  8. 未知  |  21549次下載  |  免費(fèi)
  9. 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實(shí)例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191187次下載  |  免費(fèi)
  13. 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
  14. 158M  |  183279次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)