玩转Arduino合集.

Slides:



Advertisements
Similar presentations
人機介面 Arduino 簡介 授課教師 開課單位. Arduino 簡介 Arduino 是一塊 Open source 的 Simple i/o 介面板,並 且具有使用類似 java, C 語言的開發環境。 可以快速使用 Arduino 語言 ( 基於 wiring) 與 Flash 或 Processing…
Advertisements

GOOWI 万物“无”连 --低功耗蓝牙在IoT中的应用    魏心伟 高为通信技术有限公司.
Sun SPOT外部接口 University Outreach Programs in China
水 钟 古代计时器 陈宁心.
绪论:LabVIEW控制简介 复旦大学物理教学实验中心 phylab.fudan.edu.cn.
Arduino与小游戏制作 钟鸣远
实验四 利用中规模芯片设计时序电路(二).
施耐德电气(中国)投资有限公司 运动控制部技术经理 李幼涵 高级工程师
內容:串列傳輸 實作:Arduino to PC 、 Arduino to Arduino 簡報:廖崇義
动手玩转Arduino (三) 串口输入输出
AVR单片机软硬件设计教程-入门篇 ——学单片机就要学AVR!
YM100开发实验板 演讲人:熊小燕 2009年月12月16日
GETAC—PS336-G1-T 外观设计 建议零售价格:13,830元 上市时间:2014年 2月1日 目标人群:户外现场作业人员
    Arduino 1602 LCD 量測電壓顯示 LCD 示波器    林品成 月.
ARDUINO+BLUETOOTH Arduino实现蓝牙数据传输.
动手玩转Arduino (五) RF数据通信
走进编程 程序的顺序结构(二).
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月20日.
乐驾-车载无线终端-CARRO 产品类型:车载无线路由器 建议零售价格:¥599 江苏鸿信
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
基于Arduino单片机的简易示波器 Arduino Based Simple Oscilloscope
DHT11 溫溼度感測器 林品成 月.
云剑电子自助洗车系统 ——简介
利用Arduino制作定向装置 核科学与技术系 崔伟毅 梁嘉祺
SATT 系列300MHz~3.5GHz数控衰减器 仪器级的性能,极富竞争力的价格
SATT 系列10MHz~4GHz数控衰减器 仪器级的性能,极富竞争力的价格
    使用Arduino量測交流(AC)電壓    林品成 月.
    使用Arduino量測直流(DC)電壓    林品成 月.
工业机器人技术基础及应用 主讲人:顾老师
安捷伦Agilent 3458A 八位半高精度万用表
LENZE 8200系列简易操作 制作人:何宇.
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
8051單晶片 蘇恆生 老師.
亚博科技 Arduino视频教程 第8讲 蜂鸣器发声实验.
模块6 S7-200 PLC基本逻辑指令 项目 6.2 电动机Y-减压起动控制设计 项目 6.2 电动机Y-减压起动控制设计
10.2 串联反馈式稳压电路 稳压电源质量指标 串联反馈式稳压电路工作原理 三端集成稳压器
物理 九年级(下册) 新课标(RJ).
实验4 三相交流电路.
K60入门课程 02 首都师范大学物理系 王甜.
姚金宇 MIT SCHEME 使用说明 姚金宇
Logo语言. Logo语言 视图窗口 小海龟 ?: 提示符 l: 光标 命令窗口.
工业机器人知识要点解析 (ABB机器人) 主讲人:王老师
成绩是怎么算出来的? 16级第一学期半期考试成绩 班级 姓名 语文 数学 英语 政治 历史 地理 物理 化学 生物 总分 1 张三1 115
Arduino智慧機器人 觸鬚的觸碰式導航
第4章 Excel电子表格制作软件 4.4 函数(一).
诺 金 EE07系列 小型OEM数字输出温湿度变送器 产品特点: 典型应用: ► 气象应用 ► 加湿器、除湿器 技术参数: 选型指南:
实验三 16位算术逻辑运算实验 不带进位控制的算术运算 置AR=1: 设置开关CN 1 不带进位 0 带进位运算;
华为— S7-201c 外观设计 S7-201c 建议零售价格:2588元 上市时间:2011年 10月 20 日
HSC高速输出例程 HORNER APG.
Haohaodada-Nano编程 数码管中数的闪烁 舟山市定海区教师进修学校 张秋明.
四 电动机.
工业机器人知识要点解析 (ABB机器人) 主讲人:王老师
实验一 单级放大电路 一、 实验内容 1. 熟悉电子元件及实验箱 2. 掌握放大器静态工作点模拟电路调试方法及对放大器性能的影响
滤波减速器的体积优化 仵凡 Advanced Design Group.
第五章 序列埠通訊 並列與序列通訊簡介 認識序列埠 認識字元資料類型 字串資料類型 從序列埠監控視窗觀察變數 從Arduino接收序列資料
LCS之自由电子激光方案 吴钢
THERMOPORT 20 手持式温度表 THERMOPORT系列手持温度表基于所用技术及对实际应用的考 虑,确立了新的标准。
K60入门课程 03 首都师范大学物理系 杨晓瑜.
亚博科技 Arduino视频教程 第1讲 Hello World!
1/27 高速采样压力控制器 模块化数字型控制器 RKC挤出机温度,压力控制解决方案.
ADC0809并行A/D转换 (实验十) DAC0832并行D/A转换实验 (实验十一) RS232串口通信实验 (实验九)
FVX1100介绍 法视特(上海)图像科技有限公司 施 俊.
B12 竺越
工业机器人入门使用教程 ESTUN机器人 主讲人:李老师
培训课件 AB 变频器的接线、操作及参数的备份 设备动力科.
第2章 Arduino编程.
DSP技术与应用 电子与信息技术系.
9.6.2 互补对称放大电路 1. 无输出变压器(OTL)的互补对称放大电路 +UCC
四路视频编码器 快速安装手册 1、接口说明 2、安装连接 3、软件下载 4、注意事项 编码器软件下载地址
第八章 第二部分 PLC控制组态软件 综合仿真实验
Presentation transcript:

