基于树莓派的 LED 数字温度计

MAKER:Anders644PI/译:趣无尽 Cherry(转载请注明出处)

本期带大家制作一个数字温度计,可以作为一款很个性的挂件装饰你的房间哦!

只需要树莓派 Zero W、LED 灯带、OLED 显示屏和定制的 PCB、胶合板或亚克力板这些组件就可以了,使用 Raspbian 操作系统。

特色:

1、循环显示城市列表,并在 OLED 显示屏和 LED 灯带上显示温度。当然你可以使用侧面的按钮手动选择要显示的城市。

2、由 LDR 控制,几分钟内就会默认非活动状态,将自动关闭 LED 灯带和 OLED 显示器,如果检测到明显的光线变化,它将自动重新点亮。

材料清单

树莓派 Zero W × 1

SD 卡 × 1

1.5 英寸 OLED 模块 × 1

5V 2.4A 电源 × 1

WS2812B LED 灯条 5 米(30个/米) × 1

定制 PCB × 1

4mm 胶合板 × 1

6mm 胶合板 × 1

3mm 白色亚克力板 × 1

螺钉 × 若干

螺栓 × 若干

垫圈 × 若干

支架 × 若干

烙铁 × 1

焊锡 × 1

热熔胶 × 1

木材胶 × 1

天气数据

从 OpenWeatherMap.org 上获取免费的天气数据,这里提供许多国家和地区的大城市的天气数据。使用方法如下。

1、在 OpenWeatherMap.org 上创建一个免费帐户:https://openweathermap.org/

2、复制你的 apikey 供以后使用。

3、下载、解压缩并打开 city.list.json.gz 文件,搜索你要显示的城市,然后复制城市 ID 供以后使用。

城市温度显示代码请在项目文件库中下载。

https://make.quwj.com/project/195

设置与编程

首先将 OLED 显示器连接到树莓派,并安装适用于OLED 显示器的库。此步骤确保树莓派已连接至互联网。

1、在接口选项下的 raspi-config 中启用 I2C 和 SPI 功能。退出并重新启动。

2、运行并更新:

sudo apt-get update

3、运行以下命令以安装必要的库:

sudo apt-get install python-dev sudo apt-get install python-smbus sudo apt-get install python-serial sudo apt-get install python-imaging

4、运行以下命令并打开配置文件:

sudo nano /etc/modules

确保以下两行位于配置文件中,然后退出并重新启动:

i2c-bcm2708 i2c-dev

5、现在运行此命令以复制到我的 GitHub 存储库:

git clone https:/ /github.com/Anders644PI/1.5inch-OLED-with-RPi.git

6、进入新文件夹,解压缩 RPi_GPIO-0_6_5.zip:

unzip RPi_GPIO-0_6_5.zip

运行此命令以安装库:

cd RPi_GPIO-0_6_5 sudo python setup.py install

7、通过键入以下内容来返回主文件夹:

cd /home/pi/1.5inch-OLED-with-RPi/

用同样的方法处理 spidev-3_2.zip。

8、解压 wiringPi.zip:

unzip wiringPi cd wiringPi

并运行以下命令:

chmod 777 build ./build

使用以下命令检查安装:

gpio -v

9、返回主文件夹,然后解压缩 bcm2835-1_45.zip

unzip bcm2835-1_45.zip cd bcm2835-1_45

10、然后运行此命令并安装库:

./configure make sudo make check sudo make install

11、再次返回到 /home/pi/1.5inch-OLED-with-RPi/,然后运行命令来测试 OLED:

cd /Demo_Code/Python/ sudo python main.py

最后,编写代码即可,你可以参考我的代码,请在 GitHub 上获取:

https://github.com/Anders644PI/1.5inch-OLED-with-RPi

配置天气 API

cd LED_Thermometer_Code_and_OLED_driver nano Official_Digital_LED_Thermometer_v1-0.py

最后,如图所示,向下滚动并从 openweathermap.org 中将 api-key 改为你的 api 密钥。另外,将城市 ID 和城市名称更改为你所需要的城市。

定制 PCB 板

如图所示,当我弄清楚需要的电子元件后,就开始在网上定制 PCB 板。所有的文件在 GitHub 上均提供了。

切割外壳

1、使用 4mm 胶合板和 6mm 胶合板激光切割出外壳。使用 3mm 的白色亚克力板激光切割 LED 的漫射器模型。

2、将电子设备和 LED 灯带连接到激光切割好的胶合板上。然后组装外壳。

3、3D 打印按钮和开关,以便配套使用。

所有 3D 打印文件请在我的 GitHub 中下载。你可能需要将 SVG 文件缩小到75%。

https://github.com/Anders644PI/1.5inch-OLED-with-RPi

完成

目前为止,整个项目就完成了,非常的简单。

via

基于树莓派实现 Modbus TCP 通讯的工业方案

在树莓派基金会推出新的树莓派计算模块 3+ 系列不到四个月后,KUNBUS 公司正在为其新的 RevPi Connect + 配备这些模块。与具有 4GB eMMC 内存的旧版本相比,新设备现在具有 8GB、16GB 或 32GB eMMC 内存版本。

Revpi Connect 开源的工业物联网网关

KUNBUS Revpi Conenct作为小型的工业PC,其硬件基于树莓派计算模块3,采用1.2 GHz四核处理器,1GB内存且最高支持32GB的 eMMC闪存,内部集成支持24小时缓存的实时时钟(RTC),以确保RevPi Connect即使在断电的情况下仍然知道自己的运行时间点;软件采用开源的架构(包含完全的根权限),给用户提供了极大的自由度,预装了一个经过专业定制的带有实时补丁的Raspbian操作系统版本,因为其良好的扩展性,可适应于工业的许多应用场合。

RevPi Connect系列模块采用DIN导轨外壳,配有两个RJ45以太网插座,两个USB端口,一个4极RS485接口,一个Micro-HDMI插座和一个Micro-USB插座。这意味着,例如来自车间的机器数据可以安全地直接传输到云或更高级别的ERP系统。为此目的,用户可以使用诸如MQTT和OPC UA之类的熟悉协议。可以通过Node-RED,Python或直接在C中编写各种应用程序。

RevPi Connect的模块化设计使45mm宽的基础设备能够安装合适的扩展模块,如数字和模拟IO,现场总线网关和无线电模块,例如用于蓝牙的无线电模块。这些扩展模块可以通过顶部的即插即用连接器(无需工具)连接到基本单元,并通过图形用户界面轻松配置。

下面介绍如何通过RevPi Connect实现Modbus TCP主站来采集温度信号。

工具原料:Revpi Connect,网线,温度传感器等。

要求:

a.Revpi connect和Modbus-TCP从站位于同一网络中,

b.Modbus-TCP从站具有静态IP地址。

1.通过RJ45插孔将从站连接到Revpi Connect。将Revpi连接到电源。为了配置从站,我们需要事先获得一些数据,以便我们可以通过RevPi Connect寻址传感器。我们在从站的用户手册中找到这些数据。确定Modbus TCP网络数据

在这个例子中,我们使用温度传感器“Inveo NANO TEMP”作为从属设备。

请注意从站手册中的以下数据:

2.启用Modbus-TCP主站功能,打开Web浏览器。在Web浏览器的地址栏中输入RevPi Connect的IP地址。出现登录窗口。使用用户名“admin”登录。输入密码。您可以在RevPi Connect侧面的标签上找到它。单击“登录”。您现在可以看到RevPi Connect的当前设备状态。单击“服务”选项卡。单击启用/禁用Modbus主站中的“已启用”。单击“全部保存”按钮。

3.Modbus-TCP主站配置

点击“应用”标签。单击条目“PiCtory”后面的开始按钮。PiCtory打开。打开设备目录中的“虚拟设备”文件夹。选择Modbus-TCP Master。按住鼠标左键并将Modbus TCP Master拖动到RevPi Connect。您的Modbus-TCP主站现在将出现在配置板的最右侧。在“设备数据”窗口中设置适配器的基本设置。 此条目是可选的。 如果您使用大量设备并希望稍后在另一个程序中处理数据,则此输入可能非常有用。在“值编辑器”中,我们定义TCP连接的设置。 我们已经确定了传感器使用说明书中的数值:

4.右键单击配置板上的Modbus-TCP主站。上下文菜单打开。

选择条目“扩展数据”。这是我们设置Modbus命令的地方。 在这个例子中,我们需要一个命令来读取传感器的温度值。 我们已经从传感器的操作说明中收集了必要的信息:

Slave Addr.:1

