2020年8月10日月曜日

M5StickCとJoyCでBLEリモコン

 バランスロボを操縦するためのBLEリモコンを作ってみました。

micro:bitバランスロボの記事はこちらです。

M5StickCバランスロボの記事はこちらです。


micro:bitと電動消しゴムでバランスロボ

ハードウェアは こちらをご覧ください。

PWM周波数の変更のため、wiring_analog_nRF51.c 内の関数 void analogWrite( uint32_t ulPin, uint32_t ulValue ) の

NRF_TIMER1->PRESCALER = (NRF_TIMER1->PRESCALER & ~TIMER_PRESCALER_PRESCALER_Msk) | ((7 << TIMER_PRESCALER_PRESCALER_Pos) & TIMER_PRESCALER_PRESCALER_Msk);

を 

NRF_TIMER1->PRESCALER = (NRF_TIMER1->PRESCALER & ~TIMER_PRESCALER_PRESCALER_Msk) | ((3 << TIMER_PRESCALER_PRESCALER_Pos) & TIMER_PRESCALER_PRESCALER_Msk);

 に変更しました。

 また、i2cのタイムアウトのために、Wire_nRF51.cpp 内の関数 uint8_t TwoWire::endTransmission(bool stopBit) の

    _p_twi->TXD = txBuffer.read_char();
    while(!_p_twi->EVENTS_TXDSENT && !_p_twi->EVENTS_ERROR) ;


     _p_twi->TXD = txBuffer.read_char();
    uint32_t usecTimeOut=micros();
    while(!_p_twi->EVENTS_TXDSENT && !_p_twi->EVENTS_ERROR) {
      if (micros()-usecTimeOut>3000) return 4;
    }

 に変更しました。

以下ソースコードです。

2020年6月10日水曜日

BalaC Balancing Robot - One-wheel Drive Versiion

The software is basically the same as the previous one.  Just changed parameters to drive only one wheel.

2020年6月9日火曜日

BalaC Balancing Robot

Sorry for the spaghetti code...


2020年5月16日土曜日

ESP32で古時計の精度改善


ソースコードは、重力振り子用の構成になっています。
//*** WIFI SETTING の下2行がWiFiのSSIDとパスコードの設定部分です。

EPS32がインストールされているArduino IDEで、ボードとして「WEMOS LOLIN32」を選択してコンパイルします。

起動後、OLEDに表示されるIPアドレスに、ブラウザ(ChromeとFireFox以外は試してないです)からアクセスし、「Config」メニューの「Pendulum XX cycles = YY sec」で時計のギヤ比(YY秒間で振り子がXX回往復)を、「Pend Cycle between Tune: ZZ」で修正間隔(振り子ZZ回往復ごとにコイル電流を更新、1分に1回程度で良いと思います)を設定して「Apply」し、再度「Config」から「Reboot」すれば、とりあえずは動くはずです。


回転振り子については、#define GRAVITYをコメントアウトし、#define TORSIONを生かしてコンパイルします。センサーの設置位置などが微妙で、条件が変わるとソースコード中の定数の調整も必要と思われます。