基于 Rasperry Pi 3B and Arduino 考虑到之后有电力警告等模块,选型如下:
- 开发板:
- Rasberry Pi 3:中央控制服务器,负责与互联网的通信、采样存储 Arduino 上报的状态数据、提供/调用API以方便用其他终端控制。
- Arduino UNO:负责传感器采样,和 RPi 进行通信。
- 温度传感器:DHT22
- 语言:Python3,Java8
- 数据库:mysql
#include "DHT.h"
DHT dht(2, DHT22);
void setup()
{
Serial.begin(9600);
dht.begin();
}
void loop()
{
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
Serial.print("Humidity: ");
Serial.print(humidity);
Serial.print(" ");
Serial.print("Temperature: ");
Serial.println(temperature);
delay(2000);
}
镜像:raspbian-stretch-lite
microSD卡:16G,推荐8G以上
-
将SD卡格式化:(Mac)磁盘工具-->抹掉-->MS-DOS(FAT)-->抹掉
-
终端
df-h
查看挂载,SD 卡假设为 /dev/disk2s1 -
卸载 SD 卡
diskutil unmount /dev/disk2s1
-
diskutil list
确认 /dev/disk2 下的 disk2 -
官网下载镜像,写入 SD 卡
sudo dd bs=4m if=本机镜像路径 of=/dev/disk2
查看进度可以另起终端sudo kill -INFO $(pgrep ^dd)
-
由于树莓派默认不开启 ssh,写入成功后在 /boot/ 创建无后缀的文件名为 ssh 的文件
-
设置自动连接 Wi-Fi:在 /boot/ 下创建 wpa_supplicant.conf
country=CN ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 network={ scan_ssid=1#SSID被隐藏时设置 ssid="TaiGe"#Wi-Fi名 psk="HaoyunHu888"#Wi-Fi密码 }
-
弹出SD卡
diskutil unmountDisk /dev/disk2
以上,RasberryPi的系统安装完成,可以将SD卡插入开发版上电开机了
ssh pi@ip
default password: raspberry
通过路由器查看树莓派的当前ip:
- 打开网页
192.168.1.1
,登录系统 - 状态/用户侧信息/以太网接口信息/,找到客户端名称为raspberrypi的IP地址:
***.**.**.*
关机sudo shutdown -h now
,重新上电后会自动开机
sudo aptitude install python-dev
用于控制LED、电机等
sudo apt-get install rpi.gpio
用于串口通信及USB通信sudo apt-get install python-serial
minicom是linux平台串口调试工具,可以用它来读取Arduino通过USB串口发送的传感器数值。
-
在RaspberryPi上安装minicom:
sudo apt-get install minicom
-
配置minicom:
-
minicom启动:
minicom -b 9600 -D /dev/ttyACM0
- -b代表波特率
- -D代表端口
- /dev/ttyACM0 代表打开与Arduino相连的端口
show.py
import serial
ser = serial.Serial('/dev/ttyACM0',9600)
info = ser.readline()
while info:
print(info)
info = ser.readline()
Python调用http API
安装requests
sudo pip install requests
后台运行py脚本
nohup python api.py &