2023 年 8 月の組み込みプロジェクト開発トピックの概要

I.はじめに

この記事では、組み込みシステムと C 言語開発をベースにした一連のプロジェクトを紹介します。これらのプロジェクトは、自動化制御からゲーム開発、コンピュータ ネットワークからモノのインターネット アプリケーションに至るまで、さまざまな分野をカバーしています。これらのプロジェクトの開発プロセスを通じて、さまざまなテクノロジーとソリューションが深く探求され、関連する経験と知識が共有されます。

この記事では、STM32 に基づいて自動ブレーキ ライトとタクシー充電システムを設計します。これら 2 つのプロジェクトは、STM32 マイクロコントローラーを使用して車両の安全性とインテリジェントな交通管理を実現する方法を実証します。ハードウェアとソフトウェアの設計原則が詳細に説明され、詳細なコード例と回路図が提供されます。

51 マイクロコントローラーは、STM32+ Huawei Cloud IOT 設計に基づく DC モーター速度調整とインテリジェント カーテン制御システムを実現するために使用されます。これらのプロジェクトは、組み込みシステムのモーター制御と IoT アプリケーションに関する洞察を提供します。速度規制の原理、制御戦略、外部クラウドプラットフォームとの通信方法を紹介します。

組み込みシステム開発に加えて、スネーク ゲーム、プッシュ ボックス、検証アルゴリズムなど、いくつかの興味深い C 言語の例も取り上げられています。これらのサンプル プロジェクトは C 言語の応用を示し、プログラミング スキルと思考力の向上に役立ちます。

最後に、Linux 上で C 言語の libcurl ライブラリを呼び出し、ローカルにファイルをダウンロードして天気予報情報を取得する方法を紹介します。これらのプロジェクトは、Linux 環境でのネットワーク プログラミングの基礎を理解するのに役立ち、実用的なコード例を提供します。

これらのプロジェクトを学ぶことで、豊富なプロジェクト開発経験と実践的な技術知識を得ることができます。

ここに画像の説明を挿入します

2. プロジェクトディレクトリ

【1】STM32に基づいて設計された自動ブレーキランプ

https://bbs.huaweicloud.com/forum/thread-0222126235596594014-1-1.html

科学技術の発展に伴い、低炭素環境保護に対する人々の意識と要求は絶えず高まっています。サイクリングは低炭素で環境に優しいだけでなく、運動にも適しているため、多くの人にとって旅行の第一の選択肢となっています。しかし、自転車自体にはブレーキインジケーターなどの表示灯がないため、自転車走行中に急ブレーキをかけた場合、後続車は前方自転車の挙動を判断できず、安全性があまり良くありません。 、交通事故を起こしやすくなります。したがって、自動ブレーキライトシステムの設計は非常に重要です。

このプロジェクトは、ADXL345 ジャイロスコープ、4 つの LED ライト、および STM32F103C8T6 メイン制御チップを搭載することにより、自転車自動ブレーキ ライトの機能を実現します。デバイスが自転車に取り付けられると、ADXL345 は IIC 通信プロトコルを通じて X、Y、Z 軸のリアルタイムの加速度値を SMT32F103C8T6 メイン制御チップに送信し、それを STM32 の PWM 機能と組み合わせます。異なるデューティサイクルのパルスを出力する高度なタイマー、異なるLEDライトを制御して複数の輝度レベルを出力し、それによって異なるLEDのスイッチングと輝度を制御し、異なる輝度の赤色光と緑色光を混合することで黄色LEDライトを得ることができます。このようにして、自転車が急ブレーキまたは急加速したとき、LED ライトの明るさと色がリアルタイムで制御されるため、後続車は前方自転車の挙動をより明確に理解することができ、迅速な対応でライダーと後続車の安全を確保します。同時に自転車の視認性も向上し、低炭素・環境保護を追求する人にとって、低炭素で環境に優しく、運動にもなる自転車です。

【2】51個のマイクロコントローラーによるDCモーターの速度調整

https://bbs.huaweicloud.com/forum/thread-0283126325609313018-1-1.html

