创客神器NanoPi
直播中

为她而狂野丶

10年用户 142经验值
擅长:可编程逻辑 嵌入式技术 接口/总线/驱动 控制/MCU RF/无线
私信 关注
[话题]

【NanoPi M2试用体验】IoT(物联网)智能网关项目结题

       说起来惭愧,这半年来一直没闲下来,家里的事挺多的,身边事也太多,项目也在一直赶,大部分时间都在搞单片机那边。
        话又说回来,自己的确技术还是不够好,还需要学习很多。
        友善之臂给这块开发板的人群定位是创客人群,但我觉得创客是不是和产品开发还有这一些不同?
        友善之臂提供了一整套的Matrix套件,并提供了模块的函数库,让用户像ARDIUNO一样去开发4418 。那我们来想一下4418是一块怎么样的芯片:运算能力强,集成度高,价格较高,抗噪能力不强。我认为从这些特性来说,性能强悍是不错,但拿这个芯片搞底层硬件开发总觉得有些不靠谱,明明有单片机比这个芯片更适合搞底层硬件,为什么还要执着的用这块NanoPi去读个DS18B20什么的呢,I/O口还是这么宝贵的资源,多挂几个高速外设不好吗...
        我是这样想的,信息采集和控制终端通过低成本的芯片去做,单片机或者像ESP8266这种芯片。但考虑到还需要通信这方面,我们提出了两个方案,有些设备需要使用电力线载波(PLC),我们使用M3的单片机机去做数据采集和控制终端,需要无线通信的设备我们采用MCU+Zigbee或者ESP8266进行开发终端设备。说到ESP8266,我觉得有必要说一下这个的芯片:
20160702_162327.jpg
引用:       “ESP8266是乐鑫espressif设计的wifi芯片,简要来说它是一个WIFI串口模块加上一个低功耗的32位RISC控制器。它更像一个物联网解决方案。它不仅体积小,而且造价便宜,一个ESP8266的集成板只需要十几块。有GPIO、I2C、ADC、SPI、PWM等模块,你可以用它做一些微控制器能做的事。”
        并且它还可以支持AP(Access Point)、STA(Station)、AP+STA共存模式,并且使用高效的AT指令。”还有其他固件,比如NodeMcu,封装好了内部API,可以直接使用Node.js进行编程。
     在IoT时代,一套智能硬件需要设备硬件,设备软件,云端服务器,手机APP。对于云端服务器来说,有不少团队在做这方面的努力,比如机智云,Yeelink,乐为物联等等,这些都是很好的物联网平台。        但是有些时候我们会有自己的需求,这时候我们就需要有自己的一个服务器了,比如工业上有一些需要多个设备终端工作的情况,我们就需要一个通信和控制网关,而且客户要求可以使用WEB界面进行管理,这时候使用云平台就不那么方便,但是架设一个主机服务器开发即不方便,价格也昂贵。
引用: 这时候像我们的NanoPi这种嵌入式服务器就是最好的选择了。
上述总结:我们要做东西要选择合适的硬件,要考虑到硬件成本,软件成本,维护成本,产品性能等等。如上只是自己的理解,道行不深,如有不对的地方,还望前辈们包涵!
毕竟.....我还只是一个在成长的孩子啊。。。


正题:这个项目大部分工作是属于单片机那边的,但毕竟这里是NanoPi的板块,我就不在这多说那些单片机的事情了...
然后这个项目不方便透露太多细节,请大家多原谅!关于WEB页面也不方便截图,但是我会发上来一个测试工程,供大家参考一下,见谅!
大体是这么个东西: 新建 Microsoft Office Visio 绘图.jpg
        终端负责采集信号和执行,通过电载或者无线和路由设备进行通信,路由设备将数据打包通过网络和服务器进行通信,服务器上运行了WEB服务和后台服务,用户可以通过WEB对终端进行监控和控制,控制命令再通过后台与路由再到终端,最后执行。

电力载波终端(PLC) 20160702_162053.jpg

无线终端(ZigBee)   20160702_162110.jpg

路由设备(Router)    20160702_162115.jpg

NanoPi M2(服务器) 1467453393971.jpg

服务器的实现:WEB界面可以是PHP,或者jsp。后台可以用Servlet做。或者php,jsp,asp,甚至js现在也都可以写web后台了...

下面是一个jFinal的soket连接的示例工程,还有一个执行文件,可以在Tomcat下运行调试。
jFanal源码.zip (42.89 KB)
(下载次数: 2, 2016-7-2 19:00 上传)
Tomcat执行文件.zip (652.39 KB)
(下载次数: 2, 2016-7-2 19:00 上传)