玩转Arduino合集

Arduino是什么? Arduino硬件介绍 Arduino编程环境介绍

Arduino的安装 Arduino IDE的安装 USB驱动的安装

Arduino程序结构:setup() 上电后setup()函数执行一次 4

Arduino程序结构:loop() loop()函数一直循环运行 5

Arduino数字输入输出 6

Arduino程序下载 HelloWorld程序

动手 HelloWorld:点亮一个LED灯

Arduino与电子积木 什么是电子积木 电子积木如何与Arduino连接 传感器扩展板 连接线

数字型电子积木

通用按钮模块

小按钮模块

大按钮模块

磁力开关

触摸传感器

倾斜传感器

人体运动 红外热释传感器

反射型红外开关 50cm~100cm

反射型红外开关 10cm

反射型红外开关 2cm

对射型 红外开关 8米

继电器模块

动手 通过按钮模拟来控制LED灯的亮灭

面包板使用方法介绍

动手 用面包板完成LED模块的电路连接

LED基本电路 电阻 LED 电源(正/负)

LED控制代码

动手 使用Arduino和传感器扩展板 使用Arduino的9,10,11三个引脚 使用三个LED和1K的电阻 通过程序进行控制 讨论

彩色LED 红/绿/蓝 三原色 根据公共端的不同有共阳/共阴两种

动手 更换RGB LED 用Arduino程序混色 讨论

模拟信号 模拟信号的值可以连续变化 9V电池就是一种模拟器件,因为它的输出电压并不精确地等于9V,而是随时间发生变化,并可取任何实数值。 光照强度、温度、湿度等也都是模拟信号

Arduino中的模拟输出 analogWrite(pin, value) pin为Arduino上的PWM引脚 value取值0-255 3, 5, 6, 9, 10, 11 value取值0-255 PWM 实现模拟信号的数字化方法

动手 Arduino控制LED淡入淡出效果

动手 实现全彩的混色

模拟输入 通常基于分压原理 电位器 电子积木 300度 旋转角度传感器

Arduino中的模拟输入 analogRead(pin) pin: 模拟输入引脚 A0, A1, A2, A3, A4, A5 返回值: 0-1024 (10位精度)

动手 通过读取电位器的值来控制LED灯的亮度

300度 旋转角度传感器

多圈 旋转角度传感器

60行程 滑动电位器 推子

游戏杆 控制杆 JoyStick

模拟温度传感器

光线传感器

声音传感器

Sharp 红外距离传感器 30cm, 80cm, 150cm, 5.5m

三轴 加速度传感器

FlexiForce压力传感器 1 lb, 25 lb, 100 lb