功能码:READ_HOLING_REGISTERS(03)

寄存器地址:4004

寄存器数量:1

动作间隔(ms):1000

设备对应值:Input_Word_1

5.保存配置。单击“文件>保存”以保存文件。然后复位,配置才会生效。

6.查询过程映像中的值:打开命令行并输入以下命令:

piTest -r Input_Word_1

您收到从站的数据:2 Input_Word_1的字节值:284 dez(= 011c hex)

在我们的示例中,我们获取温度数据。值284对应于28.4℃

以上就是我们通过Revpi Connect实现Modbus TCP功能读取温度传感器。

了解更多关于 Revpi Connect 产品的信息请访问:

http://hkaco.com/zdh/KUNBUS/revolution/revolution.html

深度学习:猫头鹰「僵尸」探测器

MAKER:t3chflicks/译:趣无尽 Cherry(转载请注明出处)

这是一只外形是猫头鹰的「僵尸」探测器,它通过图像处理技术实现人体识别和跟踪。如果你手头刚好有树莓派4(Raspberry Pi) 的话就可以来练练手。新版的树莓派拥有 4GB 内存,可以实现许多比较复杂的项目,其中就包括在深度学习模式下的图像处理。

现在让我们一起来看看如何制作吧。

材料清单

树莓派4(Raspberry Pi)×1

夜视摄像头×1

微型舵机×1

猫头鹰模型×1

胶水×1

油漆×若干

螺丝×若干

USB 扬声器×1

大型便携式电源(5v)×1

3D打印机×1

处理猫头鹰

这里主要处理猫头鹰的头部,以便安装夜视摄像头。如果你选用的是其他“壳”,可根据自己的实际情况来操作。

1、取下猫头鹰的头部并将连接处的圆柱体移除。

2、拆掉的圆柱体是由一个塑料体和轴承组成,使用螺丝刀将轴承拆除。

3、用螺丝将塑料圆柱体与弹簧连接起来并将舵机连接到圆柱体上。

4、取下连接猫头鹰身体部分的螺丝。

5、在猫头鹰身体部分的顶部开一个孔。孔的大小可以放入若干电线和摄像头的线。

安装电子设备部分

安装头部设备

3D 打印摄像头外壳后刷漆让使其与猫头鹰的颜色相匹配。

1、将摄像头的顶部安装到猫头鹰头部的里面,再将摄像头放入到外壳内并连接电线。

2、将舵机粘到弹簧的顶部。

3、将长线连接到舵机引脚(5V、接地、信号)。

4、将摄像头电线和舵机电线穿过弹簧,然后再穿过猫头鹰身体顶部的孔。

安装身体部位设备

1、去掉底部的塞子,扩大孔的尺寸,以便树莓派和扬声器等硬件设备可以放入到猫头鹰的体内。

2、将摄像头的线从猫头鹰顶部拉出来插入到树莓派,同时也将舵机的线穿过插入树莓派。

插线方式如下:

舵机 +5v => 树莓派 +5V

舵机 Gnd => 树莓派 Gnd

舵机 信号 => 树莓派 Pin 12

3、将 USB 扬声器、SD 卡、插入树莓派。

4、使用便携式电源为树莓派供电。

5、通过底座上的孔将树莓派、电源和扬声器插入猫头鹰。

配置树莓派

所有的代码都可以在 GitLab 下载到:

https://gitlab.com/t3chflicks/cctv-owl

1、使用 Balena Etcher 给树莓派刷好系统。

参考:https://shumeipai.nxez.com/2019/04/17/write-pi-sd-card-image-using-etcher-on-windows-linux-mac.html

2、开启树莓派的 SSH 并配置好 WiFi。

参考:

无屏幕和键盘配置树莓派WiFi和SSH

3、将 SD 卡插入树莓派,然后尝试通过 SSH 访问树莓派。

设置头部动作

下面的代码示例用来了解使用舵机实现猫头鹰头部的移动:

import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BOARD) GPIO.setwarnings(False) GPIO.setup(12, GPIO.OUT) p = GPIO.PWM(12, 50) p.start(7.5) print(“starting”) try: while True: print(“looping duty cycle”) p.ChangeDutyCycle(7.5) # turn towards 90 degree time.sleep(1) # sleep 1 second p.ChangeDutyCycle(2.5) # turn towards 0 degree time.sleep(1) # sleep 1 second p.ChangeDutyCycle(12.5) # turn towards 180 degree time.sleep(1) # sleep 1 second except KeyboardInterrupt: p.stop() GPIO.cleanup()

1、舵机与树莓派的连接方式如下:

舵机 +5V => 树莓派 +5V

舵机 Gnd => 树莓派 Gnd

舵机 信号 => 树莓派 Pin 12

2、首先设置 GPIO 引脚以便舵机的信号引脚上使用 PWM。

3、简单地选择信号引脚的占空比,占空比的设置是 7.5 为 90 度,2.5 为0度,12.5 为 180度。

配置声音

下面的代码示例实现猫头鹰的叫声,使用树莓派播放音频:

1、插入 USB 扬声器,下载声音。我选择了惊悚的声音(用来吓唬人)。

2、通过运行以下命令来播放声音:omxplayer -o alsa:hw:1,0 owl_sound.mp3

如果跑不起来,请使用 alsamixer 命令检查树莓派的输出以及音量的大小。你可以在调音台屏幕上更改音量并选择媒体设备。要增加声音的音量,请执行以下命令:

omxplayer -o alsa:hw:1,0 owl_sound.mp3 –vol 500

使用 Python 播放声音,然后测试脚本。

import subprocess command = “omxplayer -o alsa:hw:1,0 ../../assets/owl_sound.mp3 –vol 500” player = subprocess.Popen(command.split(‘ ‘), stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE )

声音文件请在项目文件库中下载:

https://make.quwj.com/project/181

树莓派上视频流的实现

1、创建树莓派摄像头视频流的代码教程可参考:

https://gitlab.com/t3chflicks/cctv-owl/tree/master/tutorials/3_stream_video

2、运行 python app.py 并在http://raspberrypi.local:5000/的本地网络上查看。

3、本代码是从 Miguel Grinberg 的网站上获取并稍作改编的。基本概念是使用线程和生成器来提高视频流的传输速度。

https://blog.miguelgrinberg.com/post/flask-video-streaming-revisited

人体识别

使用 ImageNetSSD 实现视频中的人体识别可参考:

https://gitlab.com/t3chflicks/cctv-owl/tree/master/tutorials/4_object_detection

因为使用树莓派4,我们准备用深度学习模型来替代基本 HaarCascade 方法。

1、首先查看一些预先训练好的模型,例如 YOLOv3。YOLOv3 很轻,对于树莓派来说很完美,但却无法完美运行起来。

2、然后我们选择了 openCVs DNN(深度神经网络)模块运行的 MobileSSD 模型。

代码部分:

https://heartbeat.fritz.ai/real-time-object-detection-on-raspberry-pi-using-opencv-dnn-98827255fa60

图像处理部分:

Object detection with deep learning and OpenCV

3、然而当我们尝试流式传输内容并在每个帧上运行模型时,最后导致视频播放缓慢而且片段化。最后我们学习了Adrian Rosebrock 的方法:

Raspberry Pi: Deep learning object detection with OpenCV

使用 Python 多处理模块将图像放入队列可以在不严重阻塞摄像头视频流的情况下进行处理。

4、尝试自己运行代码吧:

https://gitlab.com/t3chflicks/cctv-owl

给手机发送「僵尸来了」通知

1、使用https://pushed.co/通知服务。

2、注册一个免费帐户并下载该应用程序,然后快速设置,并获取移动通知。

