Git Product home page Git Product logo

diyprojects's Issues

设置无线静态IP

通过SSH登录你的树莓派,编辑/etc/network/interfaces

$ sudo apt-get update
$ sudo apt-get install nano
$ sudo nano /etc/network/interfaces

修改成如下

auto lo
iface lo inet loopback

#auto eth0
#allow-hotplug eth0
#iface eth0 inet dhcp

auto wlan0
allow-hotplug wlan0
iface wlan0 inet static
address 192.168.155.4
netmask 255.255.255.0
gateway 192.168.155.1
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

紧接着在/etc/wpa_supplicant/wpa_supplicant.conf文件中配置你的无线热点信息
$ sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
仿照示例

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=US

network={
        ssid="OpenWrt"
        psk="******"
        key_mgmt=WPA-PSK
        priority=3
}

其中ssid表示热点名称,psk表示对应的密码,重启后你的树莓派会自动连接热点。

无线IO | 一个开源智能家居解决方案

我们的愿景是打造一款基于树莓派的智能家居中心。它的特点不在于重复制造轮子,而是集成现有的开源方案,提供一种低成本、透明、实用的整体解决方案。

  • 1 基础能力(远程界面、穿透内网、状态检测)
  • 2 智能相册(feh + mplayer + seafile)
  • 3 天气报时(天气api+tts语音合成)
  • 4 远程推流
  • 5 语音交互(类似与天猫精灵)
  • 6 宠物识别
  • 7 自动发微博or微信

后续搭建细节,会陆续更新在本站,欢迎感兴趣的朋友加入我们,一起享受DIY树莓派打造智能家居的乐趣:smiley::kissing_heart::tada:

目录

1 树莓派基础能力

2 智能相册

3 天气报时

4 远程推流

5 语音交互

6 宠物识别

7 自动发微博or微信

内网穿透

所谓“内网穿透”,旨在使我们能够通过公网固定IP端口转发的方式,远程访问内网中的计算机。当前有许多内网穿透的工具,其中以开源的ngrokfrp最为广泛。

本文以frp为例,借助一个有公网IP的VPS实现远程访问家中树莓派的目的。

实验平台 操作系统 说明
公网主机 Centos 7 x86_64 GNU/Linux 可远程操作,有固定的Ipv4地址,以下用百度的主机‘111.13.101.208’ 代指
树莓派 Stretch armV7 内网路由下IP:192.168.155.4

frp 简介

frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp, http, https 协议。

安装

根据对应的操作系统及架构,从 Release 页面下载最新版本的程序。

  • 将 frps 及 frps.ini 放到具有公网 IP 的机器上。
  • 将 frpc 及 frpc.ini 放到处于内网环境的机器上。

更详细的配置方式,参考官方安装文档

1 服务器端

由于本文公网服务器为linux 64 位,因此下载frp_0.16.1_linux_amd64.tar.gz,其余类型同理,输入uname -r可查看服务器架构。

ssh vps
cd /home/pi/iot/frp
wget https://github.com/fatedier/frp/releases/download/v0.16.1/frp_0.16.1_linux_amd64.tar.gz
tar xvf frp_0.16.1_linux_amd64.tar.gz

# 可删除客户端程序和配置文件
rm frpc frpc.ini

服务器端配置文件示例,出于安全因素设置一个随机字符串作为privilege_token,同时在客户端配置文件中也要加入同样的随机字符串。

[common]
bind_port = 7000
vhost_http_port = 8080
privilege_token = *******

#log_file = /home/pi/iot/frp/frps-debug.log
# trace, debug, info, warn, error
log_level = info
log_max_days = 3

服务器端启动

$ ./frps -c frps.ini

2 树莓派端

由于树莓派为 armV7 架构,因此下载 frp_0.16.1_linux_arm.tar.gz

ssh pi
cd /home/pi/iot
mkdir frp
cd frp
https://github.com/fatedier/frp/releases/download/v0.16.1/frp_0.16.1_linux_arm.tar.gz
tar xvf  frp_0.16.1_linux_arm.tar.gz

# 可删除客户端程序和配置文件
rm frps frps.init

配置文件示例

[common]
server_addr = 你的公网主机IP地址
server_port = 7000
privilege_token = *******,同服务端一致即可

#log_file = /home/pi/iot/frp/frpc-debug.log
# trace, debug, info, warn, error
log_level = info
log_max_days = 3

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6001

[web]
type = http
local_port = 80
custom_domains = yourdomain.com
use_compression = true

树莓派端启动

$ ./frpc -c frpc.ini

观察日志输出。
正确运行后,分别在服务器端 frps.ini 和 树莓派端frpc.ini#log_file 一栏中, 将前面的#去除,以便记录日志情况。

设置开机启动

1 服务器端

在服务器端,向/etc/systemd/system/路径下,新增frps.service文件

