www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

首頁(yè) > 評(píng)測(cè) > 快捷開(kāi)發(fā) 任性連接 :ESP32 Thing開(kāi)發(fā)板評(píng)測(cè)

快捷開(kāi)發(fā) 任性連接 :ESP32 Thing開(kāi)發(fā)板評(píng)測(cè)

  • 作者:zhanzr21
  • 來(lái)源:21ic
  • [導(dǎo)讀]
  • ESP32 Thing是SparkFun推出的一款針對(duì)物聯(lián)網(wǎng)無(wú)線應(yīng)用的開(kāi)發(fā)板,它的體積較小,具備WiFi與藍(lán)牙的雙重連接方式,并且可以通過(guò)Arduino IDE來(lái)開(kāi)發(fā)。

udp.endPacket();

Serial.printf("Sending %d\n", tmpRand);

}

//Wait for 1 second

delay(1000);

}

void connectToWiFi(const char * ssid, const char * pwd){

Serial.println("Connecting to WiFi network: " + String(ssid));

// delete old config

WiFi.disconnect(true);

//register event handler

WiFi.onEvent(WiFiEvent);

//Initiate connection

WiFi.begin(ssid, pwd);

Serial.println("Waiting for WIFI connection...");

}

//wifi event handler

void WiFiEvent(WiFiEvent_t event){

switch(event) {

case SYSTEM_EVENT_STA_GOT_IP:

//When connected set

Serial.print("Connected! IP address: ");

Serial.println(WiFi.localIP());

//initializes the UDP state

//This initializes the transfer buffer

udp.begin(WiFi.localIP(),udpPort);

connected = true;

break;

case SYSTEM_EVENT_STA_DISCONNECTED:

Serial.println("WiFi lost connection");

connected = false;

break;

}

}

編譯下載,打開(kāi)網(wǎng)絡(luò)調(diào)試器,設(shè)置好端口,開(kāi)始接收.

輸出大致如下:

21.png

 

圖 UDP輸出

3.7 第四個(gè)程序:改變藍(lán)牙設(shè)備名

需要指出的是,截止此文開(kāi)發(fā)板子的Arduino支持包目前還不完全(至少是已經(jīng)實(shí)現(xiàn)了但是沒(méi)有給出接口),比如藍(lán)牙相關(guān)庫(kù),模擬輸出功能等等. 所以,要使用暫時(shí)沒(méi)有Arduino庫(kù)的功能還得使用Native的方式來(lái)開(kāi)發(fā).

藍(lán)牙的庫(kù)函數(shù)根據(jù)樂(lè)鑫官方的說(shuō)法是正在緊鑼密鼓開(kāi)發(fā)完善中. 這個(gè)藍(lán)牙程序也是改自樂(lè)鑫官方的例子,啟動(dòng)后開(kāi)啟藍(lán)牙,手機(jī)的藍(lán)牙界面可以發(fā)現(xiàn)它.因?yàn)殚_(kāi)啟的是BLE藍(lán)牙,所以你手機(jī)得支持BLE才能發(fā)現(xiàn)這個(gè)設(shè)備的. 經(jīng)典藍(lán)牙的功能目前沒(méi)有開(kāi)出Arduino接口.另外用戶按鈕每次被按,設(shè)備的名稱也會(huì)改變(需要手機(jī)端刷新顯示才能看到).代碼如下:

#include "SimpleBLE.h"

SimpleBLE ble;

void onButton(){

String out = "BLE32 at: ";

out += String(rand() % 100);

Serial.println(out);

ble.begin(out);

}

void setup() {

Serial.begin(115200);

Serial.setDebugOutput(true);

ble.begin("ESP32 SimpleBLE");

Serial.println("Press the user button to change the device name");

}

void loop() {

static uint8_t lastPinState = 1;

uint8_t pinState = digitalRead(0);

if(!pinState && lastPinState){

onButton();

}

lastPinState = pinState;

while(Serial.available()) Serial.write(Serial.read());

}

打開(kāi)手機(jī)的藍(lán)牙界面即可發(fā)現(xiàn)該設(shè)備,此時(shí)按一下用戶按鈕,再在手機(jī)上點(diǎn)刷新藍(lán)牙設(shè)備,即可看到名稱已經(jīng)變換.

22.png23.png

 

圖 a.手機(jī)上發(fā)現(xiàn)藍(lán)牙設(shè)備 b.按下用戶按鈕后改名

3.8 第五個(gè)程序:硬件模擬輸出

由于ESP32有硬件DAC,所以可以直接使用DAC引腳輸出模擬波形, 而非Uno板子上那種PWM仿DAC輸出.這里就是上文所講的代碼中實(shí)現(xiàn)了,但是沒(méi)有給出接口和例子的功能.只有通過(guò)翻cpp的底層HAL庫(kù)文件才能了解調(diào)用方法.

首先這板子上有兩個(gè)硬件DAC引腳,和其他引腳不同,這兩個(gè)引腳被固定在Pin25, Pin26這兩個(gè)位置,不能被再映射.

24.jpg

 

圖 兩個(gè)DAC引腳

下面的代碼在兩個(gè)通道上輸出模擬波形. DAC1輸出正弦波, DAC2輸出鋸齒波.代碼如下:

void setup()

{

//Setup DAC1

pinMode(25, ANALOG);

//Setup DAC2

pinMode(26, ANALOG);

}

void loop()

{

uint8_t val1 = 0;

uint8_t val2 = 0;

static uint32_t x_idx = 0;

//DAC1: Sine Wave

val1 = INT8_MAX * (1 + sin(x_idx/(10*PI)));

dacWrite(25, val1);

//DAC2: Saw Wave

val2 = (x_idx ++) % UINT8_MAX;

dacWrite(26, val2);

}

用示波器分別看兩個(gè)通道的輸出:

25.jpg

 

圖 DAC1輸出

26.jpg

 

圖 DAC2輸出

4. Native方式開(kāi)發(fā)環(huán)境建立

Native方式的開(kāi)發(fā)環(huán)境比較靈活, 有很多種方法設(shè)置. 這里使用最流行的一種:IDF(Iot Development Framework).先下載這個(gè)文件建立類Unix環(huán)境:

  • 本文系21ic原創(chuàng),未經(jīng)許可禁止轉(zhuǎn)載!

網(wǎng)友評(píng)論

  • 聯(lián)系人:巧克力娃娃
  • 郵箱:board@21ic.com
  • 我要投稿
  • 歡迎入駐,開(kāi)放投稿

熱門(mén)標(biāo)簽
項(xiàng)目外包 more+