Arduino Uno + ESP8266 12E + Blynk + Relay - arduino-uno

I started adventure with arduino and programming 2 months ago.So, I am new in this topics.
Until now I realized few projects including Blynk connected with arduino. The last one was similar to one described in topic but I used the ENC28j60 instead of ESP8266 module and then it worked fine.
The problem started with ESP module.
Short description of project:
The main idea is to control AC light with Blynk App support.
First of all I made a connection according to picture below:
As power source I used the USB phone charger connected with step by voltage converter to get in final the 3.3V source.
I additionally connected the Arduino Uno with relay module like this:
Arduino ====> Relay module
5V ====> VCC
GND ====> GND
Pin 5 ====> IN1
Everythink you can see in pictures below (sorry for quality)
And for now I did almost every step (with so many problems). Here I mean:
1. I checked if arduino is connected with ESP module by serial port -> system report "ready" status.
2. I upload the below (template) Arduino IDE sketch for my project:
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "***";
// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "***";
char pass[] = "***";
void setup()
{
// Debug console--
Serial.begin(9600);
Blynk.begin(auth, ssid, pass);
}
void loop()
{
Blynk.run();
}
And finally I started the New project in Blynk. I set the Arduino uno as a hardware model and WiFi as connection type. Then I added the Button and set the Output to D5.
And now (close to the end of project) I met with a problem. After pushing the connect button (in up-right corner) I receive the information that device is connected (Online). Then when I try to push the button to Active Relay - nothing happens.
Whats more. I tried with different pins on Arduino with the same results. And I don't know why (probably because I have still small knowladge) but when I set the Button output value to D2 - after connection when I push it then the diode on ESP module Turn OFF and Turn ON.
I tried to find solution on this forum and in many other places for last 3 days but without any results. That's why I decided to ask You for help. Do you know what did I wrong or what should I add to project to make connection between the Blynk and relay work correct?
Write if you will need some more or detailed information from my side.

Why are you using both the uno and the esp? You can just use the esp instead of the combo, will make your project less power hungry and smaller. If you wonder about using just the esp, you can use the nodemcu boards (which can be found for less that 4€ per unit in China).
I've some example sketches for this (with temperature and humidity), if you want to take a look at those.

When looking at the pictures and code you have postet, it seems that you have flashed the ESP with a Arduino sketch. This is fine if you would like to activate the relay directly with the ESP (without the Arduino UNO).
Then you just have to connect the relay to the ESP instead of to the Arduino. Unfortunately not all relay boards can operate with the 3.3V logic that the ESP supplies, but maybe you'r lucky.
On the other hand, if you would like to use the Arduino UNO with the ESP as Wi-Fi, then you would have to reflash the ESP with the original AT firmware. Then you could connect it to the Arduino and use a sketch that looks something like this.
#define BLYNK_PRINT Serial
#include <ESP8266_Lib.h>
#include <BlynkSimpleShieldEsp8266.h>
char auth[] = "YourAuthToken";
char ssid[] = "YourNetworkName";
char pass[] = "YourPassword";
#include <SoftwareSerial.h>
SoftwareSerial EspSerial(2, 3);
// pin 3 connected to ESP RX and pin 2 connected to ESP TX
// Your ESP8266 baud rate:
#define ESP8266_BAUD 115200
ESP8266 wifi(&EspSerial);
void setup()
{
// Debug console
Serial.begin(9600);
delay(10);
// Set ESP8266 baud rate
EspSerial.begin(ESP8266_BAUD);
delay(10);
Blynk.begin(auth, wifi, ssid, pass);
}
void loop()
{
Blynk.run();
}
And you should remove the connection between RST and GND on the Arduino

Related

Getting gray question marks on serial monitor

I am trying to use an arduino uno to check to see if an esp8266-015 wifi module is working using AT commands.
Connections
ESP8266 Arduino
Rx-Rx
Tx-Tx
GND-GND
EN-3.3v
VDD-3.3
I selected arduino uno in my board manager and the correct port
this code is just a setup and loop
void setup() {
// put your setup code here, to run once:
}
void loop() {
// put your main code here, to run repeatedly:
}
But when I type AT into the serial monitor, nothing happens, All I see is the serial monitor spitting this.
image
I have looked through several tutorials and I keep getting this error, it just keeps printing the gray question marks. This is my first time using an esp8266 wifi module.

How to overwrite I2C pin settings Adafruit libs?

