Arduino上传数据至贝壳物联并与FPGA进行交互

         本篇实现Arduino与FPGA交互,当然也没有什么新的协议,还是基于串口通讯,现在学一个串口通信基本上可以驱动大多数模块了,而且和各种单片机无缝数据交互,Arduino由于其强大的库函数支持,在实现很多事情上会方便很多,比如串口通讯,Arduino就两行的代码,Verilog至少也得上百行,但是从学习知识的角度上来说,学Arduino也只不过是学了一门软件操控硬件的方法罢了,而且很多东西都简化了,跟在电脑上编程没什么两样,还不如学学单片机。最起码还能了解其内部各种寄存器的使用。我用Arduino也就是玩玩,当然还是有了很多不一样的体验,都知道Arduino是开源项目,我们可以免费使用别人的代码,当然也要分享出来自己的代码,将开源进行到底。

         Arduino的编程语言没啥说的,使用一种简易版的C语言编程,一般有C语言基础的朋友应该两天就上手了,然后就是利用各种函数了,我在做实验的时候,学到了一个函数,map函数。现在来说说吧!下面张图其实是很形象的。

         再看一下官方给的解释,即把一个数从一个范围变换到另一个范围。

map(value, fromLow, fromHigh, toLow, toHigh) Description

Re-maps a number from one range to another. That is, a value of fromLow would get mapped to toLow, a value of fromHigh to toHigh, values in-between to values in-between, etc.          我使用Arduino采集到土壤湿度模块的数据,200-100不等,Arduino读取模拟量的最大数值为1023,而这么大的数据,也并不是我们需要的,我们需要的是一个百分数,所以使用map函数,把0-1023这个区间投影到0-100这个区间,那么得出来的数据就可以近似的认为是土壤湿度百分比了。

Arduino原本的串口只有一个,那么如果必须要用两个或以上串口来收发数据怎么办,这个时候使用软件模拟串口就可以了。官方给的配置历程,调用SoftwareSerial库函数,

初始化配置波特率

输出的时候使用Serial.write()函数,这里要注意的是Serial.print输给串口的是ASCII码值,Serial.write输入给串口的是真实数值,我这里需要的是arduino采集到的土壤湿度,当然希望直接是十六进制的代码了。

         实现数据上传至贝壳物联,最终要的是需要ESP8266 WIFI模块了,模块配置如下。

ESP8266模块支持STA/AP/STA+AP 三种工作模式。 *STA 模式:ESP8266模块通过路由器连接互联网,手机或电脑通过互联网实现对设备的远程控制。 *AP 模式:ESP8266模块作为热点,实现手机或电脑直接与模块通信,实现局域网无线控制。 *STA+AP 模式:两种模式的共存模式,即可以通过互联网控制可实现无缝切换,方便操作。

我们这里为了方便直接设置成两种模式共存的状态。

ESP8266的接口如下图所示:

其中需要用的端口是TX,RX,CH_PD,VCC,GND

TX,RX分别接USB转TTL接口的RX,TX,

CH_PD,VCC接3.3v(切记必须为3.3v)

GND接地

联接物联网

打开串口调试助手,搜索串口,将波特率设置为115200,然后将ESP8266的VCC引脚拔下在插上,会返回一串乱码和ready,表示连接正常,如果没有返回值,检查引脚是否连接正确。

发送AT命令:+++,返回CLOSED,表示关闭之前设定的模式。

发送AT+CWMODE=3+回车,设置WiFi模块为AT/AP模式,(WiFi模块的知识需要看手册),返回OK,表示设置成功

发送AT+CWJAP=”WIFI name”,”WIFI 密码”+回车,连接WiFi。返回OK表示连接正确。

然后发送AT+CIPSTART="TCP","www.bigiot.net",8181+回车,返回如图所示,表示连接到贝壳网。

这样WiFi模块就配置好了,然后将WiFi模块连接到开发板上,通电后,就会自动连接到贝壳网上了。

WiFi模块配置好了之后。我们这里用第一个WiFi模块配置连接到贝壳网,贝壳网是一个物联网,可以实现与硬件进行远程交互。

注册一个贝壳网账号www.bigiot.net

点击添加一个设备

添加一个数据接口,这里可以修改借口类型

添加完成后,每一个设备都有自己专属的ID,APIKEY,

每个设备有对应的数据接口,也有对应的ID

需要几个数据接口你就添加几个,我这里添加了四个。然后根据代码将所有模块连接,连接设备,上传程序,注意,上传Arduino程序的时候一定要将0、1引脚拔下,否则肯定上传失败。上传成功后,打开数据接口,可以看到数据实时上传了,贝壳物联还有相关的APP和微信公众号,只要设备能连上网络,便可以对设备进行操控,所以远程操控也毫无压力。

通过软串口发送数据给FPGA,FPGA通过处理后,发送数据到上位机,这样便实现了FPGA和Arduino的数据交互,这样便实现了物联网。

转载请注明出处:NingHeChuan(宁河川)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏IT技术精选文摘

当代码变更遇上精准测试的总结

敏捷模式下迭代频繁,回归测试时总是不知道变动的范围。Devlop 有的时候也不知道他改了哪些东西,影响到哪些节点,或者是很多人改的,彼此不知道。遇到有代码洁癖的...

1185
来自专栏FreeBuf

HTTPS劫匪木马暴力升级:破坏ARK攻击杀软

目前,越来越多的网站开始注册证书,提供对HTTPS的支持,保护自己站点不被劫持。而作为对立面的流量劫持攻击,也开始将矛头对准HTTPS,其中最常见的一种方法便是...

2398
来自专栏林德熙的博客

win10 uwp 手动锁Bitlocker bitlocker手动锁

Windows BitLocker驱动器加密通过加密Windows操作系统卷上存储的所有数据可以更好地保护计算机中的数据。BitLocker使用TPM帮助保护W...

621
来自专栏FreeBuf

【推广】永恒之蓝WannaCry详细分析报

2017年5 月12 日晚上20 时左右,全球爆发大规模蠕虫勒索软件感染事件,仅仅几个小时内,该勒索软件已经攻击了99个国家近万台电脑。英国、美国、俄罗斯、德国...

1925
来自专栏Python攻城狮

电商静态网页建设初探1.登录页面2.注册页面

1415
来自专栏图像识别与深度学习

Android学习优秀网站

1454
来自专栏大魏分享(微信公众号:david-share)

RHEV--基于开源的企业级虚拟化解决方案

本文主要介绍Red Hat基于开源的企业级虚拟化解决方案RHEV。RHEV虽然是开源虚拟化解决方案,但是其易用性,可维护性是很高的。文中笔者通过与vSphere...

40313
来自专栏FreeBuf

FACT:一款固件类比分析测试平台

1.FACT 全称 Firmware Analysis and Comparison Tool 是一个拥有WEB端的自动化固件测试平台。

912
来自专栏中国白客联盟

Nmap 7.25 BETA 2正式发布,一转眼Nmap已经十九岁了

? 开篇语 我很高兴地告诉大家,美国时间的2016年9月1日,是Nmap的十九岁生日。虽然我们的Nmap没有办法品尝生日蛋糕,但是为了庆祝它的十九周岁生日,我...

2787
来自专栏FreeBuf

Kali Linux中前十名的Wifi攻击工具

无线网络的攻与防一直是比较热门的话题,由于无线信号可以被一定范围内的任何人接收到(包括死黑阔),这样就给WIFI带来了安全隐患;路由器生产厂商和网络服务供应商(...

2039

扫码关注云+社区