FSR系列压力传感器 压力1-10kG 尺寸和外形不同

弯曲传感器 单向,双向

拉伸 传感器 4 inch, 6 inch

动手 实验各种模拟传感器 对RGB LED进行控制 分享

串口通信 串口通信(Serial Communication)是Arduino和计算机间按位进行数据传输的一种最基本的方式。 使用3根线完成 地线,GND 发送,Tx 接收 ,Rx 主要参数 波特率:通信速度,表示每秒钟传送的位(bit)的个数 数据位 停止位 奇偶校验位

Arduino 串口 USB转串口 串口引脚 串口数目 串口初始化函数 PC端:串口 Arduino端:USB RX:Pin 0 TX:Pin 1 串口数目 Arduino MEGA和Arduino 2560:4个 其余:1个 串口初始化函数 Serial.begin(speed) speed: 300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, 115200 通常在 setup() 函数里调用

Arduino 串口输出 将数据从Arduino传输到PC 串口输出函数 TX  串口转USB  PC端软件串口监视软件 Arduino IDE自带串口监视软件 也可以用其它软件进行接收:Flash, Processing, Director, vvvv等 串口输出函数 Serial.print(val), Serial.println(val) 输出ASCII码(后者多一个回车换行) Serial.print(val, format) , Serial.println(val, format) 按指定格式输出(后者多一个回车换行)

Serial.print(val) 实例 Serial.print(78) Serial.print(1.23456) 输出"78" Serial.print(1.23456) 输出"1.23" Serial.print(byte(78)) 输出“N” (N的ASCII码值为78)) Serial.print('N') 输出"N" Serial.print("Hello world.") 输出"Hello world."

Serial.print(val, format) 实例 Serial.print(78, BYTE) 输出"N" Serial.print(78, BIN) 输出"1001110" Serial.print(78, OCT) 输出"116" Serial.print(78, DEC) 输出"78" Serial.print(78, HEX) 输出"4E" Serial.print(1.23456, 0) 输出"1" Serial.print(1.23456, 2) 输出"1.23" Serial.print(1.23456, 4) 输出"1.2346"

动手

动手 尝试输出更多格式的数据到计算机 Serial.print(78) Serial.print(1.23456) Serial.print(byte(78)) Serial.print('N') Serial.print("Hello world.") Serial.print(78, BYTE) Serial.print(78, BIN) Serial.print(78, DEC) Serial.print(78, HEX) Serial.print(1.23456, 2)

串口液晶模块 波特率9600 命令格式 操作命令 一个完整命令的例子 所有对该液晶屏进行控制的串口命令都以字符”$”开始,以回车换行”\r\n”结束,两者之间是相应的命令和参数,不同的命令具有不同的参数。 操作命令 光标移动 :GO<空格>行<空格>列 行和列均从1开始 GO 1 1 在当前光标位置上显示字符串 PRINT<空格>字符串 PRINT Hello Arduino 清屏:CLEAR 将光标移回到屏幕左上角的初始位置:HOME 设置光标效果:CURSOR<空格>显示<空格>闪烁 第一个参数为是否显示光标(1和0) 第二个参数为是否闪烁(1和0) CURSOR 1 1 一个完整命令的例子 Serial.print("$PRINT Flamingo EDA\r\n"); Serial.println("$PRINT Flamingo EDA");

动手 要求:清屏后在屏幕上的第二行第二列开始显示字符串Arduino Club 提示 在loop的最后加delay防止闪烁 在下载代码的时候不能接显示屏

Arduino 串口输入 串口队列(Buffer) 串口输入函数 PC和Arduino间的缓冲区 Serial.available() 返回值:当前可读的数据数目 Serial.read() 如果串口没有数据可读,返回 -1 如果串口有数据可读,返回第一个字符,并从串口队列中取出 Serial.peek() 如果串口没有数据可读,返回-1 如果串口有数据可读,返回第一个字符,但不从串口队列取出,因此下次还能读到 Serial.flush() 清空串口队列

动手

作业 从串口输入以$开始,以回车换行(\r\n)的命令,对其进行解析, 控制指定数字I/O引脚上的LED, 控制指定PWM端口上的LED亮度 第一个参数为引脚号,第二个参数为亮灭 $D 2 1\r\n $D 3 0\r\n 控制指定PWM端口上的LED亮度 第一个参数为引脚号,第二个参数为亮度值 $P 6 128\r\n

