吴忠躺衫网络科技有限公司

電子發燒友App

硬聲App

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
電子發燒友網>電子資料下載>電子資料>用于PIC IoT和AVR IoT的AWS應用程序

用于PIC IoT和AVR IoT的AWS應用程序

2022-11-25 | zip | 1.54 MB | 次下載 | 免費

資料介紹

描述

如果您可以同時構建您的 IoT 硬件設備原型并構建您的云應用程序會怎樣?好消息。我和我的團隊花了幾個月的時間在從嵌入式到云的旅程中跌跌撞撞。我們陷入了時間陷阱并發現了陷阱,因此您無需這樣做!我們相信我們終于策劃了一種理想的方式來讓您開始開發自己的應用程序。

在GitHub 上查看我們完整的指導之旅

在這個項目中,您將獲得對嵌入式設備(AVR-IoTPIC-IoT板)進行編程以及使用 AWS 和 MQTT 發布/訂閱消息傳遞協議構建云應用程序的實踐經驗。

在本教程結束時,您將能夠從云中的開發板查看按鈕按下信息您還將創建一個應用程序,其中開發板的 LED 被配置為在云接收到有關按鈕按下的信息時閃爍。

您可以使用一個或多個開發板進行跟進。如果您使用兩個或更多,您將獲得特殊待遇——當按下任何一個按鈕時,云應用程序將使每個連接的開發板上的 LED 閃爍也許您可以將一個給朋友,然后將閃爍的 LED 用作秘密消息系統?

pYYBAGOAH92AJbR3AACSB2YTcz4473.png
本項目中的數據流圖解
?

在你開始之前

  • 查看 IoT 板附帶的沙盒演示,方法是將其連接到您的計算機,打開CURIOSITY驅動器,然后單擊CLICK-ME.HTM文件。
  • 下載并安裝最新版本的MPLAB X IDE。
  • 下載并安裝最新版本的XC8 (AVR-IoT) 和/或XC16 (PIC-IoT) 編譯器。
如果您不熟悉 MPLAB X 集成開發人員環境 (IDE),可以查看以下指南:MPLAB? X IDE 和 Microchip 工具入門

第 1 步:配置您的 IoT 板

如果您尚未從沙盒遷移到私有 AWS 賬戶,則需要使用 Microchip 的 IoT 配置工具來完成。如果您不確定,您可能還沒有 - 請查看本教程以設置您的板到云連接。

上述教程中,物聯網板是使用物聯網供應工具供應的。這會生成一個 AWS IoT Core 策略,用于確定董事會在與 AWS 資源交互時擁有哪些權限。默認情況下,此策略配置為僅授予 IoT 板發布和訂閱包含板的事物名稱的 MQTT 主題的權利。

在這個項目中,我們將通過主題發送和接收 MQTT 消息buttonPresses因此,我們必須擴展權限以包括此主題:

  • 在 AWS 中打開IoT Core模塊,然后在左側菜單中選擇Secure -> Policies 。
  • 打開zt_policy并向下滾動到Policy 文檔部分。
  • 單擊編輯策略文檔并執行如下所述的更改:
  • 更新iot:Publishiot:Receive權限以包含buttonPresses主題,如下所示。請注意,############以下代碼中是您唯一的 AWS 資源標識符的占位符。請記住將其替換為原始保單文檔中的標識符。
{
  "Effect": "Allow",
  "Action": [
    "iot:Publish",
    "iot:Receive"
  ],
  "Resource": [
    "arn:aws:iot:us-east-2:############:topic/${iot:Connection.Thing.ThingName}/*",
    "arn:aws:iot:us-east-2:############:topic/$aws/things/${iot:Connection.Thing.ThingName}/shadow/*",
    "arn:aws:iot:us-east-2:############:topic/buttonPresses"
  ]
},
  • 更新iot:Publishiot:Receive權限以包含buttonPresses主題,如下所示。請注意,############以下代碼中是您唯一的 AWS 資源標識符的占位符。請記住將其替換為原始保單文檔中的標識符。
{
  "Effect": "Allow",
  "Action": [
    "iot:Subscribe"
  ],
  "Resource": [
    "arn:aws:iot:us-east-2:############:topicfilter/${iot:Connection.Thing.ThingName}/*",
    "arn:aws:iot:us-east-2:############:topicfilter/$aws/things/${iot:Connection.Thing.ThingName}/shadow/*",
    "arn:aws:iot:us-east-2:############:topicfilter/buttonPresses"
  ]
},
  • 單擊另存為新版本

權限現已更新,板應該能夠通過buttonPressesMQTT 主題發送和接收數據。

第 2 步:下載預裝固件的副本

我們的應用程序的起點是與您設備的微控制器系列兼容的未修改固件副本:

下載正確的存儲庫并在 MPLAB X 中打開PICIoT.X和/或AVRIoT.X項目。

