接入点模式(Access Point, 也称 AP)
NodeMCU可以建立WiFi网络供其它设备连接。当NodeMCU以此模式运行时,我们可以使用手机搜索NodeMCU所发出的WiFi网络并进行连接。
也就是说,此时的nodeMCU就是一个WIFI,别人可以连接他上网(现在只是局域网功能,联网功能后续拓展)
通过以下示例程序,NodeMCU将会建立一个名为ceshi-cuowu的WiFI。可以使用手机或电脑连接该WiFi从而实现与NodeMCU的网络通讯。
网页乱码说明网页的通信里不认识这个协议,主要是因为配置文件的格式,需要由ANSI另存为UTF-8模式
就今天写安装Arduino的软件文章时突然想到的,朋友教的一个特别有效率的学习方法,就是花钱。比如我想学习某个技能时发现需要用到一些软件,结果安装入门花了大半天还没搞好,不如直接淘宝,那里什么都卖,花几块钱,省半天时间,最主要的是心情不一样。自己半天搞不好任意引起负反馈,学习积极性会受到严重打击,不建议这样…不要在门口徘徊,先入门,习得重点和关键,在获得正反馈后加强学习动力,后续感兴趣可以花时间深入了解这些相对可以先跳过的部分。
百度,按部就班,别问,装就得了…怎么知道装到位了,见下图
下载Arduino IDE,并且下载好对应的开发板插件,这一步相当于单片机里的安装头文件。具体设置步骤参考太极创客
设置完成后都是先拿点灯程序祭天,呵呵,法力无边
网络设备通讯时,数据丢失和数据受损的情况经常出现。传输层的TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)协议可以用来解决这一问题。通常我们会选择这两种协议中的一种来保证数据传输的准确性。具体选择哪一种协议要看我们使用的是何种网络应用。因为不同的网络应用对于数据的传输要求是不同的。
举例来说,对于网络游戏而言,我们对数据的传输速率要求很高。因为玩家在发出了一个游戏控制指令后,这个指令需要以最快的速度传送给游戏服务器。如果传输速度跟不上,游戏体验将会大打折扣。相反,有一些网络应用对数据传输速度要求较低,但是对数据传输的准确性要求是极高的。比如电子邮件应用。当我们发出电子邮件以后,通常我们不太介意这封邮件的传输速度。邮件可以是1分钟后送达,也可以是10分钟后送达。这没有什么影响。但是邮件的信息内容是绝对要保证准确的。
这就引出了TCP和UDP这两种协议的应用范围。
TCP协议可以更好的保证数据传输的准确性,但是传输速度比UDP协议而言要慢一些。TCP协议的特点是可以保证所有数据都能被接收端接收,数据的传输顺序也不会被打乱,而且如有数据损坏则重发受损数据。基于以上功能特点,TCP通常用于电子邮件及文件上传等。
UDP协议并不能保证所有数据都被接收端所接受。一旦出现数据受损的情况,UDP协议将会抛弃受损的数据。这些数据一旦被抛弃将会永久性的消失,发送端不会因为数据受损而重新发送。因此UDP协议远不如TCP协议可靠。但是既然是这样,为何还有人会选择UDP协议呢?这是因为UDP比TCP速度快。因此UDP协议通常用于网络游戏以及语音聊天或视频聊天应用。
今天作者想给大家演示下WIFI通信实操情况的,看完教程后发现WIFI通信不过如此,通信方式采用的是串口通信,而测试的命令和演示的教程也简单易懂,我编写个程序写入单片机里,单片机和WIFI通信完成后点灯,这不就是非常棒的教材么,然而,万万没想到,作者买的开发板没送配套的WIFI模块,所以在翻箱倒柜找了一圈后决定放弃51单片机的WIFI通信,后面再写一篇蓝牙文章后,就准备使用更简单的Arduino从零开始开发物联网,不给我配套就不用,一次不行,终生弃用!!!咱们有更简单的玩法,走起~
蓝牙果然也没给配套的硬件,蓝牙和WIFI的玩法类似,只是硬件不同。仔细想了下为什么要学习蓝牙,是因为蓝牙可以实现无线通信的控制。它的控制流程是这样的:首先蓝牙模块要和单片机连接,这样蓝牙模块发送相关指令后单片机才能执行,学习重点是编程和通信;有了执行部分,还得需要输入部分,也就是手机上给蓝牙模块发送指令的软件,这个可以是手机APP,也可以是小程序,学习重点主要是前端UI(PS至今还只会打开和关闭?)、网页设计三大件(HTML、CSS、JS)。以上有输入,有输出,形成了闭环,无感了,51单片机部分结束。嗯,就这吧,电控的FOC放到下下一个阶段,接下来是新篇章物联网
现如今已进入物联网时代,各种智能穿戴设备,智能家居等控制,无不体现无线通信的优势,其主要由 WIFI、蓝牙、Zigbee、4G 等模块协同微处理器或微控制器进行控制。
其中可以通过单片机的串口与ESP8266-WIFI 模块进行通信,通过手机与开发板上的WIFI 模块连接后控制开发板。
另外的学习方向可以是以C/C++语言通过Arduino IDE来开发NodeMCU
ESP8266 是一个完整且成体系的 Wi-Fi 网络解决方案,能够搭载软件应用,或通过另一个应处理器卸载所有 Wi-Fi 网络功能。作者手中的ESP8266 是串口型WIFI,速度比较低,不能用来传输图像或者视频这些大容量的数据,主要应用于数据量传输比较少的场合,比如温度信息,一些传感器的开关量等。当然传输的数据量虽说少,但也能一次传输几千字节的数据,而且通信非常稳定,可以满足大多数应用。
安信可推出的 ESP8266-WIFI 模块有很多,它们的使用方法都大同小异,我们只要将此模块引出的通信口与单片机 IO 口连接即可。
通用WIFI模块尺寸图如下图所示:
从 图中可以看到,WIFI 模块提供了一个2*4 的外接管脚,让我们连接到自己的电路中控制,这 8 个管脚两两间距是2.54mm。管脚功能定义如下:
VCC:3.3V 电源,开发板上丝印已经标了。
RST:ES8266 复位管脚,可做外部硬件复位使用。
CH_PD:使能管脚,高电平有效。
UTXD:串口发送管脚,与单片机串口的 RXD 相连。
URXD:串口接收管脚,与单片机串口的 TXD 相连。
利用TFTLCD 模块,51 单片机系统就有了高级信息输出的功能,触摸屏刚好满足作为一个友好的用户输入的设备的需求。现如今大多电子产品是将触摸屏配合液晶显示器组成人机交互系统,比如手机、平板等。
触摸屏又称触控面板,它是一种把触摸位置转化成坐标数据的输入设备,根据触摸屏的检测原理,主要分为电阻式触摸屏和电容式触摸屏。下面我们就分别来介绍下这两种触摸屏。
电阻式触摸屏是一种传感器,它将矩形区域中触摸点(X,Y)的物理位置转换为代表 X 坐标和 Y 坐标的电压。很多 LCD 模块都采用了电阻式触摸屏,比如2.0/2.2/2.4/2.6/2.8/3.0/3.2/3.5 寸的 TFTLCD 模块都是采用电阻式触摸屏。使用时需要用一定的压力才会能检测到电压,即触摸。
电阻式触摸屏基本上是薄膜加上玻璃的结构,薄膜和玻璃相邻的一面上均涂有 ITO(纳米铟锡金属氧化物)涂层,ITO 具有很好的导电性和透明性。当触摸操作时,薄膜下层的 ITO 会接触到玻璃上层的 ITO,经由感应器传出相应的电信号,经过转换电路送到处理器,通过运算转化为屏幕上的X、Y 值,而完成点选的动作,并呈现在屏幕上。电阻式触摸屏结构如下图所示:
电阻触摸屏的工作原理主要是通过压力感应原理来实现对屏幕内容的操作和
显示用的元件包括显示点,数字,汉字,图片,彩屏等等。
1602 液晶也叫 1602 字符型液晶,它能显示 2 行字符信息,每行又能显示16个字符。它是一种专门用来显示字母、数字、符号的点阵型液晶模块。它是由若干个 5x7 或者 5x10 的点阵字符位组成,每个点阵字符位都可以用显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此,所以它不能很好的显示图片。
管脚定义
LCD12864 液晶屏结构上与 LCD1602 一样,只是在行列数与现实像素上区别很大。LCD12864,以下简称 12864,注意区分 LCD1602 和LCD12864。12864是64 行 128 列,当然也有可能会设计成 64 列 128 行,这里的行列不像1602那样,1602 是按照八行四列标准英文字符格式,以一行十六个字符,两列字符命名,而 12864 是以 128 列像素,64 行像素,也就是有128*64 个像素点组成。就好比是 128 列 64 行的点阵。需要一行一列的去显示像素点。
TFT-LCD 是薄膜晶体管液晶显示器英文 thin film transistor-liquidcrystal display 字头的缩写。TFT 液晶为每个像素都设有一个薄膜晶体管(TFT),每个像素都可以通过点脉冲直接控制,因而每个节点都相对独立,并可以连续控制,不仅提高了显示屏的反应速度,同时可以精确控制显示色阶,所以 TFT 液晶的色彩更真,因此 TFT-LCD 也被叫做真彩液晶显示器。
常用的 TFT 液晶屏接口有很多种,8 位、9 位、16 位、18 位都有,这里的位数表示的是彩屏数据线的数量。常用的通信模式主要有6800 模式和
DAC(Digital to analog converter)即数字模拟转换器,它可以将数字信号转换为模拟信号。它的功能与 ADC 相反。在常见的数字信号系统中,大部分传感器信号被转化成电压信号,而 ADC 把电压模拟信号转换成易于计算机存储、处理的数字编码,由计算机处理完成后,再由 DAC 输出电压模拟信号,该电压模拟信号常常用来驱动某些执行器件,使人类易于感知。如音频信号的采集及还原就是这样一个过程。
T型电阻网络DAC,如图:
DAC 输出电压计算公式:V0=Vref*z/256
公式中的 z 表示单片机给的数字量,vref 为参考电压,通常我们是接在系统电源上,即 5V,数值 256 表示 DAC 精度为 8 位。
DAC 主要由数字寄存器、模拟电子开关、位权网络、求和运算放大器和基准电压源(或恒流源)组成。用存于数字寄存器的数字量的各位数码,分别控制对应位的模拟电子开关,使数码为 1 的位在位权网络上产生与其位权成正比的电流值,再由运算放大器对各电流值求和,并转换成电压值。上述的模拟电子开关都分别接着一个分压的器件,比如说电阻。模拟开关的个数取决于 DAC 的精度。那么 N 个电子开关就把基准电压分为N 份(并不是平均分哦),而这些开关根据输入的二进制每一位数据对应开启或者关闭,把分压的器件上的电压引入输出电路中。
然而**……….**看下面
出于成本考虑,在实际开发应用中,使用最多的还是通过PWM 来模拟DAC输出。
PWM 是 Pulse Width Modulation 的缩写,中文意思就是脉冲宽度调制,简称脉宽调制。
其应用领域包括测量,通信,功率控制与变换,电动机控制、伺服控制、调光、开关电源,甚至某些音频放大器。
好了,PWM能不能形象点描述下,嗯…….
首先,
一个不知名的老头儿说了…
只要这个正弦波与t坐标轴围起来的阴影面积相同…
不管给你什么样形状的电压波形…
对你产生的效果都是大概一样的…
打个比方说…
老板让你三天每天工作8小时…
或者让你一天工作24小时再休息两天…
对你产生的苦逼感是一样的…
这样…
我们就可以把一个正弦波转变成…
一个个幅值相同…
宽度不同的小矩形波了…
这些就是…
传说中的PWM…
PWM 的输出其实就是对外输出脉宽可调(即占空比调节)的方波信号,改变PWM 输出信号的占空比即可实现PWM的改变,而占空比其实就是一个周期内高电平时间与周期的比值。频率的话可以使用 51 单片机的定时器确定。
又见独立电路…
输入信号:PWM 输出控制管脚(任意单片机引脚)接至J50 端子上;输出:DAC1 为 PWM 输出信号,将其连接一个 LED,这样可以通过指示灯的状态直观的反映出 PWM 输出电压值变化。LM358 芯片与这些电容电阻构成了一个跟随电路,即输入是多少,输出即为多大电压,输出电压范围是 0-5V。
我文章文件为
–tupian.md
图片目录为
–tupian/logo.png
插入语句为
51 单片机系统内部运算时用的全部是数字量,即0 和1,因此对单片机系统而言,我们无法直接操作模拟量,必须将模拟量转换成数字量。所谓数字量,就是用一系列 0 和 1 组成的二进制代码表示某个信号大小的量。用数字量表示同一个模拟量时,数字位数可以多也可以少,位数越多则表示的精度越高,位数越少表示的精度就越低。
ADC(analog to digital converter)也称为模数转换器,是指一个将模拟信号转变为数字信号。单片机在采集模拟信号时,通常都需要在前端加上A/D芯片。
(1)分辨率
ADC 的分辨率是指对于允许范围内的模拟信号,它能输出离散数字信号值的个数。这些信号值通常用二进制数来存储,因此分辨率经常用比特作为单位,且这些离散值的个数是 2 的幂指数。
例如:12 位 ADC 的分辨率就是 2^12(4096),或者说分辨率为满刻度的1/(2^12)。一个 10V 满刻度的 12 位 ADC 能分辨输入电压变化最小值是:
10V×1/(2^12 )=2.4mV。
(2)转换误差
转换误差通常是以输出误差的最大值形式给出。它表示A/D 转换器实际输出的数字量和理论上的输出数字量之间的差别。常用最低有效位的倍数表示。例如给出相对误差≤±LSB/2,这就表明实际输出的数字量和理论上应得到的输出数字量之间的误差小于最低位的半个字。
(3)转换速率
ADC 的转换速率是能够重复进行数据转换的速度,即每秒转换的次数。而完成一次 A/D 转换所需的时间(包括稳定时间),则是转换速率的倒数。
在 A/D 转换器中,因为输入的模拟信号在时间上是连续的,而输出的数字信号代码是离散的,所以 A/D 转换器在进行转换时,必须在一系列选定的瞬间(时间坐标轴上的一些规定点上)对输入的模拟信号采样,然后再把这些采样值转换为数字量。因此,一般的 A/D 转换过程是通过采样保持、量化和编码这三个步骤完成的,即首先对输入的模拟电压信号采样,采样结束后进入保持时间,在这段时间内将采样的电压量转化为数字量,并按一定的编码形式给出转换结果,然后开始下一次采样。
量化:数字信号不仅在时间上是离散的,而且数值上的变化也不是连续的。这就是说,任何一个数字量的大小,都是以某个最小数量单位的整倍数来表示的。因此,在用数字量表示采样电压时,也必须把它化成这个最小数量单位的整倍数,这个转化过程就叫做量化。
编码:所规定的最小数量单位叫做量化单位,用△表示。显然,数字信号最低有效位中的