基于串口的电子积木(一) 蓝牙串口模块 串行液晶显示屏 无线数据传输模块 字符型 1602 LCD APC220 USB转串口适配器 RS485串口模块 MAX232 串口模块

基于串口的电子积木(二) 串口RFID模块 10cm 串口RFID模块 6cm XBee USB 适配器

直流电机 将电能转换为机械能的一种装置 两个电源接头 在适当的电压下给予足够的电流时将连续旋转,旋转方向由电流方向决定 普通直流电机转速高力矩小,适用于对力矩要求小的场合

直流减速电机 直流减速电机(齿轮减速电机)是在普通直流电机的基础上,加上配套齿轮减速箱。 齿轮减速箱可以提供较低的转速和较大的力矩,不同的减速比可以提供不同的转速和力矩

常用参数 工作电压(额定电压) 工作电流 转矩 转速 驱动电机推荐使用的电压 高于或者低于工作电压时电机也能工作 实际电压 < 额定电压,输出功率变小 实际电压 > 额定电压,会影响电机的寿命 工作电流 电机工作电流越大,输出功率越大 空载运行时,电机的电流最小(空载电流) 负载增大到使电机停止转动时(堵转电流) 转矩 电机的转动力 转速 每分钟旋转的圈数(转/分,RPM)

注意! 电机属于大电流设备,无法用Arduino引脚直接控制 电机电压高于Arduino的工作电压,注意隔离和接线 区别于LED 电机电压高于Arduino的工作电压,注意隔离和接线 出错可能导致Arduino烧毁 电机在不通电的情况下旋转将产生逆电流(逆电压) 发电机的工作原理 逆电流的方向与电机工作电流的方向相反 逆电流会造成电子设备的损坏

动手 观察逆电压——手工发电机

基本控制电路 用三极管或者MOS管驱动电机

动手 用Arduino控制电机的转动

代码 与LED灯控制代码相同

电机速度控制 复习PWM 高速地开关三极管来实现对电机的控制 占空比(打开时间:关闭时间)决定了输出给电机的能量份额 Arduino的analogWrite函数用来产生PWM信号

动手 用Arduino控制电机转动的速度 如何让速度变化更容易观察到?

H桥式驱动电路 4个三极管控制一个直流电机 只让对角线上的一对三极管导通 否则会短路,烧坏三极管 能同时控制速度和方向

电机驱动芯片L293D 使能引脚 Arduino 5V 方向A 电机电源和 Arduino 需要共地! 电机 方向B 电机电源 包含两个H桥式驱动电路,可以用来驱动两个直流电机 使能引脚 Arduino 5V 方向A 电机电源和 Arduino 需要共地! 电机 方向B 电机电源

Arduino控制L293D 速度控制 方向控制 使用Arduino模拟输出引脚 将产生的PWM信号连接到L293D的使能引脚 将产生的数字信号连接到L293D的A、B两个方向引脚 正转:A为高,B为低 反转:A为低,B为高 制动:A、B同时为高或者低

动手 用L293D控制电机

Arduino电机驱动扩展板 基于L298N,工作原理与L293D一样 提供更大工作电流,可以驱动大的直线电机 逆电压消除电路

步进电机 一种可以精确控制的交流电机 由驱动脉冲控制,每个脉冲让电机前进一个固定的角度(步进角) 电机速度由单位时间内脉冲的个数决定(脉冲频率) 功率小,负载能力低,控制相对复杂

双极性步进电机 每个线圈都可以两个方向通电 四根引线,每个线圈两条 使用数字万用表确定线圈分组 双极性步进电机的步距通常是1.8° 某两根引线之间能够测量到阻值就属于一组 双极性步进电机的步距通常是1.8° 转一圈需要200步

工作原理

步进电机驱动器 地 电机电源 线圈A 线圈B 电机电源和 Arduino 需要共地! 地 步进脉冲 方向 需要不断改变线圈中电流的方向 通过H桥式驱动电路完成 步进电机驱动模块EasyDriver 地 电机电源 线圈A 线圈B 电机电源和 Arduino 需要共地! 地 步进脉冲 方向

Arduino控制EasyDriver 方向控制 使用Arduino的数字输出引脚 速度控制 产生脉冲信号

动手 用EasyDriver驱动双极性步进电机

