前提
raspberry pi4と9つの赤外線センサを用いて赤外線センサ(VL53L1X使用 レーザー測距センサモジュール(ToF))を9つ同時に動作させるようなシステムを作っています。ネットで配線やプログラムを調べ、参考にしたのですが実行するとエラーをはいて動きません。アドレスを認識していないかと思われます。
実現したいこと
raspberry pi4を用いて赤外線センサ9個を同時に計測する。
補足情報
・使用センサ
赤外線センサ VL53L1X使用 レーザー測距センサモジュール(ToF)
https://akizukidenshi.com/catalog/g/gM-14249/
・参考サイト
- 赤外線センサのアドレス変更のためプログラム
https://team432.jpn.org/?p=380
- 参考にした赤外線センサVL53L1Xの計測プログラム
https://qiita.com/BlueWindows/items/d98b323f789bdc62fc3b
発生している問題・エラーメッセージ
該当のソースコード
python
1import sys 2sys.path.insert(0, "/usr/local/lib/python2.7/dist-packages") 3 4import VL53L1X 5import time 6import csv 7from datetime import datetime 8from collections import namedtuple 9import RPi.GPIO as GPIO 10 11gpio_bcm1 = 4 12gpio_bcm2 = 5 13gpio_bcm3 = 6 14gpio_bcm4 = 13 15gpio_bcm5 = 16 16gpio_bcm6 = 17 17gpio_bcm7 = 18 18gpio_bcm8 = 19 19gpio_bcm9 = 20 20 21GPIO.setwarnings(False) 22GPIO.setmode(GPIO.BCM) 23 24 25try: 26 num = 0 27 28 GPIO.setup(gpio_bcm1, GPIO.OUT, initial=GPIO.LOW) 29 GPIO.setup(gpio_bcm2, GPIO.OUT, initial=GPIO.LOW) 30 GPIO.setup(gpio_bcm3, GPIO.OUT, initial=GPIO.LOW) 31 GPIO.setup(gpio_bcm4, GPIO.OUT, initial=GPIO.LOW) 32 GPIO.setup(gpio_bcm5, GPIO.OUT, initial=GPIO.LOW) 33 GPIO.setup(gpio_bcm6, GPIO.OUT, initial=GPIO.LOW) 34 GPIO.setup(gpio_bcm7, GPIO.OUT, initial=GPIO.LOW) 35 GPIO.setup(gpio_bcm8, GPIO.OUT, initial=GPIO.LOW) 36 GPIO.setup(gpio_bcm9, GPIO.OUT, initial=GPIO.LOW) 37 38 time.sleep(0.5) 39 40 GPIO.output(gpio_bcm1, GPIO.HIGH) 41 time.sleep(0.3) 42 sensor1 = VL53L1X.VL53L1X(i2c_bus=1, i2c_address=0x29) 43 sensor1.change_address=0x30 44 45 GPIO.output(gpio_bcm2, GPIO.HIGH) 46 time.sleep(0.3) 47 sensor2 = VL53L1X.VL53L1X(i2c_bus=1, i2c_address=0x29) 48 sensor2.change_address=0x31 49 50 GPIO.output(gpio_bcm3, GPIO.HIGH) 51 time.sleep(0.1) 52 sensor3 = VL53L1X.VL53L1X(i2c_bus=1, i2c_address=0x29) 53 sensor3.new_address=0x32 54 55 GPIO.output(gpio_bcm4, GPIO.HIGH) 56 time.sleep(0.1) 57 sensor4 = VL53L1X.VL53L1X(i2c_bus=1, i2c_address=0x29) 58 sensor4.new_address=0x33 59 60 GPIO.output(gpio_bcm5, GPIO.HIGH) 61 time.sleep(0.1) 62 sensor5 = VL53L1X.VL53L1X(i2c_bus=1, i2c_address=0x29) 63 sensor5.new_address=0x34 64 65 GPIO.output(gpio_bcm6, GPIO.HIGH) 66 time.sleep(0.1) 67 sensor6 = VL53L1X.VL53L1X(i2c_bus=1, i2c_address=0x29) 68 sensor6.new_address=0x35 69 70 GPIO.output(gpio_bcm7, GPIO.HIGH) 71 time.sleep(0.1) 72 sensor7 = VL53L1X.VL53L1X(i2c_bus=1, i2c_address=0x29) 73 sensor7.new_address=0x36 74 75 GPIO.output(gpio_bcm8, GPIO.HIGH) 76 time.sleep(0.1) 77 sensor8 = VL53L1X.VL53L1X(i2c_bus=1, i2c_address=0x29) 78 sensor8.new_address=0x37 79 80 GPIO.output(gpio_bcm9, GPIO.HIGH) 81 time.sleep(0.1) 82 sensor9 = VL53L1X.VL53L1X(i2c_bus=1, i2c_address=0x29) 83 sensor9.new_address=0x38 84 85 86 sensor1.open() 87 sensor1.start_ranging(1) 88 sensor1.set_distance_mode(1) 89 90 sensor2.open() 91 sensor2.start_ranging(1) 92 sensor2.set_distance_mode(1) 93 94 sensor3.open() 95 sensor3.start_ranging(1) 96 97 sensor4.open() 98 sensor4.start_ranging(1) 99 100 sensor5.open() 101 sensor5.start_ranging(1) 102 103 sensor6.open() 104 sensor6.start_ranging(1) 105 106 sensor7.open() 107 sensor7.start_ranging(1) 108 109 sensor8.open() 110 sensor8.start_ranging(1) 111 112 sensor9.open() 113 sensor9.start_ranging(1) 114 115 while True: 116 117 print("I2C Distance\n") 118 print("-----------------\n") 119 120 time.sleep(0.8) 121 122 distance_mm = sensor1.get_distance() 123 print("Time: {} Distance: {}mm".format(datetime.utcnow().strftime("%S.%f"), distance_mm)) 124 time.sleep(0.8) 125 126 distance_mm2 = sensor2.get_distance() 127 print("Time: {} Distance: {}mm".format(datetime.utcnow().strftime("%S.%f"), distance_mm2)) 128 time.sleep(0.8) 129 130 distance_mm3 = sensor3.get_distance() 131 print("Time: {} Distance: {}mm".format(datetime.utcnow().strftime("%S.%f"), distance_mm3)) 132 time.sleep(0.8) 133 134 distance_mm4 = sensor4.get_distance() 135 print("Time: {} Distance: {}mm".format(datetime.utcnow().strftime("%S.%f"), distance_mm4)) 136 time.sleep(0.8) 137 138 distance_mm5 = sensor5.get_distance() 139 print("Time: {} Distance: {}mm".format(datetime.utcnow().strftime("%S.%f"), distance_mm5)) 140 time.sleep(0.8) 141 142 distance_mm6 = sensor6.get_distance() 143 print("Time: {} Distance: {}mm".format(datetime.utcnow().strftime("%S.%f"), distance_mm6)) 144 time.sleep(0.8) 145 146 distance_mm7 = sensor7.get_distance() 147 print("Time: {} Distance: {}mm".format(datetime.utcnow().strftime("%S.%f"), distance_mm7)) 148 time.sleep(0.8) 149 150 distance_mm8 = sensor8.get_distance() 151 print("Time: {} Distance: {}mm".format(datetime.utcnow().strftime("%S.%f"), distance_mm8)) 152 time.sleep(0.8) 153 154 distance_mm9 = sensor9.get_distance() 155 print("Time: {} Distance: {}mm".format(datetime.utcnow().strftime("%S.%f"), distance_mm9)) 156 time.sleep(0.8) 157 158 print(num) 159 160 161 time.sleep(1) 162 num=num+1 163 if(num >= 100): 164 break 165 166 167 168 169except KeyboardInterrupt: 170 print("finishing...") 171 if(num == 100): 172 173 sensor1.stop_ranging() 174 sensor1.close() 175 GPIO.output(gpio_bcm1, GPIO.LOW) 176 177 sensor2.stop_ranging() 178 sensor2.close() 179 GPIO.output(gpio_bcm2, GPIO.LOW) 180 181 sensor3.stop_ranging() 182 sensor3.close() 183 GPIO.output(gpio_bcm3, GPIO.LOW) 184 185 sensor4.stop_ranging() 186 sensor4.close() 187 GPIO.output(gpio_bcm4, GPIO.LOW) 188 189 sensor5.stop_ranging() 190 sensor5.close() 191 GPIO.output(gpio_bcm5, GPIO.LOW) 192 193 sensor6.stop_ranging() 194 sensor6.close() 195 GPIO.output(gpio_bcm6, GPIO.LOW) 196 197 sensor7.stop_ranging() 198 sensor7.close() 199 GPIO.output(gpio_bcm7, GPIO.LOW) 200 201 sensor8.stop_ranging() 202 sensor8.close() 203 GPIO.output(gpio_bcm8, GPIO.LOW) 204 205 sensor9.stop_ranging() 206 sensor9.close() 207 GPIO.output(gpio_bcm9, GPIO.LOW) 208 209 GPIO.cleanup() 210 print("finish!!")
試したこと
赤外線センサと配線を1セットずつ最大9個まで増やしていき、それを3回行いエラーの有無を確認した結果、センサの数が増えるほどエラーが出る可能性が高かった。
・センサを1個ずつ増やしていった時のエラーの有無
センサの数 | 1回目 | 2回目 | 3回目 |
---|---|---|---|
1 | 無 | 無 | 無 |
2 | 無 | 無 | 無 |
3 | 無 | 無 | 無 |
4 | 無 | 無 | 無 |
5 | 無 | 無 | 有 |
6 | 有 | 有 | 有 |
7 | 有 | 有 | 有 |
8 | 有 | 有 | 有 |
9 | 有 | 有 | 有 |
メッセージ
もしプログラムや配線方法が間違っていて改善点がある場合ご指摘くださると幸いです。よろしくお願いします。
回答4件
あなたの回答
tips
プレビュー