网站首页 > 资源文章 正文
物联网系列教程
一个很好的物联网(IoT)开发实战入门教程,图、文详细。供计算机、电子工程相关专业的在校生以及相关领域初学者、爱好者参考学习。涉及单片机、上位机、移动应用、服务器后台开发的知识,以及蓝牙4.0、以太网模块的使用实例。
目录
第一部分:基础入门
第1项:单片机开发——Arduino
第2项:上位机开发——.Net
第3项:移动开发——Android
第4项:后端开发——Golang
第二部分:案例学习
第5项:蓝牙4.0案例——手机控制RGB灯颜色
第6项:网络模块案例——温度采集系统开发
1.4 UART的使用
UART的介绍
这节课来介绍UART,也就是串口通信。先看一下百度百科上对UART的定义。
UART是一种通用串行数据总线,用于异步通信。该总线双向通信,可以实现全双工传输和接收。
这里,我主要提取三个关键词来分别解释,第一个“串行”,第二个“异步”,第三个“全双工”。
串行与并行
先来说说什么是串行和并行总线。
以下这样图可以很好的解释。串行也就是只有一根线,一个周期传送1个bit,8个周期传送1个byte,速度传送较慢。并行通信采用多根总线,比如说8根总线的话,一个周期就可以传送一个byte,不过并行通信的缺点是传输距离短。
异步通信与同步通信
再来说说什么是异步通信与同步通信。
同步通信就是需要发送方和接收方有一个时钟,在同一个时钟下来进行需要数据的传输。而异步通信发送方和接收方有着自己的时钟,通过起始位和停止位来判断是否有数据,为了保证数据传输的可靠性,还会有一些校验位,用于判断数据是否有效,如奇偶校验等,读者可以自行百度了解。
同步通信示意图:
异步通信示意图:(图中的0代表起始位,1代表停止位。)
另外,对于异步通信来说,还有一个不得不说的,就是波特率(每秒钟传送字符的速率),虽然异步通信不要求时钟严格一致。但是,发送端和接收端的时钟的周期也应该是一样的,这样才能保证接收端有效地对接受的数据进行判断。
常见的波特率有:300、600、1200、2400、4800、9600、19200、38400、43000、56000、57600、115200。
单工、半双工和全双工
最后再看看什么是单工、半双工和全双工。
其实概念很简单,通俗的来讲,单工就是只有一方可以发送数据,比如打印机,只接受数据。半双工就是两方都可以发送数据,但不能同时发送数据,比如对讲机,只能同时听一个人说话。而全双工则是两方可以同时传送数据,比如打电话,对方说着说着有那块说得不对了,你给他打断了。
这张示意图可以很好的解释:
下图为两个设备(单片机和电脑或单片机之间)通过串口通信的接线图,将一方的RXD(接受数据端)接到另一方的TXD(),就接受另一方发送过来的数据;将一方的TXD接到另一方的RXD,就可以给另一方发送数据。
UART的使用
通过上面的介绍,可以知道,串口就是Arduino和电脑(或其他设备)之间进行通信的桥梁,比如说,我们上传程序的时候,就是通过串口的方式上传的。
回想一下我们的第一个Arduino程序。
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println("Hello, Arduino!");
delay(2000);
}
这里Serial.begin(9600)就是代表串口的初始化,把波特率设置为9600。之后Serial.println()会通过串口给电脑发送数据。串口通信是双工的,Arduino除了给电脑发送数据之外,还可以接受来自电脑的数据,打开串口监视器,上方就是电脑给Arduino发送数据的地方,下方则是接收到的数据。
接下来看一个发送与接受的例子,这个例子将电脑发送给单片机的数据,通过单片机后又返回给电脑。
char temp;
void setup() {
Serial.begin(9600);
}
void loop() {
while(Serial.available()){ //如果电脑给单片机发送了数据,就把同样的数据发送回去.
temp=Serial.read();
Serial.print(temp);
Serial.print(" ");
}
delay(1);
}
上传程序过后,打开串口监视器,在发送区输入“Hello, Arduino!”并发送,看看接收区会不会收到返还的数据。
Okay,到现在UART的学习就学完了,单片机的部分也暂时结束了,在下一章当好中,我们将会用winform开发一个简单地串口调试助手(串口监视器),从而用电脑控制我们的Arduino。
下期更新预告:
第1部分:单片机开发——Arduino
第2项:上位机开发——.Net
三连加关注,往后不迷路
往期哪里搞,文章里翻找
猜你喜欢
- 2024-10-25 单片机实战教程来啦:项目拆解为主,手把手教&接地气
- 2024-10-25 介绍几款工具软件 | 嵌入式开发必备
- 2024-10-25 学习单片机的几点经验之谈(学会单片机)
- 2024-10-25 初学者单片机开发板如何选择?学长为你推荐
- 2024-10-25 玩转单片机!基于ESP8266模块的WIFI点阵时钟制作
- 2024-10-25 自学单片机第四篇:proteus pro软件
- 2024-10-25 单片机者进阶路(单片机从入门到精通)
- 2024-10-25 原创DIY:自制简单实用的C51单片机开发板
- 2024-10-25 STM32单片机很难?电子工程师,你怎么看
- 2024-10-25 只会 KEIL 还不够,你还得会用这些工具,让你事半功倍
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- 电脑显示器花屏 (79)
- 403 forbidden (65)
- linux怎么查看系统版本 (54)
- 补码运算 (63)
- 缓存服务器 (61)
- 定时重启 (59)
- plsql developer (73)
- 对话框打开时命令无法执行 (61)
- excel数据透视表 (72)
- oracle认证 (56)
- 网页不能复制 (84)
- photoshop外挂滤镜 (58)
- 网页无法复制粘贴 (55)
- vmware workstation 7 1 3 (78)
- jdk 64位下载 (65)
- phpstudy 2013 (66)
- 卡通形象生成 (55)
- psd模板免费下载 (67)
- shift (58)
- localhost打不开 (58)
- 检测代理服务器设置 (55)
- frequency (66)
- indesign教程 (55)
- 运行命令大全 (61)
- ping exe (64)
本文暂时没有评论,来添加一个吧(●'◡'●)