查看: 1230|回复: 3

[其他] Arduino Nano体验

[复制链接]

该用户从未签到

发表于 2019-1-13 09:37 | 显示全部楼层 |阅读模式
本帖最后由 cluse 于 2019-1-14 07:55 编辑

1、起因
     因工作需要,设计一个能用电脑控制的系统,需求如下:
            1) 外接12V电源
            2) 12V电源的电流 、电压检测
            3) 控制2路12V输出  (大电流)            
            4) 控制3路12V输出  (小电流)
            5) 4路0~12V的电压检测

2、模块选型
    模块选择arduino,主要因素是符合设计需求,而且软件方面提供了很多的api。
    基于我的工作情况,只能使用万能板,所以选择nano。

3、其他器件
    大电流采用继电器,小电流采用光耦,电阻分压采样,电流检测采用ACS712。
    为了方便观察,再加了一个OLED。

4、实现原理
    通过串口发送指令给nano,nano再控制各个器件的状态。

5、最终成品
    <改天将图片补上>


电源控制板

电源控制板

该用户从未签到

 楼主| 发表于 2019-1-13 09:38 | 显示全部楼层
本帖最后由 cluse 于 2019-1-13 10:47 编辑

1、过程中遇到的坑
     在api很完善的情况下,我依然淌了一些坑,主要原因是没有看api的介绍。
     1) iic冲突
          为了好玩,自己买了个光强检测传感器,采用的iic连接,与oled用相同的端口。
          当我添加光强检测的代码后,oled不能显示了。
          原因:oled采用软iic,光感采用硬iic,关注以下两个宏的区别
                U8G2_SSD1306_128X32_UNIVISION_F_SW_I2C  (软)
                U8G2_SSD1306_128X32_UNIVISION_F_HW_I2C  (硬)

     2) usb供电不足
         板上的器件,全部由USB口供电,导致nano经常重启。
         原因:估计是usb带不动继电器、光耦。(实际运行的电流在200ma左右)
                   幸运的是,在COM打开的状态下,nano不会重启。

    3) 软串口的限制
         不得不说,再次手贱,居然翻出多年前买的esp8266,抱着学习的态度再搞搞。
         基于nano的串口给了电脑,只能用软串口,结果会有少量数据丢失的情况。
         看了下源码,应该是收发不能同时进行造成的。
        (这点不太确定,也可能是软串口占用资源太多,造成的)

2、总结
    1) 出问题了,最好先看文档,这个比网上教程详细。
    2) 老的ESP8266模块没有API支持,只能用的AT指令,调试耗时。
    3) 软串口的代码,只适合教学,不能不用于实际项目。对稳定性有需求的,还是考虑多个硬串口的模块。

3、物料费用
    总共做了两块板子,第一块完成后(能用,但太丑),又做了一块。
    两次淘宝交易,共计200。 超过10元的器件包括:2块nano,1块usbtinyisp,1块esp32,2块oled。
    (如果你是新手,或者经济上比较宽裕的,建议支持下论坛的买家,毕竟知识也是有价的)


该用户从未签到

 楼主| 发表于 2019-1-13 09:38 | 显示全部楼层
本帖最后由 cluse 于 2019-1-13 10:46 编辑

有开始就应该有结束:
      从准备采用nano,到这个简单的系统完成,大约1个月时间。并非全职开发,期间还有其他事情。
      我想说基础很重要,c/c++的基础,能避免很多低级错误。

      暂时可以放下arduino的相关事情,转向我的日常工作了。
      临走前,希望能对社区做点贡献,下周看看,能不能优化下软串口。




该用户从未签到

 楼主| 发表于 2019-1-15 12:51 | 显示全部楼层
捣鼓了两天,将就能用。

限制很多:
    1- 只支持9600的波特率
    2- 理论上支持两个串口 (只测试了一个串口的情况,数据没出错)
    3- 使用了timer2的中断
    4- 由于不能设置优先级,其他中断会有影响
    5-  IO没有中断要求,但要能输入输出

运行环境:
   nano

示例:
    #include <SoftSerial.h>
    SoftSerial mySerial(3, 2); // Rx TX
    --------------
    mySerial.begin(9600);
    --------------
    其他操作,参见Serial。

SoftSerial.rar

4.1 KB, 下载次数: 7

软串口

您需要登录后才可以回帖 登录 | 立即注册  

本版积分规则

热门推荐

【蓝宙天枢套件评测报告之一】开箱报告
【蓝宙天枢套件评测报告之
蓝宙天枢套件评测报告之开箱报告 感谢蓝宙电子以及arduino.cn给我一个评测天枢套件的
基于wifiduino和blinker的智能加湿器
基于wifiduino和blinker的
首先感谢奈何大神每次都会出现在我的求助帖内给予我帮助,这个项目的完工非常感谢他。
体验OneNET4.0,一起来拼开发板
体验OneNET4.0,一起来拼
一、 活动时间2019年04月09日-2019年6月30日 二、活动链接1.登录Arduino中文社区账
【Arduino】37种传感器模块系列实验(29)---实时时钟模块
【Arduino】37种传感器模
37款传感器模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不
新手帮助,STM32 刷入Arduino的BootLoader。实现免串口下载
新手帮助,STM32 刷入Ardu
不少新人从某宝买回来十元一个的STM32C8T6的最小系统板,满网扒教程,最后搞一点点东
Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
快速回复 返回顶部 返回列表