Arduino Zeroとは何か?何に使われるのか?どのような開発プロジェクトに利用できるのか?

最終更新: 15/09/2022
Arduino Zeroとは何か、何に使われるのか、そしてどのような開発プロジェクトに利用できるのか。

Arduino ZEROボード これは、次のようなユーザー向けに設計されています。 彼らは自分たちがサポートできないプロジェクトを実行する 定番のArduino UNOこれは、MCUの処理能力、フラッシュメモリ、およびCPUクロックに起因するものです。

したがって、Arduino ZEROボードとは何か、そしてこれらのボードが電子機器においてどのような用途で使用されるのかを知っておくことが重要です。 この情報は、この記事の各段落に記載されています。

さらに、 Arduino ZEROを使用する際に考慮すべきボードの主な特徴と基準この高性能マザーボードをチェックしてみてください。

Arduino Zeroボードとは何ですか?また、これらの開発ボードは電子工学においてどのような用途で使用されるのですか?

プレート Arduino ZERO これは、電子バスを含むデバイスです。 32ビットコア ATMEL Cortex-M0 SAMD21 MCU. を有することが特徴である. プログラムのデバッグまたはデバッグが可能になり、ユーザーは外部ハードウェアを必要としなくなります。

必要な技術はすべて揃っています IoTプロジェクトに取り組んでいる他のボードと比べてパフォーマンスが若干劣ることを明確にする必要がある。 対応電圧は3.3Vです。ピン4を除くすべてのピン、 彼らは外部からの妨害にも耐えられる タイプ0と1。一方、入力と出力の両方の直流電流は 7ミリアンペア CPUクロック速度は 48 MHz.

特徴:このArduinoボードの主な特徴は何ですか?

特徴:このArduinoボードの主な特徴は何ですか?

このArduinoボードの主な特徴は以下のとおりです。 

  • 働くのに最適です ロボット工学、自動化、技術プロジェクト.
  • を所有している 埋め込み型スクラバー ハードウェアに接続する MCU これにより、 SAMD21 インターフェースを介して SWD。 これにより、マイクロコントローラへの完全なアクセスが可能になり、プログラムコードを操作して変更することも可能になります。
  • Arduino ZEROが持つ外部電源 電源はセンタープラスのコネクタ、またはこの2,1mmコネクタのヘッダーにあるGNDピンとVINピンを介して供給されます。つまり、ボードに電源を供給するためのUSBポートはありません。
  • たくさん PWMは3、4、5、6、8、9、10、11、12、13です。一方、 アナログ入力 彼らは A0からA5出力電圧はDAC(DAC)のA0チャンネルで得られます。
  • SPIは SS、MOSI、MISO、SCK 皿の。
  • 彼は正常に動作する腕時計を所有している。 48MHz、 つまり、リアルタイムとカレンダーの両方をカウントできるということです。

Arduino ZEROボードを使用する際に注意すべき点は何ですか?

Arduino ZEROボードを使用する際に注意すべき点は何ですか?

まず最初に知っておくべきことは、 Arduino ZEROは3.3Vの電圧で動作します。他のマザーボードと比べて若干低い値になっています。そのため、マイクロプロセッサやその他の部品を損傷する可能性があるため、この制限を考慮に入れる必要があります。 あなたはIDEで作業します そしてモニターを開くマイクロコントローラとスケッチの実行は再起動されないため、ソフトウェアダッシュボードにあるボタンを使用してプロセスを再起動する必要があります。 Arduino。

USB入力経由では電源が供給されません。2,1mmコネクタを別の回路接続に使用したい場合は、プロジェクトが複雑になる可能性があります。最後に、 プロジェクトに割り当てるプロセスの数には注意が必要です。このマザーボードは、 Arduino UNO 高性能なマイクロコントローラ、十分なメモリ、そして48MHzのクロックを備えている場合は、それらに与える負荷に常に注意を払う必要があります。

Arduino ZEROボードでできる最高のプロジェクト一覧

Arduino ZEROボードで実行できる最高のプロジェクトをご紹介します。

Wi-Fiで制御されるNeoPixelディスプレイ

Wi-Fiで制御されるNeoPixelディスプレイ

