Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
Stavros Korokithakis
@skorokithakis
haha
geman220
@geman220
Should platformio have made the src/main.ino?
Stavros Korokithakis
@skorokithakis
i don't think it does
just use mine
geman220
@geman220
Ah okay just making sure I didn't miss something
Stavros Korokithakis
@skorokithakis
nope, i think it makes one if you use the blink template
you can use templates, i seem to recall
hey, @ivankravets, can i use a git repo as a template? i'd like to do something like platformio init --from-repo=git@github.com:skorokithakis/wifi-template.git
geman220
@geman220

Where are these includes in your program coming from?

#include "PubSubClient.h"
#include <ESP8266WiFi.h>
#include <ESP8266mDNS.h>
#include <WiFiUdp.h>
#include <ArduinoOTA.h>
#include <DHT.h>

Do I need to physically get those? Are they just default Arudino IDE libraries? If so I can just look up the included servo library and add it correct?

Stavros Korokithakis
@skorokithakis
oh yes, sec
add to your platformio.ini:
targets = upload
lib_install = 19,89
build_flags = -DMQTT_MAX_PACKET_SIZE=1024
upload_flags = -a OTAPASS
upload_port = 192.168.10.144
it'll download and install the libraries
change otapass to your otapass and the IP to your wifi ip
geman220
@geman220
Sorry, OTA pass? Is that just the wireless password? I was confused about that in the program as well because there is WIFI_PASS is OTA_PASS
Stavros Korokithakis
@skorokithakis
OTA pass is authentication for flashing over wifi
so random people can't just drive by and flash new firmware
running this will make your ESP flashable over wifi
so you don't need to have it connected to the pc
geman220
@geman220
Oh, I see. Makes more sense now
Stavros Korokithakis
@skorokithakis
i need to take some time and write all this up
geman220
@geman220
upload_port = 192.168.10.144 is that generic or will I need to modify that for my subnet

And just so I'm clear in my own head...

[env:nodemcuv2]
platform = espressif
framework = arduino
board = nodemcuv2
targets = upload
lib_install = 19,89
build_flags = -DMQTT_MAX_PACKET_SIZE=1024
upload_flags = -a pass
upload_port = 192.168.10.144

This will download the libraries to the ESP, does this include all included Arduino IDE libraries? So I can add whatever library I want and it will download it to the ESP?

Ivan Kravets
@ivankravets
@skorokithakis hi. We have an issue for that in PlatformIO 3.0
Stavros Korokithakis
@skorokithakis
ah, fantastic
@geman220, you need to change the IP, yes
it'll download everything, yes
you can find libraries with platformio lib search i think
have a look at the docs
geman220
@geman220
And that's the IP of what? Each ESP?
Ivan Kravets
@ivankravets
platformio/platformio#446
geman220
@geman220

I've added:

#include <Servo.h>

and

Servo myservo;  // create servo object to control a servo
int pos = 0;    // variable to store the servo position
void setup() {
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
}
Stavros Korokithakis
@skorokithakis
seems reasonable
each ESP, yes
geman220
@geman220

What's the most logical way to store this so I can just call it in the MQTT section?

void loop() {
  for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees
    // in steps of 1 degree
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(15);                       // waits 15ms for the servo to reach the position
  }
}

So when this runs:

    if (command == "forward") {
        motor(1, FORWARD, power);
        motor(2, FORWARD, power);

I could have something like this:

  if (command == "open") {
        myservo(open180);
    }

Or am I off track?

geman220
@geman220
I'll have to wait for my servo to get here but I think the code is
// Receive a message from MQTT and act on it.
void mqttCallback(char* chTopic, byte* chPayload, unsigned int length) {
    chPayload[length] = '\0';
    String payload = String((char*)chPayload);

    String command = getValue(payload, ' ', 0).c_str();
    int power = getValue(payload, ' ', 1).toInt();

    mqttPublish(LOG_TOPIC, String("Command ") + command + String(" received."));

    if (command == "open") {
        myservo.write(180);
    } else if (command == "close") {
        myservo.write(0);
    }
}
Stavros Korokithakis
@skorokithakis
that looks reasonable, i've never used a servo so i don't know, but i assume the first goes to 180' and the second back to 0'
geman220
@geman220
Yea what I've read online is the max setting is 180 and the lowest setting is 0. I can remove the potentiometer if I need to and setting it to 180 will essentially rotate it right forever and 0 will rotate it left forever. If I need to remove the potentiometer I'll have to add something like
    if (command == "open") {
        myservo.write(180);
        delay(2000);
    } else if (command == "close") {
        myservo.write(0);
        delay(2000);
    }
I think at least
Stavros Korokithakis
@skorokithakis
@ystrem i've been wanting a gsm module, have you used it?
@geman220 if you only need to rotate to 180 degrees, i think keeping the potentiometer would be good
@geman220 the servos i got could rotate with accuracy forever
so they can rotate for 1000 degrees if you want
ystrem
@ystrem
@skorokithakis nope
Stavros Korokithakis
@skorokithakis
@ystrem hmm, i got one that's more ready-to-use, it had a sim card slot, antenna, etc
but that looks interesting
geman220
@geman220
@skorokithakis I plan to leave the potentionmeter unless I need it to rotate more. Or I'll buy a new servo that has full rotation
Stavros Korokithakis
@skorokithakis
@geman220 yeah, i think that's a better solution
@geman220 how many D1s did you get?