RTC-Watchdog-HAT-B 教程

资料

文档

程序

数据手册

说明

产品概述

专为树莓派设计的 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

安装库

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版本,如果没有出现说明安装出错

python

#Python2
sudo apt-get update
sudo apt-get install ttf-wqy-zenhei
sudo apt-get install python-pip 
sudo pip install RPi.GPIO
sudo pip install spidev
#Python3
sudo apt-get update
sudo apt-get install ttf-wqy-zenhei
sudo apt-get install python3-pip
sudo pip3 install RPi.GPIO
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 = * (*为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

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示例



运行RTC的WatchDog示例



指示灯状态介绍

  • 打开开门狗功能,LED常亮
  • 关闭看门狗功能,LED熄灭
  • 看门狗溢出,LED以100ms快速闪烁
  • 看门狗溢出后,执行重启命令时,检测主机没有断电,无法重启,则以500MS的频率闪烁,直到主机断电,才会进入重启