MBZ Pro Mega - Wifi Edition


MBZ Pro Mega is a printed circuit board compatible with Arduino with a built-in prototyping area.
Featuring a compact design, it helps you to shrink your Arduino project and make it permanent.
Using the prototyping area you can solder your components and modules, along with Arduino and ESP-8266 Wifi module.
Take your project to the next level using this professional high quality PCB.


The MBZ Pro Mega is perfect for your IOT projects, having the best support for the ESP8266 chip: it has a robust 3.3V voltage regulator, a logic level conversion IC (CD4050) and a switched connection to USB/Serial adapter, providing direct access to ESP8266.



Features:
  • works with ATMega328P-PU microcontroller
  • Fiberglass board, double-layer, HASL surface finish, green solder mask, through-hole plating
  • Dimensions 3.56" x 2.24" (90.5mm x 56.9mm)
  • Compatible with Arduino Shields
  • Prototyping area to solder components and modules
  • Main and backup DC inputs with diodes protection against reverse applied voltage
  • 2 voltage regulators: 5V / 1A and 3.3V / 800mA
  • PCB copper heatsink for voltage regulators
  • I2C bus header, compatible with RTC breakouts modules such as DS1307 and DS3231
  • ICSP header
  • Internet connection via ESP8266 module (model ESP-01)
  • Integrated 5v to 3.3v level shifter (IC 74HC4050)
  • Digital ports D3, D4, D9, D10, D11 and D13 are available both in 5V and 3.3V
  • Header for FTDI USB to Serial adapter to upload the sketches.
PCB front side
PCB back side

Components

The MBZ standalone board can be used with all of its features, or with just the basic configuration of an Arduino standalone:

MBZ Basic standalone setup - Click here to view the basic components list


MBZ Full standalone setup - Click here to view the full components list














Pinout Diagram



Assembly video
by 
Wal Proj Eletro




On/Off Switch

You can use a switch to turn board on/off, or let it always on, using a wire jumper, just like Arduino does.
These are four options to turn on/off the standalone board:

1) Always On with wire jumper



2) Mini slide switch (model SS12D00G3)


3) Pin jumpers

              

4) External switch






















RTC - Real Time Clock

MBZ standalone PCB has an I2C bus header to connect a RTC breakout board. The requirement to be compatible is to have at least 4 pins with sequence Gnd, Vcc, SDA and SCL such as the following modules:

DS1307 RTC breakout board


RTC DS3231 breakout board (the 32K pin is not used, therefore it stays out of I2C bus header)

The RTC modules can be positioned over the voltage regulators:

DS1307 positioned horizontally


DS3231 positioned vertically

pins bent with needle nose plier
DS3231 positioned horizontally


How to upload the sketchs

Note: in order to upload your programs, the ATMega328p chip must have the Arduino Uno bootloader. Click here to see how to burn the bootloader

If you have an Arduino Uno with DIP AtMega328P, you can replace the original microcontroler with the new one, upload your sketches and replace it again. But a more convenient way to upload your sketches is to use a FTDI adapter.

FTDI Adapter

There are many models of serial adapters that can be used to connect the MBZ standalone with a computer via USB connection:


If your adapter is a FTDI model with pins in the following sequence: DTR, RX, TX, VCC, CTS and GND, it can be directly connected in the MBZ FTDI header. If your adapter has another pins sequence it can be connected using wire jumpers.

The MBZ standalone board can connect FTDI adapter to ATMega328P or ESP8266. 
To transfer your programs to the ATMega328P, set both jumpers near to FTDI header to "atmega" position: 

 


When the FTDI driver is properly installed, just launch the Arduino IDE and select in the menu "Tools/Board" the option "Arduino/Genuino Uno". Select in the menu "Port" the option related to your FTDI adapter: 


Now you're ready to upload your sketchs to the MBZ standalone board.

How to install FTDI drivers: Windows  Mac  Linux



How to have 3.3V using only the FDTI/USB adapter

In order to have the voltage regulators providing maximum current, the LM1117-3.3V is not connected to the output of the LM7805, but directly to the main/backup DC input.


Therefore, when using a FTDI adapter, the 5V power from the USB does not feed power to the LM1117-3.3V, so to have 3.3V it's needed to have power at the main/backup DC input.If power is only supplied by the FDTI adapter, the board will have only 5V.If you intend to use the standalone MBZ as a development board, you'll use more often the FTDI adapter. In this case, it's useful to make a little change to have 3.3V when the board is powered by USB only.






