完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本系统为安卓APP的环境参数远程监控系统,以STM32F103单片机作为本设计的中控中心,结合物联网技术,以Android智能手机作为远程控制的客户端,通过8266 WiFi模块实现环境监控系统硬件与Android手机的交互、环境参数的反馈,并实时提醒用户采取措施,具有异常报警功能。
使用的软件为keil5 和Android studio 在这里插入图片描述 在这里插入图片描述 STM32程序: 主要编写串口、中断。ESP8266驱动程序网上有很多,可以直接拿来使用,本系统使用的是ESP8266的AP模式,在下位机中先设置好模式: 代码为: STM32程序: 主要编写串口、中断。ESP8266驱动程序网上有很多,可以直接拿来使用,本系统使用的是ESP8266的AP模式,在下位机中先设置好模式: 代码为: u3_printf(“AT+CWMODE=2rn”); delay_ms(1000); u3_printf(“AT+CWSAP=“ESP8266”,“12345678”,11,3rn”); delay_ms(1000); u3_printf(“AT+RSTrn”); delay_ms(3000); u3_printf(“AT+CIPMUX=1rn”); delay_ms(2000); u3_printf(“AT+CIPSERVER=1,5000rn”); delay_ms(1000); 主要了解8266的AT指令即可,现在都是集成好了的,使用非常方便。 串口代码: void u3_printf(char* fmt,…) { u16 i,j; va_list ap; va_start(ap,fmt); vsprintf((char*)USART3_TX_BUF,fmt,ap); va_end(ap); i=strlen((const char*)USART3_TX_BUF); for(j=0;j { while(USART_GetFlagStatus(USART3,USART_FLAG_TC)==RESET); USART_SendData(USART3,USART3_TX_BUF[j]); } } APP程序: public class MainActivity extends Activity { private EditText pass; private Button next; private Button over; private EditText pass_new; SharedPreferences pass_word =null; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setTitle(“登陆界面”); setContentView(R.layout.activity_main); Init(); pass_word = getSharedPreferences(“setting”, Activity.MODE_PRIVATE); SharedPreferences.Editor editor = pass_word.edit(); next.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String now=pass.getText().toString(); // now="12345"; String pas = pass_word.getString("name","12345"); //Intent intent = new Intent(); //intent.setClass(MainActivity.this,ShowActivity.class); //startActivity(intent); if(pas.equals(now)) { Intent intent = new Intent(); intent.setClass(MainActivity.this,ShowActivity.class); startActivity(intent); } else{ Toast.makeText(MainActivity.this, "密码错误", Toast.LENGTH_LONG).show(); } } }); over.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String now=pass.getText().toString(); String pas = pass_word.getString("name","12345"); if(pas.equals(now)) { new AlertDialog.Builder(MainActivity.this) .setTitle("请输入新密码") .setIcon(android.R.drawable.ic_dialog_info) .setView(pass_new) .setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { save() ; } }) .setNegativeButton("取消", null) .show(); } else{ Toast.makeText(MainActivity.this, "请输入初始密码", Toast.LENGTH_LONG).show(); } } }); protected void onResume() { if(getRequestedOrientation()!=ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) { setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); //setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE); } super.onResume(); } 1 void Init() { pass=(EditText) findViewById(R.id.et_pass); next=(Button) findViewById(R.id.access); over=(Button) findViewById(R.id.over); // pass_new= new EditText(MainActivity.this); } void save() { String now=pass_new.getText().toString(); Editor editor =pass_word.edit(); editor.putString(“name”, now); editor.commit(); | | – – – – } } 怎么发现上转不了视频,有需要看视频效果的可以加953091376技术交流,硬件等原理图、PCB、代码可加QQ加获取 |
|
|
|
只有小组成员才能发言,加入小组>>
3277 浏览 9 评论
2950 浏览 16 评论
3454 浏览 1 评论
8983 浏览 16 评论
4044 浏览 18 评论
1093浏览 3评论
567浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
564浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2298浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1855浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-19 21:29 , Processed in 1.263271 second(s), Total 80, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号