yana_lab

obniz関連

最終更新:

Bot(ページ名リンク)

- view
だれでも歓迎! 編集

obniz関連


IoT関連のデバイスを作りたい場合は、Raspberry PIやArduinoより,obnizのほうが簡単にいろいろできると思います.インターネット経由でどこからでも操作したり,測定値を確認したりできます.
また,他ボードと大きく異なる点として,IOに直挿(モータドライバが不要!)でDCモータを動かすことができます.そのため,かなり少ない部品数でスマホで操作できるロボットなどを作ることができます.

開発はJavascriptかPythonでできます.Javascriptを使う場合は,公式のHPが非常に丁寧ですので,そちらを見て勉強してください.
このページではPythonを使う場合の基本をまとめておきます.

準備・基本

Python3.6以上に対応しています.
pipなどでobnizをインストールします.
pip install obniz
 

あとはobnizに電源を接続すればOKです.
※インターネットに接続できれば,PCとobnizを有線で接続する必要はありませんし,同じネットワークになくても問題ありません.

Lチカ(デジタル信号出力)

LED2個を点灯させるプログラムです.
0番をGND,1番と2番にLEDを接続しています.LEDそれぞれに抵抗をつないでおいてください.回路はそれだけでOK.

obniz = Obniz('XXXX-XXXX')のXXXX-XXXXの部分はobnizに表示される自分の番号を入れます.
obnizの0番に接続する場合はobniz.io0.output,1番ならobniz.io1.outputという形で指定します.
obniz.io0.output(True) でON,obniz.io0.output(False)でOFF・GNDという感じです.
obniz.io0.pull("3v")を変更して3vにすることもできます.


import asyncio  ##非同期通信用
from obniz import Obniz 
 
async def onconnect(obniz):
    obniz.io0.output(False) #GND
    obniz.io1.output(True) #LED1
    obniz.io2.output(True) #LED2

obniz = Obniz('XXXX-XXXX')
obniz.onconnect = onconnect
asyncio.get_event_loop().run_forever()
 

アナログ入力

可変抵抗の値を表示させるプログラムです.
可変抵抗のGNDを0番,5Vを3番,抵抗が変化する端子(真ん中)を4番に接続します.
うまくいけば,PC画面に測定値が表示されます.

import asyncio  ##非同期通信用
from obniz import Obniz 
 
async def onconnect(obniz):
    obniz.io0.output(False) #可変抵抗(GND)
    obniz.io3.output(True) #可変抵抗

    def callback(voltage):
        print(voltage)
 
    obniz.ad4.start(callback) #可変抵抗の抵抗が変化する端子(真ん中)でアナログ信号の計測開始
    
obniz = Obniz('XXXX-XXXX')
obniz.onconnect = onconnect
asyncio.get_event_loop().run_forever()
 

センサの値に応じてLEDを制御

上の2つを組み合わせて,可変抵抗の値に応じてLEDを制御するプログラムです.
LED,可変抵抗の配線は上のものと同じにしてあります.
うまくいけばLED1は常時点灯,LED2は可変抵抗の値によって変化(ON・OFF)します.

import asyncio ##非同期通信用
from obniz import Obniz
 
async def onconnect(obniz):
    obniz.io0.output(False) #GND
    obniz.io1.output(True) #LED1
    obniz.io2.output(True) #LED2
    obniz.io3.output(True) #可変抵抗
    
    def callback(voltage):
        print(voltage)
        if voltage > 3: #LED2を可変抵抗の値に応じてON/OFF
            obniz.io2.output(False)
        else:
            obniz.io2.output(True)
 
    obniz.ad4.start(callback) #アナログ信号の入力開始

obniz = Obniz('XXXX-XXXX')
obniz.onconnect = onconnect
asyncio.get_event_loop().run_forever()
 

PWM信号(アナログ出力)

PWM信号を使ってサーボモータを制御するプログラムです.
サーボモータの角度は可変抵抗で制御します.
ここでは,サーボモータはSG-5010(PWM周期20Hz,制御パルス:0.5~2.4ms)を使用しています.

配線は,0番が可変抵抗のGND,1番がサーボのGND(茶色線),2番がサーボの+V(赤線),3番が可変抵抗の+V,4番が可変抵抗の抵抗値が変化する端子,5番がサーボモータの信号線(オレンジ線)です.

import asyncio ##非同期通信用
from obniz import Obniz
 
async def onconnect(obniz):
    obniz.io0.output(False) #可変抵抗GND
    obniz.io1.output(False) #サーボGND
    obniz.io2.output(True) #サーボ+V
    obniz.io3.output(True) #可変抵抗 +V
    pwm = obniz.get_free_pwm()
    pwm.start({"io": 5})
    pwm.freq(20)#サーボの仕様書より

    def callback(voltage):
        max_value = 2.4 #サーボの仕様書より
        min_value = 0.5 #サーボの仕様書より
        val = ((max_value - min_value) * voltage) / 5.0 + min_value #可変抵抗の値は0~5で変化する.1次関数で可変抵抗とサーボの角度の対応を決める.
        print(voltage,val)
        pwm.pulse(val)
 
    obniz.ad4.start(callback) #アナログ信号の入力開始

obniz = Obniz('XXXX-XXXX')
obniz.onconnect = onconnect
asyncio.get_event_loop().run_forever()
 
 

タグ:

+ タグ編集
  • タグ:
ウィキ募集バナー