毕竟我不是专业软工专业的孩子,做这些还是比较吃力的,磕磕碰碰,也寻求了一些朋友的帮助,WEB是jsp写的,后台是jFinal写的,可以在Tomcat下跑:

引用: JFinal 是基于 Java 语言的极速 WEB + ORM 框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在拥有Java语言所有优势的同时再拥有ruby、python、php等动态语言的开发效率!
使用eclipseJEE进行开发。
Linux下Jsp环境的搭建:参考Linux配置jsp服务简明步骤
引用: jsp服务器环境的搭建,收集整理。(非原创)

1、安装Jdk cd 到你的jdk安装文件目录
cp ./j2sdk-1_3_0-linux.bin /usr/local
cd /usr/local
chmod a+x j2sdk-1_3_0-linux.bin
./j2sdk-1_3_0-linux.bin
然后按照安装向导进行,安装后的jdk目录为/usr/local/jdk1.3


2、安装Apache 如果您在安装操作系统的时候已经安装了Apache,卸载它!利用RPM管理器卸载Apache及其相关套件,只有源码级编译安装的操作系统才是最彻

底的系统安装,你才能真正控制它。这是Unix的优点,Unix系统认为它的用户最少也是一个Fan,而NT认为它的用户最少是个懒虫,这就是区别,目标用户的不同,无论您爱听不爱听,这是事实。
cd 到你下载的apache源文件目录
tar xv*** apache*
./configure --prefix=/usr/local/apache --enable-module=so
make;make install

3、安装Resin
cd 到你下载的apache源文件目录
tar xv*** resin* /usr/local
cd /usr/local/resin*
./configure --with-apache=/usr/local/apache (resin和apache整合)
make;make install

4、设置profile vi /etc/profile //你也可以用别的文本编辑器打开它,添加如下变量

JAVA_HOME=/usr/local/jdk1.3
RESIN_HOME=/usr/local/resin-2.0
CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib //如果你有别的系统级的类库或者驱动等,继续向下写,用冒号分开
PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
export JAVA_HOME RESIN_HOME CLASSPATH PATH

修改后保存该文件注销,然后重新登陆,打开命令控制台,输入env,如果在返回的输出中看到了您刚才的环境变量,ok,继续。

5、配置DNS vi /etc/named.conf
添加如下语句:
zone yesgo.com{
type master;
file "yesgo.com";
}
    zone 1.168.192.in-addr.arpa{
    type master;
    file "192.168.1";
}

然后建立这两个配置文件:
touch /var/named/yesgo.com 在其中建立www的NS或者CNAME记录
touch /var/named/192.168.1 在其中建立域名指针
至于如何配置这两个文件,篇幅太长就先不说了。
配置完毕之后,运行如下命令:
ndc restat
nslookup
运行nslookup将出现一个交互命令行,输入www.yesgo.com如果正常返回其IP,OK,该域名成功解析!

6、配置Apache

7、配置Resin
vi /usr/local/resin*/conf/resin.conf

其一,取消8080端口:与Apache端口共用80端口,那么,找到,删除这一行!如果你要保险,你可以注释它,或者将

8080改为80;
其二,建立支持jsp的虚拟主机:在配置文件中找到,回车在其后面添加如下语句:

/www/www.yesgo.com


配置完毕,保存退出,www.yesgo.com将支持jsp,并以bean作为存放javabean的根目录。

8、重新启动服务
建立符号连接:
ln -s /usr/local/apache/bin/apachectl /usr/bin/apache
ln -s /usr/local/resin*/bin/srun.sh /usr/bin/jsp
重新启动Apache和Resin服务:
apache start
jsp start

9、建立FTP帐号 到第8步,jdk、dns、apache、resin全部配置完毕,现在建立FTP
useradd yesgo //帐号名
passwd yesgo //输入密码,不能低于六位,大小写敏感
执行上面命令将建立/home/yesgo目录,删除它!然后运行如下命令
ln -s /www/www.yesgo.com /home/yesgo
注意!!然后改变/www/www.yesgo.com的文件夹属性,设置Owner为yesgo用户,Group为yesgo组,并赋予user具有读写权限,Other具有读权限,如果您不这样做,登陆FTP将说您没有权限,而且输入域名站点也不能浏览。如果从安全的角度考虑你还要将yesgo用户加入到ftp的guest组,它将实现yesgo用户以/www/www.yesgo.com为其根目录,防止操作其他目录,在此略过。
到这时候你在客户端可以用ftp工具登陆你的FTP站点,上传你的站点文件。