$ sudo su
$ cd /etc/systemd/system/
$ nano frps.service

frps.service 文件如下,注意ExecStart路径与你的保持一致。

[Unit]
Description=frp server daemon ,a fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet.
After=syslog.target  network.target
Wants=network.target

[Service]
Type=simple
ExecStart=/home/pi/iot/frp/frps -c /home/pi/iot/frp/frps.ini
Restart= always
RestartSec=1min
ExecStop=/usr/bin/killall frps
User=pi
Group=pi

[Install]
WantedBy=multi-user.target

使能并设置开机启动

$ systemctl daemon-reload
$ systemctl list-unit-files | grep frps
$ systemctl enable frps.service
$ systemctl start frps.service
$ systemctl status frps.service

2 树莓派端

同服务器端设置开机启动方式类似,树莓派端新增/etc/systemd/system/frpc.service

[Unit]
Description=frp client daemon ,A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet.
After=syslog.target  network.target
Wants=network.target

[Service]
Type=simple
ExecStart=/home/pi/iot/frp/frpc -c /home/pi/iot/frp/frpc.ini
Restart= always
RestartSec=1min
ExecStop=/usr/bin/killall frpc
User=pi
Group=pi

[Install]
WantedBy=multi-user.target

enjoy and have fun ~😉

更多参考推荐一款很好用的内网穿透工具--FRP

复刻一个 WIFI 像素时钟

在知乎闲逛DIY作品,发现国外大神AWTRIX 2.0 基于wifi 的像素时钟很炫酷、开源、材料易得随打算复刻一个。制作过程网上已有很多资料,不多说,上作品。

使用手册

用途/功能

1、计时器和秒表功能
2、强大的API接口,例如MQTT和REST
用于IFTTT等外部服务,支持IOS 快捷指令显示短消息
3、使用友,好可通过Web界面完成配置
4、集成的Appstore添加应用
5、支持自定义提醒、应用显示

运行环境

接口:USB Mini
输入电压:DC 5V 2A

初始化

STEP1:
将设备接入电源,此时屏幕会显示如下

拿起手机/笔记本 扫描WIFI网络,此时有 “AWTRIX Controller ”的热点,连接该热点

STEP2:
当手机连接到该热点后,会自动跳转到 http://172.217.28.1 网页上,如下图,此时类似于家用路由器配置界面

STEP3:
选择 第一个按钮“Configure Controller”

STEP4:
此时设备会自动扫描本地附近热点,选择你的热点。
其中SSID 表示你的热点名称,Password 表示你的热点密码。

STEP5:
当你输入完成后,设备会自动重启。正常显示下图,就进入联网模式,动态显示预先设定好的APP。

ENJOY~ AND HAVE FUN.

出错处理和恢复

Q1:使用一段时间后,接入电源不良
A: 排查输入电压是否有电?接口是否松动?可通过背板螺丝拆开,拧好各接口线路

Q2:屏幕亮,但没有动态显示
A:重新上电,观察是否有 WIFI (对勾)表示已连接到本地网络。观察上电是否显示 服务端IP信息,类似“172.X.X.X:9001” 字样

参考链接

[1] AWTRIX 2.0 Docs

[2] 3D Print

[3] 如何制作一个 WIFI 像素时钟

[4] IOS 快捷指令

远程桌面连接

如何通过远程桌面,使得PC连接树莓派远程可视化操作呢?其实很简单,安装xrdp。

实验平台 操作系统 说明
笔记本 win10(10240) IP:192.168.155.2
树莓派 Stretch IP:192.168.155.4
例如 192.168.0.66 --->192.168.0.100 需要保证两台电脑IPv4地址中,第3位数字一样 Windows下打开cmd命令行,ping 树莓派IP地址 有回应,方可进入下一步

树莓派端配置

安装xrdp 和相关组件

因为win 系统采用xrdp 协议,所以我们在树莓派下安装 xrdp 和相关组件。

$ sudo apt-get install xrdp tightvncserver xbase-clients

# 设置开机启动
$ sudo su
$ systemctl status xrdp.service
$ systemctl enable xrdp.service

查看开机启动是否设置成功

$ systemctl list-unit-files | grep xr
xrdp-sesman.service                    enabled  
xrdp.service                           enabled

PC端连接

Windows

同时按 Win + R 键打开命令行输入 mstsc打开远程桌面。或通过搜索 "远程桌面" 的方式打开。
mstsc

勾选“不再询问我是否连接到此计算机”
mstsc-connect1

输入树莓派在内网下的IP 地址、用户名和密码
mstsc-connect2

恭喜,远程桌面连接成功!
mstsc-success

Ubuntu

通过使用系统自带的remmina远程连接工具,按Win键启动搜索,输入remmina,点击打开。仿照如下填写,连接地址、分辨率等信息
remmina-config

点击Connect按钮,提示输入树莓派的密码
remmina-success

连接成功!:tada:

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.