读码模块+Arduino+MQTT——实现网络数据传输并更新到数据库

一、硬件及其架构设计

1、MQTT三种身份

2、硬件架构设计

2.1、下位机

A、读码模块:读取条形码数据;

B、按键:区分出/入库操作,每扫一次码就按一次键;

C、OLED显示屏:下位机操作期间的信息提示;

D、Arduino:接受输入数据——条形码、按键,一要将数据发送给OLED显示屏显示,二要发送给WiFi模块,以保证网络传输的数据基础。

D、WiFi模块:ESP8266模块,接收来自Arduino的数据,整合成Json格式,作为MQTT发布者向服务器发送该Json数据。

2.2、上位机

A、MQTT服务器:接收发布者的信息,接收订阅者的订阅请求。

B、服务器后台程序:即MQTT订阅者程序,实现连接MQTT服务器;接入服务器数据库;订阅、取出信息,并根据信息具体数值采用SQL命令更新数据库。

 

二、实操步骤

1、单片机(Arduino NANO)

提示:程序中有些头文件,需要在Arduino IAE>>工具>>管理库中安装相应的库。

从上一张图可以看出,Arduino需要将接收到的条形码数据、按键数据发送到两个方向,一是OLED显示屏,二是WiFi模块。主要实现以下功能:

A、接收条形码数据;

B、接收按键数据;

C、发送给OLED显示屏进行显示;

D、发送给ESP8266模块。

具体代码如下:


#include<SoftwareSerial.h>
SoftwareSerial softSerial(11, 10);

#include <Arduino.h>
#include <Wire.h>
#include <MicroLCD.h>

LCD_SSD1306 lcd; /* for SSD1306 OLED module */

char a[100];
int num;
bool begin_flag = 0;
bool display_flag = 0;

#define key_add   12
#define key_reduce   5

void setup() {
  Serial.begin(9600);
  softSerial.begin(9600);
  pinMode(key_add, INPUT_PULLUP);
  pinMode(key_reduce, INPUT_PULLUP);
  lcd.begin();
  lcd.setCursor(0, 0);
  lcd.setFontSize(FONT_SIZE_MEDIUM);
  lcd.print("Waiting.......");
}

void loop() {
  read_code();
  key_down();
  while (Serial.available()) {
    Serial.read();
  };
}

void read_code() {
  while (softSeria
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值