树莓派python3串口无法读取数据_树莓派玩具怎么优化?

322dc14ccb425a934710f61060b211ca.png

其实树莓派自带 GPIO 接口,想把我目前的实现变成舍弃 Arduino,让树莓派直接接元器件,有没有好的建议? readme如下:

基于 Rasperry Pi 3B and Arduino 选型如下:


  • 开发板:
    • Rasberry Pi 3:中央控制服务器,负责与互联网的通信、采样存储 Arduino 上报的状态数据、提供 /调用 API 以方便用其他终端控制。
    • Arduino UNO:负责传感器采样,和 RPi 进行通信。
  • 温度传感器:DHT22
  • 语言:Python3,Java8
  • 数据库:mysql

Arduino

#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);
}

RasberryPi 3B

安装系统

镜像: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

ssh pi@ip
default password: raspberry

通过路由器查看树莓派的当前 ip:

  • 打开网页192.168.1.1,登录系统
  • 状态 /用户侧信息 /以太网接口信息 /,找到客户端名称为 raspberrypi 的 IP 地址: ***.**.**.*

关机sudo shutdown -h now,重新上电后会自动开机

  • 系统安装参考
  • 查看 rpiIP 参考

RaspberryPi 读取 Arduino 数据

安装 Python3

sudo aptitude install python-dev

安装 Python 的 GPIO 模块

用于控制 LED 、电机等

sudo apt-get install rpi.gpio

安装 Serial

用于串口通信及 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 相连的端口

Python 打印数据

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 &

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值