首頁 > 評測 > 快捷開發(fā) 任性連接 :ESP32 Thing開發(fā)板評測

快捷開發(fā) 任性連接 :ESP32 Thing開發(fā)板評測

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

}

}

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

輸出大致如下:

21.png

 

圖 UDP輸出

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

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

藍(lán)牙的庫函數(shù)根據(jù)樂鑫官方的說法是正在緊鑼密鼓開發(fā)完善中. 這個(gè)藍(lán)牙程序也是改自樂鑫官方的例子,啟動(dòng)后開啟藍(lán)牙,手機(jī)的藍(lán)牙界面可以發(fā)現(xiàn)它.因?yàn)殚_啟的是BLE藍(lán)牙,所以你手機(jī)得支持BLE才能發(fā)現(xiàn)這個(gè)設(shè)備的. 經(jīng)典藍(lán)牙的功能目前沒有開出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());

}

打開手機(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)了,但是沒有給出接口和例子的功能.只有通過翻cpp的底層HAL庫文件才能了解調(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方式開發(fā)環(huán)境建立

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

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

網(wǎng)友評論

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

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