2020-01-12

グラスをスマートにする技術~その3:ESP-Now~ グラスをスマートにする技術~その3:ESP-Now~ - Nao_uの日記 を含むブックマーク はてなブックマーク - グラスをスマートにする技術~その3:ESP-Now~ - Nao_uの日記 グラスをスマートにする技術~その3:ESP-Now~ - Nao_uの日記 のブックマークコメント

ESP-NOWは、短いパケットを特徴とする高速でコネクションレスな通信技術送信です。 ESP-NOWはスマートライト、リモコン、センサーなどのアプリケーションに最適です。

 ESP-NOWはIEEE802.11 Action Vendorフレーム技術とEspression if社が開発したCCMP暗号化技術により、コネクションレス通信を実現します。Wifiと比べて立ち上げ時間・通信時間がとても高速で、ロボットを制御する用途では、通信の遅延が少ないので、制御性がよくなるメリットがありま

2020-01-11

Micro:bitPythonでモータードライバを動かすサンプル Micro:bitのPythonでモータードライバを動かすサンプル - Nao_uの日記 を含むブックマーク はてなブックマーク - Micro:bitのPythonでモータードライバを動かすサンプル - Nao_uの日記 Micro:bitのPythonでモータードライバを動かすサンプル - Nao_uの日記 のブックマークコメント

これのアドレスをSuper:Bitのmain.tsに合わせて書き換えると動きそう

このサンプルも参考になる

http://wiki.labplus.cn/index.php?title=Extend:bit%E2%85%A1

これで動いた

# Add your Python code here. E.g.
from microbit import *

PCA9685_ADDRESS = 0x40   #device address

#define register
MODE1 = 0x00
MODE2 = 0x01
SUBADR1 = 0x02
SUBADR2 = 0x03
SUBADR3 = 0x04

PRESCALE = 0xFE

LED0_ON_L = 0x06
LED0_ON_H = 0x07
LED0_OFF_L = 0x08
LED0_OFF_H = 0x09
ALL_LED_ON_L = 0xFA
ALL_LED_ON_H = 0xFB
ALL_LED_OFF_L = 0xFC
ALL_LED_OFF_H = 0xFD

STP_CHA_L = 2047
STP_CHA_H = 4095
STP_CHB_L = 1
STP_CHB_H = 2047
STP_CHC_L = 1023
STP_CHC_H = 3071
STP_CHD_L = 3071
STP_CHD_H = 1023

# Servos define 
S1 = 0x01
S2 = 0x02
S3 = 0x03
S4 = 0x04
# Motors define
M1 = 8
M2 = 10
M4 = 12
M3 = 14


# device init
def initPCA9685(): 
    i2c.write(PCA9685_ADDRESS, bytearray([MODE1, 0x00]))
    setFreq(50)
    for idx in range(0, 16, 1):
        setPwm(idx, 0 ,0)
    #initialized = true

#set frequency    
def setFreq(freq):
    #Constrain the frequency
    prescaleval = int(25000000/(4096*freq)) - 1
    #prescale = prescaleval;  #Math.Floor(prescaleval + 0.5)
    i2c.write(PCA9685_ADDRESS, bytearray([MODE1]))
    oldmode = i2c.read(PCA9685_ADDRESS, 1)
    newmode = (oldmode[0] & 0x7F) | 0x10  # sleep
    i2c.write(PCA9685_ADDRESS, bytearray([MODE1, newmode])) # go to sleep
    i2c.write(PCA9685_ADDRESS, bytearray([PRESCALE, prescaleval]))  # set the prescaler
    i2c.write(PCA9685_ADDRESS, bytearray([MODE1, oldmode[0]]))
    sleep(4)
    i2c.write(PCA9685_ADDRESS, bytearray([MODE1, oldmode[0] | 0xa1]))

# function: setPwm()     
def setPwm(channel, on, off):
    if (channel >= 0 and channel <= 15):
        buf = bytearray([LED0_ON_L + 4 * channel, on & 0xff, (on >> 8) & 0xff, off & 0xff, (off >> 8) & 0xff])
        i2c.write(PCA9685_ADDRESS, buf)

# function: motorRun()
# @param motor:  M1A, M1B, M2A, M2B
# @param speed1: -255 - 255  0 is stop      
def MotorRun(Motors, speed):
    speed = speed * 16  # map 255 to 4096
    if (speed >= 4096):
        speed = 4095
    if (speed <= -4096):
        speed = -4095
    
    a = Motors
    b = Motors+1
    if (speed >= 0):
        setPwm(a, 0, speed)
        setPwm(b, 0, 0)
    else :
        setPwm(a, 0, 0)
        setPwm(b, 0, -speed)
    

