みなさん、こんにちは。私はシングルチップマイクロコンピュータの初心者であり、興味のある人でもあります。以前は、c51シングルチップマイクロコンピュータを使用して、esp8266モジュールのホットスポットでLEDライトを制御していました。実験ですが、インターネット上の情報が少ないため、今日は新しい学生、ベテラン、チュートリアルを考えてください、私はあなたに少し助けを与えることを望みます。
材料を準備する:
1. C51 MCU開発ボード(最小のシステムボードも利用できますが、独自のLEDライトと小さな抵抗を準備し、アノードとカソードを分離する必要があります)
2.esp8266モジュール(テストについては後で説明します)
3. ttlからusbライン(開発ボードはttl変換モジュールを必要としません)
注:espは、次のように配線することによってのみ正常に機能します。
1.esp8266のピンと配線:
TXD-
MCUまたはttlモジュールのRXDRXDに接続-MCUまたはttlモジュールのRXDvccに接続-3.3vに接続(5vに接続する
とespのMCUが焼損する可能性があります)gnd-アース線、MCUのGNDまたはttlのGNDgpio0に接続
-gpio1-に接続しない
ch_pdを接続する必要はありません-デフォルトは高レベルで、3.3vで短くするだけです
2.開発ボードの配線図:
ヒント:図の赤いマークは、MCU開発ボードのシリアルポートです。それらは、USBシリアルポートとMCUシリアルポートです。
3.3v-モジュールの3.3vに接続します(5vに接続するとesp8266が焼き切れます)
ch-pd-3.3vにも接続します
GND
- GNDに接続しますRXD -TXDTXDを接続します-RXDを接続します
3.ttlからusbライン:
3.3v-モジュールの3.3vch -pdに接続し、3.3vGNDにも接続します
-GNDに接続しますRXD -
TXDに接続しますTXD -
RXDに接続します
4.最小システムボード:(写真なし)
3.3v-モジュールの3.3vch -pdに接続し、3.3vGNDにも接続します
-GNDに接続しますRXD - P3.0に
接続しますTXD -P3.1に
接続します
Wifiモジュールをテストします。
(ATコマンドについて、そうでない場合は、Baiduにアクセスして確認してください)
xconソフトウェアを開き、回線を接続して、ボーレートを選択します。無線LANモジュールのボーレートは通常115200です。ボーレートを選択した後、クリックしてシリアルポートを開き、入力ボックスを送信し、コマンドを入力して送信します。
送信:AT(大文字にする必要があります)
応答:ok(テスト成功)
応答:エラー(おそらくファームウェアが無効です。ファームウェアを再フラッシュします)
応答ok、モジュールは正常です
送信:AT + CIOBAUD = 9600(ボーレートが9600に変更されました)
シングルチップマイクロメータのボーレートはそれほど高くなることができないため、9600に変更されます。
次にシリアルポートを開くときは、9600ボーレートを選択します
今回は、モジュールのipアドレスを確認する必要があります。コマンド:AT + CIFSR成功図:
携帯電話通信のテスト:
(1)Baiduが見つけた1つのバッチであるネットワークデバッグツールをダウンロードする必要があります。それに従ってください。次に、xconソフトウェアを使用して、サーバービルドコマンドをespに送信します。
コマンド1:AT + CIPMUX = 1(マルチ接続サービスを開く)
応答:ok
コマンド2:AT + CIPSERVER = 1、8080(サーバーモードを開く、ポート番号8080)
応答:ok
( 2)espモジュールのホットスポットに接続します。ネットワークデバッグソフトウェアを開き、tcpリンクをクリックして、モジュールのIPとポート番号、リンクを入力します。リンクが成功すると、xcon(シリアルデバッグソフトウェア)は成功した文字になります。ランダムに送信された文字がコンピュータソフトウェアに表示されます。
データ形式:+ IPD、0,1:1テストは成功しました。
MCU通信(プログラムの書き込みとダウンロード)
ヒント:プログラムをダウンロードしたら、esp8266を接続してから、マイクロコンピューターをリセットします。
手順:ホットスポットに接続し、ネットワークデバッグソフトウェアを開いて1を送信し、ライトをオンにし、2を送信してライトをオフにします。コードブロック:
#include "public.h"
#include "temp.h"
sbit led1=P2^0; //定义管脚
sbit led2=P2^1;
#define RELOAD_COUNT 0xFA //宏定义波特率发生器的载入值 9600
#if
1u8 RecBuf[50];
u8 recFlagOK=0;
#endif
u8 tempData[9];
void UART_Init()
{
SCON=0X50; //设置为工作方式1 TMOD=0X20; //设置计数器工作方式2 PCON=0X80; //波特率加倍 TH1=RELOAD_COUNT; //计数器初始值设置 TL1=TH1;
ES=0; //关闭接收中断
EA=1; //打开总中断
TR1=1; //打开计数器}
void UART_SendByte(u8 dat)
{
ES=0; //关闭串口中断
TI=0; //清发送完毕中断请求标志位
SBUF=dat; //发送
while(TI==0);
//等待发送完毕
TI=0; //清发送完毕中断请求标志位
ES=1; //允许串口中断
}
void ESP8266_SendCmd(u8 *pbuf)
{
while(*pbuf!='\0') //遇到空格跳出循环
{
UART_SendByte(*pbuf); d
elay_10us(5);
pbuf++;
}
delay_10us(5);
UART_SendByte('\r');//回车
delay_10us(5);
UART_SendByte('\n');//换行 delay_ms(1000);}//ESP8266-WIFI模块工作模式初始化
void ESP8266_ModeInit(void)
{
ファローアップ
ESP8266_SendCmd("AT+CWMODE=2");//设置路由器模式 1 staTIon模式 2 AP点 路由器模式 3 station+AP混合模式 ESP8266_SendCmd("AT+CWSAP=\"PRECHIN\",\"prechin168\",11,0"); //设置WIFI热点名及密码 ESP8266_SendCmd("AT+CIPAP=\"192.168.4.1\"");//重新启动wifi模块 ESP8266_SendCmd("AT+RST");//重新启动wifi模块 ESP8266_SendCmd("AT+CIPMUX=1"); //开启多连接模式,允许多个各客户端接入 ESP8266_SendCmd("AT+CIPSERVER=1,8080"); //启动TCP/IP 端口为8080 实现基于网络控制
}
void main()
{
u16 i=0;
led1=led2=1;
UART_Init(); //串口初始化
ESP8266_ModeInit();
ES=1; //允许串口中断
while(1)
{
}
}
#if 1
void Usart() interrupt 4
{
static u8 i=0; if(RI)
{
RecBuf[i++]=SBUF;
if(RecBuf[i-1]=='\n')
{
i=0;
recFlagOK=1;
RecBuf[11]='\0';
}
if(recFlagOK==1)
{
recFlagOK=0;
if(RecBuf[9]=='1')
{
led1=0;
}
if(RecBuf[9]=='2')
{
led1=1;
}
} i
f(RecBuf[9]=='3') //led控制
{
led2=0;
}
if(RecBuf[9]=='4')
{
led2=1;
}
RI=0;
}
}
#endif