import requests payload = { “app_key”: “APP_KEY”, “app_secret”: “APP_SECRET”, “target_type”: “app”, “content”: “Owl has detected a zombie.” } r = requests.post(“https://api.pushed.co/1/push”, data=payload)

这非常的简单,你也可以自定义通知的名称。

完成

希望你喜欢这只聪明的猫头鹰,快来做一只来守护你的家吧!

via

透过树莓派 ZeroW 的 RNDIS 实现一个无线网卡

一篇来自 Archer 的投稿,详细介绍了使用树莓派 ZeroW 的 RNDIS 功能实现一个无线网卡,可以给需要联网的设备共享网络。

啊,之前一直在祷念把树莓派ZeroW做成无线网卡用一直不成功,现在终于成功了,来分享一下我的做法和一些心得。

步骤一

首先找一张新的TF卡,刷个新系统,然后

sudo raspi-config

调整好树莓派ZeroW的基础设置。

然后修改文件开始连接网络

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

在该文件最后加上

network={ ssid=”自家WIFI” psk=”WIFI密码” }

重启后即可连上无线网络

sudo nano /boot/config.txt

在文件最后加入

dtoverlay=dwc2

然后再修改/boot/cmdline.txt文件,找到 rootwait,在后面插入

modules-load=dwc2,g_ether

插入后保存退出

重启后,即可连上USB RNDIS网络,具体连接方式请参考往期文章

树莓派 Zero USB/以太网方式连接配置教程

联网成功之后,开始更新和安装软件

sudo apt-get update sudo apt-get upgrade sudo apt-get dist-upgrade sudo apt-get install dnsmasq isc-dhcp-common

步骤二

修改 /etc/dhcpcd.conf文件,

sudo nano /etc/dhcpcd.conf

在文件末尾添加这两句

interface usb0 static ip_address=192.168.253.1/24

然后再修改 /etc/network/interfaces文件

sudo nano /etc/network/interfaces

添加一下段落

auto usb0 iface usb0 inet static address 192.168.253.1 netmask 255.255.255.0

修改完毕之后,重启dhcp服务

sudo service dhcpcd restart

修改网段配置文件

sudo nano /etc/udhcpd.conf

添加以下段落

interface=usb0 bind-interfaces server=180.76.76.76 server=114.114.114.114 server=223.5.5.5 domain-needed bogus-priv dhcp-range=192.168.253.2,192.168.253.254,1h

然后再修改文件dhcp规则文件之一的/etc/sysctl.conf

sudo nano /etc/sysctl.conf

在末尾添加以下内容

# Uncomment the next line toenable packet forwarding for IPv4 net.ipv4.ip_forward=1

添加完毕之后,设置转发规则

sudo iptables -F sudo iptables -X sudo iptables -t nat -APOSTROUTING -o wlan0 -j MASQUERADE sudo iptables -A FORWARD -i wlan0 -o usb0 -m state –state RELATED,ESTABLISHED -j ACCEPT sudo iptables -A FORWARD -i usb0 -o wlan0 -j ACCEPT sudo sh -c “iptables-save> /etc/iptables.ipv4.nat”

再往/etc/network/interfaces末尾添加一下内容。

sudo nano /etc/network/interfaces

添加以下语句

up iptables-restore < /etc/iptables.ipv4.nat 然后保存退出 再编辑一下文件 sudo nano /etc/network/if-pre-up.d/iptables 往里面添加以下段落 #!/bin/bash /sbin/iptables-restore < /etc/iptables.ipv4.nat 保存退出之后,设置一下权限 sudo chmod 755 /etc/network/if-pre-up.d/iptables 我们需要新建空文件/lib/dhcpcd/dhcpcd-hooks/70-ipv4-nat, sudo vi /lib/dhcpcd/dhcpcd-hooks/70-ipv4-nat 然后输入 :wq 回车退出 再设置一下转发 sudo iptables-restore < /etc/iptables.ipv4.nat 重启一下dnsmasq服务 sudo service dnsmasq start 然后编辑域名服务器(DNS)文件 sudo nano resolv.conf 写入以下内容 # Generated by resolvconf domain lan nameserver 127.0.0.1 nameserver (路由器或者网关的IP) nameserver 180.76.76.76 然后再编写可执行的sh文件 sudo nano network .sh 文件如下 sudo cp /home/pi/resolv.conf /etc/resolv.conf sudo /etc/init.d/networking restart sudo iptables -F sudo iptables -X sudo iptables -t nat -APOSTROUTING -o wlan0 -j MASQUERADE sudo iptables -A FORWARD -i wlan0 -o usb0 -m state --state RELATED,ESTABLISHED -j ACCEPT sudo iptables -A FORWARD -i usb0 -o wlan0 -j ACCEPT 然后赋予可执行权限 sudo chmod 0777 / home/pi/network.sh 然后向开机运行脚本rc.local添加语句 sudo nano /etc/rc.local 在exit0之前添加一下语句: sudo ifup wlan0 sudo ifconfig wlan0 up sudo wpa_supplicant -iwlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf -B sudo ifconfig wlan0 192.168.150.163(无线网卡参与的IP地址) sleep 120 sudo cp /home/pi/resolv.conf /etc/resolv.conf sudo /etc/init.d/networking restart sudo iptables -F sudo iptables -X sudo iptables -t nat -APOSTROUTING -o wlan0 -j MASQUERADE sudo iptables -A FORWARD -i wlan0 -o usb0 -m state --state RELATED,ESTABLISHED -j ACCEPT sudo iptables -A FORWARD -i usb0 -o wlan0 -j ACCEPT sleep 120 sudo /home/pi/network.sh sudo /home/pi/network.sh sudo /home/pi/network.sh sudo /home/pi/network.sh sudo /home/pi/network.sh sudo /home/pi/network.sh exit 0 然后重启树莓派。 这样在重启的四分钟之后,树莓派ZeroW就会作为RNDIS设备给电脑转发无线网络,若不能正确联网,就用ssh登录192.168.253.1,多次运行network.sh,就能正确连接网络。 若要连接其他wifi,需要修改的地方有三处 /etc/wpa_supplicant/wpa_supplicant.conf上面,wifi的ESSID和密码 /home/pi/resolv.conf 上面nameserver 192.168.150.1(路由器或者网关的IP) /etc/rc.local 上面sudo ifconfig wlan0 192.168.150.163(无线网卡参与的IP地址) 首先这玩意很不实用,不建议各位拿来实际使用,因为树莓派启动转发服务需要两分钟时间,所以在rc.local的语句中,有sleep 120(延时120秒启动后面服务项的语句),而且每次重启之后,那些转发设置、DNS服务器,会全部重置,需要额外开机启动设置,所以特别麻烦,只适合有嵌入式无线设备开发的玩家,算是给各位一个思路。要是openwrt的gadget_ether能用的话,实用性会比现在的raspbian强太多,不过就是软件层面分配IP地址有问题,请各路大神指教。 其他用法: 来试试树莓派绑定局域网共享文件夹的测试,希望把磁盘阵列的大容量能运用到树莓派上面。 首先在Windows10的局域网盘服务端上,先做以下准备工作 先去控制面板—程序那里,找到 启用或关闭Windows功能 然后把SMB/CIFS相关服务全开了 再然后去网络设置那里,把所有网络的设置设为对网络共享有利的选项 (修改专用网络和所有网络即可) 然后去用户账户控制(控制面板搜索UAC),新建一个有密码的用户,我就新建跟树莓派一样的,然后对着你要共享的文件夹右击找到 “授予访问权限” 的选项,设置共享,用户名就用新建跟树莓派一样的那个,免得跟你正在使用的用户冲突。 然后知道共享网络那里看到你要的共享文件夹,那就成功了。 树莓派端的准备: 安装网络访问软件包 sudo apt-get install smbclient smbfs cifs-utils ntfs-3g avahi-daemon 这些软件包 在安装完毕之后重启树莓派 对树莓派打以下指令,探测网盘,smbclient -L //192.168.253.66 -U pi 192.168.253.66是我的电脑的服务器内网IP,pi是我自定的用户名,你们按照自己的需要进行修改 然后绑定用如下指令sudo mount -t cifs //192.168.253.66/TDDOWNLOAD2 /home/pi/data -o username=pi /home/pi/data是我指定的挂载点,你们按照你们的状况进行修改 ,这样基本上就绑定成功了。

基于树莓派codesys主站实现CANopen通讯

树莓派是世界上微型PC的代表,而KUNBUS Revpi Conenct是小型的工业PC,其硬件基于树莓派计算模块3,采用1.2 GHz四核处理器,1GB内存且最高支持32GB的 eMMC闪存,内部集成支持24小时缓存的实时时钟(RTC),以确保RevPi Connect即使在断电的情况下仍然知道自己的运行时间点;软件采用开源的架构(包含完全的根权限),给用户提供了极大的自由度,预装了一个经过专业定制的带有实时补丁的Raspbian操作系统版本,因为其良好的扩展性,可适应于工业的许多应用场合。本篇我们将为您展示如何使用Codesys和RevPi connect如何去创建CANopen网络。

下文我们将向您展示如何使用CODYSYS和RevPi系列产品创建CANopen网络。

工具原料:

RevPi Connect

RevPi Con CAN

Connect桥接器

CODESYS Runtime(请将其安装在RevPi Connect上)

RevPi mGate CANopen

1.使用Connect Bridge连接RevPi Connect和RevPi Con CAN。 确保RevPi Con CAN位于RevPi Connect的右侧。 连接RevPi Connect连接到电源。打开PiCtory。 在配置板上组装您的设备,点击“File>Save as Start-Config”以保存项目,点击“Tool>Reset Driver”以下载到设备中。

2.在Web状态中,您可以检查RevPi Con CAN是否已成功激活:

3.为CODESYS创建脚本

为了使CODESYS和RevPi设备之间的通信正常工作,必须配置比特率。因此,我们在此步骤中创建一个脚本,并使其在RevPi Connect上可执行。打开RevPi终端并使用您的用户名和密码登录。输入以下命令以创建新脚本:

sudo nano /var/opt/codesys/rts_set_baud.sh

将以下行添加到文档中:

#!/bin/sh BITRATE=`expr $2 \\* 1000` ifconfig $1 down echo ip link set $1 type can bitrate $BITRATE ip link set $1 type can bitrate $BITRATE ifconfig $1 up

使用Ctrl-O保存更改。

使用Ctrl-X退出编辑器。

在命令行中键入以下命令以使脚本可执行:

sudo chmod +x /var/opt/codesys/rts_set_baud.sh

在命令行中键入以下命令以重新启动RevPi Connect:

sudo reboot

4.在CODDESYS中配置CANopen主站,在项目树中单击项目上的鼠标右键。单击“附加设备”——选择“CODESYS Control for Raspberry Pi”。单击“添加”。在添加的设备上单击鼠标右键(CODESYS Control for Raspberry Pi)。 单击“附加设备”。 选择“CANbus”。 单击“添加”。

5.在添加的设备(CANbus)上单击鼠标右键。 单击“附加设备”。选择“CANopen_Manager”。然后“添加”。

6.单击您的应用程序。单击“添加对象”。以这种方式插入以下对象:选择POU的方式插入,将“POU”调用添加到任务配置中。

7.将KUNBUS CANopen mGate添加到CODESYS中

从KUNBUS主页下载mGate CANopen的设备描述文件(EDS)。单击“工具”。单击“设备存储库”。选择“KUNBUS-mGate CANopen”。 单击“安装”。

8.在CANopen_Manager上单击鼠标右键。单击“附加设备”。选择“KUNBUS-mGate CANopen”。在设备的旋转编码开关上设置网关的节点ID和比特率。 这个项目就被建立好了,登录后,您可以查看主服务器是否识别网关:

以上就是在Revpi Connect上配置Canopen主站的过程。

相关教程:

基于树莓派实现 Modbus TCP 通讯的工业方案

了解更多关于 Revpi Connect 产品的信息请访问:

http://hkaco.com/zdh/KUNBUS/revolution/revolution.html

balenaFin:兼容树莓派计算模块的开发板

balenaFin 是一款兼容树莓派计算模块的底板,给树莓派用于产品设计和研发提供解决方案。目前 balenaFin 支持树莓派 CM3 和 CM3+ Lite。

存储

基于工业级 eMMC 存储,8G、16G、32G 和 64G 可选。

功率

电压范围 6V-24V 宽电压,适用于无法提供 5V 供电的场景。

协处理器

balenaFin 包含一个具有蓝牙功率的低功耗协处理器(32 位 ARM®Cortex M4)。

协处理器可以独立运行,也可以并行运行,并允许以编程方式打开和关闭主处理器。

这在要求低功耗或实时处理的应用中特别有用。

连接性

balenaFin 的无线芯片支持 802.11ac/a/b/g/n WiFI 和 Bluetooth 4.2(包括SMART功能)。板上包含一个双频嵌入式天线,以及一个外部天线连接器,用于改善信号覆盖范围。

输入输出

balenaFin 上的 Mini PCI Express 接口为许多不同模块带来无缝连接的可能。

第三方模块可轻松用于 LTE、Zigbee、LoRA 和 CANBus,并且可以利用 mini PCI Express 接口上的 USB 接口来实现额外的存储(这可能需要定制设计)。

balenaFin HAT 接口可用于连接任何树莓派 HAT(PoE、RS232、ZWave 等)。

18 Pin 接口引出了协处理器的模拟 I/O,以及实时 I/O。

官网:https://www.balena.io/fin/

树莓派实验室会在后面介绍更多工业领域上树莓派应用的产品和案例。

树莓派计划任务的配置方法

Unix 系统包括树莓派的 Raspbian 有一个叫 Cron 的工具用来配置计划任务。它用来设置一些命令或脚本,定时或者间隔某一个时间运行一次。大到每天午夜备份指定目录,小到每小时记录 CPU 信息均可用它实现。

使用 crontab 命令来操作任务计划表,这张表是基于用户的,也就是说每个用户(包括 root 用户)都有一套自己的 crontab 。

Cron GUI

Cron 也有一个图形界面的应用,通过下面的命令来安装:

sudo apt install gnome-schedule

然后就可以在树莓派菜单中找到 Scheduled Tasks 来启动它。

编辑 crontab

下面的命令进入编辑 cron table 的操作:

crontab -e

选择编辑器

首次运行时会提示你选择一个编辑器,如果不知道选哪个就直接回车选择 Nano 编辑器。

添加计划任务

每一条计划任务为一行,由 6 个部分构成。

# m h dom mon dow command # * * * * * command to execute(要执行的指令) # ┬ ┬ ┬ ┬ ┬ # │ │ │ │ │ # │ │ │ │ │ # │ │ │ │ └───── 星期 (0 – 7) (0 到 6 分别表示星期天到星期六;7 和 0 都代表星期天) # │ │ │ └────────── 月 (1 – 12) # │ │ └─────────────── 日 (1 – 31) # │ └──────────────────── 小时 (0 – 23) # └───────────────────────── 分钟 (0 – 59)

示例:

0 0 * * * /home/pi/backup.sh

它表示每天 0 点 0 分运行 backup.sh 脚本。

查看计划任务

使用下面的命令:

crontab -l

在重启时运行任务

如果需要在树莓派每次启动时都运行一条命令,可以这么做:

@reboot python /home/pi/myscript.py

其中使用 @reboot 替代了日期和时间。如果你希望命令仅仅在后台运行,则可以加一个 & 符号:

@reboot python /home/pi/myscript.py &

via

用树莓派 Zero 制造电动轮椅后视镜

MAKER:NilsP5/译:趣无尽 Cherry(转载请注明出处)

本期介绍安装在电动轮椅上的后视摄像头的制作方法,该项目通过手机上的 IP 视频流来实现后视摄像头的功能,该摄像头会安装在电动轮椅的操纵杆附近。和往期的《基于树莓派和 Vufine 屏的谷歌眼镜》一样,是为行动障碍人士提供帮助的实用项目。当然你也可以运用到其他领域。

项目特点:

1、轮椅使用 24V 铅蓄电池供电,整个项目的电源由电动轮椅提供。方便为树莓派和手机供电,充电端口可以兼容 USB 接口的电源转换器。

2、树莓派 Zero W 用于视频流的部分,作为无线访问点,并将视频流传输到连接到无线网络的任何设备上。

3、手机托盘将使用 3D 打印的外壳安装在轮椅的控制器旁,它将提供图像显示的功能。

4、本项目将会用到 Debian/Linux 的基础知识。

材料清单

树莓派 Zero W×1

SainSmart 广角鱼眼镜头×1

塑料外壳×2

XLR 插头×1

车载 USB 接口×1

电源线(用于 XLR 接口)×若干

USB 电线(用于树莓派)×若干

设置树莓派摄像头

按照说明安装 Raspbian,请点击:

首次使用树莓派,如何安装、启动及配置

1、通过终端运行以下两个命令来安装所有更新:

sudo apt-get update sudo apt-get dist-upgrade

关机,连接摄像头,再次启动树莓派。

2、在树莓派设置面板中,启用摄像头并启用对树莓派的 SSH 访问。

摄像头操作流程请点击查看:

视频演示如何给树莓派安装摄像头模块

3、安装 raspi-cam 的 v4l 驱动程序,该驱动程序需要处理后使用。

首先对树莓派的固件进行更新升级,以便获取最新的固件和内核驱动程序。

然后在终端中运行以下命令:

sudo raspi-update

通过在终端输入命令来加载 v4l 内核的驱动程序:

sudo modprobe bcm2835-v4l2

如果操作顺利,没有报错,应该具备设备/dev/video0,请输入以下命令,检查是否可行:

ls – l /dev/vid*

如果可行,请将 bcm2835-v4l2 添加到 /etc/modules 中,在每次启动时启用该模块。

输入以下命令检查摄像头是否可以使用:

raspistill -o cam.jpg

安装 V4l2rtspserver

安装软件部分

1、安装 cmake,需要自己编译视频流程序:

sudo apt-get install cmake

2、选用 v4l2rtspserver 作为视频流,试验了几款,发现它的延迟是最短的:

https://github.com/mpromonet/v4l2rtspserver

安装方法:

git clone https://github.com/mpromonet/v4l2rtspserver cd h264v4l2rtspserver cmake . make install

3、如果没有出现报错,一切正常的话,可以通过从终端启动视频流服务器来对其进行测试:

v4l2rtspserver -W 352 -H 288 -F 10 /dev/video0

4、用同一网络中的计算机上将 VLC 连接至树莓派输入

rtsp://:8554/unicast

,检查视频流是否正常工作。

5、使用你最拿手的编辑器(推荐使用 vi)在主目录中创建一个名为 launcher.sh 的脚本:

!#/bin/bash sleep 20 v4l2rtspserver -W 352 -H 288 -F 10 /dev/video0

6、需要 sleep 命令使视频驱动器准备就绪。将其设置为少于 20 秒。

使用 “crontab -e” 将此脚本添加到 crontab 中,再添加:

@reboot sh /home/pi/bbt/launcher.sh >/home/pi/logs/cronlog 2>&1

每次启动时将自动开启视频流式传输。

视频流传输的替代方法

我尝试了 Motion 和 VLC,有两种方法可用于视频流传输。Motion 是检测运动网络摄像头的工具,它可以对图像执行附加的图像分析,但是视频流的传输要慢一些。

VLC 则开箱即用,不需要编译:

cvlc v4l2:///dev/video0 –v4l2-width 320 –v4l2-height 200 –v4l2-chroma h264 –sout ‘#standard{access=http,mux=ts,dst=0.0.0.0:12345}’

此命令通过端口 12345 上的 http 视频流传输编码为 h264 的视频。测试设置中,延迟大约为两秒。

将树莓派设置为 WiFi 接入点

Hostapd

此步骤开始将树莓派设置为访问点。此后,只要树莓派打开自己的 WiFi 网络就不需要连接到网络。如果报错,只需要使用键盘和显示器访问树莓派,因此在将树莓派固定在某处时,就可以这样处理。

操作流程可参照:

树莓派加无线网卡配置WIFI热点的方法

然后安装 hostapd 和 dnsmasq:

sudo apt-get install dnsmasq hostapd

将以下行添加到 /etc/dhcpd.conf (最好添加到顶部)禁用 wlan0 接口上的 dhcp。

denyinterfaces wlan0

通过编辑 /etc/network/ 界面为 wlan0 接口配置静态 IP,内容为:

allow-hotplug wlan0 iface wlan0 inet static address 172.24.1.1 netmask 255.255.255.0 network 172.24.1.0 broadcast 172.24.1.255

使用 sudo service dhcpcd restart 重新启动 dhcp 守护进程,然后使用以下命令重新加载 wlan0 配置:

sudo ifdown wlan0; sudo ifup wlan0

将附件的 hostapd.conf 保存在 /etc/hostapd/hostapd.conf 下。检查内容并根据自己的喜好进行调整,修改 SSID 和密码的名称,让其更安全。

运行以下命令检查其是否有效:

sudo /usr/sbin/hostapd /etc/hostapd/hostapd.conf

连接至新网络,因为没有 IP 地址,通过按 CTRL-C 停止 hostapd。通过编辑 /etc/default/hostapd 和将相应的行更改为添加配置文件位置来自动启用 hostapd。

DAEMON_CONF=”/etc/hostapd/hostapd.conf”

关于 hostapd 的文件请在项目文件库中下载:

https://make.quwj.com/project/147

Dnsmasq

将提供的 dnsmasq 配置移动到备份文件(因为它包含很多注释,会起到参考作用)

sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig

创建一个新的 /etc/dnsmasq.conf,输入以下内容:

server=8.8.8.8 # Forward DNS requests to Google DNS domain-needed # Don’t forward short names bogus-priv # Never forward addresses in the non-routed address spaces. dhcp-range=172.24.1.50,172.24.1.150,12h # Assign IP addresses between 172.24.1.50 and 172.24.1.150 with a 12 hour lease time

将 dnsmasq 服务绑定到特定地址,在安装时出现一些问题。因此我们允许它在所有接口上运行。由于树莓派 Zero W 只具有 WiFi 功能,都不会有问题除非你连接 USB 以太网接口。在这种情况下,你的接口上还是具有 dhcp 服务器的功能,如果你用网线连接,它可能会弄乱你的网络。

你不需执行任何其他步骤即可在启动时运行 dnsmasq,它会自动启动。但是,在重新启动之前,你应该测试一下,然后手动启动两种服务并检查是否可以连接到 WiFi 并获取 IP 地址。

sudo service hostapd start sudo service dnsmasq start

检查软件

软件设置完毕后,现在开始进行简单的检查,以免发生很难访问的问题。

1、重新启动树莓派。

2、如果手机安装了树莓派,请连接到 WiFi。通过选择“网络流”并连接到 rtsp://:8554/unicast,将流视频客户端(例如 VLC 适用于所有操作系统)连接到树莓派的视频流。 是 IP 设备,如果没有进行更改,应为 172.24.1.1。

现在可以在摄像头上看到一些实时视频。我在 Android 上使用 VLC 时遇到了一些问题,但是在 iOS 上,VLC 可以正常运行。

制作电源

Invacare 控制是电动轮椅的标准配备。该连接器使用麦克风的标准 XLR 连接器。引脚 1 为正极,引脚 2 为负极。Invacare 还有两个另外的针脚用于通信,该项目中不会使用。

将 XLR 接口连接到 USB 电源适配器,然后放入到一个盒子中。将电线也放到盒中,最好使用连接线。确保电线足够长,可以将其从轮椅控制模块布线至安装电源盒背面的位置。你可以在控制模块的电线后布线,确保它们不会被任何可移动部件卡住。

制作摄像头外壳

制作一个可以容纳树莓派和摄像头的外壳。外壳的侧面需要一个孔,方便 USB 电源线穿过,注意摄像头的孔要足够大,不会遮挡视线。

以大约 45° 的角度安装了摄像头并使其指向下方,以便可以看到轮椅的后轮。我使用一个塑料盒并手动切割孔,你可以选择 3D 打印外壳。

制作手机支架底盘

如图所示,将手机安装在轮椅上,我 3D 打印了一个转接板。

支架将安装在轮椅控制单元。在这个底盘上,你可以粘贴任何车载手机支架。

关于 3D 打印的文件请在项目文件库中下载。

https://make.quwj.com/project/147

组装所有组件并测试

1、将摄像头安装在轮椅后部并朝向后方,注意不能遮挡视线。

2、将电源盒安装在后面,注意不要妨碍使用。

3、使用 USB 线将树莓派连接到电源盒。

4、将带有 XLR 插头的电源盒连接到轮椅控制单元上的充电接口。

5、在手机上安装 VLC;如果没有安装,可以通过 rtsp://:8554/unicast 连接到树莓派。

现在,手机上应该可以看到视频了。将手机放在底盘支架上,就可以安全出门。

via

利用树莓派进行挂机下载

一直有买 NAS 做下载姬的想法,但见过太多人买回家吃灰的例子,而且我的松鼠症并不严重,所以犹豫着。直到听闻树莓派4代发售,价格比 NAS 便宜,正好家里也有闲置 U 盘,思来想去,果然还是树莓派比较适合老子.jpg

1. 准备工作

在淘宝找到相关店家,根据自己的需要选择相应套餐,因为需要预订,大概一周后到货。

树莓派到手后,先将 Raspbian 系统镜像写入 micro SD 卡,推荐使用 balenaEtcher,十分方便。

之后配置远程 SSH 和 wifi(如果选择直接在树莓派上外接显示器和键盘就不用进行这一步),简单来说就是在根目录新建 SSH 文件和 wpa_supplicant.conf 文件,文件内容参考 教程 。

配置好后,插入 SD 卡启动树莓派,在路由后台管理中找到树莓派的 IP。

SSH 远程登录,默认用户名 pi,默认密码 raspberry,完成。(记得修改默认密码

2. 配置

(1) 更新升级系统

由于国内网络环境,需要修改源以免更新速度缓慢,可以 据此 修改(感谢清华源)。

Raspbian 基于 Debian,使用 apt upgrade 更新升级。如遇到更新途中卡死、Ctrl+C 无法终止的情况,使用 kill 结束进程,恢复,重启,再更新。

(2) 格式化 U 盘

U 盘用于存放我们的下载文件,使用 exFAT 格式以便存储超过 4 GB 的文件。sda1 是我的 U 盘设备,请根据自己情况修改。

apt install exfat-fuse # 若提示未找到 mkfs.exfat,可将 /usr/sbin 加入 PATH。 mkfs.exfat /dev/sda1

接着修改 /etc/fstab,让系统每次启动都自动挂载 U 盘。

# 追加写入,勿删改文件内其它内容 /dev/sda1 /mnt/udisk exfat rw,defaults 0 0

最后使用 mount -a 重新载入配置,检查有无报错。

额外的,我还将 U 盘路径软链接到用户目录以方便查看。

ln -s /mnt/udisk ~/downloads/udisk

(3) 编译安装 qBittorrent

其实软件仓库中有 qBittorrent,但我需要的是 qBittorrent-Enhanced-Edition,可以自动封禁如迅雷吸血客户端的 IP。如果你没有这个需求,直接 apt install qBittorrent 即可(或者安装 qBittorrent-nox,无需 GUI)。

编译需要依赖 Boost、Qt5 等,安装

apt install qt5-default qttools5-dev-tools libboost1.67-all-dev libtorrent-rasterbar-dev

克隆源码,在其目录执行

# –disable-gui: 不需要 GUI # 如果提示无法找到 Boost,需加 –with-boost-libdir 参数 ./configure –disable-gui –with-boost-libdir=/usr/lib/arm-linux-gnueabihf make -j$(nproc) make install

由于树莓派孱弱的性能,编译过程可能需要十多分钟。

之后启动 qBittorrent,浏览器远程访问,默认端口 8080,用户名 admin,密码 adminadmin。记得改密码。

配置一番后就可以开始下载了。

(4) 安装 samba

为与 Windows 共享文件,需安装 samba,官方 和网上其它地方都有教程,不细述。

值得注意的是,如果你和我一样使用了软链接,还需要在 samba 配置文件加入如下内容

[global] allow insecure wide links = yes [share] follow symlinks = yes wide links = yes

来源

改好配置后, systemctl restart smdb.service 重启 samba。

3. 使用情况

室温 30℃,风冷闲时 44℃。

下载速度没严格测试,根据已下载的情况,最高 9 MiB/s,与资源热度和网速有关,应该不是上限。没有测试内网文件传输速度。

测试 5G 大小 1080P 视频文件,可流畅播放,但如果大幅跳转有短暂卡顿。

总的来说还行吧,作为轻量下载姬,自分满足。

附:如果同时进行 BT 和 PT 下载,请分开安装。推荐使用 docker(官方安装教程),因为 PT 一般有客户端白名单,所以 docker 直接下载 qBittorrent 或其它官方 BT 客户端镜像即可。

注:本文并非详细的安装指南,如有未描述清楚的地方请查阅其它资料。

基于树莓派的四足摄像机器人

MAKER:Shoyu/译:趣无尽 Cherry(转载请注明出处)

本项目是基于树莓派的八自由度的四足摄像机器人,自带热点支持手机通过 WiFi 连接到机器人进行操控。机器人提供 Web UI 实现视频流的画面监控,效果见下面的视频。

材料清单

树莓派 B+×1

WiFi USB 加密狗×1

树莓派摄像头 V1.3×1

树莓派 I/O 扩展板×1

3D 打印外壳×1

电机×8

3.7V 18650 电池组×2

机器人系统 SD 卡镜像(基于 LEDE)

在构建机器人之前,请先打印好 3D 模型并为树莓派准备好 SD 卡

3D打印

3D 打印填充材料为 PLA。

层高:0.2mm

外壳厚度:1mm

底部和顶部厚度:1.2mm

填充密度:10%

STL 模型文件在项目文库下载

https://make.quwj.com/project/145。

安装系统镜像

参考这个教程将下面3种镜像中的1种烧录到 SD 卡上(根据你的树莓派版本选择对应的镜像)。

Windowns 下安装树莓派系统到SD卡

镜像下载:

https://drive.google.com/file/d/0ByZam-eTh4SXQjRaRDVKaEw2NGs/view

https://drive.google.com/file/d/0ByZam-eTh4SXekRQWTZmYkNEMGs/view

https://drive.google.com/file/d/0ByZam-eTh4SXZkljZjl2SmhraVk/view

WiFi 设置

系统镜像安装到 SD 卡后,就可以开始设置 WiFi。

1、将计算机连接到树莓派的 LAN 端口。

2、将树莓派连接到 HDMI 后启动消息(可选)。

3、将 USB WiFi 加密狗连接到 USB 端口(树莓派 3 除外)。

4、将 SD 卡插入树莓派。

5、打开树莓派,绿色 LED 灯将闪烁几秒钟。

5、启动后,树莓派变成 Internet 和 WiFi 的路由器,将在http://192.168.1.1/范围内分配 IP 地址,通过 LAN 端口或 WiFi 连接到任何网络设备。

装配机器人并完成

1、加入机器人 WiFi 网络,最初 SSID 是 LEDE。

2、WiFi 密码设置请参考之前的步骤。成功加入 WiFi 网络,使用 URLhttp://192.168.1.1:8080/robot.html访问 Web 控制界面。

现在你可以开始玩耍啦!

via

RaspAP:轻松实现树莓派无线 AP

RaspAP 是一个可以将树莓派轻松部署成无线 AP(Access Point)的软件方案,具有一套响应式的 WebUI 来控制 WiFi,用起来和家用路由器一样方便。RaspAP 可以运行在 Raspbian 上,只需要先给树莓派安装好 Raspbian 系统,再通过快速安装脚本就可以轻松完成 RaspAP 的安装和配置。

下面我们介绍一下 RaspAP 的安装配置方法。

准备工作

全新安装 Raspbian,建议使用最新的版本。

首次使用树莓派,如何安装、启动及配置

建议更新 Raspbian,包括核心和固件,然后重启系统:

sudo apt-get update sudo apt-get dist-upgrade sudo reboot

运行 sudo raspi-config 命令,在设置 Localisation Options 菜单中设置 WiFi 地区。

如果你使用的是没有集成无线网卡的老版本树莓派,则需要自行准备一个 USB 的无线网卡。

完成上面这些准备工作之后,就可以开始下面的步骤进行快速安装了。

快速安装

下面提供了一个安装脚本,只需要一行命令就可以完成 RaspAP 的快速安装:

wget -q https://git.io/voEUQ -O /tmp/raspap && bash /tmp/raspap

安装程序会帮你完成所有需要手动安装的步骤(见下文)。

安装完成之后重启树莓派,无线网卡默认会被配置为热点:

IP 地址: 10.3.141.1

登录用户名: admin

登录密码: secret

DHCP 范围: 10.3.141.50 至 10.3.141.255

SSID: raspi-webgui

WiFi 密码: ChangeMe

AP – WiFi 客户端模式

RaspAP 允许你将树莓派通过有线网卡接入网络的同时,利用无线网卡去开启 AP 模式,实现对网络的共享。在 Configure hotspot 的 Advanced 标签栏中启用 AP,然后保存设置来启动热点,无须重启树莓派。

手动安装

尽管上面已经提供了自动化的安装脚本,但是为了便于理解,下面将介绍手动安装 RaspAP 的方法。

这些步骤适用于最新的 Raspbian Buster 版本,如果你用更早的 Raspbian 版本,则需要先安装好 git、lighttpd、php7、hostapd 和 dnsmasq。

sudo apt-get install git lighttpd php7.1-cgi hostapd dnsmasq vnstat

注意:在 Raspbian Stretch 中,需要用 php7.0-cgi 替换以上命令中的 php7.1-cgi;而对于 Raspbian Jessie 或更早的版本,需要用 php5-cgi 替换以上命令中的 php7.1-cgi。启用 lighttpd 的 PHP 并重启 lighttpd 使设置生效:

sudo lighttpd-enable-mod fastcgi-php sudo service lighttpd restart

为 www-data 用户添加对 sudoers 文件的访问权限。使用 nano 编辑器将下面的内容添加到 /etc/sudoers 文件的末尾:

www-data ALL=(ALL) NOPASSWD:/sbin/ifdown www-data ALL=(ALL) NOPASSWD:/sbin/ifup www-data ALL=(ALL) NOPASSWD:/bin/cat /etc/wpa_supplicant/wpa_supplicant.conf www-data ALL=(ALL) NOPASSWD:/bin/cat /etc/wpa_supplicant/wpa_supplicant-wlan[0-9].conf www-data ALL=(ALL) NOPASSWD:/bin/cp /tmp/wifidata /etc/wpa_supplicant/wpa_supplicant.conf www-data ALL=(ALL) NOPASSWD:/bin/cp /tmp/wifidata /etc/wpa_supplicant/wpa_supplicant-wlan[0-9].conf www-data ALL=(ALL) NOPASSWD:/sbin/wpa_cli -i wlan[0-9] scan_results www-data ALL=(ALL) NOPASSWD:/sbin/wpa_cli -i wlan[0-9] scan www-data ALL=(ALL) NOPASSWD:/sbin/wpa_cli -i wlan[0-9] reconfigure www-data ALL=(ALL) NOPASSWD:/bin/cp /tmp/hostapddata /etc/hostapd/hostapd.conf www-data ALL=(ALL) NOPASSWD:/etc/init.d/hostapd start www-data ALL=(ALL) NOPASSWD:/etc/init.d/hostapd stop www-data ALL=(ALL) NOPASSWD:/etc/init.d/dnsmasq start www-data ALL=(ALL) NOPASSWD:/etc/init.d/dnsmasq stop www-data ALL=(ALL) NOPASSWD:/bin/cp /tmp/dhcpddata /etc/dnsmasq.conf www-data ALL=(ALL) NOPASSWD:/sbin/shutdown -h now www-data ALL=(ALL) NOPASSWD:/sbin/reboot www-data ALL=(ALL) NOPASSWD:/sbin/ip link set wlan[0-9] down www-data ALL=(ALL) NOPASSWD:/sbin/ip link set wlan[0-9] up www-data ALL=(ALL) NOPASSWD:/sbin/ip -s a f label wlan[0-9] www-data ALL=(ALL) NOPASSWD:/bin/cp /etc/raspap/networking/dhcpcd.conf /etc/dhcpcd.conf www-data ALL=(ALL) NOPASSWD:/etc/raspap/hostapd/enablelog.sh www-data ALL=(ALL) NOPASSWD:/etc/raspap/hostapd/disablelog.sh www-data ALL=(ALL) NOPASSWD:/etc/raspap/hostapd/servicestart.sh

修改完成之后,git clone Web 文件到 /var/www/html 路径下:

sudo rm -rf /var/www/html sudo git clone https://github.com/billz/raspap-webgui /var/www/html

将图标资源移动到 Web 根目录。

sudo mv /var/www/html/dist/icons/* /var/www/html

修改文件的所有者为 www-data 用户。

sudo chown -R www-data:www-data /var/www/html

将 RaspAP 的配置文件移动到正确的位置。

sudo mkdir /etc/raspap sudo mv /var/www/html/raspap.php /etc/raspap/ sudo chown -R www-data:www-data /etc/raspap

将 HostAPD 日志和服务控制脚本移动到正确的位置。

sudo mkdir /etc/raspap/hostapd sudo mv /var/www/html/installers/*log.sh /etc/raspap/hostapd sudo mv /var/www/html/installers/service*.sh /etc/raspap/hostapd

修改日志和服务控制脚本的拥有者和读写执行权限。

sudo chown -c root:www-data /etc/raspap/hostapd/*.sh sudo chmod 750 /etc/raspap/hostapd/*.sh

在 /etc/rc.local 的 exit 0 之前添加下面的内容:

echo 1 > /proc/sys/net/ipv4/ip_forward #RASPAP iptables -t nat -A POSTROUTING -j MASQUERADE #RASPAP iptables -t nat -A POSTROUTING -s 192.168.50.0/24 ! -d 192.168.50.0/24 -j MASQUERADE #RASPAP

强制载入 /etc/rc.local 让配置生效。

sudo systemctl restart rc-local.service sudo systemctl daemon-reload

取消对热点服务的屏蔽,并启用热点。

sudo systemctl unmask hostapd.service sudo systemctl enable hostapd.service

将 raspap 服务移动到正确的位置并启用。

sudo mv /var/www/html/installers/raspap.service /lib/systemd/system sudo systemctl enable raspap.service

重启树莓派,RaspAP 将自动运行!

sudo reboot

RaspAP 默认的登录用户名是 admin,默认密码是 secret。

可选服务

OpenVPN 和 TOR 作为两个附加服务,可以通过简单的设置开启。

修改 /var/www/html/includes/config.php 文件中下面的两行即可。

// Optional services, set to true to enable. define(‘RASPI_OPENVPN_ENABLED’, false ); define(‘RASPI_TORPROXY_ENABLED’, false );

GitHub:https://github.com/billz/raspap-webgui/

FAQ:https://github.com/billz/raspap-webgui/wiki/FAQs

树莓派直接读取 DHT11 温湿度的方法

来自 RaspiSQH 的投稿。

前言

dht11是一个较为普遍的温湿度传感器,但是在树莓派上读取却不容易。 转了一圈论坛、百度、实验室,例子里面大多数都是用库或者直接硬来(直接读取信号脚分析)。这些办法虽然行之有效,但是不够简单方便,毕竟我这个伪程序员要求的并不是有用,更重要的是简洁……(滑稽)树莓派官方系统自带了一种无需自己装库文件的方法,下面就来介绍一哈。

原理

打开 /boot/overlays/README,会发现有以下几行:

Name: dht11 Info: Overlay for the DHT11/DHT21/DHT22 humidity/temperature sensors Also sometimes found with the part number(s) AM230x. Load: dtoverlay=dht11,= Params: gpiopin GPIO connected to the sensor’s DATA output. (default 4)

意思是,在 config.txt 中添加上 dtoverlay=dht11 就可以在 /dev/ 下找到 dht11 文件,内容就是 dht 传感器的温度啦。

步骤

首先确保你使用的是 Raspbian 最新版本。

把 dht11(或 dht21/dht22)信号脚连接到 gpio4。

编辑 config.txt。

sudo nano /boot/config.txt

在末尾另起一行,加上:

dtoverlay=dht11,gpiopin=4

然后 ctrl+x 保存退出。

重启。

sudo reboot

大功告成了!

读取方法

直接 sudo cat /dev/dht11 即可。

如何自定义引脚

找到刚才添加的 config.txt中的 dtoverlay=dht11,gpiopin=4,将4改为你想要的引脚即可。注意,引脚号码为 BCM 编码。

关于这个操作的一些问题补充见帖子,也欢迎反馈讨论你遇到的问题:

https://talk.quwj.com/topic/255

树莓派DIY真人CS装备:红外线激光枪

MAKER:terrang/译:趣无尽 Cherry(转载请注明出处)

宅太久人都要废了,拉上小伙伴、小朋友来玩一把真人 CS 游戏吧!

什么?没有装备?好吧,下面来一份自制红外线激光枪和红外背心的教程,并且提供一套基于 Python 开发的基础游戏框架。DIY 好了现场就能玩上一把过过瘾!

首先简单说明一下原理,游戏需要有一台电脑作为服务器,用来同步每个玩家(手上的红外线激光枪)的数据。红外线枪发射的红外线能触发被命中的背心上的红外线接收装置,记录游戏中的命中数据。

而玩家所用的红外线激光枪也就是客户端,是基于树莓派 Zero 来实现的,上面还装配了一块 LCD 显示屏来显示游戏进程。枪与服务器通过 WIFI 同步数据,下面的例程中我们采用 3 套红外线激光枪来说明。

材料清单

电脑 × 1

树莓派 Zero W × 3

microSD 卡 × 3

红外 LED × 3

红外线接收器 × 6

红色 LED × 3

蓝色 LED × 3

绿色 LED × 3

无源蜂鸣器 × 3

按钮 × 6

带 I2C 转接口的 LCD 屏幕 1602 × 3

便携式电池组 × 3

micro 转 USB 电线 × 3

PN2222 三极管 × 3

100 欧电阻 × 3

1k 欧电阻 × 9

背心 × 3

带状电线 × 3

3D 打印激光枪外壳 × 1

部署服务器

为电脑(也就是用于这个游戏的服务器)安装 Mosquitto MQTT Broker Service。Mosquitto 将为游戏中每个客户端设备提供通信框架,通俗来讲就是向每个连接到服务器的树莓派发送数据。在服务器的终端中,运行以下命令进行安装。

sudo apt-get update sudo apt-get upgrade sudo apt-get install mosquitto -y sudo apt-get install python3-pip -y sudo pip3 install paho-mqtt

服务器的某些 GUI 是用 Pygubu 的 GUI 设计器创建的。运行以下命令进行安装:

pip3 install pygubu

更多 pygubu 信息,请参考:

https://github.com/alejandroautalan/pygubu

安装好 MQTT 和 Pygubu 之后,创建一个新目录并复制以下文件:

ltag.py、pregame.py、game_statistics.py、gvars.py、pygubu.ui、pygubu_limited.ui、home.png、self.png、enemies.png、laser.jpg。

文件可以在项目文件库中下载:

https://make.quwj.com/project/153

安装树莓派

游戏枪里面的树莓派都需要做下面的处理。

1、安装操作系统

安装最新版的 Raspbian。建议使用 Lite 版本,安装方法参考

Windowns 下安装树莓派系统到SD卡

2、安装MQTT

安装 MQTT 的 broker service。将在 Mosquitto 中使用。在终端中,运行以下命令。

sudo apt-get update sudo apt-get upgrade sudo apt-get install mosquitto -y sudo apt-get install python3-pip -y sudo pip3 install paho-mqtt

3、安装 I2C 工具

运行以下命令,为 LCD 屏幕安装库。

sudo apt-get install -y python3-smbus i2c-tools sudo apt-get install rpi.gpio -y

I2C 地址可能需要在 lcddriver.py 文件中更改。输入以下命令可以找到该地址。

i2cdetect -y 1

4、安装和配置 LIRC

第一步:创建一个新目录,并将附件下载到该目录中。

大多数浏览器不能下载没有扩展名的文件。因此上传了两个带有临时扩展名的文件,“ lircrc.deleteExtension”和“ modules.deleteExtension”。下载文件后请将其重命名为“ lircrc”和“ modules”。

第二步:安装并配置 Linux 红外远程控制(LIRC)软件包的依赖项。

更多有关设置 LIRC 的教程,请参考:

http://alexba.in/blog/2013/01/06/setting-up-lirc-on-the-raspberrypi/

或参考:

HiFiBox DAC 自定义红外遥控配置教程

用下面的命令安装该库。

sudo apt-get install python3-lirc -y

在新创建的目录中,执行以下命令以将配置文件移动到正确的位置。

sudo mv lircd.conf hardware.conf lircrc lirc_options.conf /etc/lirc/ sudo mv modules /etc/

运行以下命令重新启动 lircd 服务:

sudo /etc/init.d/lircd restart

编辑 /boot/config.txt 文件并添加以下行。

dtoverlay=lirc-rpi,gpio_in_pin=18,gpio_out_pin=25

重新启动树莓派,确保修改的命令正常运行。

sudo reboot

5、启用 I2C 并为每个游戏玩家配置账号。

运行以下命令,启用 I2C 接口。

sudo raspi-config

并在“界面选项”中启用 I2C。

6、配置玩家账号和 LTSERVER。

游戏目录包含四个文件。

i2c_lib.py、lcddriver.py、ltsounds.py、player.py。

文件信息请在项目文件库中下载。

https://make.quwj.com/project/153

最后,为每个树莓派分配一个 CLIENT 账号并添加服务器的位置。通过修改每个树莓派上的“player.py”代码文件来配置。为它们标记不同的玩家账号,CLIENT 账号是在 player.py 的第三行上分配的。将第一个树莓派标记为CLIENT “1”,将第二个树莓派标记为 CLIENT “2”,将第三个树莓派标记为 CLIENT “3”。

LTSERVER 行应更改为服务器的 IP 地址。在计算机服务器终端中输入’ifconfig | grep “inet addr” ‘。

组装枪体

按原理图接线。

每个设备连接到树莓派 Zero上的 GPIO 引脚如下:

蜂鸣器 Buzzer:GPIO5

扳机 Trigger:GPIO26

填充子弹 Reload:GPIO12

红外发射器 IR Transmitter::GPIO25

红外接收器 IR Receivers:GPIO18

红色 LED:GPIO17

绿色 LED:GPIO27

蓝色 LED:GPIO22

I2C_SDA:GPIO2

I2C_SCL:GPIO3

枪体 3D 打印文件可在项目文件库中下载。

https://make.quwj.com/project/153

注意必须打印两个“ front1STL.STL”文件。

运行游戏

游戏通过在服务器上运行“ltag.py”程序来启动。启动后,每个玩家都可以通过运行各自的“player.py”程序连接到服务器。

注意:插入电池组后,树莓派最多需要一分钟才能启动。

树莓派开机后,可以添加一个 cron job 来自动运行 player.py 程序,在每个树莓派上的“/etc/rc.local”文件中添加一行来运行“player.py”文件。这样就可以启动游戏,无需通过 SSH 连接到树莓派来运行玩家脚本。

在玩家准备开始游戏后,将出现一个图形界面,允许配置一些游戏设置。再按下开始按钮后,游戏开始。

每次游戏结束之后,将会再次出现一个图形界面,显示之前游戏的统计信息,包括命中数据和游戏持续时间。

注意:由于软件库的限制,报告中的标记点位置不能代表实际的激光标记。在当前版本中,玩家报告图像只是为了美观,希望以后的版本中能够实现实际的标签位置。

可改进的地方

未来还可以添加的其他功能有:

1、3D 打印更加坚固的扳机。

2、在玩家背心上安装更多的红外接收器。

3、在 Pregame GUI 选择中添加其他游戏模式。

4、玩家统计信息页面能够达到更加准确的标签定位算法。

via

控制树莓派板载 LED 的几种方式

所有的树莓派型号或多或少都自带了一些 LED,早期的型号例如 1 代 B 型,会板载 PWR(电源)、ACT(活动)以及网络状态 LED。在 B+ 之后的型号,网络状态 LED 被移到了网口上,主板上只剩下 2 个 LED,红色的 PWR 和 绿色的 ACT。正常情况下,除非电源电压低于 4.5V 以下,否则 PWR 电源 LED 会保持常亮。

幸运的是,在树莓派 2B、B+、A+ 和 Zero 型号中,提供了几种方法来控制这些 LED。最简单的方式是对下面的文件进行配置来实现:

/sys/class/leds/led[LED_ID]/trigger

其中[LED_ID]需要替换为 0(代表 ACT LED)或 1(代表 PWR LED)。

例如:

# Set the PWR LED to GPIO mode (set ‘off’ by default). echo gpio | sudo tee /sys/class/leds/led1/trigger # (Optional) Turn on (1) or off (0) the PWR LED. echo 1 | sudo tee /sys/class/leds/led1/brightness echo 0 | sudo tee /sys/class/leds/led1/brightness # Revert the PWR LED back to ‘under-voltage detect’ mode. echo input | sudo tee /sys/class/leds/led1/trigger # Set the ACT LED to trigger on cpu0 instead of mmc0 (SD card access). echo cpu0 | sudo tee /sys/class/leds/led0/trigger

用这种方法可以关闭 PWR 电源指示灯,为后面数年的使用省下几毛钱电费 -。-

明白了这个原理之后,我们可以设计一个脚本让这 LED 按照我们的需要闪烁起来,就和使用 GPIO 控制外部 LED BlingBling 类似。

from time import sleep led = open(‘/sys/class/leds/led0/brightness’, ‘w’, buffering = 0) while True: led.write(‘0’)#turn on sleep(0.5) led.write(‘1’)#turn off sleep(0.5)

保存为 led0.py 之后,运行 sudo python led0.py 命令即可。代码证 buffering 参数是为了无缓冲写入,这样就不用等到调用文件的 close 方法才能真正写入了。

如果你希望永久禁用这两个 LED,还可以通过添加下面的内容到 /boot/config.txt 的方式来实现:

# Disable the ACT LED. dtparam=act_led_trigger=none dtparam=act_led_activelow=off # Disable the PWR LED. dtparam=pwr_led_trigger=none dtparam=pwr_led_activelow=off

对于树莓派 Zero 来说,板子上只有一个 LED(led0),即 ACT LED。默认为点亮状态,而当该 LED 熄灭则表示磁盘在活动。

如果要完全关闭 Zero 上的 LED,请运行下面的命令:

# Set the Pi Zero ACT LED trigger to ‘none’. echo none | sudo tee /sys/class/leds/led0/trigger # Turn off the Pi Zero ACT LED. echo 1 | sudo tee /sys/class/leds/led0/brightness To make these settings permanent, add the following lines to your Pi’s /boot/config.txt file and reboot: # Disable the ACT LED on the Pi Zero. dtparam=act_led_trigger=none dtparam=act_led_activelow=on