碇源堂 发表于 2013-1-29 17:36:40

【急!】关于虚拟串口与多串口,还有ARDUINO最小系统板等

本帖最后由 碇源堂 于 2013-1-31 19:18 编辑

我是工科的,学的是机器人工学,尽管是交叉学科所以单片机编程也有涉猎,但是主要精力暂时还集中在机械结构上面和人工智能这方面,我现在打算参加一个国际机器人比赛,有一些东西希望能有人指导一下
1.多串口通讯的问题,如何能够做到尽量不出现数据错误的情况下进行串口通讯?我用的是2块ARDUINO DUE R3,用来作为神经网络算法的节点
2.虚拟串口,ATMEGA328P-PU能不能支持虚拟串口?虚拟串口的稳定性如何?毕竟神经网络算法需要很多节点连接的
3.如何制作更为稳定的最小系统板?我做过不少,但是感觉上不是那么稳定,只有晶振,排针, 还有自动复位和LED,除此之外什么都没有,会不会对系统运行产生影响?
4.ATMEGA328P-PU在以最快的运行速度的情况下,能够同时处理并发送多少个加速度与陀螺仪传感器的信号?因为手上尽管有闲的蛋疼烧钱的嫌疑,我确实有几十块传感器【其实还有2块九轴飞控,不过没有寄到,估计是坑了】
5.有没有运行效率更高,并且不是贴片的,带有更多串口的支持ARDUINO的MCU?贴片的话我实在是压力太大了,机器人大小有限制不说,因为我是在日本姑且算是留学,买的当地商店的价格快把我坑哭了【ARDUINO 2560一枚300人民币,快赶上DUE了】
6.TINY85等能不能支持多串口?因为这个性价比实在不高,但是大小足够小,如果只是单独处理一枚传感器的信号我觉得应该是没什么问题的
7.关于外加容量的问题,ARDUINO如何外接存储?不是SD卡那种,是24CXX,90CXX这类的

cosailer 发表于 2013-1-29 23:13:04

本帖最后由 cosailer 于 2013-1-29 23:19 编辑

碇源堂 发表于 2013-1-29 21:21 static/image/common/back.gif
只能同时一个的话,我就蛋疼了,因为目前硬件带足够串口的只有2560和DUE上的…………
328撑死2个的情况下 ...
看arduino的官方说明,可以虚拟多个软件串口,但是只能有一个串口在同一时间收数据,发数据没说,应该可以多个同时发。但是我没试过,具体的就不知道了。还有,AT85的内存很小的,代码量不能很大的。 我不知道你要虚拟几个串口,要同时收发数据还是只发数据,AT85就8个脚,6个能用而已。
http://arduino.cc/en/Reference/SoftwareSerial

laofuz1024 发表于 2013-1-29 19:47:57

学软件工程的,怎么学这方面的知识呢?

Malc 发表于 2013-1-29 20:07:43

1、奇偶校验,自己定协议神马的
2、arduino支持软件串口,reference里有说明,多机通信,方式还有很多的,SPI,IIC
3、稳定的电源、合理的布线、使用晶振应该就没问题了
4、如果是使用库IIC读取mpu6050的话,貌似要花掉2ms左右,ADC时间是100us,串口要想提速的话,增大波特率,或者别用ASCII发送,直接二进制发送
5、要想运行效率高的话,就用avr语言编程吧。。另外,xarduino,最高32M速度,兼容普通arduino
7、arduino官网playground里有详细介绍各种存储器,英文

碇源堂 发表于 2013-1-29 20:11:00

Malc 发表于 2013-1-29 20:07 static/image/common/back.gif
1、奇偶校验,自己定协议神马的
2、arduino支持软件串口,reference里有说明,多机通信,方式还有很多的, ...

英文渣…………目前留学日本中,表示日本教材不需要英文…………但是我现在很忧伤…………
不过很感谢,但是果断后续还得自己慢慢查了…………比赛是下个月23号,幸好咱除了电源和机体的强化外都快做完了,20天应该能把程序给搞出来…………

碇源堂 发表于 2013-1-29 20:15:45

Malc 发表于 2013-1-29 20:07 static/image/common/back.gif
1、奇偶校验,自己定协议神马的
2、arduino支持软件串口,reference里有说明,多机通信,方式还有很多的, ...

不过I2C跟ADC貌似都已经够快了,毕竟感觉上搭建一个基于单片机的小型神经网络应该不会需要太恐怖的速度,毕竟我的目标是反应速度≈人嘛…………2MS还100微秒貌似都足够了
XARDUINO如何自制?
还有,如何分辨国产仿官方板子?我买的ARDUINO DUE,但是不确定是不是真的,毕竟卖家说是3.3V电源,但是我在官网看的是7-12V…………

cosailer 发表于 2013-1-29 20:21:00

6,ATiny85我玩过arduino,没有硬件串口,需要软件虚拟串口,但是arduino好像只能同时虚拟一个串口。不过虚拟出来的串口挺稳定,使用内部晶振可以有9600的波特率,连外部晶振都省掉了。然后还同时可以虚拟I2C和其他的什么。读个小传感器然后串口输出应该是没什么问题的。