このプロジェクトでは、 ネオピクセル によって管理されます WiFi。 一つ必要になるでしょう Arduino ZEROボードネオピクセルタイプのリングライト、複数のLED、ブレッドボード、1000μFのコンデンサ、475Ωの抵抗器、そして配線用のワイヤーが必要です。組み立てはご自身で行っていただく必要があります。 部品の説明と仕様に従って そして、ボード上のピンを考慮すると、この投稿で議論したすべてのことに従って、

アセンブリの準備ができたら、次のコードを入力する必要があります。

#含む#含む#define PIN 12 #define NUMPIXELS 10 #define interval 50 #define wifiRetryTimes 0 Adafruit_NeoPixel pixels = Adafruit_NeoPixel ( NUMPIXELS , PIN , NEO_GRB + NEO_KHZ800 ); uint32_t red = pixels . Color ( 255 , 0 , 0 ); uint32_t blue = pixels 。 色 ( 0 , 0 , 255 ); uint32_t green = pixels 。 Color ( 0 , 255 , 0 ); uint32_t pixelColour ; uint32_t lastColor ; float activeColor [] = { 255 , 0 , 0 }; IPAddress apIP ( 192 , 168 , 0 , 150 ); IPAddress netMsk ( 255 , 255 , 255 , 0 ); IP Address gw ( 192 , 168 , 0 , 1 ); dns IP Address ( 192 , 168 , 0 , 1 ); string IP ; char APssid [] = "MKR1000" ; char APpass [] = "MKR1000" ; char ssid [] = "YourSSID" ; char pass [] = "YourPassword" ; int keyIndex = 0 ; int status = WL_IDLE_STATUS ; WiFiServer Server ( 80 ); const char html1 [] PROGMEM = "<! DOCTYPE html>  Neopixel カラーピッカー < / title > " " < style type = 'text / css' >. bt {display: block; width: 250px; height: 100px; padding: 10px; margin: 10px; text-align: center; border-radius: 5px; colour: white; font-weight: bold; font-size: 40px; text-decoration: none;} body {background: #000;} " ".red {background: red; color: white;}. 緑色 {背景: # 0C0; 色: 白;}。 青 {背景: 青; 色: 白;}" ".白 {背景: 白; 色: 黒; 境界線: 1px 実線 黒;}。 off {background: #666; color: white;}。 colorPicker {背景: 白; 色: 黒;}。 colorWipe {font-size: 40px; background: linear-gradient(right, red, #0C0, blue);} " ".theatreChase {font-size: 40px; background: linear-gradient(right, red, black, red, black, #0C0, black, #0C0, black, blue, black, blue);}" ".rainbow {font-size: 40px; background: red; background: linear-gradient(right, red, orange, yellow, green, blue, indigo, violet, red, orange, yellow, green, blue, indigo, violet) );} " ".rainbowCycle {font-size: 40px; background: red; background: linear-gradient(right, red, orange, yellow, green, blue, indigo, violet);}" ".rainbowChase {font-size: 40px; background: red; background: linear gradient (右へ、赤、黒、オレンジ、黒、黄、黒、緑、黒、青、黒、藍、黒、紫); } " ; const char html2 [] PROGMEM = ".breathe {background: blue; color: white;}. サイロン {背景: 赤; 色: 黒;}。 心拍 {背景: 赤; 色: 白;}。 CHRISTMAS {フォントサイズ: 40px; 背景: 赤; 背景: 線形グラデーション (右、赤、緑、赤、緑、赤、緑、赤、緑、赤、緑、赤、緑);} " ".ALL {背景: 白; 色: 青;}. そして {background: #EE0; height: 100px; width: 100px; border radius: 50px;}。 B { background: #000; height: 100px; width: 100px; border-radius: 50px;}。 A {font-size: 35px;} td {vertical-align: middle;} " "td {vertical-align: middle;} 「」 " ;

const char  html3 []  PROGMEM  =