さまざまな工業生産設備や機械設備の普及に伴い、DC モーターの速度調整技術の研究と応用はますます注目を集めており、幅広い応用の可能性があります。このプロジェクトは、51 マイクロコントローラーを使用して DC モーターの速度調整機能を実現し、実際のエンジニアリング用途に信頼性が高く効果的な速度調整ソリューションを提供します。

【3】C言語でデザインされたスネークゲーム(コンソールターミナル)

https://bbs.huaweicloud.com/forum/thread-0218126407823524021-1-1.html

現在、小さなスネーク ゲームがコンソール端末を介して実装され、ゲームの描画、更新、制御、その他の機能が実現されています。

【4】 C言語で設計された倉庫番(コンソール端末)

https://bbs.huaweicloud.com/forum/thread-0283126494330855025-1-1.html
倉庫番ゲームは古典的なパズル ゲームで、プレイヤーは主人公を操作して、必要に応じていくつかの木箱を指定された場所に押します。コンソール端末では、壁の「#」、広場の「 」、木箱の「$」、主人公キャラクターの「@」、「+」など、さまざまなゲーム要素を表す文字を使用できます。 ' ミッションを完了するための目標の場所。

【5】STM32に基づいて設計されたタクシー料金システム

https://bbs.huaweicloud.com/forum/thread-0249126587022388080-1-1.html
タクシーは都市交通における一般的な交通手段です。乗客と運転手間の取引を容易にするために、タクシー料金請求システムがタクシー業界で広く使用されています。このシステムは、乗客の料金を自動的に計算し、正確で便利な請求サービスを提供し、その後の問い合わせや管理を容易にするために乗客の運転データを記録することができます。

従来のタクシーの料金請求方法は手動計算に基づいており、運転手が走行距離と時間に基づいて見積もりを出し、乗客に通知します。ただし、この請求方法はエラーや紛争が発生しやすく、ドライバーと乗客の両方にとって利便性や透明性がありません。したがって、タクシー業界は、より正確で効率的かつ信頼性の高い請求システムを緊急に必要としています。

このような背景に基づいて、このプロジェクトでは、従来の手動請求方法に代わる、STM32 マイクロコントローラーに基づくタクシー請求システムを設計および開発します。このシステムは、STM32マイコンの強力な処理能力と豊富な周辺インターフェースを利用して、さまざまな機能モジュールを統合し、旅客運賃の自動計算や請求情報の表示などの機能を実現します。

このタクシー請求システムでは、乗客はタクシーに乗車する際に対応するボタンを押すだけで、システムが自動的に請求を開始し、表示画面に走行時間、走行距離、料金などの情報をリアルタイムに表示します。乗客は交通渋滞や夜間の運転などの特別な状況をボタンから入力し、それに応じてシステムが追加料金を請求することもできます。乗客がバスを降車すると、システムは自動的に充電を停止し、最終運賃を表示します。同時に、システムはクエリと管理のために乗客の運転データも記録します。

【6】C言語はLinux上でlibcurlライブラリを呼び出してファイルをローカルにダウンロードします

https://bbs.huaweicloud.com/forum/thread-0249126672127409001-1-1.html
この記事では、C 言語を使用して libcurl ライブラリを呼び出し、Linux (Ubuntu) オペレーティング システムでネットワーク ファイル ダウンロード機能を実装する方法を紹介します。 。

libcurl は、C や C++ などのプログラミング言語でさまざまなネットワーク通信プロトコルのクライアント機能を実装するために使用されるオープンソースのクロスプラットフォーム ネットワーク伝送ライブラリです。HTTP、HTTPS、FTP、SMTP、POP3 などの複数のプロトコルをサポートし、データのアップロードとダウンロードを簡単に行うことができます。

【7】C言語はLinux上でlibcurlライブラリを呼び出して天気予報情報を取得します

