編集履歴一覧に戻る
3duilabのアイコン画像

3duilab が 2022年09月30日22時22分38秒 に編集

初版

タイトルの変更

+

自動ライト(非接触空間センサー)

タグの変更

+

非接触空間センサー

+

非接触センサー

メイン画像の変更

メイン画像が設定されました

記事種類の変更

+

製作品

本文の変更

+

# 概要 非接触空間センサー「双方向ハンドセンサー」を使い部屋の明かりを自動制御しました。 - 蛍光灯のリモコンをMOSFETでスイッチ - 入室で点灯、退室で消灯 - 入室しないで退室すると点灯して消灯 website https://interactive-hand-sensor.com/root/ # 動画 @[twitter](https://twitter.com/TakahiroMaeda3/status/1574737406863233025) # 写真 明かりの制御は蛍光灯のリモコンから線を引き出してMOSFETでスイッチしています。最初は壁のスイッチをサーボモーターで制御する予定でした。試しに蛍光灯のリモコンを分解すると、ハードもソフトも簡単そうなのでこちらにしました。 ![センサーとコントローラ](https://camo.elchika.com/1f8bbfa870897f64dd68e6eb66ff2924c8c9c470/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f31383164613832352d646330322d343939302d626461342d3362323431386663646437372f62396431663765332d613434612d343666332d393039302d636261393861623066666361/) ![リモコン](https://camo.elchika.com/7f809f23df265f6b4d7fd9b12a16bd0ca37df9ee/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f31383164613832352d646330322d343939302d626461342d3362323431386663646437372f37356134376363332d336230372d346133612d616636622d326662353938653566633238/) # 配線図 センサーで方向を判断し入室したときに点灯、退室で消灯します。リモコンのジャンパー線はGNDがあります。(写真参照) ![配線図](https://camo.elchika.com/3a0e8bff22f5a146287db81994e51952983538ce/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f31383164613832352d646330322d343939302d626461342d3362323431386663646437372f36633131373866652d623133302d346332392d626232642d656534376430313534626363/) # プログラム ```python:AutoLight from machine import PWM from Sensor_CLED import * def makePwm(gpio, freq, duty16): pwm = PWM(gpio) pwm.freq(freq) pwm.duty_u16(duty16) makePwm(pwmCled_gpio, 50, 1<<14) # set pwm def makeIndi(): val = True def closure(timer): nonlocal val CLed.setIndi(val) val = not val return closure indi = makeIndi() tim = Timer() tim.init(freq=3, mode=Timer.PERIODIC, callback=indi) # ***************** AutoLight ******************** class AutoLight(): AD_CRI = 300 WAIT_MS = 300 def __init__(self, pin): self.sw = GPIOOUT(pin) self.in0out7 = True self.isOn = False self.goOut = False def exec(self): adLst = Sensor.getAdLst() outSum = sum(adLst[5:]) if self.in0out7 else sum(adLst[0:3]) inSum = sum(adLst[5:]) if not self.in0out7 else sum(adLst[0:3]) isIn = inSum > self.AD_CRI isOut = outSum > self.AD_CRI inout = (isOut, isIn) if self.isOn: if not any(inout) and self.goOut: # turn off self.goOut = self.isOn = False self.swOn() else: self.goOut = (isOut and not isIn) elif isOut: self.isOn = True self.swOn() # turn on def swOn(self): self.sw(True) time.sleep_ms(self.WAIT_MS) self.sw(False) if not self.isOn: time.sleep_ms(self.WAIT_MS * 2) self.sw(True) time.sleep_ms(self.WAIT_MS) self.sw(False) # ***************** main ******************** if __name__ == '__main__': try: al = AutoLight(28) # output:28pin cled = CLed() Sensor.init() # *** initialize Sensor *** print('Row', ROW_LEN, '******************* ') cled.turnOn(5) time.sleep(1) while True: Sensor.setAd() cled.turnOn() al.exec() except KeyboardInterrupt: print("\nCtl+C") CLed.turnOn(0) ``` # 感想 - やってみるととても楽しくて便利です。 - 胸の位置は100%反応します。 - 足元はセンサーの検出距離20センチを超えて反応しないことがあります。 - 一人じゃない状況にはソフトの修正が必要です。 # 終わりに 非接触空間センサーで部屋の明かりを制御すると未来的で楽しいです。一般的な電気製品はコモディティ化で下り坂ですがこれはチャンスかもしれません。マークされていない上、コピーが難しく、代替えの出来ない用途があるからです。不安定なところを創造力(想像力)で解決するのが現代の開発です。これを製品化して事業を始め、子どもたちに希望を残したいです。 # リンク YouTubeショート動画:https://youtube.com/shorts/MhElkg5Dx4U website:https://interactive-hand-sensor.com/root/ ラズパイピコプログラム例:https://interactive-hand-sensor.com/root/raspberry-pi-pico-example 発売中:https://www.switch-science.com/products/6495/ Instagram:https://www.instagram.com/3duilab/?hl=ja ツイッター:https://twitter.com/TakahiroMaeda3