while True:
    initPCA9685()
    display.show(Image.HEART)
    
    for idx in range(0, 120, 1):
        display.show(idx%10)
        #MotorRun(M1, idx)
        sleep(16)

M5CameraでGoogle Driveにアップロードする M5CameraでGoogle Driveにアップロードする  - Nao_uの日記 を含むブックマーク はてなブックマーク - M5CameraでGoogle Driveにアップロードする  - Nao_uの日記 M5CameraでGoogle Driveにアップロードする  - Nao_uの日記 のブックマークコメント

やってみたい

micro:bitをWeb Bluetooth APIで通信するときにハマったポイント micro:bitをWeb Bluetooth APIで通信するときにハマったポイント - Nao_uの日記 を含むブックマーク はてなブックマーク - micro:bitをWeb Bluetooth APIで通信するときにハマったポイント - Nao_uの日記 micro:bitをWeb Bluetooth APIで通信するときにハマったポイント - Nao_uの日記 のブックマークコメント

2020-01-07

micro:bitをWeb Bluetooth APIで通信するときにハマったポイント micro:bitをWeb Bluetooth APIで通信するときにハマったポイント - Nao_uの日記 を含むブックマーク はてなブックマーク - micro:bitをWeb Bluetooth APIで通信するときにハマったポイント - Nao_uの日記 micro:bitをWeb Bluetooth APIで通信するときにハマったポイント - Nao_uの日記 のブックマークコメント

micro:bitBluetooth micro:bitでBluetooth - Nao_uの日記 を含むブックマーク はてなブックマーク - micro:bitでBluetooth - Nao_uの日記 micro:bitでBluetooth - Nao_uの日記 のブックマークコメント

https://oretopia.net/blog/2018/1110a/

MicroBitが受信するときはBLEのUARTサービスを使うのが良さそう

GoogleのEddystoneとはなんなのか GoogleのEddystoneとはなんなのか - Nao_uの日記 を含むブックマーク はてなブックマーク - GoogleのEddystoneとはなんなのか - Nao_uの日記 GoogleのEddystoneとはなんなのか - Nao_uの日記 のブックマークコメント

M5StackのBLEScanResults/BLEAdvertisedDeviceはeddystoneを解析できない?

届いた生データを見たいが、別の形式で解釈済みで生データが消えてる(payloadがたまたま開放済みメモリを指してた時に生データっぽいものが偶然見えることがあるが、たぶん不正なアクセス)

生データを取る方法が欲しい

M5StackでRCサーボを動かす M5StackでRCサーボを動かす - Nao_uの日記 を含むブックマーク はてなブックマーク - M5StackでRCサーボを動かす - Nao_uの日記 M5StackでRCサーボを動かす - Nao_uの日記 のブックマークコメント

M5StackではArduinoの定番のServo.hが使えません.

ここに描いてあるLED制御用のPWMでサーボが動いた。

Esp32Surbo が使えるらしい。

2020-01-06

メモ:床暖房の光熱費 メモ:床暖房の光熱費 - Nao_uの日記 を含むブックマーク はてなブックマーク - メモ:床暖房の光熱費 - Nao_uの日記 メモ:床暖房の光熱費 - Nao_uの日記 のブックマークコメント

  • 部屋を閉め切った場合
    • 1枚で4~5円/h
      • 1枚24hで110円
      • 2枚24hで220円
  • リビング階段の扉を開けてた場合
    • 1枚で8.75円/h (0時~8時で計測)
      • 朝に外が10度で室内が21度、4度低下
    • 風呂が含まれて間違いかも。再計測
      • メモ:朝八時段階で146円、室温21度
      • 12時間後に240円、室温18度

1/17追記:

  • 寒い日、0時~8時半/2枚で130円 (外気温4度、室温17度で7.5円/h)

2020-01-05

当面の課題

  • 加速度センサの使い方を調べておく
  • M5StackをMicro:Bitのユニバーサル基盤経由でSuper:Bitに接続して代替
  • cameraが届いたら映像を送る(が、難度はだいぶ高そうなのでスマホで妥協したほうがいいかも)
  • PS3コントローラーの接続

Arduino(M5StickC)でefont Unicodeフォント表示 完結編 Arduino(M5StickC)でefont Unicodeフォント表示 完結編 - Nao_uの日記 を含むブックマーク はてなブックマーク - Arduino(M5StickC)でefont Unicodeフォント表示 完結編 - Nao_uの日記 Arduino(M5StickC)でefont Unicodeフォント表示 完結編 - Nao_uの日記 のブックマークコメント

https://lang-ship.com/blog/?p=646