"función ResetWebpage () {if (window.location.href! = 'http: // # IPADDRESS /') {window.open ('http: // # IPADDRESS /', '_ self', true)}};" // ここでウェブサイトの値を静的ウェブサイトに変更します "function myFunction () {document.getElementById ('brilloLevel'). 提出する();} 「」 v = 1 '> 赤カラーワイプ「」緑シアターチェイス「」青虹「」白レインボーチェイス" ; const char html4 [] PROGMEM = "サイロンチェイサーレインボーサイクル「」息をする心拍「」クリスマスオールサイクル「」無効化済み 「」 " ; String sendHtml3 = html3 ; String sendHtml4 = html4 ; String currentLine; boolean NeoState[] = {false, false, false, false, false, false, false, false, false, false, false, false, false, false, true}; //Neopixel 機能をアクティブ化 (デフォルトではオフ) int neopixMode = 0; long previousMillis = 0 ; long lastAllCycle = 0 ; long previousColorMillis = 0 ; int i = 0 ; int vent = 0 ; int beat = 0 ; ; uint32_t lastAllColor = 0 ; empty configuration () { pixels . 開始(); ピクセル。 setBrightness (brightness); writeLEDS ( 0 , 0 , 0 ); Serial. begin ( 9600 ); Serial 。 println(ssid); if (WiFi. status () == WL_NO_SHIELD ) { Serial . println(F("WiFiシールドがありません")); while(true); } WiFi。 config ( apIP ); //WiFi.config(apIP, dns, gw, netMsk); while ( status ! = WL_CONNECTED ) { for ( int x = 0 ; x <= wifiRetryTimes ; x ++ ) { Serial . print(F("指定された名前のネットワークに接続しようとしています:")); Serial. println(ssid); } Serial. print(F("Wi-Fiに接続できませんでした")); state = WiFi. beginAP (APssid); // APを作成します - IPは現在192.168.1.1で静的です // state = WiFi.beginAP(APssid, APpass); delay ( 10000 ); break ; } printWifiStatus (); sendHtml3 . replace ( "#IPADDRESS" , IP ); sendHtml4 . replace("#BRIGHT", "150"); シリアル。 println(F("USPサーバーが起動しました!!") )); サーバー。 begin(); シリアル。 println(F("HTTPサーバーが起動しました!!") )); } 空のループ () { WiFiClient Client = server . available(); if (client) { println(F("new client")); currentLine = ""; while (client.connected()) { if (client.available()) { char c = client.read(); Serial. write ( c ); if ( c == '\ n' ) { client . println("コンテンツタイプ: text/html"); client. println(); クライアント。 print(F(html1)); 顧客。 print(F(html2)); 顧客。 print (sendHtml3); customer . print (sendHtml4); customer . println(); break; } else { // 新しい行がある場合は、currentLine を削除する必要があります: if (currentLine. indexOf ( "Referer" ) < 0 ) { // 返された値に Referer が含まれていない場合は常に実行されます if ( currentLine . indexOf("/L00") > 0) { // 文字列に /L00 が存在する場合 handle_L00(); // 関数を実行する } if (currentLine. indexOf ( "/L01" ) > 0 ) { handle_L01 (); } if ( currentLine . indexOf ( "/L02" ) > 0 ) { handle_L02 (); } if ( currentLine . indexOf ( "/L03" ) > 0 ) { handle_L03 (); } if ( currentLine . indexOf ( "/L04" ) > 0 ) { handle_L04 (); } if ( currentLine . indexOf ( "/L05" ) > 0 ) { handle_L05 (); } if ( currentLine . indexOf ( "/L06" ) > 0 ) { handle_L06 (); } if ( currentLine . indexOf ( "/L07" ) > 0 ) { handle_L07 (); } if ( currentLine . indexOf ( "/L08" ) > 0 ) { handle_L08 (); } if ( currentLine . indexOf ( "/L09" ) > 0 ) { handle_L09 (); } if ( currentLine . indexOf ( "/L10" ) > 0 ) { handle_L10 (); } if ( currentLine . indexOf ( "/L11" ) > 0 ) { handle_L11 (); } if ( currentLine . indexOf ( "/L12" ) > 0 ) { handle_L12 (); } if ( currentLine . indexOf ( "/L13" ) > 0 ) { handle_L13 (); } if ( currentLine . indexOf ( "/L14" ) > 0 ) { handle_L14 (); } if ( currentLine . indexOf ( "bright" ) > 0 ) { handle_bright (); } } currentLine = "" ; } } else if ( c ! = '\r' ) currentLine + = c ; } if ( currentLine . endsWith("/generate_204")) { handle_root(); } } } // 接続を閉じます: client. stop(); シリアル。 println(F("クライアントが切断されました")); } NeoPixModes(); }

温度値の記録

温度値の記録

お皿が必要です Arduino MKRゼロ100 nFのコンデンサ、4.75 kΩの抵抗器、温度・湿度センサー、挿入基板、ケーブル、およびMicroSDカード。 このプロジェクトは、お使いのデバイスで記録された温度と湿度の値を記録することを目的としています。

