×

Arduino MCU网络

消耗积分:0 | 格式:zip | 大小:0.11 MB | 2022-10-19

分享资料个

描述

这是一个正在进行的项目。

Arduino 很棒,我喜欢它,是电子和自动化的“乐高”。这里我有这个项目:它把许多 MCU 板放在一起组成一个处理器网络,NetP 是它的名字。板通过 i2c 总线进行通信。我使用了 3.3V 的 Arduino Mini Pro 板。您需要一个 USB 转串行 FTDI 板才能将草图从 Arduino IDE 传递到 Mini Pros。对于键盘,我必须使用 3.3V 到 5V 的 TTL 电平转换器。

事实上,很多事情已经开始了,还有一些事情还有待完成。根据我们的意愿,其他人将被“发明”:-)。

已经做了什么:

最明显的部分是控制台:一个键盘和一个滚动显示器与本地 MCU Netp0 (Console) 交互,并通过它与本地 i2c 网络的其他成员交互:Netp1 (SD)、Netp2 (Updater) 和 Netp3 (时钟)等。

代替使用控制台的显示器和键盘,您可以将智能手机与蓝牙连接,并从那里远程执行所有操作;为此,我完美地设置了应用程序串行蓝牙终端 1.31,但您也可以使用其他应用程序。

pYYBAGNOSeOADHq9AAA6v6HRfKg402.png
 

每个 Netp MCU 成员都有一个特定的 i2c 总线地址 (0x0a)、一个名称 (CONSOLE)、一个 ID (p0) 和一个数字 (0)。当然,i2c 总线上还可以存在其他组件:实际上只有一个 EEPROM 和一个实时时钟板。我们必须为每个成员或组件使用不同的 i2c 地址。

该系统将是即插即用的是的,您可以连接一个新的 Netp 成员,它将在网络中被识别(参见“扫描”命令)。

控制台 (p0) 功能:

  • scan : scan [查询i2c总线,即扫描,返回总线上的活动地址列表,形式为“DDD (0xEE)”...以“'n' found”结尾]
  • ckpower : ckpower [查询电量情况,即ckpower,返回“v3=3.3 v5=5.0 vraw=7.0-12.0”]
  • ? : ? [询问命令列表,即?,返回板载可用命令列表和可用内存]
  • reset : reset [强制MPU复位,即reset]
  • : [将发送到处理器,即SD dir /,从处理器返回的结果]

“扫描”命令每 30 秒执行一次以允许即插即用。要知道谁有空,只需执行“扫描”命令即可查看姓名和地址要知道控制台上执行了哪些命令,只需执行“?” 命令要知道在 SD 成员上执行了哪些命令,只需执行“p1?” 命令。要获得 SD 上的文件列表,只需执行“p1 dir /”... 等等。

SD (p1) 功能:

  • ? : ? [寻求帮助,即?,返回船上可用命令和可用内存的列表]
  • mw/mwa : mw = [写入/修改文件名中的值,即 mw temp01=24 (FileName=Value),返回“written”](mwa 将值附加到文件中)
  • mr/mra : mr [从对应的文件名中读取Value,即mr temp01(FileName为temp01,Value为24,返回'Value'或“not found”](mra会从文件中读取多行值)
  • reset : reset [重置MPU,即重置]
  • dir : dir [读取从'path'开始的文件名,即dir /],返回文件'names'和'size'的列表...以'n found'结尾]
  • mkdir : mkdir [建立一个新目录(以及相关子目录),即 mkdir /music,sdmkdir /logic/params/binary,返回“built”或“error”]
  • rmdir : rmdir [删除一个目录,即rmdir /music,返回“removed”或“error or not empty”]
  • rename : rename [重命名文件,即rename myfile.txt bestfile.txt,返回“renamed”或“not found”]
  • del : del [删除一个文件,即del myfile.txt,返回“deleted”或“not found”]
  • type : type [读取文件并以模式显示 0=CHR, 1=BIN, 2=HEX,即输入 myfile.txt CHR,返回文件内容...和文件大小'n'和字节红色'n'在最后]
  • eeupl : eeupl <文件名> [读取文件并上传到EEPROM,写入并验证所有数据,即eeupl /mysketch.hex,返回上传,写入,验证...]

