91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

3天內(nèi)不再提示

ESP8266純串口透?jìng)?,助力設(shè)備上云端

Q4MP_gh_c472c21 ? 來(lái)源:嵌入式ARM ? 作者:嵌入式ARM ? 2021-02-10 17:51 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

項(xiàng)目有些久遠(yuǎn),前年的機(jī)器人上需要的功能,當(dāng)時(shí)是需要將STM32上的數(shù)據(jù)上傳到服務(wù)器,比如機(jī)器人的速度,行駛距離,是否在拍照等等。便于管理者在PC或者手機(jī)上了解機(jī)器人的工作狀態(tài),同時(shí)可以遠(yuǎn)程下發(fā)指令給機(jī)器人,控制其完成相應(yīng)動(dòng)作。 因?yàn)樗械倪壿嬇袛嗪涂刂贫荚诜?wù)器或者STM32上面,作為中間的無(wú)線模塊僅僅需要上傳STM32的數(shù)據(jù)并接收服務(wù)器下發(fā)的指令即可,所以這里對(duì)WiFi模塊的要求不高,僅僅需要它作為透?jìng)鞴δ芗纯?。?dāng)時(shí)在選型的時(shí)候試過(guò)好幾款WiFi模塊,最終敲定了安信可的ESP8266,價(jià)格便宜,開(kāi)發(fā)簡(jiǎn)單,但是搭建環(huán)境是真的不容易,深受其害。 選擇好模塊就該考慮使用AT指令還是使用SDK開(kāi)發(fā),AT指令固然簡(jiǎn)單,但是局限性非常大。如果使用AT指令,我那開(kāi)發(fā)控制端的同事估計(jì)就要跳腳了,代碼里需要寫(xiě)一大堆的AT指令,如果功能改變,指令代碼就需要重寫(xiě),煩不勝煩。 如果使用SDK開(kāi)發(fā),控制端只需發(fā)送簡(jiǎn)單的數(shù)據(jù)就行,完全不用考慮其他任何東西,ESP8266完全當(dāng)做一個(gè)中轉(zhuǎn)站,相對(duì)應(yīng)的我的工作就會(huì)繁重,但是,我屈服了,選擇使用SDK。 于是就有了下面基于NONOS 2.0的ESP8266串口透?jìng)?。主要有以下幾個(gè)功能:
  • 純串口透?jìng)?,接?a target="_blank">MCU串口數(shù)據(jù),直接通過(guò)MQTT上傳到服務(wù)器,接收服務(wù)器數(shù)據(jù)下發(fā)給MCU。
  • smartconfig+airkiss配網(wǎng),隨意使用,場(chǎng)景豐富。
  • 最多儲(chǔ)存5個(gè)WIFI賬號(hào)和密碼,自動(dòng)尋找網(wǎng)絡(luò)連接。
  • 按鍵配網(wǎng),長(zhǎng)按重新配網(wǎng),前一次WiFi自動(dòng)儲(chǔ)存,添加配網(wǎng)指示燈。
  • OTA空中升級(jí)(待驗(yàn)證)
從程序的入口開(kāi)始:

//程序入口void ICACHE_FLASH_ATTR user_init(void){        uart_init(115200, 115200);        os_delay_us(60000);        keyInit();        set_uart_cb(uart_cb);
        PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDI_U, FUNC_GPIO12); //GPIO12初始化        GPIO_OUTPUT_SET(GPIO_ID_PIN(12), 0);//低電平
    get_mac();//獲取MAC地址
        wifi_set_opmode(STATION_MODE);        //設(shè)置wifi信息存儲(chǔ)數(shù)量,最大為5個(gè)        wifi_station_ap_number_set(2);
    mqtt_init();
        set_wifistate_cb(wifi_connect_cb, wifi_disconnect_cb);}
程序的入口先進(jìn)行串口初始化和按鍵的初始化,以及LED的初始化。串口要初始化波特率,按鍵初始化配網(wǎng)按鍵,用于短按配網(wǎng),長(zhǎng)按重新配網(wǎng),LED只要用于判斷模塊是否進(jìn)入配網(wǎng)模式以及是否配網(wǎng)完成。
初始化完成后會(huì)首先讀取MAC地址,該地址是唯一的,每個(gè)模塊都不一樣,用于填充進(jìn)主題中,便于服務(wù)器區(qū)分不同設(shè)備,用于多臺(tái)量產(chǎn)設(shè)備的使用,在連接MQTT服務(wù)器時(shí)會(huì)自動(dòng)填充。