あなたはしなければならない Arduinoをブレッドボードに組み立てる次に、温度・湿度センサーをブレッドボードに接続します。その後、センサーの電源ピンを接続する必要があります。 VCCピンに接続し、最後にセンサーのデータピンをピン7に接続します。完了したら、湿度温度センサーのグランドピンをピンに接続する必要があります。 GND プレートから Arduino。 次に、コンデンサを GND耐久。

完了したら、以下のコードを入力する必要があります。

#含む#含む#含む#define DHTPIN 7 #define DHTTYPE DHT22 DHT dht(DHTPIN, DHTTYPE); const int chipSelect = SS1; unsigned long previousTime; int loadDataCheck; RTCZero rtc; const byte seconds = 50; const byte minutes = 44; const bytehours = 17; const byteday = 1; const byte month = 9; const byte year = 16; void setup() { pinMode(LED_BUILTIN, OUTPUT); begin(9600); println("データロガーの例:"); if (!SD.begin(chipSelect)) { println("カードが故障しているか、存在しません"); return; } println("カードが初期化されました。"); // DHT22 センサーに電源が供給されたら、 // 不安定な状態を解消するために、 // 1 秒以内にセンサーに指示を送信しないでください delay(1000); println("DHT を初期化しています"); begin(); println("RTC を初期化しています"); begin(); setTime(hours, minutes, seconds); setDate(day, month, year); setAlarmTime(0, 0, 0); enableAlarm(rtc.MATCH_SS); attachInterrupt(dataCheck); loadDataCheck=0; previousTime=millis(); println("システム準備完了..."); } void loop() { unsigned long currentTime=millis(); if ((currentTime-previousTime)>5000) { digitalWrite(LED_BUILTIN, HIGH); delay(100); digitalWrite(LED_BUILTIN, LOW); previousTime=millis(); } if (loadDataCheck) logData(); } void dataCheck(){ loadDataCheck=1; } void logData(void) { float humidity = dht.readHumidity(); float temperature = dht.readTemperature(); String dataString = ""; dataString += "Temperature: " + String(temperature) + " C" + "\t" + "Humidity: " + String(humidity) + "%\t" + "Time: " + getTime(); File dataFile = SD.open("datalog.txt", FILE_WRITE); // ファイルが利用可能な場合は、書き込みます。 if (dataFile) { println(dataString); close(); // シリアルポートにも出力します。 println(dataString); } String getTime(void) { String returnString = ""; if (rtc.getHours() < 10) returnString += "0" + String(rtc.getHours()); else returnString += String(rtc.getHours()); returnString += ":"; if (rtc.getMinutes() < 10) returnString += "0" + String(rtc.getMinutes()); else returnString += String(rtc.getMinutes()); returnString += ":"; if (rtc.getSeconds() < 10) returnString += "0" + String(rtc.getSeconds()); else returnString += String(rtc.getSeconds()); return returnString; }

Arduino Zero Robot

Arduino Zero Robot

Arduinoボードを使ってロボットを作ることができますそのためにはアダプターが必要です Arduino MKR2UNOArduino MotorShield Rev3ボード、DCモーター、配線、バッテリー 9V。 これらの材料が揃ったら、モーターを接着し、部品に指示された接続を行うことで組み立てる必要があります。

次に、以下のコードを入力する必要があります。

#include <SPI.h>

#include <WiFi101.h>

#include <WiFiMDNSResponder.h>

#include "arduino_secrets.h"

char ssid[] = SECRET_SSID;

char pass[] = SECRET_PASS;

int keyIndex = 0;

char mdnsName[] = "WiFiRobot";

int status = WL_IDLE_STATUS;

WiFiServer server(80);

String readString;

const int pinDirA = 12;

const int pinDirB = 0;

const int pinPwmA = 3;

const int pinPwmB = 11;

const int pinBrakeA = 9;

const int pinBrakeB = 8;

const int motorSpeed = 200;

const int stepsDelay = 500;