升降速曲线 步进电机在拖动负载高速移动一定距离并精确定位时一般来说都应包括五个阶段 不同阶段的脉冲频率应不同 启动 加速 高速运行(匀速) 减速 停止 不同阶段的脉冲频率应不同

舵机 舵机也叫伺服电机(Servo),工作电压一般4.6 – 7.2V 由直流电机、减速齿轮组、传感器和控制电路组成 主要应用在定位控制上

舵机接口 标准三线接口 电源线 地线 控制线

控制信号 舵机的控制信号也是一种PWM信号 脉冲周期20毫秒 脉冲高电平持续1毫秒(1000微秒)到2毫秒(2000微秒) 用来控制的脉冲信号必须持续产生,否则很难稳定

注意! 舵机对控制脉冲高电平的宽度非常敏感 两个控制脉冲的间隔时间不太敏感 只有机械约束,没有电路约束 千万不能接反电源 抖动:控制信号每个脉冲的高电平宽度不稳定 两个控制脉冲的间隔时间不太敏感 只要在可以接受的范围内都可以(14ms到20ms) 只有机械约束,没有电路约束 控制脉冲宽度大于920us或者2120us,对电机寿命会有影响 驱动电机到达物理上不可能到达的位置 千万不能接反电源 大部分舵机都可能会烧毁 通过实验来找出电机的运动范围 大部分舵机的运动区间都在150度左右

Arduino如何控制舵机 Servo库 servo.attach(pin) servo.write(anlog) 在指定的引脚上连接舵机 servo.write(anlog) 将舵机旋转到指定的角度位置 servo.writeMicroseconds(us) 生成指定宽度(微秒)的控制脉冲

动手 利用Arduino为舵机找到中心位置 以中心位置左右摆动

Arduino如何与外界沟通 Pin COM SPI IIC SPI SCK,MISO,MOSI,SS (13,12,11,10) COM RX/TX (0,1) Pin COM SPI IIC I2C SDA/SCL (A4,A5)

RF遥控 无线射频(Radio Frequency) 主要包括无线收/发机 应用场景 在空气中传播的电磁波 发射模块 接收模块 车辆/家庭防盗 遥控玩具

4路RF模块 无线发射模块对应于数字输出(Digital Out) 无线接收模块对应于数字输入(Digital In) 将相应引脚设置成高,发出数据 无线接收模块对应于数字输入(Digital In) 若相应引脚读出为高,接收数据 一共4个通道:C1、C2、 C3、 C4 无线发射模块 无线接收模块

动手 两台Arduino一组 目标 发射组 接收线 通过按钮来控制对方LED灯的亮灭 RF发射模块一个 按钮模块一个 RF接收模块一个

参考代码 发射端代码 接收端代码

问题讨论 各个组之间如何避免冲突 可以尝试使用不同的通道 为RF模块配置不同的地址

动手 两台Arduino一组,交换发射组和接收组 目标 发射组 接收组 多通道无线数据收发 模拟遥控汽车,用按钮控制舵机的左右转向 RF发射模块一个 按钮模块两个 接收组 RF接收模块一个 舵机 目标 多通道无线数据收发 模拟遥控汽车,用按钮控制舵机的左右转向

RF数据传输 4路RF模块传输的是数字信号 无线数传模块可以实现各种数据的传输 简单的开/关、1/0信号 数字量:开/关 模拟量:光线、温度、声音等

APC220 通过串口(COM)与Arduino进行沟通 数据收发一体,即可以发送数据又可以接收数据 传输距离:开阔地1200m 数据发送:写串口 Serial.write() 数据接收:读串口 Serial.read() 传输距离:开阔地1200m

Arduino与COM模块的连接 传感器扩展板 COM/I2C连接线 COM

动手 两台Arduino一组 目标 发射组 接收组 发射组在按钮按下时通过APC220模块发送数据’A’ 接收组在收到数据’A’时点亮LED 按钮模块一个 接收组 LED模块一个 目标 发射组在按钮按下时通过APC220模块发送数据’A’ 接收组在收到数据’A’时点亮LED

参考代码 发射端代码 接收端代码

问题讨论 按钮的处理 消抖处理:发送端delay(100)改成delay(10)呢? 如何保证按一下按钮,只发送一次?

APC与PC间的无线连接 USB转串口适配器

动手 Arduino作为数据收集器采集传感器数据 通过APC220模块传递给PC机 通过串口监视软件观察数据变化 如何使数据更加可读?