7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

身の回りの困りごとを楽しく解決! by Works Human IntelligenceAdvent Calendar 2023

Day 1

《WOKWI》オンライン シミュレータ のすすめ

Last updated at Posted at 2023-12-03

0. はじめに

無料で、オンラインで使える、ハードウェア シミュレータを紹介します。

シミュレーションできるマイコンボードは、以下のラインナップ。

  • Arduino Uno / Mega / Nano
  • ESP32 / ESP32-Sx / ESP32-Cx
  • STM32
  • Raspberry Pi Pico
  • ATtiny85

ただ単にSoC(MCU)をシミュレーションするだけではなく、周辺デバイスや開発環境を含めてシミュレーションできます。

使える開発環境は、Arduino環境、Micropython環境 と Rust環境。Raspberry Pi Pico のみ CircuitPthon環境も。

つまり、オンラインで、マイコンとセンサーやデバイスを組み合わせて配線して、C/C++やPythonでコードを書いて、そのコードをオンラインで、すぐに実行できるのです。便利だ。

以下の動画は、ATTiny85とLEDを6本使って、下記のスケッチ(プログラム)で動作させた結果です。

attiny85_led.gif

sketch.ino
int pins[] = {PB2, PB1, PB0, PB4, PB3, PB5};

void setup() {
  // put your setup code here, to run once:
  for (int n=0; n<6; n++) {
    pinMode(pins[n], OUTPUT);
  }
}

void loop() {
  // put your main code here, to run repeatedly:
  static int currect_pin = 0;
  static int previous_pin = 0;
  digitalWrite(pins[previous_pin], LOW);
  digitalWrite(pins[currect_pin], HIGH);
  previous_pin = currect_pin;
  currect_pin = (++currect_pin) % 6;
  delay(100);
}

1. WOKWI

そのオンライン シミュレータは、WOKWI です。

wokwi.png

ボードを選んで、すでに公開されているプロジェクトを流用するも良し、新規で作るも良し。

2. 配線図を書く

まずは、WOKWIでサポートしているパーツ(センサーやデバイス)を使用して、配線図を書きます。

↓赤丸したアイコンをクリックすると、使用できるパーツのリストが表示されます。
wokwi1.png
wokwi2.png

パーツ類は、以下のラインナップ。

Categoly Parts
Basic led.png LED
pushbutton.png Pushbutton
resistor.png Resistor
Display rgb-led.png RGB LED
board-ssd1306.png SSD1306 OLED display
lcd1602.png LCD 16x2
lcd1602-i2c.png LCD 16x2 (I2C)
lcd2004.png LCD 20x4
lcd2004-i2c.png LCD 20x4 (I2C)
ili9341.png ILI9341 2.8" TFT-LCD display
board-ili9341-cap-touch.png ILI9341 2.8" Touch Screen LCD
max7219-matrix.png LED Dot Matrix (MAX7219)
neopixel.png NeoPixel Compatible LED (WS2812)
led-ring.png NeoPixel Compatible LED Ring (WS2812)
neopixel-meter.png NeoPixel Meter
7segment.png Seven Segment Display
7segment-4digit.png Seven Segment Display (4 digits)
tm1637-7segment.png Seven Segment Display (TM1637)
led-bar-graph.png LED Bar Graph
board-epaper-2in9.png 2.9" e-Paper Display (beta)
Input slide-switch.png Slide switch
analog-joystick.png Analog Joystick
74hc595.png 74HC595 Shift Register
74hc165.png 74HC165 Input Shift Register (PISO)
dip-switch-8.png DIP Switch 8
hx711-5kg.png HX711 Load Cell (5kg)
hx711.png HX711 Load Cell (50kg)
ir-receiver.png IR Receiver
ir-remote.png IR Remote
ky-040.png Rotary Encoder (KY-040)
membrane-keypad.png Keypad
potentiometer.png Potentiometer
slide-potentiometer.png Slide Potentiometer
board-cd74hc4067.png 16 Channel Analog Multiplexer (CD74HC4067)
Sensor hc-sr04.png HC-SR04 Ultrasonic Distance Sensor
dht22.png DHT22
ds18b20.png DS18B20 Temperature Sensor (beta)
pir-motion-sensor PIR Motion Sensor
ntc-temperature-sensor.png Analog Temperature Sensor (NTC)
photoresistor-sensor.png Photoresistor (LDR) Sensor
mpu6050.png MPU6050 Accelerometer + Gyroscope
ds1307.png DS1307 RTC
Output buzzer.png Buzzer
servo.png Servo
stepper-motor.png Bipolar Stepper Motor
a4988.png A4988 Stepper Motor Driver
biaxial-stepper.png Biaxial Stepper Motor
nlsf595.png NLSF595 SPI Tri-Color LED Driver
relay-module.png Relay Module
ks2e-m-dc5.png DPDT Relay
Breadboard breadboard.png Breadboard
breadboard-half.png Half Breadboard
breadboard-mini.png Mini Breadboard
Misc logic-analyzer.png Logic Analyzer (8 channels)
microsd-card.png microSD card
logo.png Wokwi Logo
custom-chip.png Custom Chip
Power vcc.png VCC Symbol
gnd.png GND Symbol
Logic gate-not.png NOT gate
gate-and-2.png AND gate
gate-or-2.png OR gate
gate-xor-2.png XOR gate
gate-nand-2.png NAND gate
mux-2.png MUX
flip-flop-d.png Flip-Flop D
flip-flop-dsr.png Flip-Flop DSR