void setup() {

pinMode(pinDirA, OUTPUT);

pinMode(pinPwmA, OUTPUT);

pinMode(pinBrakeA, OUTPUT);

pinMode(pinDirB, OUTPUT);

pinMode(pinPwmB, OUTPUT);

pinMode(pinBrakeB, OUTPUT);

brake();

begin(9600);

if (WiFi.status() == WL_NO_SHIELD) {

println("WiFi shield not present");

// don't continue:

while (true);

}

while ( status != WL_CONNECTED) {

print("Attempting to connect to SSID: ");

println(ssid);

status = WiFi.begin(ssid, pass);

delay(10000);

}

printWiFiStatus();

begin();

if (!mdnsResponder.begin(mdnsName)) {

println("Failed to start MDNS responder!");

while (1);

}

print("Server listening at http://");

print(mdnsName);

println(".local/");

println();

}

void loop() {

poll();

WiFiClient client = server.available();

if (client) {

println("new client");

boolean currentLineIsBlank = true;

while (client.connected()) {

if (client.available()) {

char c = client.read();

readString += c;

write(c);

if (c == '\n' && currentLineIsBlank) {

// send a standard http response header

println("HTTP/1.1 200 OK");

println("Content-Type: text/html");

println("Connection: close");

//client.println("Refresh: 5");

println();

println("<!DOCTYPE HTML>");

println("<head><title>WiFi Robot</title></head>");

println("<center><hr/><p> Click the Buttons to move the robot <p/><hr/></center>");

println("<center><input type=button value='GO UP' onmousedown=location.href='/?GO_UP'></center><br/>");

println("<center><left><input type=button value='GO LEFT' onmousedown=location.href='/?GO_LEFT'><input type=button value='GO RIGHT' onmousedown=location.href='/?GO_RIGHT'></center><br/>");

println("<center><input type=button value='GO DOWN' onmousedown=location.href='/?GO_DOWN'></right></center><br/><br/>");

println("<hr/>");

println("</body>");

println("</html>");

break;

}

if (c == '\n') {

currentLineIsBlank = true;

}

else if (c != '\r') {

currentLineIsBlank = false;

}

}

}

delay(1);

stop();

if (readString.indexOf("/?GO_UP") > 0) {

println();

println("UP");

println();

goUp();

}

if (readString.indexOf("/?GO_DOWN") > 0) {

println();

println("DOWN");

println();

goDown();

}

if (readString.indexOf("/?GO_LEFT") > 0) {

println();

println("LEFT");

println();

goLeft();

}

if (readString.indexOf("/?GO_RIGHT") > 0) {

println();

println("RIGHT");

println();

goRight();

}

readString = "";

println("client disconnected");

}

}

void printWiFiStatus() {

print("SSID: ");

println(WiFi.SSID());

IPAddress ip = WiFi.localIP();

print("IP Address: ");

println(ip);

long rssi = WiFi.RSSI();

print("signal strength (RSSI):");

print(rssi);

println(" dBm");

}

void goDown(void) {

motorAforward();

motorBforward();

delay(stepsDelay);

brake();

}

void goUp(void) {

motorBbackward();

motorBbackward();

delay(stepsDelay);

brake();

}

void goLeft(void) {

motorAforward();

motorBbackward();

delay(2*stepsDelay);

brake();

}

void goRight(void) {

motorBforward();

motorAbackward();

delay(2*stepsDelay);

brake();

}

void motorAforward(void) {

digitalWrite(pinDirA, HIGH);

digitalWrite(pinBrakeA, LOW);

analogWrite(pinPwmA, motorSpeed);

}

void motorAbackward(void) {

digitalWrite(pinDirA, LOW);

digitalWrite(pinBrakeA, LOW);

analogWrite(pinPwmA, motorSpeed);

}

void motorBforward(void) {

digitalWrite(pinDirB, HIGH);

digitalWrite(pinBrakeB, LOW);

analogWrite(pinPwmB, motorSpeed);

}

void motorBbackward(void) {

digitalWrite(pinDirB, LOW);

digitalWrite(pinBrakeB, LOW);

analogWrite(pinPwmB, motorSpeed);

}

void brake(void) {

digitalWrite(pinBrakeA, HIGH);

digitalWrite(pinBrakeB, HIGH);

}
電子書籍 IPAP
電子ブック IPAP

🔥新しいIP@Pコミュニティに参加しよう🔥!こちらから登録!

トピック

著者:フェリックス・アルボルノス

私はテクノロジー分野で20年以上の経験があり、企業やユーザーのこの分野における開発やトレーニングを支援してきました。常に新しいことを学び続けています。

関連