I'm currently trying to run an MLX90614 sensor on a ESP32 board (lolin32 lite)
This board doesn't have a pin 21 and from a forum I discovered I can use pin 23 and 19.
I tested this out with the I2C scanner code and this works.
Now I like to use Adafruit MLX90614 library and tell it to use pins 23,19.
Adafruit_MLX90614 mlx = Adafruit_MLX90614();
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Wire.end();
Wire.setPins(23,19);
Wire.begin();
delay(100);
if (!mlx.begin(90, &Wire)) {
Serial.println("Error connecting to MLX sensor. Check wiring.");
while (1);
};
}
I keep getting "Error connecting to MLX sensor. Check wiring" so it doesn't overwrite the pin settings.
Can this been done?
UPDATE: I found my mistake. I had changed the I2C address of the MLX sensor in a previous project. That is why the I2C scanner code worked and Adafruit default address not.

ZEPHYR RTOS Configuring GPIO Pins

Hi I would like to configure a custom GPIO pin as output to control a motor on a STM32 H743Zi board running Zephyr RTOS.
The dts file of the board can be found in the folder or a separate file nucleo h743zi.dts code.
I would like to us the arduino pin mapping provided by the board ardunio r3 connector.dtsi code
The overlay file that I've developed so far is as follows code. I would like to configure the D0 pin (as per the arduino connector dtsi file) as a GPIO pin to control the motors.
However, I've not been able to configure the pin and I don't receive a high signal if the pin is turned on.
Any help to resolve this issue is appreciated.
You can refer to the answer in this link:
https://github.com/zephyrproject-rtos/zephyr/discussions/35932
In my case, I use Thunderboard Sensor 2 and my solution as below:
Move to the <board.dsti> in folder /zephyr/dts/arm/silabs/efr32mg.dtsi
insert your define GPIO to use:
...
/ {
zephyr,user {
signal-gpios = <&gpioa 8 GPIO_ACTIVE_HIGH>;
};
...
Here, I use my board portA and pin 8 as schematic
After you save the file, open the main file of your project and insert something as below:
#define ZEPHYR_USER_NODE DT_PATH(zephyr_user)
...
void main(void)
{
const struct gpio_dt_spec signal =
GPIO_DT_SPEC_GET(ZEPHYR_USER_NODE, signal_gpios);
/* Configure the pin */
gpio_pin_configure_dt(&signal, GPIO_OUTPUT_INACTIVE);
...
while(1){
/* Toggle the pin PA8*/
gpio_pin_toggle(signal.port, signal.pin);
k_msleep(SLEEP_TIME_MS);
}
...

Why SIM900 with ATMEGA328PU give different Result when given inputs from different PC's Arduino Serial Monitor?

I have Connected SIMCOM900 with ATMEGA328PU on a breadboard. It is giving correct outputs when inputs are given by one PC's Arduino Serial Monitor but with another PC's Arduino serial monitor's input (with the same circuit )it is not even responding. What is the reason behind? (Outputs are attached)
#include <SoftwareSerial.h>
//SIM800 TX is connected to Arduino D8
#define SIM800_TX_PIN 10
//SIM800 RX is connected to Arduino D7
#define SIM800_RX_PIN 11
//Create software serial object to communicate with SIM800
SoftwareSerial serialSIM800(SIM800_TX_PIN,SIM800_RX_PIN);
void setup()
{
//Begin serial comunication with Arduino and Arduino IDE (Serial Monitor)
Serial.begin(9600);
while(!Serial);
//Being serial communication witj Arduino and SIM800
serialSIM800.begin(9600);
delay(1000);
Serial.println("Setup Complete!");
}
void loop()
{
//Read SIM800 output (if available) and print it in Arduino IDE Serial Monitor
if(serialSIM800.available()){
Serial.write(serialSIM800.read());
}
//Read Arduino IDE Serial Monitor inputs (if available) and send them to SIM800
if(Serial.available())
{
serialSIM800.write(Serial.read());
}
}
Non Working Output -->
Setup Complete!
ATATAT
Working Output -->
Setup Complete!
AT
OK
AT+CENG?
+CENG: 0,0
OK
AT+CNETSCAN
Operator:"405803",MCC:405,MNC:803,Rxlev:62,Cellid:51A5,Arfcn:702
Operator:"405803",MCC:405,MNC:803,Rxlev:51,Cellid:51A7,Arfcn:709
Operator:"405803",MCC:405,MNC:803,Rxlev:45,Cellid:35D6,Arfcn:703
Operator:"405803",MCC:405,MNC:803,Rxlev:37,Cellid:51A6,Arfcn:707
Operator:"Airtel",MCC:404,MNC:45,Rxlev:30,Cellid:08EC,Arfcn:53
Operator:"Airtel",MCC:404,MNC:45,Rxlev:28,Cellid:08E9,Arfcn:55
Operator:"Airtel",MCC:404,MNC:45,Rxlev:25,Cellid:08EA,Arfcn:103
Operator:"Airtel",MCC:404,MNC:45,Rxlev:18,Cellid:AF79,Arfcn:59
Operator:"Airtel",MCC:404,MNC:45,Rxlev:22,Cellid:186B,Arfcn:60
Operator:"Airtel",MCC:404,MNC:45,Rxlev:30,Cellid:08EB,Arfcn:61
Operator:"Hutch-Kamataka",MCC:404,MNC:86,Rxlev:51,Cellid:11B5,Arfcn:725
Operator:"Hutch-Kamataka",MCC:404,MNC:86,Rxlev:51,Cellid:11B4,Arfcn:666
Operator:"Spice Telecom",MCC:404,MNC:44,Rxlev:37,Cellid:0A5D,Arfcn:22
Operator:"Spice Telecom",MCC:404,MNC:44,Rxlev:34,Cellid:0A5B,Arfcn:25
Operator:"Spice Telecom",MCC:404,MNC:44,Rxlev:33,Cellid:0A5C,Arfcn:17
Operator:"Bharat Karnataka",MCC:404,MNC:71,Rxlev:21,Cellid:DB93,Arfcn:76
It might be that you are not sending NL and CR.
Make sure that Both NL & CR are selected for line ending.

Acquiring data from LeddarVu8 Lidar using Arduino

I'm working on a room visualization project, similar to this (taken from this video):
Im using LeddarVu8 from leddartech (see image below), arduino uno (with rs485shield):
I've also used the code provided from leddartech of simple16channel (no lcd):
#include "C:\Program Files (x86)\Arduino\libraries\Leddar.h"
/*
Simple Leddar(TM) Example - Without LCD
Language: Arduino
This program lists the detections read on the serial port of the Arduino.
Can be used with Arduino IDE's Serial Monitor.
Shields used:
* RS-485 Shield
Created 01 Jun. 2015
by Pier-Olivier Hamel
This example code is in the public domain.
*/
Leddar16 Leddar1(115200,1);
//Baudrate = 115200
//Modbus slave ID = 01
void setup()
{
//Initialize Leddar
Leddar1.init();
}
void loop()
{
char result = Leddar1.getDetections();
if (result >= 0)
{
for (int i = 0; i < Leddar1.NbDet; i++)
{
Serial.print("Segment: ");
Serial.print(Leddar1.Detections[i].Segment);
Serial.print(" Distance: ");
Serial.print(Leddar1.Detections[i].Distance);
Serial.print("\n");
}
}
else
{
Serial.print("Error: ");
Serial.print((int)result);
Serial.print("\n");
}
delay(50);
}
(from https://support.leddartech.com/downloads/files/89-leddarsdk3-2-0-pi2-tar-gz)
The problem is that serial monitor of the arduino only outputs a series of ?????. Why is that?
The problem is that serial monitor of the arduino only outputs a series of ?????. Why is that?
Because you have connected the TX of the LIDAR to the TX of the Arduino. The Serial Monitor window "listens" to the Arduino TX pin (via USB), so the Serial Monitor is actually listening to the LIDAR. The LIDAR serial is running at 115200, but your Serial Monitor is probably set to 9600. When the baud rates don't match, you'll get garbage characters.
Also notice that you have two serial TX pins connected to each other. This will also corrupt the characters if the Arduino and the LIDAR both try to transmit at the same time.
You may be able to connect the LIDAR RX to the Arduino TX, and the LIDAR TX to the Arduino RX. This would allow you to see the Leddar library commands on the Serial Monitor window. It would also cause all Serial prints to go to the LIDAR (and the PC). This might be ok if the Leddar command packets have a special format. This would allow the Leddar to ignore your debug prints, because they would not formatted correctly.
In that configuration, you would have to disconnect Arduino pin 0 to upload new sketches over USB. Some people put a switch in that wire to make it easy to disconnect.

Resources