951a5030-5f65-11eb-8b86-12bb97331649.png


每連接一次WiFi都會(huì)將WiFi信息保存在模塊內(nèi)部,每次上電都會(huì)自動(dòng)掃描暴露的WiFi,直接連接,就像手機(jī)的WIFI連接,目前最大支持五個(gè)WiFi信息的保存,超過(guò)5個(gè)會(huì)剔除最早的WiFi信息,通過(guò)短按D5(GPIO14)可進(jìn)入配網(wǎng)模式。
/***         按鍵短按回調(diào)*/LOCAL void ICACHE_FLASH_ATTR key1ShortPress(void) {
        start_smartconfig(smartconfig_cd);        INFO("start_smartconfig
");}/***         按鍵長(zhǎng)按回調(diào)*/LOCAL void ICACHE_FLASH_ATTR key1LongPress(void) {
        start_smartconfig(smartconfig_cd);        INFO("start_smartconfig
");}/***         按鍵初始化*/LOCAL void ICACHE_FLASH_ATTR keyInit(void) {
        //設(shè)置按鍵數(shù)量        set_key_num(1);        //長(zhǎng)按、短按的按鍵回調(diào)        key_add(D5, NULL, key1ShortPress);        key_add(D5, NULL, key1LongPress);
}

由于找不到最新的代碼。這里的長(zhǎng)按我沒(méi)做處理,應(yīng)該是斷開(kāi)WiFi重新進(jìn)入配網(wǎng)模式, 或者軟復(fù)位模塊,再進(jìn)入start_smartconfig()函數(shù):
/*** 開(kāi)始Smartconfig配置  * @param  cd: Smartconfig狀態(tài)回調(diào)* @retval None*/void ICACHE_FLASH_ATTR start_smartconfig(smartconfig_cd_t cd) {        smartconfig_flag = 1;        smartconfig_set_type(SC_TYPE_ESPTOUCH_AIRKISS); //SC_TYPE_ESPTOUCH,SC_TYPE_AIRKISS,SC_TYPE_ESPTOUCH_AIRKISS        wifi_station_disconnect();        wifi_set_opmode(STATION_MODE);        finish_cd = cd;        smartconfig_start(smartconfig_done);        os_timer_disarm(&OS_Timer_Wifichange);        // 關(guān)閉定時(shí)器
        if(connect_flag == 1){                w_disconnect();                connect_flag = 0;        }
        os_timer_disarm(&OS_Timer_SM);        // 關(guān)閉定時(shí)器        os_timer_setfn(&OS_Timer_SM, (os_timer_func_t *) sm_wait_time, NULL);// 設(shè)置定時(shí)器        os_timer_arm(&OS_Timer_SM, 1000, 1);  // 使能定時(shí)器}

9565e0cc-5f65-11eb-8b86-12bb97331649.png

smartconfig_set_type();函數(shù)可選3個(gè)參數(shù):分別是:SC_TYPE_ESPTOUCH、SC_TYPE_AIRKISS和SC_TYPE_ESPTOUCH_AIRKISS
第一個(gè)是smartconfig配網(wǎng)(手機(jī)APP),第二個(gè)是airkiss配網(wǎng)(微信公眾號(hào)),最后一個(gè)兩者都可以。進(jìn)入該函數(shù)會(huì)調(diào)用smartconfig_start();,該函數(shù)會(huì)調(diào)用smartconfig_done()函數(shù)進(jìn)行配網(wǎng),配網(wǎng)成功后會(huì)點(diǎn)亮LED燈。

/*** Smartconfig 狀態(tài)處理* @param  status: 狀態(tài)* @param  *pdata: AP數(shù)據(jù)* @retval None*/void ICACHE_FLASH_ATTRsmartconfig_done(sc_status status, void *pdata) {        switch (status) {        case SC_STATUS_WAIT:                INFO("SC_STATUS_WAIT
");                break;        case SC_STATUS_FIND_CHANNEL:                INFO("SC_STATUS_FIND_CHANNEL
");                break;        case SC_STATUS_GETTING_SSID_PSWD:                INFO("SC_STATUS_GETTING_SSID_PSWD
");                sc_type *type = pdata;                if (*type == SC_TYPE_ESPTOUCH) {                        INFO("SC_TYPE:SC_TYPE_ESPTOUCH
");                } else {                        INFO("SC_TYPE:SC_TYPE_AIRKISS
");                }                break;        case SC_STATUS_LINK:                INFO("SC_STATUS_LINK
");                sm_comfig_status = SM_STATUS_GETINFO;                struct station_config *sta_conf = pdata;                wifi_station_set_config(sta_conf);                wifi_station_disconnect();                wifi_station_connect();                break;        case SC_STATUS_LINK_OVER:                sm_comfig_status = SM_STATUS_FINISH;                INFO("SC_STATUS_LINK_OVER
");                if (pdata != NULL) {                        //SC_TYPE_ESPTOUCH                        uint8 phone_ip[4] = { 0 };                        os_memcpy(phone_ip, (uint8*) pdata, 4);                        INFO("Phone ip: %d.%d.%d.%d
", phone_ip[0], phone_ip[1],                                        phone_ip[2], phone_ip[3]);                } else {                        //SC_TYPE_AIRKISS - support airkiss v2.0                        airkiss_start_discover();                }                smartconfig_stop();                smartconfig_flag = 0;                connect_flag = 0;                os_timer_disarm(&OS_Timer_SM);        // 關(guān)閉定時(shí)器                finish_cd(sm_comfig_status);                os_timer_arm(&OS_Timer_Wifichange, 3000, 1);  // 使能定時(shí)器                break;        }
}
/***         WIFI連接回調(diào)*/void wifi_connect_cb(void){
        INFO("wifi connect!
");        os_printf("----- WiFi連接成功,打開(kāi)綠燈---
");        GPIO_OUTPUT_SET(GPIO_ID_PIN(12), 1);        MQTT_Connect(&mqttClient);}
/***         WIFI斷開(kāi)回調(diào)*/void wifi_disconnect_cb(void){        INFO("wifi disconnect!
");        os_printf("----- WiFi斷開(kāi),關(guān)閉綠燈---
");        GPIO_OUTPUT_SET(GPIO_ID_PIN(12), 0);        MQTT_Disconnect(&mqttClient);}

連接MQTT服務(wù)器:

網(wǎng)絡(luò)連接成功以后可以開(kāi)始MQTT的初始化,初始化包涵一系列的連接初始化回調(diào),連接成功或不成功回調(diào),主題訂閱發(fā)布回調(diào)等等。

/***         MQTT初始化*/void ICACHE_FLASH_ATTR mqtt_init(void) {
        MQTT_InitConnection(&mqttClient, MQTT_HOST, MQTT_PORT, DEFAULT_SECURITY);        MQTT_InitClient(&mqttClient, mac_str, MQTT_USER,MQTT_PASS, MQTT_KEEPALIVE, 1);        MQTT_InitLWT(&mqttClient, lwt_topic, LWT_MESSAGE, 0, 0);        MQTT_OnConnected(&mqttClient, mqttConnectedCb);        MQTT_OnDisconnected(&mqttClient, mqttDisconnectedCb);        MQTT_OnPublished(&mqttClient, mqttPublishedCb);        MQTT_OnData(&mqttClient, mqttDataCb);}
void ICACHE_FLASH_ATTRMQTT_InitConnection(MQTT_Client *mqttClient, uint8_t* host, uint32_t port, uint8_t security){        uint32_t temp;        INFO("MQTT_InitConnection
");        os_memset(mqttClient, 0, sizeof(MQTT_Client));        temp = os_strlen(host);        mqttClient->host = (uint8_t*)os_zalloc(temp + 1);        os_strcpy(mqttClient->host, host);        mqttClient->host[temp] = 0;        mqttClient->port = port;        mqttClient->security = security;
}
void ICACHE_FLASH_ATTRMQTT_InitClient(MQTT_Client *mqttClient, uint8_t* client_id, uint8_t* client_user, uint8_t* client_pass, uint32_t keepAliveTime, uint8_t cleanSession){        uint32_t temp;        INFO("MQTT_InitClient
");        os_printf("CD MQTT_InitClient++++++++++++++++++++++
");        os_memset(&mqttClient->connect_info, 0, sizeof(mqtt_connect_info_t));
        temp = os_strlen(client_id);        mqttClient->connect_info.client_id = (uint8_t*)os_zalloc(temp + 1);        os_strcpy(mqttClient->connect_info.client_id, client_id);        mqttClient->connect_info.client_id[temp] = 0;
        if (client_user)        {                temp = os_strlen(client_user);                mqttClient->connect_info.username = (uint8_t*)os_zalloc(temp + 1);                os_strcpy(mqttClient->connect_info.username, client_user);                mqttClient->connect_info.username[temp] = 0;        }
        if (client_pass)        {                temp = os_strlen(client_pass);                mqttClient->connect_info.password = (uint8_t*)os_zalloc(temp + 1);                os_strcpy(mqttClient->connect_info.password, client_pass);                mqttClient->connect_info.password[temp] = 0;        }

        mqttClient->connect_info.keepalive = keepAliveTime;        mqttClient->connect_info.clean_session = cleanSession;
        mqttClient->mqtt_state.in_buffer = (uint8_t *)os_zalloc(MQTT_BUF_SIZE);        mqttClient->mqtt_state.in_buffer_length = MQTT_BUF_SIZE;        mqttClient->mqtt_state.out_buffer =  (uint8_t *)os_zalloc(MQTT_BUF_SIZE);        mqttClient->mqtt_state.out_buffer_length = MQTT_BUF_SIZE;        mqttClient->mqtt_state.connect_info = &mqttClient->connect_info;
        mqtt_msg_init(&mqttClient->mqtt_state.mqtt_connection, mqttClient->mqtt_state.out_buffer, mqttClient->mqtt_state.out_buffer_length);
        QUEUE_Init(&mqttClient->msgQueue, QUEUE_BUFFER_SIZE);
        system_os_task(MQTT_Task, MQTT_TASK_PRIO, mqtt_procTaskQueue, MQTT_TASK_QUEUE_SIZE);        system_os_post(MQTT_TASK_PRIO, 0, (os_param_t)mqttClient);}

WiFi連接成功和失敗會(huì)觸發(fā)不同的回調(diào)函數(shù):

/***         MQTT連接回調(diào)*/void mqttConnectedCb(uint32_t *args) {        MQTT_Client* client = (MQTT_Client*) args;
        INFO("MQTT: Connected
");        MQTT_Publish(client, birth_topic, BIRTH_MESSAGE, os_strlen(BIRTH_MESSAGE), 0,0);        MQTT_Subscribe(client,ota_topic, 0);        if(updata_status_check()){                MQTT_Publish(client, ota_topic, "updata_finish", os_strlen("updata_finish"), 0,0);        }}/**
*         MQTT斷開(kāi)連接回調(diào)*/void mqttDisconnectedCb(uint32_t *args) {        MQTT_Client* client = (MQTT_Client*) args;        INFO("MQTT: Disconnected
");}
/***         MQTT發(fā)布消息回調(diào)*/void mqttPublishedCb(uint32_t *args) {        MQTT_Client* client = (MQTT_Client*) args;        INFO("MQTT: Published
");}
串口透?jìng)鳎?/strong>
當(dāng)模塊的WiFi和MQTT服務(wù)器都連接上之后,模塊就開(kāi)始監(jiān)聽(tīng)串口和服務(wù)器的數(shù)據(jù),如果串口有數(shù)據(jù)過(guò)來(lái)便轉(zhuǎn)發(fā)到服務(wù)器或者進(jìn)行OTA升級(jí),如果服務(wù)器有指令下發(fā)就轉(zhuǎn)發(fā)給串口。

/***         MQTT接收數(shù)據(jù)回調(diào)(用于OTA升級(jí)和串口透?jìng)鳎?/span>*/void mqttDataCb(uint32_t *args, const char* topic, uint32_t topic_len,                const char *data, uint32_t data_len) {        char *topicBuf = (char*) os_zalloc(topic_len + 1), *dataBuf =                        (char*) os_zalloc(data_len + 1);
        uint8 *pdata = (uint8*)data;        uint16 len = data_len;        uart0_tx_buffer(pdata, len);//串口輸出
        MQTT_Client* client = (MQTT_Client*) args;
        os_memcpy(topicBuf, topic, topic_len);        topicBuf[topic_len] = 0;
        os_memcpy(dataBuf, data, data_len);        dataBuf[data_len] = 0;
//        INFO("Receive topic: %s, data: %s 
", topicBuf, dataBuf);
        //data = {"url"="http://yourdomain.com:9001/ota/"}        if (os_strcmp(topicBuf, ota_topic) == 0) {                char url_data[200];                if(get_josn_str(dataBuf,"url",url_data)){//            INFO("ota_start
");            ota_upgrade(url_data,ota_finished_callback);                }        }
        os_free(topicBuf);        os_free(dataBuf);


}
/***         ota升級(jí)回調(diào)*/void ICACHE_FLASH_ATTR ota_finished_callback(void * arg) {        struct upgrade_server_info *update = arg;        if (update->upgrade_flag == true) {                INFO("OTA  Success ! rebooting!
");                system_upgrade_reboot();        } else {                INFO("OTA Failed!
");        }}
其他問(wèn)題:連接的服務(wù)器地址,端口號(hào)等信息需要寫(xiě)在代碼里燒錄進(jìn)模塊,這些信息在在mqtt_config.h文件中定義。

95c8a590-5f65-11eb-8b86-12bb97331649.png


上電后可以在串口助手看到打印的MAC地址:

96055684-5f65-11eb-8b86-12bb97331649.png


按下配網(wǎng)按鍵(GPIO14接地),進(jìn)入配網(wǎng)模式,使用APP或者微信公眾號(hào)將信息發(fā)給模塊便可聯(lián)網(wǎng),聯(lián)網(wǎng)后自動(dòng)連接MQTT服務(wù)器。

9631973a-5f65-11eb-8b86-12bb97331649.png

96d612b0-5f65-11eb-8b86-12bb97331649.png

至此連接完成,后續(xù)只需要串口發(fā)數(shù)據(jù)給模塊,便可在服務(wù)器收到信息,服務(wù)器下發(fā)指令,單片機(jī)串口也可以接收到數(shù)據(jù)。但是要記得訂閱主題哦。該透?jìng)鞔a燒錄完成可搭配任意MCU的串口使用。非常便捷。由于項(xiàng)目期較遠(yuǎn),可能介紹的不是很詳細(xì),需要的大大們可以點(diǎn)擊閱讀原文回帖獲取源碼。自行查看。

責(zé)任編輯:xj

原文標(biāo)題:什么?單片機(jī)還在裸奔?ESP8266純串口透?jìng)?,助力設(shè)備上云端

文章出處:【微信公眾號(hào):嵌入式ARM】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。


聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6077

    文章

    45510

    瀏覽量

    671355
  • 云端
    +關(guān)注

    關(guān)注

    0

    文章

    126

    瀏覽量

    17590
  • ESP8266
    +關(guān)注

    關(guān)注

    51

    文章

    971

    瀏覽量

    49564

原文標(biāo)題:什么?單片機(jī)還在裸奔?ESP8266純串口透?jìng)鳎υO(shè)備上云端

文章出處:【微信號(hào):gh_c472c2199c88,微信公眾號(hào):嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    ESP8266系列】WT8266-S3模組規(guī)格書(shū)

    概述ESP-07S(WT8266-S3)Wi-Fi模塊是由啟明云端科技開(kāi)發(fā)的、低功耗高性?xún)r(jià)比的嵌入式無(wú)線網(wǎng)絡(luò)控制模塊??蓾M足智能電網(wǎng)、樓宇自動(dòng)化、安防、智能家居、遠(yuǎn)程醫(yī)療等物聯(lián)網(wǎng)應(yīng)用的需求。該模塊
    的頭像 發(fā)表于 02-05 18:04 ?139次閱讀
    【<b class='flag-5'>ESP8266</b>系列】WT<b class='flag-5'>8266</b>-S3模組規(guī)格書(shū)

    ESP8266系列】WT8266-S5模組規(guī)格書(shū)

    概述ESP-12F(WT8266-S5)WiFi模塊是由啟明云端科技開(kāi)發(fā)的、低功耗高性?xún)r(jià)比的嵌入式無(wú)線網(wǎng)絡(luò)控制模塊??蓾M足智能電網(wǎng)、樓宇自動(dòng)化、安防、智能家居、遠(yuǎn)程醫(yī)療等物聯(lián)網(wǎng)應(yīng)用的需求。該模塊核心
    的頭像 發(fā)表于 02-05 18:03 ?162次閱讀
    【<b class='flag-5'>ESP8266</b>系列】WT<b class='flag-5'>8266</b>-S5模組規(guī)格書(shū)

    ESP8266系列】WT8266-S6模組規(guī)格書(shū)

    ESP-12S(WT8266-S6)Wi-Fi模塊是由啟明云端科技開(kāi)發(fā)的、低功耗高性?xún)r(jià)比的嵌入式無(wú)線網(wǎng)絡(luò)控制模塊??蓾M足智能電網(wǎng)、樓宇自動(dòng)化、安防、智能家居、遠(yuǎn)程醫(yī)療等物聯(lián)網(wǎng)應(yīng)用的需求。該模塊核心
    的頭像 發(fā)表于 02-05 18:03 ?168次閱讀
    【<b class='flag-5'>ESP8266</b>系列】WT<b class='flag-5'>8266</b>-S6模組規(guī)格書(shū)

    ESP8266系列】WT8266-S1模組產(chǎn)品介紹

    WT8266-S1WiFi模塊是由啟明云端科技開(kāi)發(fā)的、低功耗高性?xún)r(jià)比的嵌入式無(wú)線網(wǎng)絡(luò)控制模塊。可滿足智能電網(wǎng)、樓宇自動(dòng)化、安防、智能家居、遠(yuǎn)程醫(yī)療等物聯(lián)網(wǎng)應(yīng)用的需求。該模塊核心處理器ESP8266
    的頭像 發(fā)表于 01-29 18:22 ?457次閱讀
    【<b class='flag-5'>ESP8266</b>系列】WT<b class='flag-5'>8266</b>-S1模組產(chǎn)品介紹

    ESP8266系列】WT8266-S6模組產(chǎn)品介紹

    ESP-12S(WT8266-S6)Wi-Fi模塊是由啟明云端科技開(kāi)發(fā)的、低功耗高性?xún)r(jià)比的嵌入式無(wú)線網(wǎng)絡(luò)控制模塊??蓾M足智能電網(wǎng)、樓宇自動(dòng)化、安防、智能家居、遠(yuǎn)程醫(yī)療等物聯(lián)網(wǎng)應(yīng)用的需求。該模塊核心
    的頭像 發(fā)表于 01-29 18:22 ?322次閱讀
    【<b class='flag-5'>ESP8266</b>系列】WT<b class='flag-5'>8266</b>-S6模組產(chǎn)品介紹

    無(wú)需安裝!在瀏覽器里就能玩轉(zhuǎn)ESP32/ESP8266,這個(gè)神器絕了!

    無(wú)需安裝!在瀏覽器里就能玩轉(zhuǎn)ESP32/ESP8266,這個(gè)神器絕了!【往期精選】十年嵌入式最深的痛,不是Bug,而是抓不到日志!vivo宣布原生支持HomeAssistant生態(tài)設(shè)備接入(含
    的頭像 發(fā)表于 01-10 10:01 ?967次閱讀
    無(wú)需安裝!在瀏覽器里就能玩轉(zhuǎn)<b class='flag-5'>ESP</b>32/<b class='flag-5'>ESP8266</b>,這個(gè)神器絕了!

    【瑞薩RA6E2地奇星開(kāi)發(fā)板試用】基于RA6E2+ESP8266在STA模式下數(shù)據(jù)傳到Python服務(wù)器整體系統(tǒng)演示總結(jié)

    基于RA6E2+ESP8266在STA模式下數(shù)據(jù)傳到Python服務(wù)器整體系統(tǒng)演示總結(jié) 1. 需求描述 1.1. 系統(tǒng)實(shí)現(xiàn)概述 使用RA6E2驅(qū)動(dòng) esp8266 WiFi模塊, 用串口
    發(fā)表于 12-28 20:16

    晶科鑫 | 國(guó)產(chǎn)26MHz晶振匹配Espressif(樂(lè)鑫) ESP8285/ESP8266芯片案例

    【應(yīng)用】國(guó)產(chǎn)26MHz頻率晶振應(yīng)用于物聯(lián)網(wǎng)WIFI物聯(lián)網(wǎng)模塊(串口轉(zhuǎn)WiFi模塊),Espressif(樂(lè)鑫)ESP8285/ESP8266芯片匹配測(cè)試OKESP8285其實(shí)是ESP8266
    的頭像 發(fā)表于 11-21 15:37 ?4715次閱讀
    晶科鑫 | 國(guó)產(chǎn)26MHz晶振匹配Espressif(樂(lè)鑫) <b class='flag-5'>ESP</b>8285/<b class='flag-5'>ESP8266</b>芯片案例

    ESP8266ESP32開(kāi)發(fā)板常見(jiàn)的2種下載方式

    ESP32和ESP8266是性?xún)r(jià)比很高而且使用較為廣泛的的Wi-Fi模塊,在物聯(lián)網(wǎng)(IoT)領(lǐng)域的DIY項(xiàng)目中可以首先考慮這2款產(chǎn)品。 兩款芯片都屬于32位處理器。ESP32是低功耗雙核80MHz
    的頭像 發(fā)表于 11-10 20:30 ?1043次閱讀
    <b class='flag-5'>ESP8266</b>和<b class='flag-5'>ESP</b>32開(kāi)發(fā)板常見(jiàn)的2種下載方式

    ESP8266ESP32開(kāi)發(fā)板常見(jiàn)的2種下載方式

    協(xié)議,完整的 TCP/IP 協(xié)議棧以及藍(lán)牙協(xié)議棧。用戶可以使用這兩款模塊為現(xiàn)有的設(shè)備添加WIFI聯(lián)網(wǎng)功能或藍(lán)牙(ESP32),輕松的構(gòu)建獨(dú)立的網(wǎng)絡(luò)控制器和遠(yuǎn)程控制監(jiān)控設(shè)備。 ESP8266
    發(fā)表于 10-24 18:04

    ESP8266】進(jìn)入模式后,數(shù)據(jù)間隔怎么調(diào)整,

    01.TCP客戶端用ESP8266模式發(fā)送數(shù)據(jù)是10ms發(fā)送一次,(連續(xù)發(fā)送) 02.TCP服務(wù)器接收到的數(shù)據(jù)是200ms左右接收一次,數(shù)據(jù)未丟失,但是更新不及時(shí); 03.通過(guò)TCP調(diào)試助手已
    發(fā)表于 09-15 10:16

    ESP32用作經(jīng)典藍(lán)牙串口模塊與手機(jī)進(jìn)行串口通信

    本文介紹了如何把ESP32用作一個(gè)藍(lán)牙串口設(shè)備使用,其功能和常用的HC-05/06串口藍(lán)牙
    的頭像 發(fā)表于 06-20 17:45 ?3078次閱讀
    <b class='flag-5'>ESP</b>32用作經(jīng)典藍(lán)牙<b class='flag-5'>串口</b><b class='flag-5'>透</b><b class='flag-5'>傳</b>模塊與手機(jī)進(jìn)行<b class='flag-5'>串口</b>通信

    單片機(jī)實(shí)例項(xiàng)目:ESP8266串口WIFI

    單片機(jī)實(shí)例項(xiàng)目:ESP8266串口WIFI,推薦下載!
    發(fā)表于 06-03 21:01

    ESP8266燒錄與機(jī)智云一鍵配網(wǎng)教程

    ESP8266模塊因其低成本和高性能,廣泛應(yīng)用于智能家居和工業(yè)自動(dòng)化等領(lǐng)域。機(jī)智云平臺(tái)提供了一鍵配網(wǎng)功能,簡(jiǎn)化了設(shè)備的聯(lián)網(wǎng)過(guò)程。本教程將詳細(xì)介紹如何使用ESP8266進(jìn)行燒錄,并通過(guò)機(jī)智云實(shí)現(xiàn)一鍵配
    的頭像 發(fā)表于 05-24 11:04 ?2070次閱讀
    <b class='flag-5'>ESP8266</b>燒錄與機(jī)智云一鍵配網(wǎng)教程

    【RA-Eco-RA4M2開(kāi)發(fā)板評(píng)測(cè)】RA4M2 + ESP8266獲取城市天氣預(yù)報(bào)(二)使用串口助手獲取天氣+破解任意類(lèi)型AT指令

    :就是用串口來(lái)進(jìn)行,把串口助手上發(fā)送的AT指令通過(guò)調(diào)試串口接收來(lái)發(fā)送給ESP8266模塊的
    發(fā)表于 05-04 10:07