普通の電子工作なら、十分なライナップだと思います。

配置したセンサーやデバイスのピンにマウスを当てると、簡単に配線できます。
SPIやI2Cデバイスなど、信号線が決まっているピンで、マイコン側で使えるピンが制限される場合は、使えるピンが目立つように工夫されているので、リアルな配線より、配線間違いは起こし難いように思います。

配線中はマウスクリックすると、そこまでの配線を確定することができます。使ってみればすぐに要領がつかめると思います。

なお、すべてのパーツ類はVCCとGNDの配線は省略できます(ブレッドボードでは、そうは行かないので、地味にありがたい)。

3. コードを書く

配線が終わったら、コードを書きます。ほとんど、Arduino IDEでコードを書いているのと変わらない感覚です。サジェストも出ます。

wokwi3.png

4. 実行

回路図側の ▶︎アイコンをクリックすると、ビルドされて実際にシミュレーションが開始されます。

コンパイルエラーがある場合は、エラーメッセージがポップ表示されます。

attiny85_led.gif

■アイコンクリックで終了、
Pause(‖)アイコンをクリックすると、一時停止するのですが、その時は、各ピンの現在の情報が表示されます。

wokwi4.png

5. Micropython環境 を試してみる

パーツ一覧にある SD-CardスロットをESP32に接続して、自分が以前投稿した記事のコードを試してみる。

起動すると、画面右下にREPLの領域がちゃんと出てくる。ESP32を起動した時のログまで表示され本格的だ。
REPLにPythonコードを打ち込んでもよいが、左側のペインにmain.pyが表示されていたので、ここに以前書いたSDカードをアクセスするコードをコピペして実行させた。

黄色線で囲った出力が、このコードの出力結果だ。実機と全く同じでSDカードに読み書きできています。

wokwi5.png

6. おわりに

つい先日、こんなすごいオンライン シミュレータが無料で利用できることに驚いて、急いでこの記事を書きました。

【WOKWI CLUB】課金すると、ローカルに環境を作れて、VSCode上でシミュレーションが行えたり、パーツや使用するライブラリが自由に追加できるようです。
また、本格的なロジックアナライザでプロトコル解析も行えるようです。

無料枠でも十分使えるので、ブレッドボードで回路を組むよりも手軽だし、コードの検証もできるので、今後、どんどん利用したいと思います。

マウス操作でスイッチ類のオン/オフは操作できますが、マウス操作できないInput系のセンサーやデバイスを使う場合は、コード上で工夫が必要みたいです。例えば、温度センサーをつないでも、実際の室温を測ってくれませんから。

使ってみればすぐに慣れると考え、今回は詳しい使い方の説明は省きました。
もう少し網羅的に知りたい方は、(英語ですが)以下の動画が参考になると思います。

自分が持っていないセンサーやデバイスを使ってみるのも面白そうです。

以上




WOKWI


ドキュメント(英語、ドイツ語、ブラジル語、中国語)


Micropython環境 直リンク


Rust環境 直リンク


CircuitPython環境 直リンク(Raspberry Pi Picoのみ)

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?