「AquesTalk-ESP32 Ver.2.0」を使う 「AquesTalk-ESP32 Ver.2.0」を使う - Nao_uの日記 を含むブックマーク はてなブックマーク - 「AquesTalk-ESP32 Ver.2.0」を使う - Nao_uの日記 「AquesTalk-ESP32 Ver.2.0」を使う - Nao_uの日記 のブックマークコメント

http://blog-yama.a-quest.com/?eid=970195

PLEN:bit:M5Stackと接続 PLEN:bit:M5Stackと接続 - Nao_uの日記 を含むブックマーク はてなブックマーク - PLEN:bit:M5Stackと接続 - Nao_uの日記 PLEN:bit:M5Stackと接続 - Nao_uの日記 のブックマークコメント

http://shikarunochi.matrix.jp/?p=3295

Micro:bitと同じ形状のユニバーサル基盤があった

M5Stack同士でWiFi, UDPによる双方向リアルタイム同時通信する実験 M5Stack同士でWiFi, UDPによる双方向リアルタイム同時通信する実験 - Nao_uの日記 を含むブックマーク はてなブックマーク - M5Stack同士でWiFi, UDPによる双方向リアルタイム同時通信する実験 - Nao_uの日記 M5Stack同士でWiFi, UDPによる双方向リアルタイム同時通信する実験 - Nao_uの日記 のブックマークコメント

https://www.mgo-tec.com/blog-entry-udp-wifi-m5stack.html

M5Stackの3Dソフトウェアラスタライザ M5Stackの3Dソフトウェアラスタライザ - Nao_uの日記 を含むブックマーク はてなブックマーク - M5Stackの3Dソフトウェアラスタライザ - Nao_uの日記 M5Stackの3Dソフトウェアラスタライザ - Nao_uの日記 のブックマークコメント

https://twitter.com/gyabo/status/1112397505667293184

2020-01-04

M5Stackを分解したり電源を入れてみて、いろいろ思ったこと M5Stackを分解したり電源を入れてみて、いろいろ思ったこと - Nao_uの日記 を含むブックマーク はてなブックマーク - M5Stackを分解したり電源を入れてみて、いろいろ思ったこと - Nao_uの日記 M5Stackを分解したり電源を入れてみて、いろいろ思ったこと - Nao_uの日記 のブックマークコメント

https://www.mgo-tec.com/blog-entry-m5stack-initial-operation.html

Arduino IDEのビルドを速くする|オブジェクトファイルの出力先を固定する Arduino IDEのビルドを速くする|オブジェクトファイルの出力先を固定する - Nao_uの日記 を含むブックマーク はてなブックマーク - Arduino IDEのビルドを速くする|オブジェクトファイルの出力先を固定する - Nao_uの日記 Arduino IDEのビルドを速くする|オブジェクトファイルの出力先を固定する - Nao_uの日記 のブックマークコメント

PACMAN with M5STACK PACMAN with M5STACK - Nao_uの日記 を含むブックマーク はてなブックマーク - PACMAN with M5STACK - Nao_uの日記 PACMAN with M5STACK - Nao_uの日記 のブックマークコメント

Gameboy Panel は ATmega328P で構成され I2C で通信しています。

アドレスは 0x88 です。

サンプル(faces_joystick)ではなぜか#define FACE_JOY_ADDR 0x5e で定義されていてそのままでは動かず、0x88にしたら動いた

…と思ったけど、なんかそもそも別のサンプルっぽい?アナログを取ってる気配が。

#include 

#define FACE_JOY_ADDR 0x88

#define KEY_U   0x01
#define KEY_D   0x02
#define KEY_L   0x04
#define KEY_R   0x08
#define KEY_A   0x10
#define KEY_B   0x20
#define KEY_SL  0x40
#define KEY_ST  0x80

char strBuf[100];

int cnt=0;
void setup() {
  randomSeed(analogRead(0));
  Serial.begin(115200);
  M5.begin();
  Wire.begin();
  M5.Lcd.fillScreen(TFT_BLACK);
  pinMode(5, INPUT_PULLUP);
  delay(100);
    
  M5.Lcd.setTextFont(2);
}

uint8_t key_val;
void loop() {
  M5.Lcd.fillScreen(TFT_BLACK);
  if(digitalRead(5) == LOW) {
      cnt++;
      Wire.requestFrom(0X88, 1);         // request 1 byte from keyboard
      while (Wire.available()) { 
        key_val = Wire.read();   // receive a byte as character
        key_val ^= 0xff;
    }
  }
  M5.Lcd.setCursor(50, 50);

  sprintf(strBuf, "kay_val : %x cnt : %d\n", key_val, cnt);
  M5.Lcd.print(strBuf);

  if( key_val & KEY_U ) M5.Lcd.print("UP    ");
  if( key_val & KEY_D ) M5.Lcd.print("DOWN  ");
  if( key_val & KEY_L ) M5.Lcd.print("LEFT  ");
  if( key_val & KEY_R ) M5.Lcd.print("RIGHT ");
  if( key_val & KEY_A ) M5.Lcd.print("A ");
  if( key_val & KEY_B ) M5.Lcd.print("B ");
  if( key_val & KEY_SL ) M5.Lcd.print("SL ");
  if( key_val & KEY_ST ) M5.Lcd.print("ST ");
    
    delay(1);

}