Malc 发表于 2013-1-29 21:01:51

碇源堂 发表于 2013-1-29 20:15 static/image/common/back.gif
不过I2C跟ADC貌似都已经够快了,毕竟感觉上搭建一个基于单片机的小型神经网络应该不会需要太恐怖的速度, ...

自制就算了,第一是贴片,第二要用专门的下载器刷bootloader
due的工作电压是3.3v,板子上自带稳压,所以输入7v没事

碇源堂 发表于 2013-1-29 21:21:38

cosailer 发表于 2013-1-29 20:21 static/image/common/back.gif
6,ATiny85我玩过arduino,没有硬件串口,需要软件虚拟串口,但是arduino好像只能同时虚拟一个串口。不过虚 ...

只能同时一个的话,我就蛋疼了,因为目前硬件带足够串口的只有2560和DUE上的…………
328撑死2个的情况下我的神经网络的构成和稳定性就会坑爹了,毕竟神经网络的特性就是精确性嘛………………
真的没有办法再添加了吗?

碇源堂 发表于 2013-1-29 21:23:28

Malc 发表于 2013-1-29 21:01 static/image/common/back.gif
自制就算了,第一是贴片,第二要用专门的下载器刷bootloader
due的工作电压是3.3v,板子上自带稳压,所以 ...

那啥,我能用的只有11.1V的…………
另外,刚才看了关于GND的问题,自制的ARDUINO最小系统板的情况下,如何保证抗干扰能力?
328的用途:接上几个传感器,串口通讯,但是咱对抗干扰能力比较揪心…………

Malc 发表于 2013-1-29 23:16:22

碇源堂 发表于 2013-1-29 21:23 static/image/common/back.gif
那啥,我能用的只有11.1V的…………
另外,刚才看了关于GND的问题,自制的ARDUINO最小系统板的情况下,如 ...

due最高输入20v,当然保险一点还是7~12v
最小系统板元件少,工作频率也低,16M而已,没那么多问题的,地线尽量粗,别出现回路,电源加滤波电容,,,
另外,用合适的滤波算法,论坛里有

碇源堂 发表于 2013-1-30 17:11:37

cosailer 发表于 2013-1-29 23:13 static/image/common/back.gif
看arduino的官方说明,可以虚拟多个软件串口,但是只能有一个串口在同一时间收数据,发数据没说,应该可以 ...

那啥,我得做到同时收发,而且是多个,神经网络算法嘛…………首先是输入端一对多,输入隐层,接着隐层一对一输出到输出这里…………
操作先是:加速度,陀螺仪传感器输出到输入端【手上余钱足够,所以就是一个传感器对一个输入端也没问题】,接着输入端把分析出的X/Y/Z还有陀螺仪资料传到隐层进行二次运算,接着隐层输出,这样的误差会减少的最小【实际上就是一群输入端先是输入到隐层A,接着重复输入到隐层B,接着是隐层C,隐层数少于输入端一个,接着隐层把数据传到输出,也是少一个】
但是貌似没办法同时进行的话那就没有意义了,因为传感器在ADC的情况下是100微秒,I2C是2毫秒【之前有人说了】,所以无法同时传递的话会让机体得到的位置数据失去意义…………我这还不如靠2块DUE呢…………一块控制机体,一块收集数据…………

碇源堂 发表于 2013-1-30 17:14:56

Malc 发表于 2013-1-29 23:16 static/image/common/back.gif
due最高输入20v,当然保险一点还是7~12v
最小系统板元件少,工作频率也低,16M而已,没那么多问题的,地 ...

滤波电容用法求解…………咱模电学的不全面,虽然是工科的,但是我之前都是学机械和A.I来着的………………
滤波算法学习中…………
另外,ADC貌似需要外置电路?
同时求多串口同时通信的方法…………不然咱在设计的基于ARDUINO的神经网络算法程序就没意义了………………
毕竟一对一的话,顶多只能增加一点点的计算速度而已,而且还会因为两块DUE无法同时通信而导致协调性下降,得不偿失啊…………

Malc 发表于 2013-1-30 17:30:23

碇源堂 发表于 2013-1-30 17:11 static/image/common/back.gif
那啥,我得做到同时收发,而且是多个,神经网络算法嘛…………首先是输入端一对多,输入隐层,接着隐层一 ...

速度达到一定程度,可以认为是同时发生的。。
另外IIC读取时间是2ms指的是‘用mpu6050库读取加速度计陀螺仪的时间’,
如果是其他的话,建议你自己实际测量一下

Malc 发表于 2013-1-30 17:33:27

碇源堂 发表于 2013-1-30 17:14 static/image/common/back.gif
滤波电容用法求解…………咱模电学的不全面,虽然是工科的,但是我之前都是学机械和A.I来着的……………… ...

滤波电容建议还是问谷歌吧
arduino自带adc
为什么一定要用串口?串口通信本来就是一对一的,如果要多机通信,还不如ISP,IIC快
页: [1] 2
查看完整版本: 【急!】关于虚拟串口与多串口,还有ARDUINO最小系统板等