基于手机app的树莓派远程监控(非常全)

一.准备器件:树莓派系统板,树莓派自带摄像头

二. 树莓派系统环境:Raspberry Debian 9 手机app运行环境:android studio

三.CSI摄像头配置的话自己弄,摄像头配置完成后可以用 raspistill -o 1.jpg 来测试一下摄像头的拍照功能

四、网络视频监控配置与实现

1、利用mjpg-streamer框架实现,基本配置方案看链接:(要链接,请评论区留言)

五、树莓派环境配置

1.基本上按照四中的链接配置 都可以直接将树莓派的摄像头运行起来(如图即为运行成功)

2.但基本配置起来只能在当前目录下运行,因此要添加一下环境,使得全路径运行,方便后面代码的编写。

将该脚本给它一个可执行权限:chmod 777 shart.sh

修改工作目录下的 .bashrc 隐藏文件, 配置命令终端的

Vi  /home/pi/.bashrc(这比较靠谱点)

直接在文件末尾的最后一行加入路径就行:/home/pjf/shell

配置完成后保存 并在命令行输入:source ~/.bashrc

重启一下树莓派 ,命令行输入:echo $PATH。显示环境变量添加成功。

3.这时可以在其它路径运行 start.sh 可执行文件了,但要注意start.sh中还有流转发的程序./mjpg_streamer。

直接在其它路径下运行start.sh会提示 ./mjpg_streamer: not found(除开执行权限的问题外,文件的格式同样也需要去注意)

因此 vim start.sh 进入到脚本文件中 将三个文件 ./mjpg_streamer,./input_raspicam.so,./output_http.so 添加至全路径模式(如下图)

保存退出,start.sh 便可以在其它路径下运行起来了

然后打开浏览器,网址输入http://ip:8080/?action=stream,即可看到监控视频效果

注意注意!!!!

上面的环境变量的配置在linux系统普通用户目录(.bashrc)如果在sudo 下运行代码便不可以了,当用户执行sudo时,系统会主动寻找/etc/sudoers文件,判断该用户是否有执行sudo的权限。

因此要想在sudo 下运行还得visudo使用vi打开/etc/sudoers文件来添加环境变量

sudo 命令,为非根用户授予根用户的权限

配置文件是/etc/sudoers,此文件有权限限制,而且有格式要求,万一改错会比较麻烦。使用visudo可以容易配置。

1.输入命令

sudo visudo

添加对应路径

ctrl x退出按Y保存

重新运行便可以在sudo 下运行该脚本了

六、树莓派代码的实现(上面步骤配置好代码就简单了)

#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <unistd.h>
void* ptintf_hello_world(void* tid);
void* ptintf_hello_world1(void* tid);int main(void){pthread_t thread;pthread_t thread1;int status,i=10,i1=10;printf("Main here. Creating thread %d\n",i);status=pthread_create(&thread,NULL,ptintf_hello_world,(void*)i);status=pthread_create(&thread1,NULL,ptintf_hello_world1,(void*)i1);pthread_join(thread,NULL);  //pthread_join函数以阻塞的方式等待指定的线程结束;如果线程已经结束,函数会立即返回,并且指定的线程>
必须是joinable的 exit(0);
}
void* ptintf_hello_world(void* tid){sleep(10);
//      system("wget  http://pi:8080/?action=snapshot -O ./1.jpg ");
//      printf("Hello world0 %d.\n",tid);exit(0);
}
void* ptintf_hello_world1(void* tid){system("start.sh");printf("Hello world1 %d.\n",tid);exit(0);
}

七、安卓部分代码(注意网络权限的配置)

1.网络权限配置

找到路径app->src->-main->res->AndroidManifest.xml文件

打开 AndroidManifest.xml文件

在application节点之前增加以下代码

<!--允许程序打开网络套接字-->
<uses-permission android:name="android.permission.INTERNET" />
<br><!--允许程序获取网络状态-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

打开使用明文网络流量(加密流量)

 android:usesCleartextTraffic="true"

2.java代码

package com.example.mysuju;import android.content.Intent;
import android.os.Bundle;
import android.os.PersistableBundle;
import android.view.View;
import android.webkit.WebView;
import android.widget.Button;
import android.widget.MediaController;
import android.widget.VideoView;import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;public class MessageActivity extends AppCompatActivity {private Button playBtn, stopBtn;MediaController mMediaController;private WebView webview1;@Overridepublic void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_message);VideoView mVideoView = new VideoView(this);//mVideoView = (VideoView) findViewById(R.id.video);mMediaController = new MediaController(this);webview1 = (WebView) findViewById(R.id.webview1);playBtn = (Button) findViewById(R.id.login1);//stopBtn = (Button) findViewById(R.id.stopbutton);// playBtn.setOnClickListener(new mClick());//stopBtn.setOnClickListener(new mClick());setview();}private void setview() {String url="http://pi:8080/?action=stream";//视频链接webview1.loadUrl(url);//打开指定URL的html文件}
}

3.  .xml布局代码

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical" android:layout_width="match_parent"android:layout_height="match_parent"><WebViewandroid:id="@+id/webview1"android:layout_width="match_parent"android:layout_height="300dp"/><LinearLayoutandroid:background="@drawable/pj"android:layout_width="match_parent"android:layout_height="match_parent"><Buttonandroid:id="@+id/login1"android:layout_width="100dp"android:layout_height="50dp"android:text="返回"android:textColor="@color/colorAccent"android:textSize="20dp"></Button></LinearLayout>
</LinearLayout>

