R18 is a ESP32 based robot that can be controlled via a Browser interface.
All details on:
https://homofaciens.de/technics-robots-R18-construction_en.htm

------------------------------------------------------------------------
Software upload via Arduino UNO: 

To get the software on the ESP32 boards, you need an Arduino UNO as a programmer and the Arduino IDE as software package. 

Wire up the Arduino Uno and the ESP32 as shown in the drawing:
Arduino +5V to ESP32 +5V
Arduino GND to ESP32 GND
Arduino Pin 0 to ESP32 Pin UOR
Arduino Pin 0 to ESP32 Pin UOT
Arduino GND to ESP32 GND
Before uploading the code, pin GND and IO0 on the ESP32 board must be bridged. Then press the reset button on the ESP32 board. After a successful upload, the bridge must be removed and reset must be pressed again. The ESP32 will then boot with the new firmware and should log into the WLAN. 

------------------------------------------------------------------------
Preparing the Arduino IDE and uploading code:

The instruction is for Linux. I have tested the procedure with Linux Mint 20.4 and RaspberryOS.

    The Arduino IDE can be installed with the commands "sudo apt-get update" followed by "sudo apt-get install arduino".
    Under Linux Mint 20.4 I had to install additional packages with "sudo apt install python-is-python3" and "sudo apt install python3-serial".
    Now, open the Arduino IDE and go to file->Preferences. Now paste the below link in the board manager URL:
    https://dl.espressif.com/dl/package_esp32_index.json
    and confirm the dialog with "OK".
    Go to Tools->Board->Board manager. Search for ESP32 and click on "Install".
    From Tools->Port select the port with your Arduino UNO.
    Go to Tools->Board->ESP32 Arduino-> and select "ESP32 Wrover Module". In my case the list "ESP32 Arduino" was available twice, the longer list was the correct one for me.
    Go to Tools->Upload Speed and select "115200".
    Go to Tools->Flash Frequency and select "40MHz".
    Go to Tools->Flas Mode and select "QIO".
    Go to Tools->Partition Scheme and select "Huge App (3mb No OTA)".
    Go to Tools->Programmer and select "AVR ISP". If that list is empty, it also works without a selection.
    Now, close the Arduino IDE and reopen with the Arduino sketch from the download package.
    You must insert the SSID and the password in the source code of the sketch:
    const char* ssid = "Type-your-SSID-here";
    const char* password = "Type-your-password-here";

    Also, the IP address of your Rover has (eventually) to be changed to meet your network:
    // Set your Static IP address
    IPAddress local_IP(192, 168, 2, 184);
    // Set your Gateway IP address
    IPAddress gateway(192, 168, 2, 1);

    For the IP address, the first three numbers must correspond to the numbers used in your WLAN, only the fourth number can be freely selected! You can find out the first 3 numbers by entering the command "ifconfig" in a terminal window on your (Linux) PC. As a result you get several lines and one of them says something like:
    inet 192.168.2.107 netmask 255.255.255.0 broadcast 192.168.2.255
    The first three numbers after inet or broadcast are the first three numbers that you have to enter in the sketch in the two lines, the fourth number should then be "184" (local_IP) or "1" (gateway). Note that in the source code, the four numbers of the addresses must be separated by commas.
    Compile and upload the new code via Sketch->Upload. That will take a couple of minutes.
    If the program is uploaded successfully, the bridge from GND to pin IO0 on the ESP32 board can be removed and reset can be pressed again. The ESP32 will then boot with the new firmware and should log into your WLAN. If this is successful, the red LED on the back of the ESP32 board flashes once for half a second.
    Now open a browser on a computing device that is in the same WLAN and enter the address as the target:
    http://192.168.2.184
    "http://" must be in front of the IP address, otherwise the browser tries to establish an encrypted connection (https://) by default, which does not work because the ESP32 web server does not support encryption.
    The control interface should now be visible in the browser and you can start the video stream or switch the LED on and off. The fully programmed ESP32 can now be installed and wired on the rover.

------------------------------------------------------------------------
"It doesn't work!"
... is not a statement to which I can answer anything other than "Yes, and?"
In each of the above steps, the individual programs give an output message on your screen. Read this information, because that's what the coders write them for! So if something goes wrong, you can see the reason in the messages. If you expect help from me, you have to give me:

At which step an error was issued
and
Which message was to be read.
It is also good to know which operating system (version?) You are working with - I can only really help you with Linux.

You can get in contact with me by leaving a comment on this page or by sending me an email. You can find the address in the column contact.

The statement "It works!" does not require any further information and I am delighted to hear or read it.

Have fun!