https://bbs.huaweicloud.com/forum/thread-0283126753027400002-1-1.html
この記事では、C 言語を使用して libcurl ライブラリを呼び出し、Linux (Ubuntu) で天気予報を取得する方法について説明します。HTTP GET リクエストを通じて Baidu Weather API にアクセスし、返された JSON データを解析して、指定した都市の今後 7 日間の天気予報情報を取得します。

【8】C言語例_CRCチェックアルゴリズム

https://bbs.huaweicloud.com/forum/thread-0205126839798663009-1-1.html

CRC (巡回冗長検査) は、データの送信中または保存中にエラーが発生したかどうかを検証するために使用される、一般的に使用されるエラー検出テクノロジです。データに対して一連の計算と比較を実行してチェック値を生成し、それをデータに追加します。受信側は、同じアルゴリズムを使用して受信データを検証し、受信したチェック値と比較してデータにエラーがあるかどうかを判断できます。

CRC チェックは通常、次の側面で使用されます。

(1) データ伝送の信頼性: データがメディアやネットワークを介して伝送される場合、ノイズ、干渉、またはその他の伝送エラーが発生する可能性があります。データに CRC チェック値を付加することで、受信側は送信中にエラーが発生したかどうかを検出し、データの再送を要求するなどの適切な措置を講じることができます。

(2) ストレージメディアの完全性検出: ストレージメディア上のデータの読み取りまたは書き込み時に、ビット反転やメディア障害などのエラーが発生する可能性があります。データの保存時に CRC チェックを使用すると、データの読み取り時にこれらのエラーを検出でき、データの整合性が保証されます。

(3) ネットワーク通信プロトコル: 多くのネットワーク通信プロトコル (イーサネット、WiFi、USB など) は、送信されたデータが正確であることを確認するためにデータ フレームの一部として CRC チェックを使用します。データ フレームを受信した後、受信機は CRC チェックを使用してデータの整合性を検証します。

プロジェクトでは、CRC チェックはさまざまな通信システム、ストレージ システム、データ伝送システムで広く使用されています。CRC チェックを使用すると、データの信頼性が向上し、送信または保存時のエラーを減らすことができます。データ ビット レベルでエラーを検出し、一定レベルのデータ完全性を保証します。CRC チェックは、特にデータの整合性に対する高い要件があるアプリケーション シナリオにおいて、データの信頼性と整合性を確保する上で重要な役割を果たします。

【9】C言語例_SQLITEデータベースを呼び出してデータの追加、削除、変更、クエリを完了する

https://bbs.huaweicloud.com/forum/thread-0215126925920169030-1-1.html

SQLite は、軽量のリレーショナル データベース管理システム (RDBMS) であり、オープン ソース、設定不要、サーバー側、自己完結型、管理不要のトランザクション SQL データベース エンジンです。組み込みデバイス、モバイルデバイス、デスクトップアプリケーションで広く使用されています。

SQLite の機能は次のとおりです。

(1) 軽量: SQLite のコア ライブラリはわずか数百 KB であり、組み込みデバイスやモバイル デバイスなどのリソースが限られた環境での使用に非常に適しています。

(2) ゼロ構成: SQLite は構成を必要とせず、ライブラリ ファイルをアプリケーションに埋め込むだけで済みます。

(3) サーバー側: SQLite をサーバー上で実行する必要はなく、すべてのデータはローカル ファイルに保存されます。

(4) 自己完結型: SQLite のすべての機能は別個のライブラリ ファイルに含まれており、他のライブラリ ファイルに依存する必要はありません。

(5) ゼロ管理: SQLite はデータベース接続やトランザクションなどのステータスを維持する必要がなく、すべての操作が自動です。

(6) トランザクション: SQLite は、データの一貫性と信頼性を確保するために ACID トランザクションをサポートしています。

SQLite は、SELECT、INSERT、UPDATE、DELETE などの操作を含む標準 SQL ステートメントをサポートし、整数、浮動小数点数、文字列、日付などのさまざまなデータ型もサポートします。SQLite は、C、C++、Python、Java などのさまざまなプログラミング言語もサポートしており、さまざまなアプリケーションに簡単に統合できます。

【10】STM32+Huawei Cloud IOT設計に基づくスマートカーテン制御システム

