Wokwi:免費的ESP32開發板Arduino, MicroPython線上模擬器(一)

Wokwi是免費的線上Arduino, ESP32和Raspberry Pi Pico開發板模擬器(simulator),支援的程式語言包括Arduino, MicroPythonCircuitPython(由美國一家電子零組件供應商Adafruit公司主導,從MicroPython衍生出的另一種適用於微電腦控制板的Python 3執行環境)。

Wokw首頁

Wokwi完全在網頁瀏覽器運作,所以你可以在手機、平板和電腦上編輯模擬電路和程式碼。目前支援下列開發板:

模擬器能幫助工程師在實驗階段驗證不同的設計和演算法;“Wokwi”是開發團隊腦力激盪之後挑選出比較簡短、容易發音的名字,沒有特別的意義。跟Autodesk(歐特克)公司旗下的TinkerCAD相比,Wokwi的介面稍嫌陽春,可用的電子元件和模組也比較少,畢竟是新創公司,有很大的被併購發展潛力,重點是Wokwi支援ESP32和MicroPython。你可以在Wokwi的Github頁面提出新功能要求。

題外話,最近Steam平台上有個「電工模擬」遊戲“Electrician Simulator”,第一章(First Shock,代表「首次觸電」)免費試玩。玩家在遊戲中扮演電工技師,維修室內電源配線和各種家電,遊戲裡面還有Arduino UNO相容板 🙂 這遊戲應該發展成電工線上培訓教室,通關之後再參加實境模擬測驗,就可以拿到元宇宙電工執照。

「電工模擬」遊戲

還有一個PC Building Simulator(組裝PC模擬器),有Windows, PS4, Switch和Xbox遊戲機版本,能讓玩家體驗組裝和改造個人電腦。這款遊戲的評價居然低於Goat Simulator(山羊模擬器)和Untitled Goose Game(無標題的鵝遊戲)…嗯,現實世界已經夠折磨了,在元宇宙投胎當小動物比較自在。

線上模擬執行ESP32 Arduino程式

點擊Wokwi首頁上的開發板,即可編輯電路和程式碼。

選擇開發板

點擊首頁上的“MORE OPTIONS”(更多選項),可選擇其他控制板或者ESP32 MicroPython程式開發。本文範例採用ESP32和Arduino語言。

你也可以直接點擊底下的超連結,直接進入ESP32開發板和Arduino程式編輯頁面。

https://wokwi.com/arduino/new?template=esp32

如果網址後面不加“template=esp32”參數,預設控制板將是Arduino UNO,你可以點擊這個網址試試:

https://wokwi.com/arduino/new

在網址後面加上“lang=zh”參數,介面的選單內容將變成簡體中文。此網站的中文化仍持續進行中,所以多數內容只有英文。

https://wokwi.com/arduino/new?template=esp32&lang=zh

在模擬電路中加入NeoPixel(WS2812)全彩LED色環元件

WS2812是一種全彩LED晶片,內含紅、綠、藍三色LED以及一個控制IC,封裝尺寸為5mmx5mm(通稱5050型),工作電壓介於4~7V,通常接5V。光是接上電源,WS2812不會發光,因為它的LED全都由內部的IC控制。

WS2812元件

Adafruit公司將WS2812晶片取名為NeoPixel(直譯為「霓虹像素」)。DIY實驗購買的通常都是已焊接在PCB板的WS2812 LED模組,而非單獨的WS2812晶片。NeoPixel模組有不同晶片數量,常見的外觀有矩形、圓環和燈條型式。

NeoPixel模組

NeoPixel模組有4個接腳,以序列通訊方式傳遞色彩資料,模組上的每個晶片可以個別設定顏色。Adafruit公司開發了一個控制NeoPixel模組的Arduino程式庫,叫做“Adafruit_NeoPixel”。

  • Vcc電源
  • GND接地
  • Din資料輸入:接微電腦開發板的數位輸出腳
  • Dout資料輸出:用於串接另一個NeoPixel模組

按一下Wokwi電路編輯畫面的「+」:

新增元件

點擊選單中的NeoPixel環(NeoPixel Ring)模組:

點擊NeoPixel環(NeoPixel Ring)模組

環狀的NeoPixel模組就被加入編輯畫面:

NeoPixel模組

基本電路編輯功能介紹

按著編輯畫面上的電子元件或開發板不放,可拖曳改變它的位置。

點擊元件或開發板,選定它,每按一次R鍵(代表Rotation,旋轉),可旋轉90度。

旋轉元件

點擊元件或開發板,選定它,再按一下Del鍵,可刪除它。

點擊NeoPixel模組的GND(接地腳),將能引出一條黑色導線,ESP32開發板上的GND接腳也會呈現反白提示。再點擊ESP32開發板的任一GND腳,兩邊的接地就相連在一起了。

連接導線

接線過程中,按一下ESC鍵,可取消接線。

如果接錯線,按一下線條兩端以外的部份,可選取它,再點擊一次可刪除它。

依照下圖連接NeoPixel環和ESP32開發板,NeoPixel模組的資料輸入接ESP32的數位12腳(你可以接其他數位腳,但底下的程式碼要跟著修改)。線條顏色不重要,下一篇貼文再介紹如何改變接線顏色。

連接NeoPixel與ESP32

在電路編輯畫面滾動滑鼠滾輪,或者按一下+或-鍵,可放大或縮小電路。按一下F鍵(代表Fit,符合),電路將自動縮放到符合窗格的顯示尺寸。

按著電路的空白處拖曳,可拖動整個電路。

測試NeoPixel Arduino程式

Wokwi模擬器環境已內建Adafruit_NeoPixel程式庫,請將底下的程式碼貼入Wokwi程式編輯器窗格:

#include <Adafruit_NeoPixel.h>
#define PIN    12  // NeoPixel的接腳
#define PIXELS 16  // NeoPixel模組的晶片數量

// 建立NeoPixel控制程式物件
Adafruit_NeoPixel strip = Adafruit_NeoPixel(PIXELS, PIN, NEO_GRB + NEO_KHZ800);

uint32_t Wheel(byte WheelPos) {
  WheelPos = 255 - WheelPos;
  if(WheelPos < 85) {
    return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);
  }
  if(WheelPos < 170) {
    WheelPos -= 85;
    return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);
  }
  WheelPos -= 170;
  return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
}

// 虹彩燈光效果
void rainbow(uint8_t wait) {
  uint16_t i, j;

  for(j=0; j<256; j++) {
    for(i=0; i<strip.numPixels(); i++) {
      strip.setPixelColor(i, Wheel((i+j) & 255));
    }
    strip.show();
    delay(wait);
  }
}

void setup() {
  strip.begin();   // 啟動NexoPixel
  strip.setBrightness(255);  // 設定亮度(最亮)
  strip.show();    // 顯示燈光
}

void loop() {
  rainbow(50);  // 間隔50毫秒,顯示虹彩。
}

然後按一下模擬器畫面的三角形(開始模擬)鈕,過一會兒,NeoPixel模組的LED將輪流發光。

執行中的模擬電路

延伸閱讀

Posts created 469

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

Related Posts

Begin typing your search term above and press enter to search. Press ESC to cancel.

Back To Top