RTC WatchDog HAT (B)
来自Waveshare Wiki
| |||||||||||||||
| |||||||||||||||
说明
产品概述
专为树莓派设计的 RTC 看门狗扩展板,带有高精度RTC和看门狗模块。需要在特定时间内进行计数器刷新(喂狗),否则看门狗电路会让系统复位。
特点
- 板载自动复位功能的监控电路
- 板载高精度时钟芯片(DS3231SN),可提供精准时间控制
- 可通过I2C进行通信,可编程 16 位自增型计数器
- 板载看门狗警告LED,看门狗溢出警告
参数
- RTC WatchDog HAT (B)通信接口:I2C
- RTC芯片:DS3231
- 看门狗芯片:CH32V003
- 供电接口电压:5V
- 产品尺寸:30.5mm x 65mm
- 固定孔直径:3.0mm
树莓派使用
开启I2C接口
- 打开树莓派终端,输入以下指令进入配置界面
sudo raspi-config 选择 Interfacing Options -> I2C ->yes 启动 i2C 内核驱动
sudo reboot
安装库
如果使用bookworm系统,只能使用lgpio库,bcm2835跟wiringPi无法安装与使用,python库可以不安装,直接运行程序即可
BCM2835
#打开树莓派终端,并运行以下指令 wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.71.tar.gz tar zxvf bcm2835-1.71.tar.gz cd bcm2835-1.71/ sudo ./configure && sudo make && sudo make check && sudo make install # 更多的可以参考官网:http://www.airspayce.com/mikem/bcm2835/
wiringPi
#打开树莓派终端,并运行以下指令 cd sudo apt-get install wiringpi #对于树莓派2019年5月之后的系统(早于之前的可不用执行),可能需要进行升级: wget https://project-downloads.drogon.net/wiringpi-latest.deb sudo dpkg -i wiringpi-latest.deb gpio -v # 运行gpio -v会出现2.52版本,如果没有出现说明安装出错 #Bullseye分支系统使用如下命令: git clone https://github.com/WiringPi/WiringPi cd WiringPi ./build gpio -v # 运行gpio -v会出现2.70版本,如果没有出现说明安装出错
lgpio
wget https://github.com/joan2937/lg/archive/master.zip unzip master.zip cd lg-master sudo make install # 更多的可以参考官网:https://github.com/gpiozero/lg
python
sudo apt-get update sudo apt-get install ttf-wqy-zenhei sudo apt-get install python3-pip sudo pip3 install spidev
- 下载示例程序,解压到指定目录,并运行示例程序:
wget https://www.waveshare.net/w/upload/b/bc/RTC_WatchDog_HAT_B_Demo.zip unzip RTC_WatchDog_HAT_B_Demo.zip sudo chmod 777 -R RTC_WatchDog_HAT_B_Demo
RTC
C
cd ~ cd RTC_WatchDog_HAT_B_Demo/Raspberrypi/RTC/c/ make clean make -j8 sudo ./main
Python
cd ~ cd RTC_WatchDog_HAT_B_Demo/Raspberrypi/RTC/python/examples/ #设置RTC时间,并循环显示时间、日期、温度 sudo python main.py #将RTC时间同步至系统中,仅限于没有联网的系统使用 sudo python Set_system_time.py
- 树莓派启动时同步RTC时间:
注意:该过程不能联网。
sudo nano /etc/rc.local #在fi跟exit 0 之间输入下面的命令,然后保存退出,下次启动,就会自动运行喂狗程序 cd /home/pi/RTC_WatchDog_HAT_B_Demo/Raspberrypi/RTC/python/examples/ sudo python Set_system_time.py & #cd /home/pi/...中的pi为用户名,设置自己的树莓派用户名即可
添加内核方式驱动
注意使用这种方法,就不可以使用上面的示例程序
修改 /boot/config.txt 末尾添加
dtoverlay=i2c-rtc,ds3231
Hwclock简单使用
同步系统时钟 -> 硬件时钟
sudo hwclock -w
同步硬件时钟 -> 系统时钟
sudo hwclock -s #需要关闭网络,或者关闭网络对时,否则会被改回去
设置硬件时钟时间:
sudo hwclock --set --date="9/8/2021 16:45:05"
查看硬件时钟
sudo hwclock -r
显示版本信息
sudo hwclock --verbose
WatchDog
- 上面下载好程序并解压,这边将对程序进行配置
C
- WatchDog的C程序为打开看门狗功能并配置超时时间,单位为秒,最大为65535秒,最低为1秒,在配置时需要考虑树莓派开机时间,如果时间太短,会导致树莓派还没有启动,将再次进入重启,反复如此。
- 超时时间可以在main.c文件的第8行进行配置:WATCH_TIME_Restart = X (X是:1-65535)
- 最后循环喂狗
cd ~ cd RTC_WatchDog_HAT_B_Demo/Raspberrypi/WatchDog/c make clean make -j8 sudo ./main
Python
- WatchDog的python程序为WatchDog_Demo.py,主要是配置看门狗跟喂狗的程序。D4 管脚跳变一次,视为对芯片喂狗一次
- 如果在时间T内没有喂狗,将断电重启树莓派
- T可以在WatchDog_Configure.py中的设置:WATCH_TIME_Restart = X (X是:1-65535)
cd ~ cd RTC_WatchDog_HAT_B_Demo/Raspberrypi/WatchDog/python sudo python WatchDog_Demo.py
Jetson nano使用
安装python库
sudo apt update sudo apt install nano -y sudo apt install python3-pip pip3 install Jetson.GPIO pip3 install smbus
- 下载示例程序,解压到指定目录,并运行示例程序:
wget https://www.waveshare.net/w/upload/b/bc/RTC_WatchDog_HAT_B_Demo.zip unzip RTC_WatchDog_HAT_B_Demo.zip sudo chmod 777 -R RTC_WatchDog_HAT_B_Demo
RTC
C
cd ~ cd RTC_WatchDog_HAT_B_Demo/Jetson_nano/RTC/c/ make clean make -j8 sudo ./main
Python
cd ~ cd RTC_WatchDog_HAT_B_Demo/Jetson_nano/RTC/python/examples/ #设置RTC时间,并循环显示时间、日期、温度 sudo python3 main.py #将RTC时间同步至系统中,仅限于没有联网的系统使用 sudo python3 Set_system_time.py
- Jetson nano启动时同步RTC时间:
注意:该过程不能联网。
cd /home/User/RTC_WatchDog_HAT_B/Jetson_nano/ #User 为主机用户名,设置成自己的用户名,比如:我的用户名是:jetson, #则输入命令为cd /home/jetson/RTC_WatchDog_HAT_B/Jetson_nano/ #下面两个文件中的内容也一样,需要将User改成自己的用户名 sudo chmod 777 start.sh sudo chmod 777 start.service sudo cp start.service /etc/systemd/system systemctl daemon-reload systemctl enable start.service sudo reboot
WatchDog
- 上面下载好程序并解压,这边将对程序进行配置
C
- WatchDog的C程序为打开看门狗功能并配置超时时间,单位为秒,最大为65535秒,最低为1秒,在配置时需要考虑树莓派开机时间,如果时间太短,会导致树莓派还没有启动,将再次进入重启,反复如此。
- 超时时间可以在main.c文件的第8行进行配置:WATCH_TIME_Restart = * (*为1-65535)
- 最后循环喂狗
cd ~ cd RTC_WatchDog_HAT_B_Demo/Raspberrypi/WatchDog/c make clean make -j8 sudo ./main
Python
- WatchDog的python程序为WatchDog_Demo.py,主要是配置看门狗跟喂狗的程序。D4 管脚跳变一次,视为对芯片喂狗一次
- 如果在时间T内没有喂狗,将断电重启树莓派
- T可以在WatchDog_Configure.py中的设置:WATCH_TIME_Restart = *(*为1-65535)
cd ~ cd RTC_WatchDog_HAT_B_Demo/Raspberrypi/WatchDog/python sudo python WatchDog_Demo.py
旭日X3派使用
安装wiringpi库
sudo apt update sudo apt install git-core git clone https://gitee.com/study-dp/WiringPi.git cd WiringPi ./build #输入下面命令,显示软件版本,则安装成功 gpio -v
安装python库
sudo apt update sudo apt install nano sudo apt install python3-pip sudo pip3 install Hobot.GPIO sudo pip3 install smbus
- 下载示例程序,解压到指定目录,并运行示例程序:
wget https://www.waveshare.net/w/upload/b/bc/RTC_WatchDog_HAT_B_Demo.zip unzip RTC_WatchDog_HAT_B_Demo.zip sudo chmod 777 -R RTC_WatchDog_HAT_B_Demo
RTC
C
cd ~ cd RTC_WatchDog_HAT_B_Demo/Horizon_Sunrise_X3_PI/RTC/c make clean make -j8 sudo ./main
Python
cd ~ cd RTC_WatchDog_HAT_B_Demo/Horizon_Sunrise_X3_PI/RTC/python/examples/ #设置RTC时间,并循环显示时间、日期、温度 sudo python3 main.py #将RTC时间同步至系统中,仅限于没有联网的系统使用 sudo python3 Set_system_time.py
- 旭日派启动时同步RTC时间
注意:该过程不能联网。
sudo cp -r /home/sunrise/RTC_WatchDog_HAT_B_Demo/Horizon_Sunrise_X3_PI /root/X3/ sudo chmod 777 -R /root/X3/Horizon_Sunrise_X3_PI/RTC/python/examples/Set_system_time.py sudo nano /etc/rc.local #在exit 0的前一行添加 python3 /root/X3/Horizon_Sunrise_X3_PI/RTC/python/examples/Set_system_time.py #保存退出
输入date查看时间。
WatchDog
- 上面下载好程序并解压,这边将对程序进行配置
C
- WatchDog的C程序为打开看门狗功能并配置超时时间,单位为秒,最大为65535秒,最低为1秒,在配置时需要考虑树莓派开机时间,如果时间太短,会导致树莓派还没有启动,将再次进入重启,反复如此。
- 超时时间可以在main.c文件的第8行进行配置:WATCH_TIME_Restart = * (*为1-65535)
- 最后循环喂狗
cd ~ cd RTC_WatchDog_HAT_B_Demo/Horizon_Sunrise_X3_PI/WatchDog/c make clean make -j8 sudo ./main
Python
- WatchDog的python程序为WatchDog_Demo.py,主要是配置看门狗跟喂狗的程序。D4 管脚跳变一次,视为对芯片喂狗一次
- 如果在时间T内没有喂狗,将断电重启树莓派
- T可以在WatchDog_Configure.py中的设置:WATCH_TIME_Restart = *(*为1-65535)
cd ~ cd RTC_WatchDog_HAT_B_Demo/Horizon_Sunrise_X3_PI/WatchDog/python sudo python WatchDog_Demo.py
示例现象展示
- 运行RTC的C示例
- 运行RTC的Python示例
- 运行WatchDog的C示例
- 运行WatchDog的Python示例
指示灯状态介绍
- 打开开门狗功能,LED常亮
- 关闭看门狗功能,LED熄灭
- 看门狗溢出,LED以100ms快速闪烁
- 看门狗溢出后,执行重启命令时,检测主机没有断电,无法重启,则以500MS的频率闪烁,直到主机断电,才会进入重启