https://bbs.huaweicloud.com/forum/thread-0218127016557132042-1-1.html

スマートホームテクノロジーの継続的な発展に伴い、家庭生活に対する人々の要求もますます高まっています。スマートカーテンはスマートホーム分野の重要な部分として、ユーザーにより便利で快適な生活体験を提供します。このプロジェクトは、STM32メイン制御チップとHuawei Cloud IoTプラットフォームに基づいて、家庭や商業施設のニーズを満たすインテリジェントなカーテン制御システムを設計します。

このプロジェクトでは、メイン制御チップとして STM32F103ZET6 が選択され、強力な処理能力と豊富な周辺インターフェイスを備え、モノのインターネット デバイスの制御と通信に適しています。ESP8266-WIFIモジュールとの接続を通じて、スマートカーテンはHuawei Cloud IoTプラットフォームと相互接続し、遠隔制御と監視を実現できます。

ユーザーの操作と制御を容易にするために、Qt を使用して Android モバイル APP と Windows PC ソフトウェアを開発し、ユーザーはこれらのアプリケーションを通じてカーテンをリモート制御できます。同時に、ローカルカーテンは手動制御にも対応しており、ユーザーは物理的なボタンやスイッチを通じてカーテンの開閉、昇降を操作できます。

インテリジェンスの面では、音声認識技術(LD3320モジュール)が導入されており、ユーザーは音声コマンドでカーテンの動作を制御できます。これにより、より便利でインテリジェントな制御方法がユーザーに提供され、カーテンの操作がより自然でインテリジェントになります。

リモコンやインテリジェント機能に加え、自動モードも導入。自動モードでは、システムは環境条件に基づいてインテリジェントな判断と制御を行います。たとえば、太陽光の強さが設定されたしきい値を超えたことを検出すると、システムは自動的にカーテンを閉じて直射日光が部屋に差し込むのを防ぎ、夜間にはシステムが自動的にカーテンを閉じてプライバシーとセキュリティを向上します。 。

このスマートカーテン制御システムは、STM32メイン制御チップとHuawei Cloud IoTプラットフォームに基づいており、音声認識、スマートホーム制御などの機能を組み合わせて、家庭や商業施設に便利で快適なインテリジェントサービスを提供します。リモート制御、自動モード、インテリジェント機能を通じて、ユーザーはカーテンを柔軟かつインテリジェントに制御し、生活の質とユーザーエクスペリエンスを向上させることができます。

【11】STM32に基づいて設計されたスマートドアロック2(Huawei Cloud IOTプラットフォームを使用)

https://bbs.huaweicloud.com/forum/thread-02117127100056575154-1-1.html

スマートホームの急速な発展に伴い、スマートドアロックはホームセキュリティの重要な部分として、ユーザーからの注目と需要がますます高まっています。セキュリティと利便性に対するユーザーのニーズを満たすために、私たちはSTM32ベースのスマートドアロックを設計し、それをHuawei Cloud IOTプラットフォームと組み合わせることにしました。

従来のドアロックには、鍵を紛失しやすい、解錠が煩雑であるなどの欠点がありました。スマートドアロックの登場により、これらの問題は効果的に解決されました。私がスマート ドア ロックのコア コントローラーとして STM32 を使用することを選択したのは、STM32 シリーズには低消費電力、高性能、豊富な周辺インターフェイスという利点があり、組み込みアプリケーションに非常に適しているためです。

強力なクラウドサービスプラットフォームとして、Huawei Cloud IOT Platformは、豊富なIoTソリューションと強力なデータ処理機能を提供します。スマートドアロックとファーウェイクラウドIOTプラットフォームを組み合わせることで、遠隔制御、データ監視、インテリジェント機能を実現し、ユーザーにより便利で安全なホームエクスペリエンスをもたらします。

スマート ドア ロックの設計には、次の主な特徴と機能があります。