10、测试站点
在客户端的网络配置中添加DNS服务器为你的服务器IP,这样你上面设置的域名可以访问。
如果你用网络配置不行或者与上网的DNS服务器冲突,到c:/windows或者c:/winnt目录查找HOSTS文件,追加如下一行:
192.168.1.1 www.yesgo.com
前面是你服务器的IP,后面是你的域名,中间用TAB分割。

用Ultradev等工具建立一个本地站点,远程设置为上面设置的ftp,
然后建立test.jsp文件,内容只有一句:
1+1=<%=1+1%>
将该文件上传到服务器,也就是上传到了/www/www.yesgo.com目录下,
在客户端浏览器浏览http://www.yesgo.com/test.jsp如果返回1+1=2,OK,兄弟,你成功了!
如果你要使用Bean组件,好说,你在本地站点根目录下建立bean目录,放上你的java源文件,这个时候调用它的jsp文件引用就要用,如果你要建立自己的包,容易!你在本地bean目录建立一个目录,它将是你的包名,举例叫com,在其下放上你的java源文件,调用该bean时把class设置为class="com.***"***就是你的java文件名,按此方法,你建立多少级目录都是可以的,除非超出java语言本身的限制。然后将本地建立的bean目录和其下文件及其子目录上传到服务器端,肯定行!
上面的步骤只是一个简单的说明书,并仅仅围绕jsp说明的,没有牵扯到oracle、mysql、php、asp、wap、Frontpage扩展和安全等诸多配置(有空我会写的),但按照以上的步骤配置一个jsp服务器,已经足够了。
Linux下Tomcat的安装和配置:参考Linux下Tomcat的安装配置
引用: 一.下载安装对应的jdk,并配置Java环境。

官网下载地址:

http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u26-download-400750.html

下载将jdk加压后放到/usr/local目录下:

[root@master ~]#chmod 755 jdk-6u5-linux-x64.bin

[root@master ~]# ./jdk-6u5-linux-x64.bin

[root@master ~]#mv jdk1.6.0_05 /usr/local



建立/usr/local/下的jdk软连接方便以后版本升级 :

[root@master ~]# ln -s /usr/local/jdk1.6.0_05/ /usr/local/jdk



配置环境变量:

在 /etc/profile 中加入以下内容:

JAVA_HOME=/usr/local/jdk1.6.0_05

JAVA_BIN=/usr/local/jdk1.6.0_05/bin

PATH=$PATH:$JAVA_BIN

CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export JAVA_HOME JAVA_BIN PATH CLASSPATH

保存退出

[root@master ~]source /etc/profile



查看java环境变量是否生效

[root@master ~]# java -version

java version "1.6.0_05"

Java(TM) SE Runtime Environment (build 1.6.0_05-b13)

Java HotSpot(TM) 64-Bit Server VM (build 10.0-b19, mixed mode)

测试成功

二.下载安装tomcat(http://tomcat.apache.org/)

[root@master ~]# unzip apache-tomcat-6.0.30.zip

[root@master ~]# mv apache-tomcat-6.0.30/ /usr/local/

[root@master ~]cd /usr/local/

[root@master local]# ln -s /usr/local/apache-tomcat-6.0.30/ /usr/local/tomcat

[root@master local]# cd tomcat/bin/

[root@master bin]#ls

[root@master bin]#vim catalina.sh

添加以下内容:

CATALINA_HOME=/usr/local/apache-tomcat-6.0.30/

[root@master local]#chmod +x *.sh

三.启动tomcat服务器

[root@master tomcat]# /usr/local/tomcat /bin/catalina.sh start

Using CATALINA_BASE:   /usr/local/apache-tomcat-6.0.30/

Using CATALINA_HOME:   /usr/local/apache-tomcat-6.0.30/

Using CATALINA_TMPDIR: /usr/local/apache-tomcat-6.0.30//temp

Using JRE_HOME:        /usr/local/jdk1.6.0_05

Using CLASSPATH:       /usr/local/apache-tomcat-6.0.30//bin/bootstrap.jar

[root@master logs]# cd /usr/local/tomcat/logs/

[root@master logs]# tail -f catalina.out

        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

        at java.lang.reflect.Method.invoke(Method.java:597)

        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)

        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)

Jul 4, 2011 11:06:57 AM org.apache.coyote.http11.Http11Protocol pause

INFO: Pausing Coyote HTTP/1.1 on http-8080

Jul 4, 2011 11:06:58 AM org.apache.catalina.core.StandardService stop

INFO: Stopping service Catalina

Jul 4, 2011 11:06:58 AM org.apache.coyote.http11.Http11Protocol destroy

