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的数据交互,这样便实现了物联网。
当然Arduino还有很多方便又好玩的玩法,有兴趣的朋友也可以继续玩下去。如果你想要我这个实验的源代码,请在微信订阅号后台回复“Arduino”即可获的源代码和库文件哦!需要本设计FPGA部分代码后台发消息,联系订阅号主,即可获得!
转载请注明出处:NingHeChuan(宁河川)
个人微信订阅号:开源FPGANingHeChuan
如果你想及时收到个人撰写的博文推送,可以扫描左边二维码(或者长按识别二维码)关注个人微信订阅号
知乎ID:NingHeChuan
微博ID:NingHeChuan
原文地址:http://www.cnblogs.com/ninghechuan/p/7751382.html
Arduino上传数据至贝壳物联并与FPGA进行交互的更多相关文章
- ESP8266 上报数据到贝壳物联
下面贴上代码: #include <aJSON.h> #include <SPI.h> #include <Wire.h> #include <dht11.h ...
- 重新想象 Windows 8.1 Store Apps (89) - 通信的新特性: 下载数据, 上传数据, 上传文件
[源码下载] 重新想象 Windows 8.1 Store Apps (89) - 通信的新特性: 下载数据, 上传数据, 上传文件 作者:webabcd 介绍重新想象 Windows 8.1 Sto ...
- TortoiseGit和msysGit安装及使用笔记(windows下使用上传数据到GitHub)[转]
TortoiseGit和msysGit安装及使用笔记(windows下使用上传数据到GitHub) Git-1.7.11-preview+GitExtensions244SetupComplete+T ...
- Amzon MWS API开发之 上传数据
亚马逊上传数据,现有能操作的功能有很多:库存数量.跟踪号.价格.商品....... 我们可以设置FeedType值,根据需要,再上传对应的xml文件即可. 下面可以看看FeedType类型 这次我们拿 ...
- Amazon MWS 上传数据 (三) 提交请求
前面介绍了设置服务和构造请求,现在介绍提交请求. 上传数据,查询上传操作的工作状态,和处理上传操作返回的报告操作使用的Amazon API 分别为:SubmitFeed(),FeedSubmissio ...
- Amazon MWS 上传数据 (二) 构造请求
上一篇文章提到了Amazon 上传数据有三个步骤,但是每个步骤都需要构造服务和构造请求,服务是一样的,请求各不相同:这个很容易理解,这三个步骤都需要和Amazon服务器交互,所以他们的服务构造是一样的 ...
- Amazon MWS 上传数据 (一) 设置服务
Amazon 上传数据的流程为: 通过 SubmitFeed 操作.加密标头和所有必需的元数据(包括 FeedType 的值在内),来提交 XML 或文本型数据文件.正如亚马逊 MWS的所有提交内容一 ...
- 说说ajax上传数据和接收数据
我是一个脑袋不太灵光的人,所以遇到问题,厚着脸皮去请教大神的时候,害怕被大神鄙视,但是还是被鄙视了.我说自己不要点脸面,那是不可能的,但是,为了能让自己的技术生涯能走的更长远一些,受点白眼,受点嘲笑也 ...
- webclient上传数据到ashx服务
1.上传参数 UploadData()方法可以上传数据参数,需要将所要上传的数据拼成字符. // 创建一个新的 WebClient 实例. WebClient myWebClient = new ...
随机推荐
- MySql导入导出数据方法
导出全库备份到本地的目录 mysqldump -u$USER -p$PASSWD -h127.0.0.1 -P3306 --routines --default-character-set=utf8 ...
- CentOS文件权限管理
目录 文件属性 chown更改所有者 chgrp更改所属组 文件权限rwx chmod修改权限 默认权限umask 权限判定的顺序 特殊权限SUID,SGID,sticky 隐藏权限chattr,ls ...
- Windbg调试(关于句柄表的获取,32位)
今天利用Windbg(x86)进行了获得句柄表的调试,从中获益良多,对调试步骤和按键又一次进行了熟悉,对于句柄表页的概念更是得到了进一步的清晰认识.windbg调试和句柄表不熟悉的朋友可以借鉴我的调试 ...
- Java-大集合拆分为指定大小的小集合
因为Oracle数据的in 最大允许1000 ,超过就会报错, 所以需要将集合拆分为多个集合进行处理. /** * 拆分集合 * @param <T> * @param resList 要 ...
- 【译】The Accidental DBA:SQL Server Backup
最近重新翻看The Accidental DBA,将SQL Server Backup部分稍作整理,方便以后查阅.此篇是Part 1Part 2:The Accidental DBA:Troubles ...
- Jmeter之性能测试基础
1.概念:性能测试是通过自动化的测试工具模拟多种正常峰值及负载条件来对系统的各项性能指标进行测试.负载测试和压力测试都属于性能测试,两者可以结合进行.通过负载测试,确定在各种工作负载下系统的性能,目标 ...
- ASP.Net开发WebAPI跨域访问(CORS)的精简流程
1: Web.config里有一行: <remove name="OPTIONSVerbHandler" /> 这个要删除. 2: nuget安装Microsoft.A ...
- SimpleRpc-序列化与反序列化的设计与实现
为什么需要序列化和反序列化? 假设你是客户端,现在要调用远程的加法计算服务,你与服务端商定好了发送数据的格式:发送8个字节的请求,前4字节是第一个数,后4字节是第二个数,服务端读取数据的时候也按照商定 ...
- IBAction&IBOutlet
IB:Interface Builder 1>IBAction 需要操作,例如按钮的点击 2> IBOutlet 需要获得.修改该属性 然后就可以与Storyboard建立起联系
- 前端系列——jquery前端国际化解决方案“填坑日记”
前言:最近,新的平台还没有开发完成,原来的老项目又提出了新的需求:系统国际化.如果是前后端完全分离的开发模式,要做国际化,真的太简单了,有现成的解决方案,基于Node构建的时下热门的任何一种技术选型都 ...