安全で信頼性の高い: ドアロックの安全性を確保するために、高度な暗号化アルゴリズムと本人確認メカニズムが使用されています。ユーザーはモバイルAPP、指紋認識、またはパスワードを通じてロックを解除し、不法侵入を効果的に防止できます。
リモートコントロール:Huawei Cloud IOTプラットフォームとの接続を通じて、ユーザーはモバイルAPPを介してどこからでもドアロックをリモート制御できます。たとえば、ドアのロックをリモートで開閉したり、ロック解除の記録を表示したりできます。
複数のロック解除方法:従来のキーロック解除方法に加えて、当社のスマートドアロックは、指紋認識、パスワード入力、モバイルAPP制御などのさまざまなロック解除方法もサポートしています。ユーザーはニーズに応じて最も便利なロック解除方法を選択できます。
リアルタイム監視:スマートドアロックは、ドアロックのステータス、ロック解除の記録、その他の情報をリアルタイムで監視し、これらのデータをHuawei Cloud IOTプラットフォームにアップロードして保管および分析できます。ユーザーはモバイルAPPを通じて関連データを表示し、家の安全状況を把握できます。
インテリジェント機能:Huawei Cloud IOTプラットフォームのデータ処理機能に基づいて、当社のスマートドアロックはいくつかのインテリジェント機能も実装できます。たとえば、自動ロック解除時間やリモート認証ロック解除などを設定できます。

【12】C言語例_サムチェックアルゴリズム

https://bbs.huaweicloud.com/forum/thread-0205127192188703113-1-1.html
チェックサムは、データの送信または保存中にエラーを検出または検証するために使用される単純なエラー修正アルゴリズムです。データを計算してチェックサムを生成し、そのチェックサムをデータに追加し、受信側で再度チェックサムを計算して比較し、データが完全で正しいかどうかを判断します。

サム チェック アルゴリズムは通常、ビット演算を使用してチェックサムを計算します。

一般的な合計検証アルゴリズムには次のものがあります。

(1) 単純合計チェックサム: データ内のすべてのバイトを加算し、結果を事前定義されたチェックサムと比較します。2 つが等しい場合、データにエラーは発生していません。

(2) CRC (巡回冗長検査): 除算を使用してチェックサムを計算し、より高いエラー検出能力を備えます。CRC アルゴリズムは、固定生成多項式を使用してデータを分割し、その余りをチェックサムとして生成します。

サム チェック アルゴリズムは、さまざまなアプリケーション シナリオで使用できます。

(1) データ伝送: ネットワーク伝送、シリアル通信、その他の通信チャネルを通じてデータが伝送される場合、サムチェックは伝送プロセス中に発生するビットエラーや伝送エラーを検出し、データの完全性と正確性を保証します。

(2) ストレージ検証: データ ストレージ メディアにデータを書き込むとき、またはデータ ストレージ メディアからデータを読み取るときに、サム検証はメディアの障害やデータ破損の検出に役立ちます。

(3) ファイル検証: ファイルのダウンロード、ファイルのバックアップ、またはファイルの転送などのシナリオでは、サム検証を使用してファイルの整合性を検証し、ファイルが改ざんまたは破損していないことを確認できます。

(4) データベース検証: データベース システムでは、合計検証を使用してデータの完全性を検出し、保存中または送信中のデータ エラーや損傷を防ぐことができます。

サム チェック アルゴリズムは、データの送信または保存中にエラーを検出するために使用されるシンプルだが実用的なエラー修正アルゴリズムであり、データの整合性と精度を保証するために多くのアプリケーションで広く使用されています。

【13】C言語例_パリティチェックアルゴリズム

https://bbs.huaweicloud.com/forum/thread-0219127277001597051-1-1.html
パリティ チェック アルゴリズムは、データ送信中にビット エラーが発生したかどうかを確認するために使用される簡単なエラー検出方法です。エラーの検出と訂正は、追加のパリティ ビット (つまり、チェック ビット) をデータに追加することによって実現されます。