To make this change, you just need to solder a diode (1N4007 or 1N4001) between 5V and VIN pins. The diode anode must be soldered into the 5V pin and the cathode into VIN pin.


As a result, the board will keep its original characteristics, having the voltage regulators independents, and will also have 3.3V when powered by a USB adapter.
The current supplied by USB is enough to properly power the ESP-01 module.



Working with ESP8266

The MBZ Kit comes with ESP-01 module with AT command firmware. If you need to restore this firmware, follow these instructions: Click here to see how to restore de ESP-01 AT command firmware

The MBZ standalone board has the best support for the ESP8266 Wifi module:
  • LM1117: 3.3V voltage regulator providing 800mA of current, better than a standard Arduino that can provide only 150mA (ESP8266 peak operating current draw: ~300mA);
  • level converter: while Arduino ports works with 5V, the ESP8266 I/O ports works with 3.6V max. The MBZ standalone has an IC 74HC4050 that provides a safer and faster way to work with ESP8266;
  • enable ESP8266 by software or hardware: you can set ESP8266 to be always enabled by hardware or use ATMega328P digital port 4 to enable/disable the ESP8266 by software, allowing to save power when the Wifi is not in use (ESP8266 consumes only 0.3mA in disabled mode);
  • FTDI direct access: just set a jumper to have direct access to ESP8266 via FTDI, allowing you to programming the ESP8266 firmware. 
Enable / Disable ESP8266

Most of the time your program doesn't need to access internet all of the time, so you can save power turning on the ESP8266 only when necessary.
To configure the MBZ standalone to "software mode" set the jumpers (near of ESP reset button) as shown below:


If you need that ESP8266 stays always on, let configuration of MBZ standalone to "hardware mode". In this case the Arduino digital port 4 will be available to use.

Here is a sample code that demonstrates how to enable the ESP8266 module by software, and send AT commands using SoftwareSerial lib:
#include <SoftwareSerial.h>

// configure pins 2 and 3 for serial communication with ESP8266
// RX pin 2, TX pin 3
SoftwareSerial esp8266(2, 3);

#define DEBUG true
#define PIN_LED 13
#define PIN_ENABLE_ESP8266 4

void setup()
{
  // configure onboard led connected to the pin 13
  pinMode(PIN_LED, OUTPUT);
  digitalWrite(PIN_LED, LOW);

  // initialize the ESP8266 module
  pinMode(PIN_ENABLE_ESP8266, OUTPUT);
  digitalWrite(PIN_ENABLE_ESP8266, LOW);
  delay(200);
  digitalWrite(PIN_ENABLE_ESP8266, HIGH);
  delay(200);

  // configure the ATMega328P serial speed
  Serial.begin(9600);

  // configure the ESP8266 serial speed
  esp8266.begin(9600);

  // send command to reset module
  sendData("AT+RST\r\n", 2000, DEBUG);
  delay(1000);

  Serial.println("ESP8266 firmware version");
  delay(1000);

  sendData("AT+GMR\r\n", 2000, DEBUG); // rst

  // Set in the above line the speed of
  // ESP8266 module (9600, 19200, 38400, etc)
  sendData("AT+CIOBAUD=9600\r\n", 2000, DEBUG);

  Serial.println("** END **");

  // turn off the ESP8266
  digitalWrite(PIN_ENABLE_ESP8266, LOW);
}

void loop() {
}

String sendData(String command, const int timeout, boolean debug)
{
  digitalWrite(PIN_LED, LOW);
  // sends AT commands to the module
  String response = "";
  esp8266.print(command);
  long int time = millis();
  while ( (time + timeout) > millis())
  {
    while (esp8266.available())
    {
      // The esp has data so display 
      // its output to the serial window
      char c = esp8266.read(); // read the next character.
      response += c;
    }
  }
  if (debug)
  {
    Serial.print(response);
    if (response.indexOf("OK") > 0) {
      digitalWrite(PIN_LED, HIGH);
    }
  }
  return response;
}

Compile and upload the sketch onto ATMega328P, open the serial monitor and set the baud rate to 9600:





0 comentários :

Post a Comment