一.镜像下载及烧录
1.登录 https://OctoPrint.org/ ,下载OctoPrint镜像。
选择带有new camera stack的镜像下载。
2.镜像烧录,使用balenaEtcher或树莓派官方烧录软件Raspberry Pi Imager,将镜像文件烧录进TF卡内。
3.修改wifi名称及密码。将TF通过读卡器连接电脑,在boot盘符里找到octopi-wpa-supplicant.txt文件,使用记事本打开,找到:
network={
ssid="yourwifi" #引号里的内容替换为wifi名称
psk="yourpassword" #引号里的内容替换为wifi密码
key_mgmt=WPA-PSK
}
4.修改并保存后,将tf卡插入树莓派,并开机运行。
二.OctoPrint系统设置
在浏览器中输入树莓派的IP地址,进入OctoPrint系统,根据提示进行设置。具体可参照B站及CSDN上相关信息。
三.OctoPrint系统网络摄像头设置
1.使用ssh工具连接树莓派,进入树莓派home目录,依次执行以下命令,安装相应的软件:
cd ~
sudo apt install subversion libjpeg62-turbo-dev imagemagick ffmpeg libv4l-dev cmake
git clone https://github.com/jacksonliam/mjpg-streamer.git
cd mjpg-streamer/mjpg-streamer-experimental
export LD_LIBRARY_PATH=.
make
2.安装成功后,进入mjpg-streamer/mjpg-streamer-experimental文件夹,使用以下命令开启网络摄像头服务:
./mjpg_streamer -i "./input_uvc.so" -o "./output_http.so"
如果使用树莓派官方摄像头,需使用以下命令:
./mjpg_streamer -i "./input_raspicam.so -fps 5" -o "./output_http.so"
此时,在浏览器内输入 http://<your Raspi's IP>:8080/?action=stream将会看到摄像头的拍摄画面。如果浏览器显示错误,则将上面命令中输出部分改为以下内容:
-o "./output_http.so -w ./www"
在OctoPrint系统设置中的Stream和Webcam & Timelapse选项里进行如下设置:
Stream URL: /webcam/?action=stream
Snapshot URL: http://127.0.0.1:8080/?action=snapshot (此次IP地址要填127.0.0.1)
Path to FFMPEG: /usr/bin/ffmpeg
3.将mjpg-streamer设置为自动启动。
3.1在树莓派/home/pi/scripts文件夹下创建webcamDaemon文件,并输入以下内容:
#!/bin/bash
MJPGSTREAMER_HOME=/home/pi/mjpg-streamer/mjpg-streamer-experimental
MJPGSTREAMER_INPUT_USB="input_uvc.so"
MJPGSTREAMER_INPUT_RASPICAM="input_raspicam.so"
# init configuration
camera="auto"
camera_usb_options="-r 640x480 -f 10"
camera_raspi_options="-fps 10"
if [ -e "/boot/octopi.txt" ]; then
source "/boot/octopi.txt"
fi
# runs MJPG Streamer, using the provided input plugin + configuration
function runMjpgStreamer {
input=$1
pushd $MJPGSTREAMER_HOME
echo Running ./mjpg_streamer -o "output_http.so -w ./www" -i "$input"
LD_LIBRARY_PATH=. ./mjpg_streamer -o "output_http.so -w ./www" -i "$input"
popd
}
# starts up the RasPiCam
function startRaspi {
logger "Starting Raspberry Pi camera"
runMjpgStreamer "$MJPGSTREAMER_INPUT_RASPICAM $camera_raspi_options"
}
# starts up the USB webcam
function startUsb {
logger "Starting USB webcam"
runMjpgStreamer "$MJPGSTREAMER_INPUT_USB $camera_usb_options"
}
# we need this to prevent the later calls to vcgencmd from blocking
# I have no idea why, but that's how it is...
vcgencmd version
# echo configuration
echo camera: $camera
echo usb options: $camera_usb_options
echo raspi options: $camera_raspi_options
# keep mjpg streamer running if some camera is attached
while true; do
if [ -e "/dev/video0" ] && { [ "$camera" = "auto" ] || [ "$camera" = "usb" ] ; }; then
startUsb
elif [ "`vcgencmd get_camera`" = "supported=1 detected=1" ] && { [ "$camera" = "auto" ] || [ "$camera" = "raspi" ] ; }; then
startRaspi
fi
sleep 120
done
将此文件设置为可执行文件:
chmod +x /home/pi/scripts/webcamDaemon
3.2在树莓派/etc/systemd/system文件夹下创建webcamd.service,并输入以下内容:
[Unit]
Description=Camera streamer for OctoPrint
After=network-online.target OctoPrint.service
Wants=network-online.target
[Service]
Type=simple
User=pi
ExecStart=/home/pi/scripts/webcamDaemon
[Install]
WantedBy=multi-user.target
3.3在树莓派终端依次输入以下命令,启用webcamd服务:
sudo systemctl daemon-reload
sudo systemctl enable webcamd
sudo systemctl start webcamd
4.注意在OctoPrint设置中,网络摄像头的IP要填127.0.0.1,否在不能正常显示。
5.相关参考资源
https://community.octoprint.org/t/setting-up-octoprint-on-a-raspberry-pi-running-raspberry-pi-os-debian/2337