パリティ チェック アルゴリズムでは、各バイトが 8 ビット (ビット) で構成されていると想定されます。パリティ ビットの値は、データ バイト内の 1 の数によって異なります。データ バイト内の 1 の数が偶数の場合、パリティ ビットは 0 に設定され、1 の数が奇数の場合、パリティ ビットは 1 に設定されます。このように、受信側では、受信したデータ バイト内の 1 の数をカウントすることでビット エラーを検出できます。

特定のパリティ チェック アルゴリズムには次の手順が含まれます。

(1) 送信終了: データバイトを送信する前に、データバイト内の 1 の数をカウントし、その数に応じてパリティビット値を設定し、データバイトとパリティビットを一緒に送信します。

(2) 受信側: データバイトを受信した後、受信したデータバイト内の 1 の数を再度カウントし、受信したパリティビットと比較します。両者が一致しない場合は、データ送信中にビットエラーが発生したことを意味します。

パリティ チェック アルゴリズムは、次のシナリオでよく使用されます。

(1) シリアル通信: シリアル通信では、パリティ チェック アルゴリズムを使用して、データ送信中に発生するビット エラーを検出できます。送信側はパリティ ビットを計算して送信データ バイトに付加し、受信側はパリティ ビットを検証することで受信データが正しいかどうかを判断します。

(2) ストレージ メディア: ディスク ドライブやフラッシュ メモリなどの一部のストレージ メディアでは、データの読み取りまたは書き込み中に発生するビット エラーを検出するためにパリティ アルゴリズムを使用できます。データを保存するときは、パリティ ビットが計算されてデータとともに保存され、データが読み取られるときは、チェック ビットが再度計算され、保存されているチェック ビットと比較されて、データの完全性と正確性が保証されます。

(3) エラー検出: パリティ チェック アルゴリズムは、単純なエラー検出を必要とする他のシナリオでも使用できます。たとえば、コンピュータのメモリやレジスタでは、パリティ ビットを使用してデータを保存するプロセスでビット エラーを検出し、データの誤った使用や送信を回避できます。

パリティ チェック アルゴリズムはビット エラーを検出することしかできませんが、ビット エラーを修正することはできません。エラーが検出された場合、追加の修正措置が必要になるか、データの再送信が要求される場合があります。

【14】C言語例_ファイルのMD5値を取得する

https://bbs.huaweicloud.com/forum/thread-02117127357705858023-1-1.html
MD5 (メッセージ ダイジェスト アルゴリズム 5) は、一般的に使用されるハッシュ関数アルゴリズムです。任意の長さのデータを入力として受け取り、MD5 値と呼ばれる一意の固定長 (通常は 128 ビット) のハッシュ値を生成します。MD5 アルゴリズムは、信頼性が高く、幅広い用途で知られています。

画像.png

MD5 アルゴリズムには主に次の特徴があります。

(1) 不可逆性: 指定された MD5 値を使用して、逆演算によって元のデータを取得することはできません。

(2) 一意性: 入力データが異なれば、異なる MD5 値が生成されます。

(3) 効率: 特定のデータの MD5 値の計算は非常に高速です。

MD5 値の適用シナリオには次のものが含まれます。

(1) データの完全性検証: MD5 値を使用して、送信中にファイルが改ざんされていないかどうかを検証できます。送信者はファイルの MD5 値を計算して受信者に送信します。受信者はファイルを受信した後に MD5 値を再計算し、送信者の MD5 値と比較します。それらが一致していれば、ファイルは改ざんされていません。

(2) パスワードの保存: 多くのシステムでは、通常、ユーザーのパスワードは平文で保存されず、MD5 値に変換されて保存されます。ユーザーがログインすると、システムはユーザーが入力したパスワードを MD5 値に変換し、保存されている MD5 値と比較してパスワードが正しいことを検証します。

(3) セキュリティ認証: MD5 値は、ファイルの完全性や認証情報の信頼性を検証するためのデジタル証明書などのセキュリティ認証にも使用できます。

(4) データ フィンガープリント: MD5 値は、迅速な比較と重複データの検索のためのデータの一意の識別子として使用できます。

おすすめ

転載: blog.csdn.net/xiaolong1126626497/article/details/133266515