テクノロイド

コンピュータやゲーム他、色々日々思ったことをつづっていきます。

wio terminalの値段も上がってるorz

2022-06-10 11:48:37 | パソコン/マイコン全般
以前ラズパイを小さな画面と入力用ボタンを付けてちょっとした操作をするシステムを作るのにM5Stackが登場してこりゃいいと思っていた。ハード工作をやったことがないので、自分でケースを作る労力を考えたら5千円程で買えるのは大変ありがたい。

そう思ってM5StackBasicを買っていたんだが、内蔵バッテリーが余計なのとボタンの数が少ないのがちょっとネックでもあった。そしたらいつの間にかwio terminalが登場してた。
ジョイスティック型ボタンとは別に3つもボタンがあってバッテリーも内蔵していない。おまけに値段が3千円くらい。まさに理想的なマイコンだった。

WiFi/Bluetoothもあるんだけど、Linuxが動かせないマイコンなので簡単には利用できず、とりあえず急ぎなのでUSB接続してシステムを組んだ。
驚くことにXサーバも動かせ(てラズパイのモニタとして使え)るようだし、WiFi/Bluetoothも試したいなと思っていたんだが、つい最近まで安かった秋月でも値段が上がってた。ショック。

手元にもう無いんだけど、またいつか半導体不足が解消されたらと思うと買えないんで、またいつか使う時に忘れないようにこれまで作業したのをメモっておく。

作業にはUbuntuなPCを使用。ソフトウェア開発用にArduino IDEを使うんだけど、snap版で問題なかった。
$ sudo snap install arduino
USB接続は/dev/ttyACM0を指定。最新のラズパイOSも同じだった。
ソースは~/snap/arduino/current/Arduino以下に作成される。

以下、Linux側はrubyでwio terminalのBボタン押しながらスティック押下でLinuxシャットダウンを発行するプログラム。
※一部のコピペなんでミスあるかも。
=== sample.rb
#!/usr/bin/env ruby
# -*- coding: utf-8 -*-

require 'serialport'

# 9600bps, 8bit, ストップビット1, パリティ無し
#sp = SerialPort.new('/dev/ttyACM0', 9600)

Thread.new do
  sp = SerialPort.new('/dev/ttyACM0', 115200, 8, 1, SerialPort::NONE)
  sleep 3
  sp.puts "START"
  loop do
    s = sp.gets.chop # wio通信データ取得(改行は取り除く)
    ##s = sp.readline # 改行コード毎に読み込み
    case s
    # シャットダウン
    when "sd"
      #system "sudo poweroff"
    end
  end
  sp.close
end

loop do end

=== sample.ino
#include"TFT_eSPI.h"
#include"Free_Fonts.h" //include the header file

TFT_eSPI tft;

void setup() {
  tft.begin();
  tft.setRotation(1); // up side down display
  tft.fillScreen(TFT_BLACK); 
 
  tft.setFreeFont(FSSBO24); 

  Serial.begin(115200);
  pinMode(WIO_KEY_A, INPUT_PULLUP);
  pinMode(WIO_KEY_B, INPUT_PULLUP);
  pinMode(WIO_KEY_C, INPUT_PULLUP);
  pinMode(WIO_5S_UP, INPUT_PULLUP);
  pinMode(WIO_5S_DOWN, INPUT_PULLUP);
  pinMode(WIO_5S_LEFT, INPUT_PULLUP);
  pinMode(WIO_5S_RIGHT, INPUT_PULLUP);
  pinMode(WIO_5S_PRESS, INPUT_PULLUP);

  //pinMode(BUZZER_PIN, OUTPUT);

      tft.fillScreen(TFT_BLACK);
      tft.drawString("Power On",10,10);

}

void loop() {
  // ------------------ Input Data ----------------------
   if(Serial.available()>0){
     String s = Serial.readString();
   if(s =="a\n") {
      //tft.fillScreen(TFT_BLACK);
      tft.drawString("get A",80,100);
   } else  {
      //tft.fillScreen(TFT_BLACK);
      tft.drawString(s,80,100);
   }
 }
 
  // ------------------ Button  ----------------------
if (digitalRead(WIO_KEY_B) == LOW){ // function
  if (digitalRead(WIO_5S_PRESS) == LOW) { //=== Shutdown
     Serial.print("sd\n");
      tft.fillScreen(TFT_BLACK); 
      tft.drawString("shutdown!!",10,10);
     delay(500);
    }
   }
}
コメント    この記事についてブログを書く
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« motorola edge20が期待よりか... | トップ | メガドラミニ2、お前もか »
最新の画像もっと見る

コメントを投稿

パソコン/マイコン全般」カテゴリの最新記事