初识Arduino
一个Arduino教程帖子
1.什么是Arduino
Arduino 是一款便捷灵活、方便上手的开源电子原型平台,包含硬件(各种型号的arduino板)和软件(arduino IDE).她适用于艺术家、设计师、爱好者和对于“互动”有兴趣的朋友们。
Arduino能通过各种各样的传感器来感知环境,通过控制灯光、马达和其他的装置来反馈、影响环境。板子上的微控制器可以通过Arduino的编程语言来编写程序,编译成二进制文件,烧录进微控制器 对Arduino的编程是利用 Arduino编程语言 (基于 Wiring)和Arduino开发环境(based on Processing)来实现的。基于Arduino的项目,可以只包含Arduino,也可以包含Arduino和其他一些在PC上运行的软件,他们之间进行通信 (比如 Flash, Processing, MaxMSP)来实现。
2.最基本代码结构
void setup() {
// put your setup code here, to run once:
}
void loop() {
// put your main code here, to run repeatedly:
}
一款Sublime Text的Arduino插件,可以在Sublime Text里进行Arduino的开发。
3.一些基本概念
1)SPI
这是官方介绍
Serial Peripheral Interface (SPI)(串行外围设备接口)是一种同步串行数据传输协议,用于近距离时,微控制器(Microcontrollers),如Arduino,与其他外围设备的快速通信。他也可以用于2个微控制器的通讯。
SPI通讯通常有一个主设备(通常是Microcontrollers),用于控制外围设备。通常会有3种线路通用于各类设备的方法。
Master In Slave Out(MISO)- Slave line,用于Slave向Master发送数据
Master Out Slave In(MOSI)- Master line,用于Master向Slave发送数据
Serial Clock(SCK)- 时钟脉冲,主设备用于同步数据传输
Slave Select pin- 分配给所有的设备,用于enable/disable指定的设备,同时用于避免由于线路忙导致的错误传输。
2)PWM
脉冲宽度调制
是一种模拟控制方式,根据相应载荷的变化来调制晶体管基极或MOS管栅极的偏置,来实现晶体管或MOS管导通时间的改变,从而实现开关稳压电源输出的改变。这种方式能使电源的输出电压在工作条件变化时保持恒定,是利用微处理器的数字信号对模拟电路进行控制的一种非常有效的技术。
3)引脚
- Power 引脚: 开发板可提供3.3V和5V电压输出,Vin引脚可用于从外部电源为开发板供电。
- Analog In引脚: 模拟输入引脚,开发板可读取外部模拟信号,A0~A5为模拟输入引脚。
- Digital 引脚:UNO R3拥有14个数字I/O引脚,其中6个可用于PWM(脉宽调制)输出。数字引脚用于读取逻辑值(0或1),或者作为数字输出引脚来驱动外部模块。标有”~”的引脚可产生PWM。
- TX和RX引脚: 标有TX(发送)和RX(接收)的两个引脚用于串口通讯。其中标有TX和RX的LED灯连接相应引脚,在串口通讯时会以不同速度闪烁。
- 13引脚:开发板标记第13引脚,连接板载LED灯,可通过控制13引脚来控制LED灯亮灭。一般拿到开发板上电板载灯都会闪烁,可辅助检测开发板是否正常。
4.ESP8266
- ESP8266模块
首先明确概念,我们一般所说的ESP8266都是指ESP8266模块,是安信可科技开发的基于乐鑫ESP8266EX的UART-WiFi芯片模组。它可以通过串口将信号转为WiFi信号,ESP8266模块可以通过AT指令配置与Arduino等单片机进行通信,利用WiFi进行数据传输。
ESP8266开发板
NodeMCU是一个开源的物联网平台。基于乐鑫esp8266,具有GPIO、PWM、I2C、1-Wire、ADC等功能。
ESP8266的Arduino开发环境搭建
Installing with Boards Manager 官方步骤
- Install the current upstream Arduino IDE at the 1.8.9 level or later. The current version is on the Arduino website.
- Start Arduino and open the Preferences window.
- Enter
https://arduino.esp8266.com/stable/package_esp8266com_index.json
into the Additional Board Manager URLs field. You can add multiple URLs, separating them with commas. - Open Boards Manager from Tools > Board menu and install esp8266 platform (and don’t forget to select your ESP8266 board from Tools > Board menu after installation).
注意是开发板管理器 Boards Manager
而不是库管理器
,使用跟Arduino一样。
ESP01S与UNO的串口通信
通过UNO下载程序到ESP01S时,
RX-RX,TX-TX
;UNO与ESP01S通信时,
RX-TX,TX-RX
,软软,软硬组合都可以,UNO使用硬串口无法给ESP01S传数据;注意波特率要一致,ESP01S默认115200;
- 下载程序时UNO上的其他模块最好断电;下载完程序最好重启电源;
一些坑,常见问题解决方法
arduino的一个项目必须位于单独的目录下,否则会出现
void setup()
和void loop()
重复定义等问题。并且一个目录下只能有一个主.ino
文件,否则也会出现异常。用Arduino给ESP01S下载时出现 A fatal error occurred: Invalid head of packet (0x00)
解决:Arduino代码的影响,Arduino的RST接地“Connecting……..…..…..…..…..…..…..____”
解决:接线问题,端口错误
本作品采用知识共享署名 4.0 国际许可协议进行许可。