由于内存不足,一些命令被禁用;我只保留了我真正需要的那些。我的经验表明不要强制使用接近最大值的内存,否则您将出现不可预测的行为或 MCU。在 SD 草图上,我认为尽可能压缩代码以节省内存。也许有些事情可以做得更好。

mw 和 mr 命令对 /MEMORY/ 子目录进行操作,mwa 和 mra 命令对 /LOG/ 子目录进行操作。

更新器(p2)功能:

  • ? : ? [寻求帮助,即?,返回船上可用命令和可用内存的列表]
  • reset : reset [重置MPU,即重置]

时钟(p3)功能:

  • ? : ? [寻求帮助,即?,返回船上可用命令和可用内存的列表]
  • reset : reset [重置MPU,即重置]
  • red : red [打开或关闭红色LED,即红色打开,返回“ON”或“OFF”]
  • green : green [打开或关闭绿色LED,即绿灯亮,返回“ON”或“OFF”]
  • dht : dht [从DHT板获取温度和湿度,即DHT,返回值]
  • gettemp : gettemp [从RTC板获取温度,即gettemp,返回温度值]
  • gettime : gettime [从RTC板获取时间,即gettime,按DD/MM/YYYY HH:MM:SS返回时间值]
  • settime : settime [设置RTC板的时间,即settime 31/12/2018 10:20:30,按DD/MM/YYYY HH:MM:SS返回时间值]
poYBAGNOSeaAU-DmAANiSKy1IPg479.jpg
 

组件列表:

  • 4 x Arduino Mini Pro 3.3v
  • 微型 SD 卡适配器
  • MicroSD 存储卡
  • RTC zs-042 模块
  • DHT-11传感器
  • Protoboard 电源从 7-12V 到 3.3V 和 5V
  • 4 个原型板
  • 红色 LED
  • 绿色 LED
  • 2 x 470uF 25V 电容器
  • 100nF电容
  • HC05蓝牙模块
  • FTDI USB-串口转换器
  • 显示器 2.4" TFT LCD 240x320 RGB,驱动IC ILI9341
  • USB迷你键盘
  • TTL电平转换器 3.3V <-> 5V 用于键盘USB
  • USB母头+数据线
  • 有源蜂鸣器
  • EEPROM i2c 1024
  • 按钮
  • 100欧姆电阻
  • 4 x 5k1 欧姆电阻
  • 2k2欧姆电阻
  • 6k8电阻
  • 2 x 120 欧姆电阻
  • 许多电线...
pYYBAGNOSeyACZ8IAAWrC5_sA90748.png
Fritzing示意图(也见下载部分)
 

i2c通讯BUS协议:

Netpx成员通过 i2c BUS(Wire.h 库)使用由消息和事件制作的自定义协议在它们之间进行通信。

当您从控制台键盘编写命令时,即“SD dir /”,首先将名称“SD”转换为查看 netRegisterNames[] 矩阵的真实地址(即 0x0b),然后使用 askCommandOnPx( )。另一方面,生成一个事件 receiveEvent() 并在本地执行请求的命令并将其数据发回。这些消息的 ID 是 chr(7) BEL 字节。

在扫描命令期间,使用 whois() 和 Wire.requestFrom() 将另一条消息发送到 BUS,用于向特定地址(即 0x0c)的潜在 Netpx 成员请求名称和其他信息。如果没有正确的回答,则将其视为“其他设备”。另一方面生成事件 netWhoIsEvent()。这些消息的 ID 是 chr(5) ENQ 字节。

做什么(我的愿望清单):

首先,我将有一个命令请求队列:实际上,您可以从控制台发送要执行的命令并等待它结束。如果您连续快速发送两个或多个命令,则可能会忽略第一个命令之后的所有命令。因此,有了这个新功能,所有命令都将被写入命令队列并以正确的顺序一次执行一个。

其次,我将有一个调度程序,一个在特定时间或每个特定时间执行的命令列表,等等。这个作为命令列表的文件应该可以从控制台以交互方式进行编辑。

第三,最雄心勃勃的愿望是将更新/新的草图存储在 SD 的特定目录中,并让 UPDATER 提供将它们传递到 EEPROM,然后再安装到最终目标 MCU。待更新的目标MCU应自行提供读取EEPROM和自动更新因为这个功能需要修改正常的引导加载程序...

有什么想法或建议吗?

当我有新闻、改进、新零件、新想法等时,我会在这些页面中通知您。请让我知道您对这个正在进行的项目有何看法

好好享受!


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !