树莓派折腾记录 - yunfanfan/Notes GitHub Wiki
树莓派折腾记录
sudo fswebcam -r 1280x960 ./test.jpg
还有一个命令无法使用,不知道为什么fswebcam /dev/video0 ~/image.jpg
/opt/vc/bin/vcgencmd measure_temp
树莓派基础实验27:温湿度传感器DHT11 实验 - 云+社区 - 腾讯云
#!/usr/bin/env python
import RPi.GPIO as GPIO
import numpy as np
import time
DHTPIN = 17 #引脚号17
GPIO.setmode(GPIO.BCM) #以BCM编码格式
def read_dht11_dat():
GPIO.setup(DHTPIN, GPIO.OUT)
GPIO.output(DHTPIN, GPIO.LOW)
#给信号提示传感器开始工作,并保持低电平18ms以上
time.sleep(0.02) #这里保持20ms
GPIO.output(DHTPIN, GPIO.HIGH) #然后输出高电平
GPIO.setup(DHTPIN, GPIO.IN)
# 发送完开始信号后得把输出模式换成输入模式,不然信号线上电平始终被拉高
while GPIO.input(DHTPIN) == GPIO.LOW:
continue
#DHT11发出应答信号,输出 80 微秒的低电平
while GPIO.input(DHTPIN) == GPIO.HIGH:
continue
#紧接着输出 80 微秒的高电平通知外设准备接收数据
#开始接收数据
j = 0 #计数器
data = [] #收到的二进制数据
kk=[] #存放每次高电平结束后的k值的列表
while j < 40:
k = 0
while GPIO.input(DHTPIN) == GPIO.LOW: # 先是 50 微秒的低电平
continue
while GPIO.input(DHTPIN) == GPIO.HIGH: # 接着是26-28微秒的高电平,或者 70 微秒的高电平
k += 1
if k > 100:
break
kk.append(k)
if k < 8: #26-28 微秒时高电平时通常k等于5或6
data.append(0) #在数据列表后面添加一位新的二进制数据“0”
else: #70 微秒时高电平时通常k等于17或18
data.append(1) #在数据列表后面添加一位新的二进制数据“1”
j += 1
print("sensor is working.")
print '初始数据高低电平:\n',data #输出初始数据高低电平
print '参数k的列表内容:\n',kk #输出高电平结束后的k值
m = np.logspace(7,0,8,base=2,dtype=int) #logspace()函数用于创建一个于等比数列的数组
#即[128 64 32 16 8 4 2 1],8位二进制数各位的权值
data_array = np.array(data) #将data列表转换为数组
#dot()函数对于两个一维的数组,计算的是这两个数组对应下标元素的乘积和(数学上称之为内积)
humidity = m.dot(data_array[0:8]) #用前8位二进制数据计算湿度的十进制值
humidity_point = m.dot(data_array[8:16])
temperature = m.dot(data_array[16:24])
temperature_point = m.dot(data_array[24:32])
check = m.dot(data_array[32:40])
print humidity,humidity_point,temperature,temperature_point,check
tmp = humidity + humidity_point + temperature + temperature_point
#十进制的数据相加
if check == tmp: #数据校验,相等则输出
return humidity, temperature
else: #错误输出错误信息
return False
def main():
print "Raspberry Pi DHT11 Temperature test program\n"
time.sleep(1) #通电后前一秒状态不稳定,时延一秒
while True:
result = read_dht11_dat()
if result:
humidity, temperature = result
print "humidity: %s %%, Temperature: %s ℃" % \
(humidity, temperature)
print '\n'
time.sleep(1)
if result == False:
print "Data are wrong,skip\n"
time.sleep(1)
def destroy():
GPIO.cleanup()
if __name__ == '__main__':
try:
main()
except KeyboardInterrupt:
destroy()
#!/usr/bin/python
import RPi.GPIO as GPIO
import time
channel =4
data = []
j = 0
GPIO.setmode(GPIO.BCM)
time.sleep(1)
GPIO.setup(channel, GPIO.OUT)
GPIO.output(channel, GPIO.LOW)
time.sleep(0.02)
GPIO.output(channel, GPIO.HIGH)
GPIO.setup(channel, GPIO.IN)
while GPIO.input(channel) == GPIO.LOW:
continue
while GPIO.input(channel) == GPIO.HIGH:
continue
while j < 40:
k = 0
while GPIO.input(channel) == GPIO.LOW:
continue
while GPIO.input(channel) == GPIO.HIGH:
k += 1
if k > 100:
break
if k < 8:
data.append(0)
else:
data.append(1)
j += 1
print("sensor is working.")
print(data)
humidity_bit = data[0:8]
humidity_point_bit = data[8:16]
temperature_bit = data[16:24]
temperature_point_bit = data[24:32]
check_bit = data[32:40]
humidity = 0
humidity_point = 0
temperature = 0
temperature_point = 0
check = 0
for i in range(8):
humidity += humidity_bit[i] * 2 ** (7-i)
humidity_point += humidity_point_bit[i] * 2 ** (7-i)
temperature += temperature_bit[i] * 2 ** (7-i)
temperature_point += temperature_point_bit[i] * 2 ** (7-i)
check += check_bit[i] * 2 ** (7-i)
tmp = humidity + humidity_point + temperature + temperature_point
if check == tmp:
print("temperature :", temperature, "*C, humidity :", humidity, "%")
else:
print("wrong")
print("temperature :", temperature, "*C, humidity :", humidity, "% check :", check, ", tmp :", tmp)
GPIO.cleanup()
软件工程师树莓派获取室内温湿度的坎坷之旅 - 三升水 - 博客园
#!/usr/bin/python
import json
import copy
# 接在上面的lookTemp.py后面写
env = []
if humidity_dht11 is not None and temperature_dht11 is not None:
data = {"metric":"humidity","tag":"module=dht11","value":humidity}
env.append(copy.copy(data))
data = {"metric":"temperature","tag":"module=dht11","value":temperature}
env.append(copy.copy(data))
if len(env) > 0:
with open("./env.json", 'w') as f:
f.write(json.dumps(env))
19. crontab 定时任务 — Linux Tools Quick Tutorial
编辑crontab文件:
如果希望添加、删除或编辑crontab文件中的条目,而EDITOR环境变量又设置为vi,那么就可以用vi来编辑crontab文件:
$ crontab -e
放入 crontab 里,这个脚本每分钟运行一次。
*/1 * * * * python3 ~/study/lookTemp2Json.py
ubuntu下启动、停止与重启cron:
$sudo /etc/init.d/cron start
$sudo /etc/init.d/cron stop
$sudo /etc/init.d/cron restart
python 获取格式化时间:time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
,输出2016-04-07 10:25:09
humiaozuzu/dot-vimrc: Maple's vim config files
在树莓派上使用 SSD1306 OLED 屏幕 | 树莓派实验室
参考:树莓派安装TensorFlow教程!树莓派安装TensorFlow2.0!超详细! - 知乎
安装python3.7和pip3之后
sudo apt install libatlas-base-dev
安装虚拟环境
install -U virtualenv
创建虚拟环境
virtualenv --system-site-packages -p python3 ./venv
激活虚拟环境。注意,从这一步开始,一直处于虚拟环境哦。
source ./venv/bin/activate
安装依赖包
pip install keras_applications==1.0.8 --no-deps
pip install keras_preprocessing==1.1.0 --no-deps
pip install h5py==2.9.0
pip install -U six wheel mock
上一步其实不需要,需要执行安装tensorflow的命令就会自动安装各种包,比如我安装了
Successfully installed absl-py-0.15.0 astunparse-1.6.3 cachetools-4.2.4 flatbuffers-1.12 gast-0.3.3 google-auth-2.3.3 google-auth-oauthlib-0.4.6 google-pasta-0.2.0 h5py-2.10.0 keras-preprocessing-1.1.2 markdown-3.3.6 opt-einsum-3.3.0 protobuf-3.19.1 pyasn1-0.4.8 pyasn1-modules-0.2.8 rsa-4.8 six-1.15.0 tensorboard-2.7.0 tensorboard-data-server-0.6.1 tensorboard-plugin-wit-1.8.0 tensorflow-2.4.0 tensorflow-estimator-2.4.0 termcolor-1.1.0 typing-extensions-3.7.4.3 wrapt-1.12.1
在安装依赖包时,有的包清华源有,安装速度很快。有的包清华源没有,会到默认源去下载,会很慢甚至超时失败。如遇超时失败需要重试。
如果因为速度过慢,安装失败了可以用电脑打开地址用浏览器下载,在用sftp传送到树莓派去安装
按照【AI人工智慧】在Raspberry Pi上安裝NCSDK – CAVEDU教育團隊技術部落格最后的测试指令,我这里是失败了,并且提示
making run
python3 hello_ncs.py;
Traceback (most recent call last):
File "hello_ncs.py", line 19, in <module>
import mvnc.mvncapi as fx
ModuleNotFoundError: No module named 'mvnc'
make: *** [Makefile:11:run] 错误 1
之前的教程缺了一个步骤,根据使用Movidius NCS获取你的TensorFlow
在ncsdk中make install之后,还需要make examples
,它会安装opencv。
一个小时后出错了
make[2]: *** [modules/videoio/CMakeFiles/opencv_videoio.dir/build.make:128:modules/videoio/CMakeFiles/opencv_videoio.dir/src/cap_ffmpeg.cpp.o] 错误 1
make[1]: *** [CMakeFiles/Makefile2:7878:modules/videoio/CMakeFiles/opencv_videoio.dir/all] 错误 2
make: *** [Makefile:163:all] 错误 2
make examples starting.
(cd examples; make)
make[1]: 进入目录“/home/pi/Downloads/ncsdk/examples”
make -C apps/.
make[2]: 进入目录“/home/pi/Downloads/ncsdk/examples/apps”
make -C hello_ncs_py/.
make[3]: 进入目录“/home/pi/Downloads/ncsdk/examples/apps/hello_ncs_py”
nothing to make, use 'make run' to run.
make[3]: 离开目录“/home/pi/Downloads/ncsdk/examples/apps/hello_ncs_py”
make -C multistick_cpp/.
make[3]: 进入目录“/home/pi/Downloads/ncsdk/examples/apps/multistick_cpp”
making googlenet
(cd ../../caffe/GoogLeNet; make compile; cd ../../apps/multistick_cpp; cp ../../caffe/GoogLeNet/graph ./googlenet.graph;)
make[4]: 进入目录“/home/pi/Downloads/ncsdk/examples/caffe/GoogLeNet”
making prereqs
(cd ../../data/ilsvrc12; make)
make[5]: 进入目录“/home/pi/Downloads/ncsdk/examples/data/ilsvrc12”
--2021-11-28 17:13:07-- https://raw.githubusercontent.com/BVLC/caffe/master/data/ilsvrc12/get_ilsvrc_aux.sh
正在解析主机 raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.108.133, 185.199.109.133, 185.199.110.133, ...
正在连接 raw.githubusercontent.com (raw.githubusercontent.com)|185.199.108.133|:443... 已连接。
GnuTLS: The TLS connection was non-properly terminated.
无法建立 SSL 连接。
chmod: 无法访问'get_ilsvrc_aux.sh': 没有那个文件或目录
/bin/sh: 1: ./get_ilsvrc_aux.sh: not found
make[5]: *** [Makefile:9:all] 错误 127
make[5]: 离开目录“/home/pi/Downloads/ncsdk/examples/data/ilsvrc12”
make[4]: *** [Makefile:24:prereqs] 错误 2
make[4]: 离开目录“/home/pi/Downloads/ncsdk/examples/caffe/GoogLeNet”
cp: 无法获取'../../caffe/GoogLeNet/graph' 的文件状态(stat): 没有那个文件或目录
make[3]: *** [Makefile:10:googlenet] 错误 1
make[3]: 离开目录“/home/pi/Downloads/ncsdk/examples/apps/multistick_cpp”
make[2]: *** [Makefile:12:multistick_cpp/.] 错误 2
make[2]: 离开目录“/home/pi/Downloads/ncsdk/examples/apps”
make[1]: *** [Makefile:12:apps/.] 错误 2
make[1]: 离开目录“/home/pi/Downloads/ncsdk/examples”
make: *** [Makefile:58:examples] 错误 2
暂时先不弄了
保存一些教程
Install OpenVINO™ toolkit for Raspbian* OS — OpenVINO™ documentation
按照这个又试了一下,没有成功
在【AI人工智慧】在Raspberry Pi上安裝NCSDK – CAVEDU教育團隊技術部落格下载了装好环境的镜像,买了新的存储卡,可以下次刷进去试试看