八、成果展示

基于手机app的树莓派远程监控(非常全)相关推荐

  1. 基于手机APP的PLC远程监控系统

    基于手机APP的PLC远程监控系统 一.手机APP远程监控PLC的意义: 随着网络技术和智能手机快速发展,远程通过手机APP对设备系统的控制单元PLC的运行进行远程预警监控的技术已经非常成熟.基于手机 ...

  2. 轻松实现手机APP的PLC远程监控

    手机APP远程监控PLC的意义: 随着网络技术和智能手机的快速发展,远程通过手机APP对设备系统的控制单元PLC的运行进行远程预警监控的技术已经非常成熟.基于手机APP的PLC远程控制系统能给设备的制 ...

  3. 如何用手机APP实现PLC远程监控

    一.应用需求 随着工业生产.制造环节的不断深化,工业设备的结构越来越复杂,借助PLC实现的自动化控制技术被广泛应用于工业设备.农业.市政等多种应用长江.在互联网+制造的大背景下,一种实现软硬件对接的手 ...

  4. 用手机APP实现PLC远程监控

    一.应用需求 随着工业生产.制造环节的不断深化,工业设备的结构越来越复杂,借助PLC实现的自动化控制技术被广泛应用于工业设备中.在互联网+制造的大背景下,一种实现软硬件对接的手机APP远程监控PLC系 ...

  5. 毕业设计——基于STM32的智能家具控制系统(ESP-01S(8266)、手机app远程控制、远程显示温度)

    智能家具系统分为两个不同版本系列: ①系列一:手机app远程控制.远程检测温湿度显示在app,(云平台)    ---------本文章 ②系列二:语音识别控制                http ...

  6. 【科研论文】基于HTTP协议的嵌入式远程监控系统的研究

    内容简介: 利用网络实现局域乃至全球范围内的监测与控制,是信息与控制系统的主要发展趋势.嵌入式系统因其体积小.功能强.可靠性高.灵活方便等优点,已渗透到工业.农业.国防.教育.科研以及消费等各个领域, ...

  7. java毕业设计——基于java+Socket+sqlserver的远程监控系统软件设计与实现(毕业论文+程序源码)——远程监控系统

    基于java+Socket+sqlserver的远程监控系统软件设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+Socket+sqlserver的远程监控系统软件设计与实现,文章 ...

  8. 从零搭建树莓派远程监控小车,udp视频传输,qt上位机

    目录 前言 一.材料准备 二.连线方式 三.软件编程 软件编程主要有一下几个方面 (1)树莓派视频传输 (2)esp8266代码 (3)上位机编程 四.总结 前言 最近刚准备完期末机器人驱动的课设,本 ...

  9. 手机APP远程控制树莓派

    手机APP远程控制三步快速连接树莓派 www.marsiot.com 请确认树莓派可以访问互联网 目前支持树莓派官方镜像Raspbian 硬件目前支持Raspberry Pi 2/3 Model B ...

最新文章

  1. pycharm同一目录下无法import明明已经存在的.py文件
  2. SQL优化:你真的知道国家字符集的性能影响吗?
  3. swift版本hello
  4. HandyJSON:Swift语言JSON转Model工具库
  5. bzoj 1799: [Ahoi2009]self 同类分布(数位DP)
  6. 【LeetCode】217. Contains Duplicate (2 solutions)
  7. 用python画一只皮卡丘_用python画一只可爱的皮卡丘实例
  8. 老罗Android开发视频教程
  9. VMWARE 之 分布式网络交换机
  10. http://www.spiceworks.com
  11. 华为又又又白给了,自动化福利领取了吗?
  12. 花之语第五期:紫罗兰
  13. matlab直观数据处理,霍尔效应实验的MATLAB数据处理
  14. 2020年每个Web开发人员必须知道的9种Web技术
  15. 计算机平均数据传输速率怎么算,如何计算总线数据传输速率
  16. 计算机大专考试题,计算机大专考试试题一
  17. 【改】[火光摇曳]神奇的伽玛函数(上)——markdown排版
  18. Cortex、ARMv8、arm架构、ARM指令集、soc?Cortex A8、A9都是ARMv7a 架构;Cortex M3、M4是ARMv7m架构;前者是处理器(内核)后者是指令集的架构(架构)
  19. SpringBoot项目打jar后执行jar包提示:xx没有主属性清单 解决
  20. java小游戏大鱼吃小鱼入门(15min写一个小游戏)

热门文章

  1. 中南大学软件学院机器学习实训
  2. java毕设项目贵州农产品交易系统(附源码)
  3. java JNI调用C++代码(给出一个简单java application示例和实际java web项目过程及错误解决)(一)
  4. 代码能力,程序员自我修养之基石
  5. 哪些机型适配了android11,miui11支持哪些机型_miui11适配机型大全_飞翔教程
  6. python分布采样_使用Python实现正态分布、正态分布采样
  7. 邮件群发教程之使用VPS服务器拨号换IP
  8. android nfc 鸡肋,手机NFC真的鸡肋吗?这些功能很实用
  9. 教你怎么用命令搜索百度云资源
  10. MyBatis中常见标签的使用