|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
Corvette T1与esp32通信实现安卓手机控制这次打算测试下corvette T1开发板(以下简称T1)的通讯能力,结合自己手头上的esp32 wroom,打算将两者进行以下通讯试试看,
8 E( U/ b1 X2 Z1 v6 g* u' Q2 b# R1 ^; |7 i1 B
最后可以通过手机发送指令,来控制灯的亮灭。) y9 x+ z6 U" @" m2 n
使用到esp32的蓝牙串口通讯以及T1板子的串口和两个led灯+ j% T$ W3 ?2 J0 e9 @* b4 }
实现效果如下:6 u6 m4 r" e9 m9 x0 g; h1 [5 ~$ l
通过手机输入a和b指令来分别控制2号引脚led灯闪烁13号引脚led灯常亮' _, T5 C6 o0 C/ a" d
![]() 4 V/ F$ u. M% C# T
可以看到T1开发板的背面有绿光,便是13引脚的led常亮的效果) R. N7 a9 B) t
$ W, J) s& H1 P% I对esp32烧写以下代码
9 @$ N) f7 K/ v+ V//This example code is in the Public Domain (or CC0 licensed, at your option.)//By Evandro Copercini - 2018# v" l7 t. R, J6 ]! A& G% f1 F
//
% w" C' y+ [: K# r//This example creates a bridge between Serial and Classical Bluetooth (SPP)
7 w7 b6 Y' C# `' B//and also demonstrate that SerialBT have the same functionalities of a normal Serial
' J( g; N# w4 c/ y0 a( ]#include "BluetoothSerial.h"
$ w4 T9 s2 Y6 {* Z4 j) j, T1 _#if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED)
* s( L6 i) J- Q6 E3 c f#error Bluetooth is not enabled! Please run make menuconfig to and enable it; Q( x" Y1 K9 ~" ]1 i9 n
#endif$ d5 n5 u: y" x6 b5 c
#if !defined(CONFIG_BT_SPP_ENABLED)7 z* ^& l& d( o l" E! d E" _: }& W
#error Serial Bluetooth not available or not enabled. It is only available for the ESP32 chip.5 H1 q) `4 I6 X8 Q- g
#endif1 ]8 z% V) W% ^* `( D
BluetoothSerial SerialBT;
$ s! Q$ Z, y% Z {. g) Ovoid setup() {
0 _5 i+ k _. k+ k7 VSerial.begin(115200);
+ a; N& p5 V' N, K c% mSerialBT.begin("ESP32test"); //Bluetooth device name% ~/ H6 y9 N$ q6 u" I& a) D
Serial.println("The device started, now you can pair it with bluetooth!");' W5 z3 W; ^/ }0 h+ u3 Y8 p0 N
}
1 t, L9 B, w w; d8 q) T. Avoid loop() {: D t9 k! x0 L% k) K
if (Serial.available()) {9 c* M, Q0 @0 {; H9 U
SerialBT.write(Serial.read());
, o6 m: m7 F, a, P" `1 ?, W}- E! F- {2 x% _" c
if (SerialBT.available()) {
& S: R# M/ }( c/ a4 D: TSerial.write(SerialBT.read());7 d6 b$ ], S( V/ q" x" {: n! \- r
}3 ?% e6 L8 @- q. K5 |4 a
delay(20);9 b/ w5 |& S7 Q. s% N9 h p
}4 o# V$ [: |) k. H" O5 H) T
9 ~/ d; X. o7 J& P0 R! N7 x5 V
对T1开发板烧写如下代码+ M4 F" a5 j1 v. \
int i ;void setup() {# Q6 {3 n$ C' ]4 d9 \
Serial.begin(115200);
; a F* v, \9 u9 [pinMode(2, INPUT);- [: |* z8 @$ q2 E9 C$ G7 r
pinMode(3, OUTPUT);
9 Y% |/ b8 _" JpinMode(13, OUTPUT);
) ^/ m; ^; m( q3 Z2 |}, L$ m. O; w& c! Y% R0 i+ [2 T& p: i! {, X
void loop() {, X9 |3 P( g, n$ L3 n5 G+ {9 B2 g7 Q) J
if (Serial.available())
+ K1 ~% s* Y4 `2 L# v f{
/ X T; u5 k- |// Serial.write(Serial.read());//输出原数据格式
; O1 d1 N, S. ^& n; D5 q6 Ki = Serial.read();) ?9 ^! t9 n. F$ k( m- q* Q
// Serial.println(i);//输出可显示的ascll值
5 \0 x9 K- Z3 a0 r5 uSerial.write(i);- P* J4 `2 k+ [+ z9 A! M- N& j
Serial.write('
$ ^* N) L Z5 n' I$ c+ j');
: p; d5 O$ N# v1 s6 F; X; l( W}
( }6 I& t$ l, f+ m' Z! q3 Dif (i == 'a')' |) |3 h: j4 _8 h7 B
{
4 T+ u, w' i% Q* V( w4 \digitalWrite(2, HIGH);2 v7 u7 M1 c5 a) [
delay(1000);
% h$ ]; p9 d" p3 kdigitalWrite(2, LOW);
; s6 W1 X. {5 _delay(1000);
" y8 `7 e' O4 C( b; g/ M" t2 t6 N( m: O2 e}
' A/ f# i' @. D5 n ~if (i == 'b')6 l; x) F1 m5 e1 |0 [% m
{
; s2 ]8 e7 g) |5 z. Y! WdigitalWrite(13, HIGH);' p- h) l9 a2 C4 t4 c9 [( }
}$ W y/ e: R6 h4 [ v
}; Q$ z4 e: N; ^+ {
' V1 b7 Q" p8 q6 I6 W其他设置esp32 wroom使用引脚RX0、TX0,连接到T1板子的IO1,IO0(RX0->IO1,TX0->IO0)( [0 m1 L- N v* [- \
手机随便下个带有编码设置的蓝牙串口调试助手(ps:不是蓝牙调试助手)2 t( G1 x( C, [, h/ i
将编码调成utf-8,就可以输入命令并点灯了。7 }+ b- ]: m9 z0 F( _+ A
# K! x( t3 X+ S1 f8 g9 h7 S; t J2 h; n
注意事项手机蓝牙发送的编码一定要对可以是gbk、utf-8等编码,但是如果使用错的编码方式那么就会接收不到信号,串口打印数据就会乱码,如下图![]()
" d$ M0 Q, z/ v) \7 L/ V8 I( X除此之外,esp32和T1开发板的串口波特率也要对齐。' D5 ]$ q% A- |% T2 y) {. S
以上便是本次设计的全部内容了。6 w8 H3 L4 q4 ~/ q% f3 W
" ~3 g/ T6 r+ N3 ]8 I5 C# l: i" j |
|