存档1月 2021

多个树莓派之间实现通信对话

#实验目的:在局域网内,通过在一个树莓派上安装mongo载体,然后设置其他树莓派可远程访问,从而实现多个树莓派之间消息传递,命令传递以及通信对话功能。
如图可见有两个树莓派,分别是120和118;数字的含义其实是他们各自的静态ip,因为涉及到彼此访问,因此需要首先设置静态ip。120的IP地址为192.168.0.120;118的IP地址为192.168.0.118。
#安装mongo
1、由于树莓派的软件源自带mongodb-server的安装包(此处用的是清华的软件源http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian),因此只需要执行

sudo apt-get install mongodb-server
2、不过安装的是32bit 的mongodb,数据库的大小会被限制在2GB;因此需要对旧数据添加一个合理的清理机制; 3、安装完成执行命令:
mongo
4、如下图所示则表示安装成功,120和118都需要安装;
初次启动
#设置通信
1、由于默认ip是127.0.0.1,无法远程连接,因此需要执行编辑配置文件,如果非root需要sudo vim /etc/mongodb.conf 
2、寻找bind_ip = 127.0.0.1这一行,注释掉;注释后可见 #bind_ip = 127.0.0.1 
3、由于默认登录权限设置是关闭的 对于通信非常的不安全,因此我们需要打开 auth=true这行; 
4、由于增加了权限 因此需要增加用户 见下图
5、保存文件,然后重启系统 sudo reboot 
添加用户
#通信实验
1、分别登录118和120机器,然后执行 mongo 192.168.0.120 -u "pi" -p "shumeijiang" --authenticationDatabase admin (其中-u为用户名 -p为密码)
2、然后在120执行
(1)use command
(2)db.master.command.insert({_id:1, data:'data', 'status':1})
3、然后在118机器执行 db.master.command.find({})
4、可见118读取到消息 { "_id" : 1, "data" : "data", "status" : 1 } 
5、同理118在mongo写入一条信息,120执行查询也可见消息;
6、如此实现一个双向的消息同步机制,后续增加消息的读取状态,以及消息的清理机制等。
#更多实验可见 https://www.shumeijiang.com/2021/07/21/树莓派语音识别-物联网实验/