我們將在接下來的幾個步驟中對固件進行一些修改。如果遇到困難,可以在 GitHub 上查看這些完全修改后的固件版本:

第 3 步:向云端發送消息

我們希望在按下按鈕時向 AWS 發送一條消息,我們將使用中斷來檢測SW0

AVR-IoT 板的程序的第一部分與 PIC-IoT 板的程序有些不同。請按照以下適用于您設備的微控制器系列的程序進行操作:

AVR-IoT 板卡流程

在 MPLAB X 項目中,打開(Source Files -> MCC Generated Files)并在函數調用application_manager.c之后添加以下代碼:SYSTEM_Initialize()application_init

SW0_EnableInterruptForFallingEdge();
PORTF_SW0_SetInterruptHandler(sendButtonPressToCloud);

第一行為AVR-IoT 板上的按鈕啟用下降沿中斷檢測,然后在第二行上分配此中斷的函數處理程序。SW0

PIC-IoT板的程序

pin_manager.c中,執行以下編輯:

  • 在函數中,為按鈕(連接到 RA7)PIN_MANAGER_initialize啟用中斷并通過包括以下兩行來清除其中斷標志:SW0
IOCNAbits.IOCNA7 = 1;     //Pin : RA7
IOCFAbits.IOCFA7 = 0;     //Pin : RA7
  • 在變量下面添加另一個變量INT_InterruptHandler來存儲SW0硬件按鈕的中斷處理程序:
void (*SW0_InterruptHandler)(void) = NULL;
  • 添加一個設置我們剛剛創建的變量的函數(將它放在INT_SetInterruptHandler函數之后):
void SW0_SetInterruptHandler(void (* InterruptHandler)(void))
{
    IEC1bits.IOCIE = 0; //Disable IOCI interrupt
    SW0_InterruptHandler = InterruptHandler;
    IEC1bits.IOCIE = 1; //Enable IOCI interrupt
}

修改_IOCInterrupt中斷服務程序以處理SW0按鈕按下(中斷服務程序位于 155 行附近pin_manager.c)。下面提供了完全修改的中斷服務程序。要么全部復制并替換_IOCInterrupt,要么將第二個嵌套if語句添加到您的項目中。

void __attribute__ (( interrupt, no_auto_psv )) _IOCInterrupt ( void )
{
    if(IFS1bits.IOCIF == 1)
    {
        // Clear the flag
        IFS1bits.IOCIF = 0;
        if(IOCFAbits.IOCFA12 == 1)
        {
            IOCFAbits.IOCFA12 = 0;  //Clear flag for Pin - RA12
            if(INT_InterruptHandler)
            {
                INT_InterruptHandler();
            }
        }

        // Handle SW0 button presses
        if(IOCFAbits.IOCFA7 == 1)
        {
            IOCFAbits.IOCFA7 = 0;  //Clear flag for Pin - RA7
            if(SW0_InterruptHandler)
            {
                SW0_InterruptHandler();
            }
        }
    }
}

pin_manager.h中,添加SW0_SetInterruptHandler我們剛剛添加的函數的聲明,使其在其他文件中可用,例如在INT_SetInterruptHandler函數聲明之后:

void SW0_SetInterruptHandler(void (* InterruptHandler)(void));

在中,函數調用之后application_manager.c設置中斷處理程序SW0SYSTEM_Initialize()application_init

// Set interrupt handler for button presses
SW0_SetInterruptHandler(sendButtonPressToCloud);

AVR-IoT 和 PIC-IoT 板的程序

上述過程確保只要按下 PIC-IoT 或 AVR-IoT 板上的按鈕,sendButtonPressToCloud就會調用該函數。SW0

IoT 板使用 MQTT 協議與 AWS 通信,該協議使用發布-訂閱模型。消息不直接在設備之間發送,而是發布到特定主題。設備可以訂閱各種主題,AWS 會跟蹤消息的分發方式。

讓我們聲明一個變量來跟蹤我們將使用的 MQTT 主題。將以下聲明添加到application_manager.c(例如,在mqttSubscribeTopic變量聲明下方):

char tutorialMqttTopic[SUBSCRIBE_TOPIC_SIZE];

通過添加以下代碼來實現上述函數處理程序application_manager.c

static void sendButtonPressToCloud(){
    // Ensure that we have a valid cloud connection
    if (shared_networking_params.haveAPConnection)
    {
        static char tutorialPayload[PAYLOAD_SIZE];
        int tutorialLen = 0;

        // Set MQTT topic
        memset((void*)tutorialMqttTopic, 0, sizeof(tutorialMqttTopic));
        sprintf(tutorialMqttTopic, "buttonPresses");

        // Construct payload
        tutorialLen = sprintf(tutorialPayload,"{"thing_name":"%s"}", cid);

        // Publish data to cloud
        CLOUD_publishData((uint8_t*)tutorialMqttTopic ,(uint8_t*)tutorialPayload, tutorialLen);
    }
}

