[实验]Nodemcu软串口通信(读取网络时间并通过串口传输)
时间:2021-07-13
本文章向大家介绍[实验]Nodemcu软串口通信(读取网络时间并通过串口传输),主要包括[实验]Nodemcu软串口通信(读取网络时间并通过串口传输)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
参考博客:ESP8266(NODEMCU)Arduino环境下实现多个软串口通信
接线方式:
D5——D8
D6——D7
实验原理与步骤
通过向硬串口发送Show time 字符串激活单片机去更新网络时间,然后通过软串口一发出,然后硬串口会打出串口二接收到的数据。模拟了两个单片机实现串口通信的过程。
代码
#include <NTPClient.h>
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
#include <SoftwareSerial.h>
SoftwareSerial uart1(14,12);//RX=d5,TX=d6
SoftwareSerial uart2(13,15);//RX=d7,TX=d8
//ESP8266 NODEMCU
const char *ssid = "your wifi name ";
const char *password = "your wifi password";
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "ntp1.aliyun.com",60*60*8, 30*60*1000);
void setup()
{
Serial.begin(9600);
uart1.begin(9600);
uart2.begin(9600);
uart1.listen();
uart2.listen();
pinMode(LED_BUILTIN, OUTPUT); // Initialize the LED_BUILTIN pin as an output
WiFi.begin(ssid, password);
while ( WiFi.status() != WL_CONNECTED ) {
delay ( 500 );
Serial.print ( "." );
digitalWrite(LED_BUILTIN, HIGH);
}
timeClient.begin();
}
String time1="";
bool dian=false;
int h,m,s,d;
String uart1string="";
String uart2string="";
void loop()
{
if(Serial.available()>0){
if(Serial.peek()!='\n'){
uart1string+=(char)Serial.read();
}
else{
Serial.read();
if(uart1string=="Show time"){
timeClient.update();
time1=timeClient.getFormattedTime();
uart1.println(time1);
}
uart1string="";
}
}
if(uart2.available()>0){
if(uart2.peek()!='\n'){
uart2string+=(char)uart2.read();
}
else{
uart2.read();
Serial.print("UART2 DATA:");
Serial.println(uart2string);
uart2.println(uart2string);
}
}
/*Serial.println("ok");
timeClient.update();
time1=timeClient.getFormattedTime();
d=timeClient.getDay();
h=timeClient.getHours();
m=timeClient.getMinutes();
s=timeClient.getSeconds();
Serial.print(d);Serial.print(" ");Serial.print(h);Serial.print(":");Serial.print(m);Serial.print(":");Serial.println(s);
delay(1000);*/
}
原文地址:https://www.cnblogs.com/mudrobot/p/15007230.html
- 微信iOS收款到账语音提醒开发总结
- React Native按需加载 手Q狼人杀探索之路
- nginx日志切割及7天前的历史日志删除脚本
- 《ios爆内存问题解决方案-OOMDetector组件》
- Linux/SUSE安装svn客户端的问题记录
- 《广研Android卡顿监控系统》
- 替换WordPress默认搜索为百度站内搜索(知更鸟主题可照搬)
- 《Android插件化技术——原理篇》
- 利用Centos或RedHat的iso镜像搭建本地yum仓库
- QUIC协议初探-iOS实践
- Golang语言社区--【基础知识】常量
- 服务器日志备份超节省空间的思路
- 《企鹅电竞weex实践—— iOS SDK的小九九》
- Linux操作系统DNS解析(nameserver)监控脚本
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- react-router学习笔记
- 尤大 3 天前发在 GitHub 上的 vue-lit 是啥?
- BFE.dev前端刷题 23. 实现一个sum()方法
- 彻底深刻理解js原型链之prototype,proto以及constructor(一)
- SAP Spartacus取cart的HTTP请求
- 记一次Netty连接池FixedChannelPool连接未释放问题的排查总结
- 神经网络中的蒸馏技术,从Softmax开始说起
- NullInjectorError R3InjectorError(AppModule)[StoreFeatureModule]
- Angular module加载的原理研究
- NullInjectorError No provider for EffectsRootModule!
- Web 中文字体性能优化实践
- Java反射到底慢在哪?不看后悔
- win10 edge 打开闪退问题
- dotnet Open XML 如何判断一份 Office 文档是否被加密
- 【项目实战】ETL 数据导入