`微信后台控制的树莓派 树莓派连接在局域网中,需要用在通过远程控制,怎么做呢?我们想到微信公众号是一个很好的控制方式。微信后台是通过php脚本,来实现消息回复,以及更多复杂的功能的如果我们不想用动态dns进行解析局域网的ip,那么就有一种新的方式进行控制 1、我们使用一个数据库作为媒介我们自己需要有一个vps,在这个vps上建立数据库,我用的是***的vps,并且可以通过ss服务***,很好用在vps上建立一个数据库,并且对你树莓派的ip开启访问权限
mysql> GRANT ALL PRIVILEGES ON *.* TO 'yuze'@'ip' IDENtiFIED BY 'passwd' WITH GRANT OPTION;
mysql> flush privileges;
接着就可以通过mysql -h [vps ip] -u yuze -p 进行访问了建立一个公用的数据库,其中的特定值代表着你设定的含义 比如我设定一个boolean的变量来决定舵机的运动方向 2、然后就可以通过树莓派上的python脚本读取数据库的值从而通过pwm口输出控制舵机了python 的mysql库import MySQLdb即可,如果在树莓派上安装,可以在mysqldb的github上下载,也可以直接sudo apt-get install python-mysqldb通过数据库的值,我们就可以控制舵机的转向了
import timeimport RPi.GPIO as GPIOimport signalimport atexitimport MySQLdbatexit.register(GPIO.cleanup)servopin=12GPIO.setmode(GPIO.BCM)GPIO.setup(servopin,GPIO.OUT,initial=False)p=GPIO.PWM(servopin,50)p.start(0)time.sleep(2)db=MySQLdb.connect("(your ip)","yuze","passwd","raspberry")cursor=db.cursor()sql="SELECT * FROM wechat WHERE id =1"try : cursor.execute(sql) results=cursor.fetchall() for row in results: status=row[1] if status : delay=2.5 else : delay =15 print delayexcept: print "Error"db.close()for i in range(1,4,1): p.ChangeDutyCycle(delay) time.sleep(0.02) p.ChangeDutyCycle(0)
time.sleep(0.05)
3、然后怎么通过微信控制呢微信后台采用php的脚本,具体的编写我就不介绍了php的mysql连接,然后通过特定的输入update数据库的条目就可以了我这里是
if($keyword=="open"){
$con = mysql_connect("localhost","yuze","passwd"); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("raspberry", $con); mysql_query("UPDATE wechat SET status = true WHERE id = 1"); mysql_close($con);
$contentStr = "status is opening";
同理,改一下匹配值就OK了 4、定时脚本的编写crontab -e 填加定时器脚本 但是遗憾的是,crontab以分钟为单位,我们想一分钟读取多次数据库的值,怎么做呢?
for((i=1;i<10;i++));do
python test.pysleep 2
done
即可,然后试试bash test.sh把它填加到crontab就可以了 5、大功告成好了,可以通过微信后台来控制树莓派的舵机了,你可以做一个自动开门的装置,可以做其他的控制 微信/数据库/树莓派输出(print值代表舵机转动方向)
`
|