操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊


    rduino IDE 基礎(chǔ)配置

    第一步:Seeeduino Lotus USB 轉(zhuǎn)串口驅(qū)動(dòng)安裝

    注意這里使用的是 Seeeduino lotus V1.1 以上版本,采用的是 CP2102N USB 轉(zhuǎn)串口

    芯片,需要安裝相應(yīng)的驅(qū)動(dòng)程序,該驅(qū)動(dòng)程序支持了 Windows,MacOS 和 Linux 系

    統(tǒng),小伙伴不用因操作系統(tǒng)而煩惱了。


    下載鏈接:

    Seeeduino lotus V1.0 以前版本請使用 CH341 驅(qū)動(dòng):

    https://github.com/SeeedDocument/Seeeduino_Lotus/raw/master/res/CH341

    SER.EXE

    Seeeduino lotus V1.1 以后版本 CP2102N 芯片驅(qū)動(dòng)官方網(wǎng)站:

    https://www.silabs.com/products/development-tools/software/usb-to-uart-

    bridge-vcp-drivers


    Window 7/8/8.1

    下載鏈接

    https://www.silabs.com/documents/public/software/CP210x_Windows_Drivers.zip


    Window 10

    下載鏈接:

    https://www.silabs.com/documents/public/software/CP210x_Universal_Windows_Driver.zip

    MacOS

    下載鏈接

    https://www.silabs.com/documents/public/software/Mac_OSX_VCP_Driver.zip


    安裝驅(qū)動(dòng)

    Windows

    解壓縮下載的驅(qū)動(dòng)文件,打開安裝包選擇適合自己系統(tǒng)的安裝包這里選擇 64 位,并安




    Windows 安裝驅(qū)動(dòng)界面

    Mac OS

    雙擊打開安裝包,并安流程安裝

    MacOS 安裝驅(qū)動(dòng)界面


    第二步:下載 Arduino IDE

    下載地址:https://www.arduino.cc/en/Main/Software

    在官方網(wǎng)站軟件頁面選擇下載并安裝適合你系統(tǒng)的 Arduino IDE。

    選擇下載 Arduino IDE 頁面


    第三步:添加配置 Seeeduino lotus 開發(fā)板數(shù)據(jù)庫

    1. 打開目錄菜單 Arduino | Preferences, 在 settings 頁面里找到 Additional

    Boards Manager URLS,后面的文本框中復(fù)制添加下面數(shù)據(jù)庫地址,然后點(diǎn)擊

    ok。

    數(shù)據(jù)庫地址:https://raw.githubusercontent.com/Seeed-

    Studio/Seeed_Platform/master/package_seeeduino_boards_index.json


    在 Arduino IDE 添加 Seeeduino 數(shù)據(jù)庫


    2. 打開目錄菜單 Tools | Board: | Boards Manager, 在 Boards Manager 窗口的

    搜索欄中輸入 Seeedunio AVR,如果有相應(yīng)的選項(xiàng)出現(xiàn)請點(diǎn)擊"install"。注

    意:如果未有相應(yīng)的選項(xiàng)出現(xiàn)請重復(fù)上一步,并確保輸入的數(shù)據(jù)庫地址是正確

    的。

    在 Boards Manager 中下載 Seeeduino AVR


    3. 打開目錄菜單 Tools | Board: 在二級菜單中查看是否有 Seeeduino AVR

    Boards 選項(xiàng)欄如圖表 17。并選擇相應(yīng)的開發(fā)板,這里我們應(yīng)選擇 Seeeduino

    Lotus。


    選擇開發(fā)板方法


    第四步:連接 Seeeduino lotus

    請用 Micro-USB 線將 Seeeduino lotus 和電腦連接,確保 Seeeduino lotus 通電并

    點(diǎn)亮電源 LED。

    用 Micro-USB 連接 Seeduino Lotus 和電腦


    第五步:配置開發(fā)環(huán)境

    首先按照圖表,在"Tools(工具)| board(開發(fā)板)"中確定選擇"Seeeduino

    lotus"。

    在"Tools | Ports(端口)"選項(xiàng)選擇連接 Seeeduino lotus 的串口端口。應(yīng)該是帶

    有"SLAB_USB"字樣的選項(xiàng),如果怕選擇錯(cuò)誤可以先將開發(fā)版與電腦連接,點(diǎn)開

    "Tools | Ports(端口)"選項(xiàng),在二級菜單中查看選項(xiàng)內(nèi)容,然后將開發(fā)版與電腦

    斷開連接再次查看端口選項(xiàng)內(nèi)容,如果有缺失項(xiàng),那么這個(gè)缺失項(xiàng)就是應(yīng)該選擇的端

    口了,那么現(xiàn)在重新連接開發(fā)版然后選擇相應(yīng)端口,如圖表。注意:如果沒有發(fā)現(xiàn)

    缺失項(xiàng)說明驅(qū)動(dòng)器沒有成功安裝,將重新按照步驟一下載安裝驅(qū)動(dòng)程序,確保安裝無

    誤。

    選擇數(shù)據(jù)傳輸端口方法


    在"Tools | programmer"中選擇"AVR ISP"。

    選擇 programmer"AVR ISP"


    Blink 閃爍 LED 示例

    完成上面的基礎(chǔ)配置,接下來我們可以通過 Arduino IDE 自帶的范例代碼對我們的開

    發(fā)板進(jìn)行編程了。注意:一定要按照上面的配置完成無誤后再進(jìn)行這一步。

    導(dǎo)入 blink 范例

    打開"File | Examples | 01 Basics | Blink "在新的對話框中你將看到關(guān)于 blink 范例


    導(dǎo)入 blink 范例

    然后點(diǎn)擊左上角向右箭頭的按鈕上傳代碼。


    這時(shí)在下面的 log 窗口中會(huì)顯示"avrdude done. Thank you". 證明上傳成功。

    上傳代碼成功提示


    這時(shí)你會(huì)發(fā)現(xiàn)在 seeeduino Lotus 板上自帶的 LED 燈會(huì)以一秒的頻率閃爍。

    Blink 范例結(jié)果演示呈現(xiàn)

    接下來我們向大家解釋一下代碼中的每一行的意義:

    "void setup()"表示只在通電或觸發(fā)重置按鈕時(shí)運(yùn)行一次,也就是初始化設(shè)置。

    void setup() {

    }

    設(shè)置引腳的呈現(xiàn)方式,本例中設(shè)置內(nèi)部 LED 引腳為輸出模式(內(nèi)部 LED 引腳為引腳

    13)。

    pinMode(LED_BUILTIN, OUTPUT);

    "void loop()"表示在運(yùn)行完初始化設(shè)置后無限循環(huán)運(yùn)行內(nèi)部程序。

    void loop() {

    }

    "digitalWrite()"表示數(shù)字寫入,此處把內(nèi)部 LED 引腳設(shè)為打開,即邏輯電路高電平;

    同樣在后面關(guān)閉 LED 的設(shè)置,即把內(nèi)部 LED 引腳數(shù)字寫入邏輯電路低電平。

    digitalWrite(LED_BUILTIN, HIGH);

    digitalWrite(LED_BUILTIN, LOW);

    "delay() "表示暫停,括號中的數(shù)值表示等待的秒數(shù)單位為微秒。案例中表示開啟或

    關(guān)閉時(shí)等待一秒鐘。

    delay(1000);

    期給大家?guī)鞟rduino UNO 板和電腦串口通訊實(shí)現(xiàn)實(shí)驗(yàn),實(shí)驗(yàn)?zāi)康目梢詫?shí)現(xiàn)UNO板對電腦進(jìn)行數(shù)據(jù)傳輸

    器材和接線

    我們所需的器材(一塊UNO板,一根編程線)即可

    UNO板和編程線

    將編程線的方頭連接UNO板

    連接UNO板

    USB頭連接電腦的USB接口

    連接電腦

    如果我們是第一次使用的話,我們需要確定兩件事,首先要在軟件中確定板子的型號,通常軟件默認(rèn)的就是UNO版(點(diǎn)擊工具-開發(fā)版)

    選擇板子型號

    接著就是UNO板連接電腦的端口號,板子連接上電腦之后端口會(huì)自動(dòng)匹配(不同的電腦端口號,信息不同,要根據(jù)電腦具體情況選擇)

    選擇端口

    位讀者朋友提出了一個(gè)很實(shí)際的問題:

    能用esp8266弄一個(gè)遠(yuǎn)程開電腦的教程嗎?需要設(shè)置路由器嗎?公司路由器設(shè)置不了。”

    當(dāng)然可以!而且很簡單~

    ESP8266是一個(gè)非常適合用于物聯(lián)網(wǎng)和家庭智能項(xiàng)目的帶wifi模塊的單片機(jī)。它的售價(jià)非常低廉,只需大約10塊

    這個(gè)問題可以拆解成兩部分:

    • 問題一:在無法設(shè)置路由器的情況下,遠(yuǎn)程訪問內(nèi)網(wǎng)設(shè)備。
    • 問題二:通過同局域網(wǎng)下的設(shè)備發(fā)送指令,控制電腦開機(jī)。

    問題一:訪問內(nèi)網(wǎng)設(shè)備

    1. 如果寬帶有公網(wǎng)ip,并且有配置路由器的權(quán)限的話,可以直接在路由器上設(shè)置端口轉(zhuǎn)發(fā)等,可以很方便的訪問內(nèi)網(wǎng)設(shè)備。
    2. 如果無法設(shè)置路由器,例如上面的這位朋友的情況,則需要做內(nèi)網(wǎng)穿透或者類似的操作,可以通過第三方平臺或者自有的云服務(wù)器等來控制內(nèi)網(wǎng)設(shè)備。

    問題二:控制電腦開機(jī)

    可以使用WOL(Wake on Lan)網(wǎng)絡(luò)喚醒功能。

    1. 首先需要進(jìn)入電腦主板的BIOS設(shè)置,開啟WOL功能,根據(jù)主板的不同,這個(gè)功能還有可能叫PCIE設(shè)備喚醒(因?yàn)榫W(wǎng)卡也是經(jīng)PCIE通道傳輸數(shù)據(jù)的,也算是PCIE設(shè)備)等。開啟了該功能后,即使電腦處于關(guān)機(jī)狀態(tài),主板也會(huì)帶有微弱電流,網(wǎng)卡會(huì)低功耗運(yùn)行,檢測本地網(wǎng)絡(luò)中是否有相關(guān)開機(jī)信號。
    2. 利用內(nèi)網(wǎng)設(shè)備發(fā)出一個(gè)稱之為魔法包(Magic Packet)的信號,該魔法包內(nèi)含有目標(biāo)設(shè)備的網(wǎng)卡MAC地址,可以唯一定位到目標(biāo)設(shè)備。目標(biāo)設(shè)備接受到信號后就會(huì)開機(jī)啟動(dòng)。


    這里我們就利用阿里云物聯(lián)網(wǎng)平臺來控制內(nèi)網(wǎng)設(shè)備,再利用ESP8266 NodeMCU這個(gè)性價(jià)比極高的單片機(jī)發(fā)出WOL網(wǎng)絡(luò)喚醒的魔法包來啟動(dòng)目標(biāo)電腦~

    ESP8266的介紹和入門指南可以參見我上次寫的這篇文章:十塊錢入門物聯(lián)網(wǎng)!ESP8266新手指南


    下面我們就看看具體怎么設(shè)置吧~


    一、配置阿里云物聯(lián)網(wǎng)平臺

    首先進(jìn)入阿里云物聯(lián)網(wǎng)平臺的控制臺首頁,沒有賬號的朋友需要先注冊賬號。

    點(diǎn)擊設(shè)備-產(chǎn)品-創(chuàng)建產(chǎn)品。

    給新建的產(chǎn)品起一個(gè)名字,然后選擇自定義品類,并設(shè)置為直連設(shè)備,其他設(shè)置如圖:

    然后點(diǎn)擊進(jìn)入剛才新建成功的產(chǎn)品內(nèi),點(diǎn)擊產(chǎn)品-Topic類列表-自定義Topic-定義Top類,來新建一個(gè)Topic類。

    在新建Topic類的對話框中,設(shè)備權(quán)限選擇“訂閱”,名字輸入“device_boot”。選訂閱權(quán)限是因?yàn)槲覀兊脑O(shè)備只需要接受消息就可以了,不需要發(fā)送消息。后面我們需要用到這個(gè)topic來給我們的esp8266發(fā)送消息來控制電腦開機(jī)~

    有了產(chǎn)品之后,我們還需要給產(chǎn)品添加設(shè)備:點(diǎn)擊設(shè)備-添加設(shè)備。

    在添加設(shè)備對話框,選擇剛才新建的產(chǎn)品,然后給設(shè)備起一個(gè)名字。

    新建完設(shè)備之后,點(diǎn)擊剛才新建出的設(shè)備的查看按鈕來進(jìn)入設(shè)備詳情頁。

    進(jìn)入設(shè)備詳情頁后,點(diǎn)擊DeviceSecret的查看按鈕,會(huì)得到3個(gè)碼,把他們復(fù)制出來并保存好,后面我們會(huì)用到這三個(gè)碼來把esp8266連接到阿里云物聯(lián)網(wǎng)平臺。


    二、打開電腦主板的WOL網(wǎng)絡(luò)喚醒功能

    對于需要被網(wǎng)絡(luò)喚醒的電腦,按開機(jī)鍵開機(jī),然后不停地點(diǎn)擊進(jìn)入BIOS設(shè)置的相關(guān)熱鍵。進(jìn)入BIOS設(shè)置的熱鍵一般為DEL, F12等。進(jìn)入相關(guān)設(shè)置頁面后,打開網(wǎng)絡(luò)喚醒(Wake on Lan)功能,或者叫做PCIE設(shè)備喚醒(Wake on PCIE Devices)。

    這樣即使在電腦關(guān)機(jī)之后,只要電源線和網(wǎng)線沒有拔掉,電腦接受到其他內(nèi)網(wǎng)設(shè)備(例如ESP8266)發(fā)出的的WOL信號,就會(huì)開機(jī)了!

    另外,為了定位需要被喚醒的電腦,我們需要獲取目標(biāo)電腦的網(wǎng)卡MAC地址,以windows系統(tǒng)為例:

    按win鍵+R,輸入cmd,回車

    然后,輸入ipconfig /all,回車,圈出的就是該機(jī)器的網(wǎng)卡MAC地址


    三、 使用Arduino IDE上傳代碼到ESP8266

    首先參照我上次寫的ESP8266新手指南,設(shè)置好基本開發(fā)環(huán)境,這里不再贅述:

    十塊錢入門物聯(lián)網(wǎng)!ESP8266新手指南

    用Arduino IDE點(diǎn)擊.ino文件打開相關(guān)代碼(具體代碼包和用到的庫和工具我會(huì)打包附于文后):

    /**
     * Wake on Lan using Aliyun IOT & ESP8266.
     * 通過ESP8266 NodeMCU和阿里云IOT平臺實(shí)現(xiàn)對內(nèi)網(wǎng)主機(jī)的網(wǎng)絡(luò)喚醒(WOL)
     * 
     * 零度橙子OrangeZero Copyright @ 2020
     */
    #include <ESP8266WiFi.h>
    #include <WiFiUDP.h>
    #include <PubSubClient.h>  // !!! set MQTT_MAX_PACKET_SIZE=256; MQTT_KEEPALIVE=60 in PubSubClient.h due to restriction in Aliyun IOT mqtt
    #include <WakeOnLan.h>
    
    #include "aliyun_mqtt.h" // https://github.com/legenddcr/aliyun-mqtt-arduino
    
    #define WIFI_SSID        "ssid"// >>> 替換為自己的wifi名稱::ESP8266只支持2.4G的wifi,不支持5G頻段的wifi
    #define WIFI_PASSWD      "pwd"// >>> 替換為自己的wifi密碼
    
    #define PRODUCT_KEY      "a1G8xxxxxx" // >>> 替換為自己阿里云iot的PRODUCT_KEY
    #define DEVICE_NAME      "dev1" // >>> 替換為自己的阿里云的DEVICE_NAME
    #define DEVICE_SECRET    "xxxxxxxxxxxxxxxxxxxxxxxx"// >>> 替換為自己阿里云的DEVICE_SECRET
    
    #define DEV_VERSION       "0.0.1"        //固件版本信息
    #define ALINK_BODY_FORMAT         "{\"id\":\"123\",\"version\":\"1.0\",\"method\":\"%s\",\"params\":%s}"
    #define ALINK_TOPIC_PROP_POST     "/sys/" PRODUCT_KEY "/" DEVICE_NAME "/thing/event/property/post"
    #define ALINK_TOPIC_PROP_POSTRSP  "/sys/" PRODUCT_KEY "/" DEVICE_NAME "/thing/event/property/post_reply"
    #define ALINK_TOPIC_PROP_SET      "/sys/" PRODUCT_KEY "/" DEVICE_NAME "/thing/service/property/set"
    #define ALINK_METHOD_PROP_POST    "thing.event.property.post"
    #define ALINK_TOPIC_DEV_INFO      "/ota/device/inform/" PRODUCT_KEY "/" DEVICE_NAME ""    
    #define ALINK_VERSION_FROMA      "{\"id\": 123,\"params\": {\"version\": \"%s\"}}"
    
    #define ALINK_TOPIC_DEVICE_BOOT      PRODUCT_KEY "/" DEVICE_NAME "/user/device_boot"
    
    const char *MACAddress="04:D9:F5:83:03:EF";  // >>> 替換成需要被喚醒的機(jī)器的MAC地址
    IPAddress computer_ip(255, 255, 255, 255);
    unsigned long lastMs=0;
    
    WiFiClient   espClient;
    PubSubClient mqttClient(espClient);
    WiFiUDP UDP;
    WakeOnLan WOL(UDP);
    
    void init_wifi(const char *ssid, const char *password)
    {
        WiFi.mode(WIFI_STA);
        WiFi.begin(ssid, password);
        while (WiFi.status() !=WL_CONNECTED)
        {
            Serial.println("WiFi does not connect, try again ...");
            delay(500);
        }
    
        Serial.println("Wifi is connected.");
        Serial.println("IP address: ");
        Serial.println(WiFi.localIP());
    }
    
    
    void mqtt_callback(char *topic, byte *payload, unsigned int length)
    {
        Serial.print("Message arrived [");
        Serial.print(topic);
        Serial.print("] ");
        payload[length]='\0';
        Serial.println((char *)payload);
    
        if (strstr(topic, ALINK_TOPIC_DEVICE_BOOT)) {
            Serial.print("sending WOL magic packet to: ");
            Serial.println(MACAddress);
            WOL.sendMagicPacket(MACAddress);
        }
    }
    
    void mqtt_version_post()
    {
        char param[512];
        sprintf(param, "{\"id\": 123,\"params\": {\"version\": \"%s\"}}", DEV_VERSION);
        Serial.println(param);
        mqttClient.publish(ALINK_TOPIC_DEV_INFO, param);
    }
    
    void mqtt_check_connect()
    {
        Serial.println("checking mqtt connection...");
        while (!mqttClient.connected())
        {
            while (connect_aliyun_mqtt(mqttClient, PRODUCT_KEY, DEVICE_NAME, DEVICE_SECRET))
            {
                Serial.println("MQTT connect succeed!");
                mqttClient.subscribe(ALINK_TOPIC_PROP_SET);
                mqttClient.subscribe(ALINK_TOPIC_DEVICE_BOOT);
                
                Serial.println("subscribe done");
                mqtt_version_post();
            }
        }
        
    }
    
    void setup()
    {
        /* initialize serial for debugging */
        Serial.begin(115200);
        Serial.println("Demo Start");
        init_wifi(WIFI_SSID, WIFI_PASSWD);
        mqttClient.setCallback(mqtt_callback);
    }
    
    // the loop function runs over and over again forever
    void loop()
    {
        if (millis() - lastMs >=20000)
        {
            lastMs=millis();
            mqtt_check_connect();
        }
    
        mqttClient.loop();
    
        unsigned int WAIT_MS=2000;
        delay(WAIT_MS); // ms
        //Serial.println(millis() / WAIT_MS);
    }

    注意,代碼需要替換三處地方:

    • wifi名稱和密碼
    • 從阿里云物聯(lián)網(wǎng)平臺獲取到的你的三個(gè)碼
    • 需要被網(wǎng)絡(luò)喚醒的電腦主機(jī)的MAC地址

    需要額外安裝的依賴庫有(具體用到的庫我會(huì)打包附于文后):

    • Crypto:用于阿里云物聯(lián)網(wǎng)平臺通訊時(shí)的加密解密
    • PubSubClient:用于通過MQTT協(xié)議于阿里云物聯(lián)網(wǎng)平臺通訊
    • WakeOnLan:用于給目標(biāo)機(jī)器發(fā)送Magic Packet來實(shí)現(xiàn)網(wǎng)絡(luò)喚醒

    大家可以通過arduino IDE的包管理器來安裝這些包,如果網(wǎng)絡(luò)不好下不動(dòng)的話,也可以下載我打包好的zip包,再導(dǎo)入到arduino IDE。

    需要注意的是,由于阿里云物聯(lián)網(wǎng)平臺的MQTT協(xié)議的限制,PubSubClient.h文件內(nèi)定義的MQTT_MAX_PACKET_SIZE需要設(shè)置為256,MQTT_KEEPALIVE需要設(shè)置為60。不然于阿里云物聯(lián)網(wǎng)平臺的通訊會(huì)報(bào)錯(cuò)。從arduino IDE下載PubSubClient庫的朋友需要修改一下這兩個(gè)值。使用我給的zip包的朋友,不需要額外修改了,因?yàn)槲乙呀?jīng)修改好了。

    點(diǎn)擊按鈕上傳代碼到ESP8266,并等待上傳完畢

    打開arduino IDE中的,工具-串口監(jiān)視器,確認(rèn)傳輸速率為115200波特。查看串口調(diào)試信息,確認(rèn)程序運(yùn)行正常。

    四、遠(yuǎn)程啟動(dòng)電腦

    接下來,我們只需到阿里云物聯(lián)網(wǎng)平臺,點(diǎn)擊之前創(chuàng)建的設(shè)備,然后找到自定義Topic,找到我們之前新建的Topic:device_boot,點(diǎn)擊發(fā)布消息。

    在新建的對話框中,我們就可以給我們的ESP8266發(fā)送消息了!

    • Qos選1:代表這個(gè)消息至少會(huì)被送達(dá)一次,可以確保我們的啟動(dòng)機(jī)器的消息被ESP8266接受到
    • 消息內(nèi)容隨便填就可以,因?yàn)楦鶕?jù)我們的代碼,ESP8266只要收到device_boot這個(gè)topic的消息就會(huì)只需WOL網(wǎng)絡(luò)喚醒的代碼


    點(diǎn)擊確認(rèn)發(fā)送消息之后,我們可以通過串口監(jiān)視器看到,WOL信號已經(jīng)發(fā)出。而且內(nèi)網(wǎng)的目標(biāo)電腦也開機(jī)了!


    五、小結(jié)

    以后,只要ESP8266保持通電,它就會(huì)自動(dòng)連接阿里云物聯(lián)網(wǎng)平臺。我們就可以隨時(shí)隨地通過阿里云物聯(lián)網(wǎng)平臺的控制臺來遠(yuǎn)程啟動(dòng)內(nèi)網(wǎng)的電腦了!

    有興趣的同學(xué)甚至可以利用阿里云物聯(lián)網(wǎng)平臺制作一個(gè)好看的遠(yuǎn)程開機(jī)界面或者是在家里遠(yuǎn)程開啟公司電腦的實(shí)體按鍵~

    大家還有什么想要做的物聯(lián)網(wǎng)或者智能家居項(xiàng)目呢?在下面留言告訴我吧~


    我是零度橙子,科技達(dá)人,谷歌認(rèn)證云計(jì)算架構(gòu)師,AWS認(rèn)證devops專家,歡迎大家關(guān)注我,了解有用有趣的科技知識~

網(wǎng)站首頁   |    關(guān)于我們   |    公司新聞   |    產(chǎn)品方案   |    用戶案例   |    售后服務(wù)   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區(qū)    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權(quán)所有