- この一連のブログ学習は、開発委員会ではなく、半心の非公式スタッフによって書かれています。これは、個人的な技術的な交換と共有のみを目的としており、商用目的で使用することはできません。何か問題がある場合は、メッセージを残してください。時間内に変更します。
C SDK に基づく ESP8266 開発テクノロジに関する完全な一連のメモ
1. NONOS SDK ノーオペレーティングシステム開発
1. 開発環境をセットアップし、「hello world」シリアル ポート印刷を開始します。2. GPIO を使用してボタンの使用を開始し、「最初のライト」を点灯させます。3. 「ソフトウェアタイマー」を使用して、LED を 0.5 秒間点滅および点灯させます。4. PWM を理解し、PWM を使用して LED の輝度変化をより深く制御します。5. オリジナル Espressif SDK の高度な使い方のパッケージ Post と Get は、クラウドに「天気予報情報」の取得を要求します。6. SmartConfig と Airkiss のワンクリック ネットワーク構成を理解します。ファームウェアに wifi 名とパスワードを書き込む必要はありません。7. softAP ホットスポット配信ネットワーク モードの原理を理解し、「Gizwits Cloud」を模倣して独自のホットスポット配信ネットワーク モード プロトコルを定義します。8. UDP、TCP クライアントまたはサーバー通信として探している 8266 の役割はここにあります。9. 【小実戦その1】 Windowsシステムは、ローカルに8266のMqttサーバーを構築し、LAN内にLEDライトを点灯。10. 【ちょっとした実戦編 その2】 Windowsシステムはローカルに8266のMqttサーバーを構築し、LAN内にLEDライトを点灯させます。11. 8266 を Ali Smart に接続し、LED ライトを点灯させて、Tmall Genie の音声コントロールをお楽しみに! 12. Aliyun のホスト上に 8266MQTT サーバーを画像とテキストで構築する方法を学び、モバイル ネットワークで LED のリモート コントロールを実現します。13. 8266 コンプリート セットの小さなケースを作りましょう。smartConfig + MQTT プロトコルは、LED のリモート コントロールを簡単に実現できます。14. esp8266 の FreeRtos システム学習の正しい姿勢 --- 環境構築と書き込み。15. esp8266 の Internet of Things は別の明確なストリームであり、8266 はアリババ クラウド プラットフォームの非アリババ インテリジェント SDS サービスに接続され、LED ライトを点灯します。
16. Esp8266 は、Nonos に移植された赤外線 H1838 に基づいており、赤外線リモコン配信ネットワークを実現し、ランプを遠隔操作します。17. esp8266 自己開発の高速電源オン スイッチを 5 回 (オン/オフは 1 回)、8266 はボタン トリガーなしでワンキー ディストリビューション ネットワーク モードに入ります。18. esp8266 は、NONOS に基づく OTA リモート アップグレードを実装し、ワイヤレスの「ホット リペア」アップグレード ファームウェア プログラムを実現します。19. esp8266 は、ds18b20、dht11 温度および湿度センサーを駆動し、温度および湿度センサーをサーバーに収集します。20. esp8266 の esp now モードを詳細に研究し、Gizwits を模倣してネットワークなしで相互通信とデータ交換を実現する小さなゲートウェイを作成します。21. esp8266 が、ローカル LAN ネットワークの場合にフロントエンドとのデータ通信を最大効率で実現する方法について簡単に説明します。22. サードパーティの静的ライブラリ ファイルを追加する方法と、esp8266 プロジェクトでフォルダーをカスタマイズする方法、それらの makeFile について説明します。23. Espressif esp8266 NONOS SDK 3.0 プログラミングでは、SPI を使用して Max7219 チップに基づく 8 桁のデジタル チューブを駆動し、日付情報を表示します。
2. オペレーティング システム開発を伴う RTOS SDK
23. esp8266 のもう 1 つのウェーブは、freeRtos システムに基づいており、独自のプライベート サーバーに接続して OTA リモート アップグレードを実現し、lwip の基本的な知識に触れます。.
24. 浸透学習 esp8266 の外部 spi チップ 25q シリーズを確認し、その中の 8266 コード ブロックの分布に慣れ、写真やその他の資料を簡単に配置します。
25. esp8266 のシリアル ポート Uart 通信中断プログラミングについて説明し、NONOS バージョンと RTOS システムのシリアル ポート ドライバ ファイルを準備します。26. RTOS は MQTT の実装プロセスを分析し、切断および再接続可能な esp8266 rtos リアルタイム システムに MQTT プロトコルの移植を実装します。27. VisualStudio Code を注意深く使用して、新しい idf フレームワークである esp8266 rtos SDK v3.0 バージョンを開発し、モジュラー開発用にメモリを節約します。28. Espressif esp8266 で cJson を簡単に使用して json データを解析する方法と、json データを生成する方法を教えてください。29. 何百万ものメッセージを無料で提供する Espressif esp8266 は、TCP 直接接続モードの MQTT プロトコルを使用して Alibaba Cloud IoT プラットフォームに接続し、プライベート サーバー接続をサポートし、Alibaba Cloud ルール エンジンをサポートします。30. IIC バスを使用して 0.96 インチの OLED ディスプレイを駆動し、天気予報情報を表示します。31. esp8266 が Html に遭遇したとき、組み込み Web ページでデバイスを制御する方法、組み込み Web ページの実装プロセスを明確にし、携帯電話がルーターなしで esp8266 を制御できることを認識します。
32. HmacMD5 暗号化方式によってもたらされるセキュリティについて詳しく説明し、esp8266 で実践して、送信プロセスにおける情報のセキュリティを最大限に高めます。33. Espressif のオリジナル ファクトリのように esp8266 の最下位レジスタの論理的思考をエレガントにカプセル化し、サードパーティが使用する独自の静的ライブラリ ファイルを作成する方法は? 34. Espressif esp8266 NONOS SDK 3.0 プログラミングでは、SPI を使用して Max7219 チップに基づく 8 桁のデジタル チューブを駆動し、日付情報を表示します。35. Espressif の esp8266 チップは、Gizwits クラウド プラットフォームを使用して、商品化されたカラフルな RGB 電球調整可能な全体的なソリューション プロジェクトを作成します。36. esp8266 Rtos 3.0 SDK のプロジェクト構造、esp8266 が esp-idf プロジェクトにどのようにアプローチするか、およびヘッダー ファイルのコンパイルをカスタマイズする方法を理解しますか? 37. Gpio、Pwm、および Uart インターフェイスの使用を含め、探している基本的な周辺機能はすべてここにあります。38. 記事では、ストレージ テクノロジ NVS の理解と使用、NVS を使用して整数、文字列、配列、および構造体を保存する方法について説明します。39. ネットワーク スマート デバイス esp8266 を構成し、デバイスを WeChat パブリック アカウントにバインドし、移植して、esp8266 rtos3.1 に正常に実装するプロセスを見てください。40. Espressif idf フレームワークに基づいて、Mqtt フレームワークは非常に安定しており、切断と再接続が可能で、メモリ リークを解決できます! esp8266とesp32に対応!43. esp8266-12 モジュールは rtos3.1 バージョンの ota 機能に基づいており、無線でファームウェアをリモートでアップグレードし、公式 Web サイトに基づいて dns ドメイン名解決が追加されています。43. 再び、rtos3.0 バージョン SDK プログラミング SPI ドライバー ws2812b カラフル ライトに基づいて、すべてのコードはオープン ソースであり、あなた専用です! 43. rtos3.0 バージョンに基づいて、esp8266-12 モジュールは周辺エリアをスキャンして、esp32 にも適した近くの利用可能な Wi-Fi ホットスポット ルーターの情報を取得します。
43. プロジェクトでよく使用する esp8266 rtos3.0 バージョンの一般的なドライバー、ボタン キーの長押しと短押し、PWM のスムーズな調光などを整理して共有します。
43. わずか 1M の組み込み Esp8285 を使用して、最も困難な OTA 問題を解決し、製品を開発するためのリソース コストを大幅に節約する方法。
43. Esp8266の電源投入情報で出力されるデータを詳細に解析し、電源投入後にシリアル通信が文字化けしないようにする方法。
43. 外部ネットワークなしでローカル エリア ネットワークと制御端末間のデータ交換を実現する方法に関する開発経験。
43. 遅ればせながら 1024 人のプログラマーからの祝福。ds18b20 を駆動して温度を取得するプロジェクトを共有するオープン ソース。
43. aliyun sdk は Aliyun Internet of Things プラットフォームに直接接続され、Tmall Genie の機能を実現してチームメイトを見つけ、音声制御します。43. esp製品の量産計画当初にcsvファイルのデータを外部から読み込む方法、外部ファイルAlibaba Cloud tripletをコードから読み込むなど。43. Linux で ESP8266_RTOS_SDK 3.0 の最新環境を構築およびコンパイルした経験。43. Anxinke ESP-01S モジュールを 1M フラッシュのみで再開発するには? OTA 44 を介してファームウェアをリモートでアップグレードする方法、esp8266 C SDK で冷光と暖光の色温度のスムーズな調整を実現するパッケージを共有し、それをプロジェクトに簡単に統合する方法。45. CMake を使用して Windows で ESP8266 プロジェクトをコンパイルし、従来の開発方法を放棄し、コンパイル速度を向上させる方法。46. esp8266 C SDK で OLED 1306 ディスプレイ ドライバーを駆動する IIC の実現を共有します。47. ドライブを共有して、esp8266 C SDK で I2C を実装することにより、温度と湿度の SHT20 センサーを取得します。48. Amazon AWS IoT プラットフォームへの AT コマンド接続を実現する AT コマンド ファームウェアを二次開発する方法。
49. esp8266 C SDK のパラメータの書き方を外部に共有し、プログラム内でパラメータの動的取得を実現する。
-------- 学习笔记持续更新,欢迎关注我…
- 很多人怎么联系我一起学习进步,下面打个小小公告和干货无偿分享:
玩转
esp8266
带你飞、加群
esp8266源代码免费学习汇总(持续更新,欢迎star):https://github.com/xuhongv/StudyInEsp8266
esp32源代码免费学习汇总(持续更新,欢迎star):https://github.com/xuhongv/StudyInEsp32
前言
在一些平时量产方案中,我们经常不会把一些连接服务器等可变参数固定在程序里面,像阿里三元组这些配置信息,因此,我们可以考虑到通过外部写入某些参数,比如文本、网页、图片等。
而今天,给大家带来的是第一种方案,使用比较传统的方法实现这个想法。后面,我使用NVS功能教大家使用一下。
由于代码简单,文中已放置了全部代码,适用于 ESP全系列模组。
一、演示
烧录一个外置的文本,然后程序代码内读取这个外置的文本的内容;您先跟着我步骤去做,后面我再解释下原理。
1、新建一个 txt 文本 aithinker.txt
, 其内容如下,注意格式,中间以空格隔开,用大括号括起来:
[xuhongv 18 guangdong]
2、然后烧录到指定的位置 0x1F4000 ,我这里使用 esp-tools
命令,或者你也可以使用 ESPDownTools
实现:
D:\Python\python D:\esptool\esptool.py --port COM49 write_flash 0x1F4000 aithinker.txt
3、然后,通过代码读取出来:
char user_name[30] = {0};
char key[30] = {0};
char passwd[30] = {0};
char *get_triad = (char *)calloc(1, 256);
char *start_p = NULL;
char *offset = NULL;
char *end_p = NULL;
//500*4096 相当于 0x1F4000 ,也就是 0x1F4 * 4096
spi_flash_read(500 * 4096, (void *)get_triad, 256);
ESP_LOGE(TAG, "get_triad: %s", get_triad);
do
{
start_p = strchr(get_triad, '[');
if (NULL == start_p)
{
ESP_LOGE(TAG, "line:%d triad [ check fail", __LINE__);
break;
}
end_p = strrchr(get_triad, ']');
if (NULL == end_p)
{
ESP_LOGE(TAG, "line:%d triad ] check fail", __LINE__);
break;
}
start_p++;
offset = strchr(start_p, ' ');
if (NULL != offset)
{
snprintf(user_name, offset - start_p + 1, "%s", start_p);
start_p = ++offset;
offset = strchr(start_p, ' ');
if (NULL != offset)
{
snprintf(key, offset - start_p + 1, "%s", start_p);
offset++;
snprintf(passwd, end_p - offset + 1, "%s", offset);
break;
}
}
} while (0);
free(get_triad);
printf("get Content: user_name=%.*s\r\n", strlen(user_name), (char *)user_name);
printf("get Content: key=%.*s\r\n", strlen(key), (char *)key);
printf("get Content: passwd=%.*s\r\n", strlen(passwd), (char *)passwd);
4、编译上面代码,串口打印为:
二、原理或疑问
- 1、为什么选择地址 0x1F4000
答:我这里就烧录到0x1F4000,计算之后是哪个扇区呢?大家可以算下,0x1F4000换算十进制就是2048000,一个扇区是4096 bytes,而2048000 / 4096 = 500 ,也就是第 500 个扇区了!第500个扇区是非安全区域存储地址,对于4M flash安全的起始扇区是 508 即 0x1FC,计算方法就是2M以外的部分,也就是(1024+1024+4)/4096=508 ,其中 4 是指reserved 部分,详情自己阅读官方的代码块分布!所以,大家的项目中请到此外的区域读写,当然,你也可以按照分区表来实现你的安全区域,本硬件博文只是示范,大家修改下即可!
- 2、为什么不选择 NVS 来实现?
- 答:下篇就介绍用这个实现,还可以加密解密数据。
另外,不要把我的博客作为学习标准,我的只是笔记,难有疏忽之处,如果有,请指出来,也欢迎留言哈!
- 玩转
esp8266
带你飞、加群QQ
群,不喜的朋友勿喷勿加:434878850 - 个人邮箱:[email protected] 24小时在线,有发必回复!
- esp8266源代码学习汇总(持续更新,欢迎star):https://github.com/xuhongv/StudyInEsp8266
- esp32源代码学习汇总(持续更新,欢迎star):https://github.com/xuhongv/StudyInEsp32
- 关注下面微信公众号二维码,干货多多,第一时间推送!