Hi.
I am very boring because i look for days to code Megapi Esp8266-01 module.
I found megapi schematic
TX3 d14
RX3 d15
and GND to GND
and 5V to Lm1117 to 3.3V
ı controlled esp is working with uno my connections are right.
I tried Megapi on Arduino Ide with ATMEGA 2560 with these codes:
#include <SoftwareSerial.h>
String agAdi = “…”; //Ağımızın adını buraya yazıyoruz.
String agSifresi = “…”; //Ağımızın şifresini buraya yazıyoruz.
int rxPin = 15; //ESP8266 RX pini
int txPin = 14; //ESP8266 TX pini
//int dht11Pin = 2;
String ip = “184.106.153.149”; //Thingspeak ip adresi
String ad, soyad;
//dht11 DHT11;
SoftwareSerial esp(rxPin, txPin); //Seri haberleşme pin ayarlarını yapıyoruz.
void setup() {
Serial.begin(115200); //Seri port ile haberleşmemizi başlatıyoruz.
Serial.println(“Started”);
esp.begin(115200); //ESP8266 ile seri haberleşmeyi başlatıyoruz.
esp.println(“AT”); //AT komutu ile modül kontrolünü yapıyoruz.
Serial.println(“AT Yollandı”);
while(!esp.find(“OK”)){ //Modül hazır olana kadar bekliyoruz.
esp.println(“AT”);
Serial.println(“ESP8266 Bulunamadı.”);
}
Serial.println(“OK Komutu Alındı”);
esp.println(“AT+CWMODE=1”); //ESP8266 modülünü client olarak ayarlıyoruz.
while(!esp.find(“OK”)){ //Ayar yapılana kadar bekliyoruz.
esp.println(“AT+CWMODE=1”);
Serial.println(“Ayar Yapılıyor…”);
}
Serial.println(“Client olarak ayarlandı”);
Serial.println(“Aga Baglaniliyor…”);
esp.println(“AT+CWJAP=”"+agAdi+"",""+agSifresi+"""); //Ağımıza bağlanıyoruz.
while(!esp.find(“OK”)); //Ağa bağlanana kadar bekliyoruz.
Serial.println(“Aga Baglandi.”);
delay(1000);
}
void loop() {
esp.println(“AT+CIPSTART=“TCP”,”"+ip+"",80"); //Thingspeak’e bağlanıyoruz.
if(esp.find(“Error”)){ //Bağlantı hatası kontrolü yapıyoruz.
Serial.println(“AT+CIPSTART Error”);
}
//DHT11.read(dht11Pin);
ad=“1”;
soyad=“2”;
String veri = “GET https://api.thingspeak.com/update?api_key=xxxxxxxx”; //Thingspeak komutu. Key kısmına kendi api keyimizi yazıyoruz. //Göndereceğimiz sıcaklık değişkeni
veri += “&field1=”;
veri += String(ad);
veri += “&field2=”;
veri += String(soyad); //Göndereceğimiz nem değişkeni
veri += “\r\n\r\n”; //Göndereceğimiz nem değişkeni
esp.print(“AT+CIPSEND=”); //ESP’ye göndereceğimiz veri uzunluğunu veriyoruz.
esp.println(veri.length()+2);
delay(2000);
if(esp.find(">")){ //ESP8266 hazır olduğunda içindeki komutlar çalışıyor.
esp.print(veri); //Veriyi gönderiyoruz.
Serial.println(veri);
Serial.println(“Veri gonderildi.”);
delay(1000);
}
Serial.println(“Baglantı Kapatildi.”);
esp.println(“AT+CIPCLOSE”); //Bağlantıyı kapatıyoruz
delay(1000); //Yeni veri gönderimi için 1 dakika bekliyoruz.
}
This doesnt work. but same code is ok for Uno.
And second code:
#include <Arduino.h>
#include <Wire.h>
#include <SoftwareSerial.h>
#include <MeMegaPi.h>
//Encoder Motor
MeEncoderOnBoard Encoder_1(SLOT1);
MeEncoderOnBoard Encoder_2(SLOT2);
MeEncoderOnBoard Encoder_3(SLOT3);
MeEncoderOnBoard Encoder_4(SLOT4);
void isr_process_encoder1(void)
{
if(digitalRead(Encoder_1.getPortB()) == 0){
Encoder_1.pulsePosMinus();
}else{
Encoder_1.pulsePosPlus();
}
}
void isr_process_encoder2(void)
{
if(digitalRead(Encoder_2.getPortB()) == 0){
Encoder_2.pulsePosMinus();
}else{
Encoder_2.pulsePosPlus();
}
}
void isr_process_encoder3(void)
{
if(digitalRead(Encoder_3.getPortB()) == 0){
Encoder_3.pulsePosMinus();
}else{
Encoder_3.pulsePosPlus();
}
}
void isr_process_encoder4(void)
{
if(digitalRead(Encoder_4.getPortB()) == 0){
Encoder_4.pulsePosMinus();
}else{
Encoder_4.pulsePosPlus();
}
}
void move(int direction, int speed)
{
int leftSpeed = 0;
int rightSpeed = 0;
if(direction == 1){
leftSpeed = -speed;
rightSpeed = speed;
}else if(direction == 2){
leftSpeed = speed;
rightSpeed = -speed;
}else if(direction == 3){
leftSpeed = speed;
rightSpeed = speed;
}else if(direction == 4){
leftSpeed = -speed;
rightSpeed = -speed;
}
Encoder_1.setTarPWM(rightSpeed);
Encoder_2.setTarPWM(leftSpeed);
}
void moveDegrees(int direction,long degrees, int speed_temp)
{
speed_temp = abs(speed_temp);
if(direction == 1)
{
Encoder_1.move(degrees,(float)speed_temp);
Encoder_2.move(-degrees,(float)speed_temp);
}
else if(direction == 2)
{
Encoder_1.move(-degrees,(float)speed_temp);
Encoder_2.move(degrees,(float)speed_temp);
}
else if(direction == 3)
{
Encoder_1.move(degrees,(float)speed_temp);
Encoder_2.move(degrees,(float)speed_temp);
}
else if(direction == 4)
{
Encoder_1.move(-degrees,(float)speed_temp);
Encoder_2.move(-degrees,(float)speed_temp);
}
}
double angle_rad = PI/180.0;
double angle_deg = 180.0/PI;
String agAdi = “xxxx”; //Ağımızın adını buraya yazıyoruz.
String agSifresi = “xxxxx”; //Ağımızın şifresini buraya yazıyoruz.
int rxPin = 15; //ESP8266 RX pini
int txPin = 14; //ESP8266 TX pini
//int dht11Pin = 2;
String ip = “184.106.153.149”; //Thingspeak ip adresi
String ad, soyad;
SoftwareSerial esp(rxPin, txPin);
void setup(){
//Set Pwm 8KHz
TCCR1A = _BV(WGM10);
TCCR1B = _BV(CS11) | _BV(WGM12);
TCCR2A = _BV(WGM21) | _BV(WGM20);
TCCR2B = _BV(CS21);
Serial.begin(9600); //Seri port ile haberleşmemizi başlatıyoruz.
Serial.println(“Started”);
esp.begin(115200); //ESP8266 ile seri haberleşmeyi başlatıyoruz.
esp.println(“AT”); //AT komutu ile modül kontrolünü yapıyoruz.
Serial.println(“AT Yollandı”);
while(!esp.find(“OK”)){ //Modül hazır olana kadar bekliyoruz.
esp.println(“AT”);
Serial.println(“ESP8266 Bulunamadı.”);
}
Serial.println(“OK Komutu Alındı”);
esp.println(“AT+CWMODE=1”); //ESP8266 modülünü client olarak ayarlıyoruz.
while(!esp.find(“OK”)){ //Ayar yapılana kadar bekliyoruz.
esp.println(“AT+CWMODE=1”);
Serial.println(“Ayar Yapılıyor…”);
}
Serial.println(“Client olarak ayarlandı”);
Serial.println(“Aga Baglaniliyor…”);
esp.println(“AT+CWJAP=”"+agAdi+"",""+agSifresi+"""); //Ağımıza bağlanıyoruz.
while(!esp.find(“OK”)); //Ağa bağlanana kadar bekliyoruz.
Serial.println(“Aga Baglandi.”);
delay(1000);
esp.println(“AT+CIPSTART=“TCP”,”"+ip+"",80"); //Thingspeak’e bağlanıyoruz.
if(esp.find(“Error”)){ //Bağlantı hatası kontrolü yapıyoruz.
Serial.println(“AT+CIPSTART Error”);
}
//DHT11.read(dht11Pin);
ad=“1”;
soyad=“2”;
String veri = “GET https://api.thingspeak.com/update?api_key=xxxxxxxxxx”; //Thingspeak komutu. Key kısmına kendi api keyimizi yazıyoruz. //Göndereceğimiz sıcaklık değişkeni
veri += “&field1=”;
veri += String(ad);
veri += “&field2=”;
veri += String(soyad); //Göndereceğimiz nem değişkeni
veri += “\r\n\r\n”; //Göndereceğimiz nem değişkeni
esp.print(“AT+CIPSEND=”); //ESP’ye göndereceğimiz veri uzunluğunu veriyoruz.
esp.println(veri.length()+2);
delay(2000);
if(esp.find(">")){ //ESP8266 hazır olduğunda içindeki komutlar çalışıyor.
esp.print(veri); //Veriyi gönderiyoruz.
Serial.println(veri);
Serial.println(“Veri gonderildi.”);
delay(1000);
}
Serial.println(“Baglantı Kapatildi.”);
esp.println(“AT+CIPCLOSE”); //Bağlantıyı kapatıyoruz
delay(1000);
}
void loop(){
_loop();
}
void _delay(float seconds){
long endTime = millis() + seconds * 1000;
while(millis() < endTime)_loop();
}
void _loop(){
}
Both of them dont work. What is the problem?