該函數與sendToCloud我們之前提到的函數非常相似,會將 MQTT 消息發布到buttonPresses主題。消息的內容將是一個 JSON 對象,其中包含發送消息的事物/設備的名稱。

編譯修改的項目并使用 MPLAB X 將其編程到器件上。這通過單擊 MPLAB X 工具欄上的Make and Program Device Main Project按鈕來完成。

驗證消息是否已成功發送到 AWS

當設備編程成功后,讓我們確保我們在 AWS 中接收到消息:

  • 登錄 AWS 管理控制臺并選擇 IoT Core 服務。
  • 在左側菜單中選擇測試
  • 訂閱主題字段中,輸入buttonPresses
  • 單擊訂閱主題按鈕。
  • 按下SW0板上的按鍵,觀察按鍵按下在云端注冊成功。
驗證是否已在 AWS IoT Core 中成功接收消息
?

第 4 步:接收來自云端的消息

現在我們已經成功地修改了我們的項目以向自定義主題發送消息,我們還必須找到訂閱該主題的方法:

  • 更改NUM_TOPICS_SUBSCRIBEin mqtt_config.h(Header Files -> MCC Generated Files -> config) 的定義,以允許最多同時訂閱兩個 MQTT 主題:
#define NUM_TOPICS_SUBSCRIBE 2
  • 編輯subscribeToCloud函數以包含對該主題application_manager.c的訂閱。buttonPresses下面提供了完全修改后的功能。復制并替換整個subscribeToCloud函數,或者在 MPLAB X 項目中添加以下代碼的最后兩行。
static void subscribeToCloud(void)
{
   sprintf(mqttSubscribeTopic, "$aws/things/%s/shadow/update/delta", cid);
   CLOUD_registerSubscription((uint8_t*)mqttSubscribeTopic,receivedFromCloud);
   sprintf(tutorialMqttTopic, "buttonPresses");
   CLOUD_registerSubscription((uint8_t*)tutorialMqttTopic,receiveButtonPressFromCloud);
}
CLOUD_registerSubscription函數的第二個參數是一個處理程序,它指示接收到指定主題的消息時將運行哪個函數。因此,我們需要實現該receiveButtonPressFromCloud函數來處理任何接收到的消息。
  • 將以下函數定義添加到application_manager.c(函數上方的某個subscribeToCloud位置)以使設備的 LED 在收到消息時閃爍兩次:
static void receiveButtonPressFromCloud(uint8_t *topic, uint8_t *payload){
    LED_test();
    LED_test();
}
  • 編譯項目并在 MPLAB X 中對器件進行編程。如果您有多個可用的 AVR-IoT 或 PIC-IoT 器件,您可以嘗試使用同一個項目對所有器件進行編程。
如果您同時使用 AVR-IoTPIC-IoT 設備要同時使用來自兩個不同設備系列的設備,有必要分別為 GitHub 上的 AVR-IoT 和 PIC-IoT 存儲庫完成本教程,并使用兼容的固件。

您的設備現在應該已正確配置。如果SW0按下任何已配置 IoT 套件上的按鈕,所有已配置 IoT 套件上的 LED 應閃爍兩次。

成功!按下 SW0 按鈕時,兩個板都在閃爍!
?

下一步去哪里?

有關如何將 IoT 板與 AWS 結合使用的更多教程,請查看GitHub 上的適用于 AWS 的 Microchip IoT 開發人員指南


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

評論

查看更多

下載排行

本周

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

本月

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

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費
绍兴市| 百家乐公式分析| 澳门百家乐官网网站| 菲律宾新利国际| 金龍百家乐官网的玩法技巧和规则| 吕百家乐赢钱律| 博士娱乐| 皇冠足球| 阴宅24层手机罗盘| 德州扑克庄家| 爱拼百家乐官网的玩法技巧和规则 | 百家乐官网闲拉长龙| 至尊百家乐年代| 方正县| 百家乐官网巴黎| 新百家乐的玩法技巧和规则| 息烽县| 百家乐金海岸| 博九网百家乐官网游戏| 百家乐游戏作弊| 百家乐官网出庄概率| 百家乐真人游戏娱乐场| 百家乐大路小路三珠路| 百家乐官网实时路单| 百家乐韩泰阁| 澳门百家乐官网十大缆| 太阳城雨伞| 互联网百家乐官网的玩法技巧和规则 | 涂山百家乐官网的玩法技巧和规则 | 全讯网3344666| 黄金百家乐官网的玩法技巧和规则 | 百家乐官网长龙如何判断| 免费百家乐分析工具| 百家乐官网赌博技巧大全| 大发888官方正版网| 顶尖百家乐开户| 百家乐官网扑克牌耙| 威尼斯人娱乐棋牌是真的吗| 立博百家乐官网的玩法技巧和规则| 门源| 雅加达百家乐的玩法技巧和规则|