M5Stack の液晶ディスプレイ ILI9341 をちょっと解明してみた M5Stack の液晶ディスプレイ ILI9341 をちょっと解明してみた - Nao_uの日記 を含むブックマーク はてなブックマーク - M5Stack の液晶ディスプレイ ILI9341 をちょっと解明してみた - Nao_uの日記 M5Stack の液晶ディスプレイ ILI9341 をちょっと解明してみた - Nao_uの日記 のブックマークコメント


M5StackでGrove超音波距離センサの値を画面表示 M5StackでGrove超音波距離センサの値を画面表示 - Nao_uの日記 を含むブックマーク はてなブックマーク - M5StackでGrove超音波距離センサの値を画面表示 - Nao_uの日記 M5StackでGrove超音波距離センサの値を画面表示 - Nao_uの日記 のブックマークコメント

元のサンプルは9600だったが、Serial.begin(115200) にしないといけないらしい。

#include "Ultrasonic.h"
#include 

Ultrasonic ultrasonic(22);

void setup()
{
  M5.begin();
  Serial.begin(115200);

  delay(500);

  M5.Lcd.setTextFont(2);
  M5.Lcd.setCursor(10, 10);


}
void loop()
{
  long RangeInCentimeters;

  Serial.println("The distance to obstacles in front is: ");

  RangeInCentimeters = ultrasonic.MeasureInCentimeters(); // two measurements should keep an interval

  M5.Lcd.clear();

  M5.Lcd.setCursor(10, 10);
  M5.Lcd.setTextColor(YELLOW);
  M5.Lcd.setTextSize(2);
  M5.Lcd.printf("Ultrasonic distance\n");

  M5.Lcd.setCursor(50, 50);
  M5.Lcd.setTextColor(YELLOW);
  M5.Lcd.setTextSize(2);
  M5.Lcd.printf("%d cm\n", RangeInCentimeters);
  delay(16);

  Serial.print(RangeInCentimeters);//0~400cm
  Serial.println(" cm");

  M5.update();
}

M5Stackでストップウォッチを作る M5Stackでストップウォッチを作る - Nao_uの日記 を含むブックマーク はてなブックマーク - M5Stackでストップウォッチを作る - Nao_uの日記 M5Stackでストップウォッチを作る - Nao_uの日記 のブックマークコメント

https://qiita.com/zasshyu6/items/c0bd9bb592192b3c80e7

2019-12-28

ESP32 (M5StickC) で PS3 の コントローラ を使う ESP32 (M5StickC) で PS3 の コントローラ を使う - Nao_uの日記 を含むブックマーク はてなブックマーク - ESP32 (M5StickC) で PS3 の コントローラ を使う - Nao_uの日記 ESP32 (M5StickC) で PS3 の コントローラ を使う - Nao_uの日記 のブックマークコメント

http://gijin77.blog.jp/archives/21966552.html

屋根裏実験室 M5Stackを使ってみる 屋根裏実験室 M5Stackを使ってみる - Nao_uの日記 を含むブックマーク はてなブックマーク - 屋根裏実験室 M5Stackを使ってみる - Nao_uの日記 屋根裏実験室 M5Stackを使ってみる - Nao_uの日記 のブックマークコメント

http://itoi.jp/M5Stack.html

液晶付きマイコン「M5Stack」 と Google Home で、子どもとメッセージがやりとりできるシステムを作ってみた 液晶付きマイコン「M5Stack」 と Google Home で、子どもとメッセージがやりとりできるシステムを作ってみた - Nao_uの日記 を含むブックマーク はてなブックマーク - 液晶付きマイコン「M5Stack」 と Google Home で、子どもとメッセージがやりとりできるシステムを作ってみた - Nao_uの日記 液晶付きマイコン「M5Stack」 と Google Home で、子どもとメッセージがやりとりできるシステムを作ってみた - Nao_uの日記 のブックマークコメント

https://fabcross.jp/category/make/20180425_kodomo_messenger_01.html

Pan/Tilt 機構作成キット Pan/Tilt 機構作成キット - Nao_uの日記 を含むブックマーク はてなブックマーク - Pan/Tilt 機構作成キット - Nao_uの日記 Pan/Tilt 機構作成キット - Nao_uの日記 のブックマークコメント

https://www.switch-science.com/catalog/3486/