INFO: Stopping Coyote HTTP/1.1 on http-8080

四.在浏览器中输入

http://localhost:8080/(如果不是本机,则输入对应的ip地址)

测试出现tomcat页面则测试成功

ps:需要说明的是tomcat的默认测试页面是放在webapps下面,这个其实是在server.xml文件中配置的,如下所示:

            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">

[root@SOR_SYS apache-tomcat-6.0.30]# ls
LICENSE  NOTICE  RELEASE-NOTES  RUNNING.txt  bin  conf  lib  logs  temp  webapps  work
        1)webapps文件夹主要用于web应用程序部署,比如你可以把你的应用程序包,如war文件拷到该目录下,容器会自动部署。
2)conf文件夹下主要是放置tomcat的服务器的相关配置文件



五。添加应用,再次进行测试

在webapps目录下放测试包(注意:webaapps目录下面主要是放应用包的.war在tomcat重启访问后会自动解压)

[root@master webapps]# pwd
/usr/local/tomcat/webapps

[root@master webapps]# tar -zxvf moni2.tar.gz

[root@master webapps]# ls
docs  examples  host-manager  manager  moni2  moni2.tar.gz  ROOT

[root@master webapps]# /usr/local/tomcat/bin/catalina.sh start(重启tomcat)
Using CATALINA_BASE:   /usr/local/apache-tomcat-6.0.30/
Using CATALINA_HOME:   /usr/local/apache-tomcat-6.0.30/
Using CATALINA_TMPDIR: /usr/local/apache-tomcat-6.0.30//temp
Using JRE_HOME:        /usr/local/jdk1.6.0_05
Using CLASSPATH:       /usr/local/apache-tomcat-6.0.30//bin/bootstrap.jar

在浏览器中输入如下地址:

http://192.168.55.229:8080/moni2/





六。修改tomcat的监听端口

[root@master ~]#  cd  /usr/local/tomcat/conf

[root@master ~]# ls

[root@master ~]# vim server.xml

【停止tomcat时的端口】

               connectionTimeout="20000"
               redirectPort="8443" /> 【tomcat默认的监听端口是8080,现在改成8081】

【apache+tomcat模式时访问tomcat的端口】

现在重启tomcat。访问http://192.168.55.229:8081/moni2/【注意:这时就需要修改端口了,嘿嘿。。。】





七。创建tomcat实例

假如我们现在使用的地址是:192..168.55.229,假如我们想在该机器上面创建tomcat实例,但是我们创建实例的脚本在服务器192.168.55.233上面上线,那么我们需要怎么做呢,请看以下步骤:

[root@master ~]# mount -t nfs 192.168.55.233:/opt/nfs /nfs【挂载目录】

[root@master ~]# cd /nfs/

[root@master nfs]# ls
tcfile

[root@master nfs]# cd tcfile/
[root@master tcfile]# ls
backupfile  deployfile  instancefile

[root@master instancefile]# ls
tomcatTemplate  tomcatTemplate.zip

[root@master instancefile]# cd tomcatTemplate
[root@master tomcatTemplate]# ls
bin  conf  lib  LICENSE  logs  NOTICE  RELEASE-NOTES  RUNNING.txt  temp  webapps  work

[root@master tomcatTemplate]# cd bin
[root@master bin]# ls
bootstrap.jar       commons-daemon.jar            createResource.sh  resource.properties  startup.bat           tool-wrapper.sh
c3p0.template       commons-daemon-native.tar.gz  digest.bat         setclasspath.bat     startup.sh            version.bat
catalina.bat        cpappend.bat                  digest.sh          setclasspath.sh      tomcat-juli.jar       version.sh
catalina.sh         createInstance.sh             encrypt.bat        shutdown.bat         tomcat-native.tar.gz
catalina-tasks.xml  createInstance.sh.bak         encrypt.sh         shutdown.sh          tool-wrapper.bat

[root@master bin]# sh createInstance.sh tomcatServer229-1【创建实例】
/nfs/tcfile/instancefile/tomcatTemplate
New instance tomcatServer229-1 has successfully builded, and
shutdown.port=10001
ajp.port=8011
http.port=8081
https.port=8041
jmx.port=6901


[root@master bin]# cd /opt/oracle/tomcat/【可以在这个目录下面进行查看】
[root@master tomcat]# ls
tomcatServer229-1【命名规则,默认都是tomcat名字+-n表示第几个实例;实际上是脚本中规定有格式】
[root@master tomcat]#
文章出自:http://blog.csdn.net/zhuying_linux/article/details/6583096




更多回帖

发帖
×
20
完善资料,
赚取积分