600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > Arduino uno esp01s 硬串口通信

Arduino uno esp01s 硬串口通信

时间:2023-02-26 11:15:41

相关推荐

Arduino uno esp01s 硬串口通信

参考资料:

esp 烧录固件 和 烧录程序

esp 通信测试程序

ili9341 tft显示屏使用

零件:

Arduino uno

ili9341 tft

esp01s

usb 烧录器

最初的想法是, 弄一个BTC 和 ETH 价格显示的小电视,找了找手上有的硬件就这几样,于是就开始了折腾。

首先声明我是菜鸡一个, C++ 也就学了半桶水,硬件更是十分业余,我的方法也许你不一定能直接套用。

一开始就有个很严重的问题, 就是 Arduino 插上 我这块屏幕就没有多余的接口,来给esp做软串口通信了, 所以我只能使用 硬串口即 Arduino 上的 RX 和 TX 口, 网上有些文章说可以互相通信的,反正我是没弄成功,我的方法是,直接使用 esp 读取网站 json 获取BTC 的价格,通过串口发送到 Arduino 经过数据处理显示到屏幕上。

esp01 升级 和 烧录 参考上面的 esp 烧录固件 和 烧录程序 文章。

arduino ide 写入 esp01 的程序:

/*This sketch demonstrates how to scan WiFi networks.The API is almost the same as with the WiFi Shield library,the most obvious difference being the different file you need to include:*/#include <ESP8266WiFi.h>void setup() {Serial.begin(9600);Serial.println(F("\nESP8266 WiFi scan example"));// Set WiFi to station modeWiFi.mode(WIFI_STA);// Disconnect from an AP if it was previously connectedWiFi.disconnect();delay(100);}void loop() {String ssid;int32_t rssi;uint8_t encryptionType;uint8_t* bssid;int32_t channel;bool hidden;int scanResult;Serial.println(F("Starting WiFi scan..."));scanResult = WiFi.scanNetworks(/*async=*/false, /*hidden=*/true);if (scanResult == 0) {Serial.println(F("No networks found"));} else if (scanResult > 0) {Serial.printf(PSTR("%d networks found:\n"), scanResult);// Print unsorted scan resultsfor (int8_t i = 0; i < scanResult; i++) {WiFi.getNetworkInfo(i, ssid, encryptionType, rssi, bssid, channel, hidden);Serial.printf(PSTR(" %02d: [CH %02d] [%02X:%02X:%02X:%02X:%02X:%02X] %ddBm %c %c %s\n"),i,channel,bssid[0], bssid[1], bssid[2],bssid[3], bssid[4], bssid[5],rssi,(encryptionType == ENC_TYPE_NONE) ? ' ' : '*',hidden ? 'H' : 'V',ssid.c_str());delay(0);}} else {Serial.printf(PSTR("WiFi scan error %d"), scanResult);}// Wait a bit before scanning againdelay(5000);}

Arduino uno 的程序:

void setup(){//波特率务必与要通讯的模块保持一致,否则通讯失败Serial.begin(9600);}void loop(){//因为串口是一位一位的发送所以在这里缓存完再发送if (Serial.available()) //判断串口缓存区是否有数据{size_t counti = Serial.available();uint8_t sbuf[counti];Serial.readBytes(sbuf, counti); //读取串口数据Serial.write(sbuf, counti);//将读到的数据通过TX引脚发出去}}

程序弄好把 Arduino 与 esp01 连接

esp01 -------- Arduino

RX -------- TX

TX -------- RX

v3.3 -------- v3.3

VCC -------- VCC

打开 Arduino IDE 串口监视器,成功的话显示如下

这说明esp01 已经通过串口发送信息到 Arduino uno 了, 剩下的的就自己去折腾吧。。。。。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。