Sensebender programmer is not responding
-
Hi,
I have an intermittent problem where I can not always upload my sketch to my Sensebender.
The Sensebender is running a modified version of the Sensebender sketch and shows the expected debug on the serial monitor, indicating that it has completed the setup, and then moved into the main loop and reading the sensors with reasonable values. I just don't seem to be able to upload a new version of the sketch reliably.
What has worked previously has been to upload the ClearEPROM sketch, and when that is sucessful, upload my modified Sensebender sketch. This is not working now.
In my ignorance, it feels like there is some timing factor going that would allow me to upload the ClearEPROM sketch.
Since I can see the serial debug, I assume the problem isn't with my FTDI USB adaptor.
I've checked the soldering on the header for the FTDI and that seems good, and I assume it must be because I can see the the sketch debug in the serial monitor?
I am using the Arduino 1.6.9 IDE on Arch Linux with the Mysensors 2.0.0 library. I've not modified the bootloader.
I'm using the FTDI adaptor linked from the MySensors store.
What follows is the the verbose messages from the IDE when uploading failed:
Sketch uses 21,244 bytes (69%) of program storage space. Maximum is 30,720 bytes. Global variables use 861 bytes (42%) of dynamic memory, leaving 1,187 bytes for local variables. Maximum is 2,048 bytes. /home/singlis/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino2/bin/avrdude -C/home/singlis/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino2/etc/avrdude.conf -v -patmega328p -cstk500v1 -P/dev/ttyUSB0 -b19200 -Uflash:w:/tmp/build16801fad7f0386b38002733e635aa592.tmp/SenseBender.ino.hex:i avrdude: Version 6.3, compiled on Jun 14 2016 at 17:17:01 Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/ Copyright (c) 2007-2014 Joerg Wunsch System wide configuration file is "/home/singlis/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino2/etc/avrdude.conf" User configuration file is "/home/singlis/.avrduderc" User configuration file does not exist or is not a regular file, skipping Using Port : /dev/ttyUSB0 Using Programmer : stk500v1 Overriding Baud Rate : 19200 avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00 avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x00 avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x00 avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x00 avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x00 avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x00 avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0xe8 avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0xda avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x1a avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0xc8 avrdude done. Thank you. Problem uploading to board. See http://www.arduino.cc/en/Guide/Troubleshooting#upload for suggestions.
I've also run the programmer from the command line with increased debug verbosity:
[singlis@localhost SenseBender]$ /home/singlis/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino2/bin/avrdude -v -v -v -v -C/home/singlis/.ardu ino15/packages/arduino/tools/avrdude/6.3.0-arduino2/etc/avrdude.conf -v -patmega328p -cstk500v1 -P/dev/ttyUSB0 -b19200 -Uflash:w:/tmp/buildd81c5a6658 2a8d9d1e847e29ff4d6e6b.tmp/ClearEepromConfig.ino.hex:i avrdude: Version 6.3, compiled on Jun 14 2016 at 17:17:01 Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/ Copyright (c) 2007-2014 Joerg Wunsch System wide configuration file is "/home/singlis/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino2/etc/avrdude.conf" User configuration file is "/home/singlis/.avrduderc" User configuration file does not exist or is not a regular file, skipping Using Port : /dev/ttyUSB0 Using Programmer : stk500v1 Overriding Baud Rate : 19200 avrdude: Send: 0 [30] [20] avrdude: Send: 0 [30] [20] avrdude: Send: 0 [30] [20] avrdude: ser_recv(): programmer is not responding avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00 avrdude: Send: 0 [30] [20] avrdude: ser_recv(): programmer is not responding avrdude: stk500_recv(): programmer is not responding avrdude: Send: 0 [30] [20] avrdude: Recv: . [e8] avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0xe8 avrdude: Send: 0 [30] [20] avrdude: Recv: . [9a] avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x9a avrdude: Send: 0 [30] [20] avrdude: Recv: . [1a] avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x1a avrdude: Send: 0 [30] [20] avrdude: Recv: . [c8] avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0xc8 avrdude: Send: 0 [30] [20] avrdude: Recv: . [f2] avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0xf2 avrdude: Send: 0 [30] [20] avrdude: Recv: . [c0] avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0xc0 avrdude: Send: 0 [30] [20] avrdude: Recv: . [aa] avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0xaa avrdude: Send: 0 [30] [20] avrdude: Recv: . [f2] avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0xf2 avrdude done. Thank you.
Here's the log from the IDE when an upload succeeeds:
Sketch uses 21,244 bytes (69%) of program storage space. Maximum is 30,720 bytes. Global variables use 861 bytes (42%) of dynamic memory, leaving 1,187 bytes for local variables. Maximum is 2,048 bytes. /home/singlis/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino2/bin/avrdude -C/home/singlis/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino2/etc/avrdude.conf -v -patmega328p -carduino -P/dev/ttyUSB0 -b57600 -D -Uflash:w:/tmp/build16801fad7f0386b38002733e635aa592.tmp/SenseBender.ino.hex:i avrdude: Version 6.3, compiled on Jun 14 2016 at 17:17:01 Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/ Copyright (c) 2007-2014 Joerg Wunsch System wide configuration file is "/home/singlis/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino2/etc/avrdude.conf" User configuration file is "/home/singlis/.avrduderc" User configuration file does not exist or is not a regular file, skipping Using Port : /dev/ttyUSB0 Using Programmer : arduino Overriding Baud Rate : 57600 AVR Part : ATmega328P Chip Erase delay : 9000 us PAGEL : PD7 BS2 : PC2 RESET disposition : dedicated RETRY pulse : SCK serial program mode : yes parallel program mode : yes Timeout : 200 StabDelay : 100 CmdexeDelay : 25 SyncLoops : 32 ByteDelay : 0 PollIndex : 3 PollValue : 0x53 Memory Detail : Block Poll Page Polled Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- --------- eeprom 65 20 4 0 no 1024 4 0 3600 3600 0xff 0xff flash 65 6 128 0 yes 32768 128 256 4500 4500 0xff 0xff lfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00 hfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00 efuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00 lock 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00 calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00 signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00 Programmer Type : Arduino Description : Arduino Hardware Version: 3 Firmware Version: 5.0 Vtarget : 0.3 V Varef : 0.3 V Oscillator : 28.800 kHz SCK period : 3.3 us avrdude: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.00s avrdude: Device signature = 0x1e950f (probably m328p) avrdude: reading input file "/tmp/build16801fad7f0386b38002733e635aa592.tmp/SenseBender.ino.hex" avrdude: writing flash (21244 bytes): Writing | ################################################## | 100% 4.98s avrdude: 21244 bytes of flash written avrdude: verifying flash memory against /tmp/build16801fad7f0386b38002733e635aa592.tmp/SenseBender.ino.hex: avrdude: load data flash data from input file /tmp/build16801fad7f0386b38002733e635aa592.tmp/SenseBender.ino.hex: avrdude: input file /tmp/build16801fad7f0386b38002733e635aa592.tmp/SenseBender.ino.hex contains 21244 bytes avrdude: reading on-chip flash data: Reading | ################################################## | 100% 4.17s avrdude: verifying ... avrdude: 21244 bytes of flash verified avrdude done. Thank you.
I've checked that the IDE board is 'Sensebender Micro' and the programmer is 'Arduino as ISP'
I have tried powering just using the FTDI adaptor and by a 3.3v battery source.
I have a 47uf cap on the radio. There seems to be conflicting information on the forums on if this should be 4.7uf or 47uf. I've used 47uf on the basis of what is written on the Connecting the Radio instructions.
I've tried unplugging and re-plugging in the USB adaptor multiple times, and in the process flip flopping from /dev/ttyUSB0 to /dev/ttyUSB1.
I've used minicom successfully in addition to the IDE as a serial monitor.
Here's my modified Sensebender sketch for what it's worth!
/** * The MySensors Arduino library handles the wireless radio link and protocol * between your home built sensors/actuators and HA controller of choice. * The sensors forms a self healing radio network with optional repeaters. Each * repeater and gateway builds a routing tables in EEPROM which keeps track of the * network topology allowing messages to be routed to nodes. * * Created by Henrik Ekblad <henrik.ekblad@mysensors.org> * Copyright (C) 2013-2015 Sensnology AB * Full contributor list: https://github.com/mysensors/Arduino/graphs/contributors * * Documentation: http://www.mysensors.org * Support Forum: http://forum.mysensors.org * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * version 2 as published by the Free Software Foundation. * ******************************* * * REVISION HISTORY * Version 1.0 - Thomas Bowman Mørch * * DESCRIPTION * Default sensor sketch for Sensebender Micro module * Act as a temperature / humidity sensor by default. * * If A0 is held low while powering on, it will enter testmode, which verifies all on-board peripherals * * Battery voltage is as battery percentage (Internal message), and optionally as a sensor value (See defines below) * * Version 1.3 - Thomas Bowman Mørch * Improved transmission logic, eliminating spurious transmissions (when temperatuere / humidity fluctuates 1 up and down between measurements) * Added OTA boot mode, need to hold A1 low while applying power. (uses slightly more power as it's waiting for bootloader messages) * * Version 1.4 - Thomas Bowman Mørch * * Corrected division in the code deciding whether to transmit or not, that resulted in generating an integer. Now it's generating floats as expected. * Simplified detection for OTA bootloader, now detecting if MY_OTA_FIRMWARE_FEATURE is defined. If this is defined sensebender automaticly waits 300mS after each transmission * Moved Battery status messages, so they are transmitted together with normal sensor updates (but only every 60th minute) * */ // Enable debug prints to serial monitor //#define MY_DEBUG // Define a static node address, remove if you want auto address assignment //#deine MY_NODE_ID 3 // Enable and select radio type attached #define MY_RADIO_NRF24 //#define MY_RADIO_RFM69 // Enable to support OTA for this node (needs DualOptiBoot boot-loader to fully work) #define MY_OTA_FIRMWARE_FEATURE #include <SPI.h> #include <MySensors.h> #include <Wire.h> #include <SI7021.h> #include <BH1750.h> #ifndef MY_OTA_FIRMWARE_FEATURE #include "drivers/SPIFlash/SPIFlash.cpp" #endif #include <EEPROM.h> #include <sha204_lib_return_codes.h> #include <sha204_library.h> #include <RunningAverage.h> #include <avr/power.h> // Uncomment the line below, to transmit battery voltage as a normal sensor value #define BATT_SENSOR 199 #define RELEASE "1.4" #define AVERAGES 2 // Child sensor ID's #define CHILD_ID_TEMP 1 #define CHILD_ID_HUM 2 #define CHILD_ID_MOT 3 #define CHILD_ID_LIGHT 4 // How many milli seconds between each measurement #define MEASURE_INTERVAL 60000 // How many milli seconds should we wait for OTA? #define OTA_WAIT_PERIOD 300 // FORCE_TRANSMIT_INTERVAL, this number of times of wakeup, the sensor is forced to report all values to the controller #define FORCE_TRANSMIT_INTERVAL 30 // When MEASURE_INTERVAL is 60000 and FORCE_TRANSMIT_INTERVAL is 30, we force a transmission every 30 minutes. // Between the forced transmissions a tranmission will only occur if the measured value differs from the previous measurement // HUMI_TRANSMIT_THRESHOLD tells how much the humidity should have changed since last time it was transmitted. Likewise with // TEMP_TRANSMIT_THRESHOLD for temperature threshold. #define HUMI_TRANSMIT_THRESHOLD 0.5 #define TEMP_TRANSMIT_THRESHOLD 0.5 #define LUX_TRANSMIT_THRESHOLD 10 // Pin definitions #define TEST_PIN A0 #define LED_PIN A2 #define ATSHA204_PIN 17 // A3 #define MOT_PIN 3 // The digital input you attached your motion sensor. (Only 2 and 3 generates interrupt!) #define LIGHT_PIN 4 // LED lights const int sha204Pin = ATSHA204_PIN; atsha204Class sha204(sha204Pin); SI7021 humiditySensor; SPIFlash flash(8, 0x1F65); BH1750 lightSensor; // Sensor messages MyMessage msgHum(CHILD_ID_HUM, V_HUM); MyMessage msgTemp(CHILD_ID_TEMP, V_TEMP); MyMessage msgMot(CHILD_ID_MOT, V_TRIPPED); MyMessage msgLight(CHILD_ID_LIGHT, V_LIGHT_LEVEL); #ifdef BATT_SENSOR MyMessage msgBatt(BATT_SENSOR, V_VOLTAGE); #endif // Global settings int measureCount = 0; int sendBattery = 0; boolean isMetric = true; boolean highfreq = true; boolean transmission_occured = false; // Storage of old measurements float lastTemperature = -100; int lastHumidity = -100; long lastBattery = -100; boolean lastMot = false; uint16_t lastLux = -100; RunningAverage raHum(AVERAGES); /**************************************************** * * Setup code * ****************************************************/ void setup() { pinMode(LED_PIN, OUTPUT); digitalWrite(LED_PIN, LOW); Serial.begin(115200); Serial.print(F("Sensebender Micro FW ")); Serial.print(RELEASE); Serial.flush(); // First check if we should boot into test mode pinMode(TEST_PIN,INPUT); digitalWrite(TEST_PIN, HIGH); // Enable pullup if (!digitalRead(TEST_PIN)) testMode(); // Make sure that ATSHA204 is not floating pinMode(ATSHA204_PIN, INPUT); digitalWrite(ATSHA204_PIN, HIGH); digitalWrite(TEST_PIN,LOW); digitalWrite(LED_PIN, HIGH); humiditySensor.begin(); lightSensor.begin(); digitalWrite(LED_PIN, LOW); Serial.flush(); Serial.println(F(" - Online!")); isMetric = getConfig().isMetric; Serial.print(F("isMetric: ")); Serial.println(isMetric); raHum.clear(); sendTempHumidityMeasurements(false); sendBattLevel(false); #ifdef MY_OTA_FIRMWARE_FEATURE Serial.println("OTA FW update enabled"); #endif } void presentation() { sendSketchInfo("Sensebender Micro", RELEASE); present(CHILD_ID_TEMP,S_TEMP); present(CHILD_ID_HUM,S_HUM); present(CHILD_ID_MOT, S_MOTION); present(CHILD_ID_LIGHT, S_LIGHT_LEVEL); #ifdef BATT_SENSOR present(BATT_SENSOR, S_POWER); #endif } /*********************************************** * * Main loop function * ***********************************************/ void loop() { measureCount ++; sendBattery ++; bool forceTransmit = false; transmission_occured = false; #ifndef MY_OTA_FIRMWARE_FEATURE if ((measureCount == 5) && highfreq) { clock_prescale_set(clock_div_8); // Switch to 1Mhz for the reminder of the sketch, save power. highfreq = false; } #endif if (measureCount > FORCE_TRANSMIT_INTERVAL) { // force a transmission forceTransmit = true; measureCount = 0; } sendTempHumidityMeasurements(forceTransmit); sendMotionMeasurements(forceTransmit); sendLightLevel(forceTransmit); if (sendBattery > 60) { sendBattLevel(forceTransmit); // Not needed to send battery info that often sendBattery = 0; } #ifdef MY_OTA_FIRMWARE_FEATURE if (transmission_occured) { wait(OTA_WAIT_PERIOD); } #endif // Sleep until interrupt comes in on motion sensor. sleep(digitalPinToInterrupt(MOT_PIN), CHANGE, MEASURE_INTERVAL); } /********************************************* * * Sends temperature and humidity from Si7021 sensor * * Parameters * - force : Forces transmission of a value (even if it's the same as previous measurement) * *********************************************/ void sendTempHumidityMeasurements(bool force) { bool tx = force; si7021_env data = humiditySensor.getHumidityAndTemperature(); raHum.addValue(data.humidityPercent); float diffTemp = abs(lastTemperature - (isMetric ? data.celsiusHundredths : data.fahrenheitHundredths)/100.0); float diffHum = abs(lastHumidity - raHum.getAverage()); Serial.print(F("TempDiff :"));Serial.println(diffTemp); Serial.print(F("HumDiff :"));Serial.println(diffHum); if (isnan(diffHum)) tx = true; if (diffTemp > TEMP_TRANSMIT_THRESHOLD) tx = true; if (diffHum > HUMI_TRANSMIT_THRESHOLD) tx = true; if (tx) { measureCount = 0; float temperature = (isMetric ? data.celsiusHundredths : data.fahrenheitHundredths) / 100.0; int humidity = data.humidityPercent; Serial.print("T: ");Serial.println(temperature); Serial.print("H: ");Serial.println(humidity); send(msgTemp.set(temperature,1)); send(msgHum.set(humidity)); lastTemperature = temperature; lastHumidity = humidity; transmission_occured = true; if (sendBattery > 60) { sendBattLevel(true); // Not needed to send battery info that often sendBattery = 0; } } } /******************************************** * * Sends battery information (battery percentage) * * Parameters * - force : Forces transmission of a value * *******************************************/ void sendBattLevel(bool force) { if (force) lastBattery = -1; long vcc = readVcc(); if (vcc != lastBattery) { lastBattery = vcc; #ifdef BATT_SENSOR float send_voltage = float(vcc)/1000.0f; send(msgBatt.set(send_voltage,3)); #endif // Calculate percentage vcc = vcc - 1900; // subtract 1.9V from vcc, as this is the lowest voltage we will operate at long percent = vcc / 14.0; sendBatteryLevel(percent); transmission_occured = true; } } void sendMotionMeasurements(bool force) { bool tx = force; // Read digital motion value bool tripped = digitalRead(MOT_PIN) == HIGH; Serial.print("Motion: "); Serial.println(tripped); if (tripped != lastMot) tx = true; if (tx) { send(msgMot.set(tripped?"1":"0")); // Send tripped value to gw lastMot = tripped; transmission_occured = true; } } void sendLightLevel(bool force) { bool tx = force; // Read light level uint16_t lux = lightSensor.readLightLevel(); uint16_t diffLux = abs(lastLux - lux); if (diffLux > LUX_TRANSMIT_THRESHOLD) tx = true; Serial.print(F("TempLux :")); Serial.println(diffLux); if (tx) { Serial.print("Lux: "); Serial.println(lux); send(msgMot.set(lux)); // Send tripped value to gw lastLux = lux; transmission_occured = true; } } /******************************************* * * Internal battery ADC measuring * *******************************************/ long readVcc() { // Read 1.1V reference against AVcc // set the reference to Vcc and the measurement to the internal 1.1V reference #if defined(__AVR_ATmega32U4__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) ADMUX = _BV(REFS0) | _BV(MUX4) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1); #elif defined (__AVR_ATtiny24__) || defined(__AVR_ATtiny44__) || defined(__AVR_ATtiny84__) ADMUX = _BV(MUX5) | _BV(MUX0); #elif defined (__AVR_ATtiny25__) || defined(__AVR_ATtiny45__) || defined(__AVR_ATtiny85__) ADcdMUX = _BV(MUX3) | _BV(MUX2); #else ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1); #endif delay(2); // Wait for Vref to settle ADCSRA |= _BV(ADSC); // Start conversion while (bit_is_set(ADCSRA,ADSC)); // measuring uint8_t low = ADCL; // must read ADCL first - it then locks ADCH uint8_t high = ADCH; // unlocks both long result = (high<<8) | low; result = 1125300L / result; // Calculate Vcc (in mV); 1125300 = 1.1*1023*1000 return result; // Vcc in millivolts } /**************************************************** * * Verify all peripherals, and signal via the LED if any problems. * ****************************************************/ void testMode() { uint8_t rx_buffer[SHA204_RSP_SIZE_MAX]; uint8_t ret_code; byte tests = 0; digitalWrite(LED_PIN, HIGH); // Turn on LED. Serial.println(F(" - TestMode")); Serial.println(F("Testing peripherals!")); Serial.flush(); Serial.print(F("-> SI7021 : ")); Serial.flush(); if (humiditySensor.begin()) { Serial.println(F("ok!")); tests ++; } else { Serial.println(F("failed!")); } Serial.flush(); Serial.print(F("-> Flash : ")); Serial.flush(); if (flash.initialize()) { Serial.println(F("ok!")); tests ++; } else { Serial.println(F("failed!")); } Serial.flush(); Serial.print(F("-> SHA204 : ")); ret_code = sha204.sha204c_wakeup(rx_buffer); Serial.flush(); if (ret_code != SHA204_SUCCESS) { Serial.print(F("Failed to wake device. Response: ")); Serial.println(ret_code, HEX); } Serial.flush(); if (ret_code == SHA204_SUCCESS) { ret_code = sha204.getSerialNumber(rx_buffer); if (ret_code != SHA204_SUCCESS) { Serial.print(F("Failed to obtain device serial number. Response: ")); Serial.println(ret_code, HEX); } else { Serial.print(F("Ok (serial : ")); for (int i=0; i<9; i++) { if (rx_buffer[i] < 0x10) { Serial.print('0'); // Because Serial.print does not 0-pad HEX } Serial.print(rx_buffer[i], HEX); } Serial.println(")"); tests ++; } } Serial.flush(); Serial.println(F("Test finished")); if (tests == 3) { Serial.println(F("Selftest ok!")); while (1) // Blink OK pattern! { digitalWrite(LED_PIN, HIGH); delay(200); digitalWrite(LED_PIN, LOW); delay(200); } } else { Serial.println(F("----> Selftest failed!")); while (1) // Blink FAILED pattern! Rappidly blinking.. { } } }
Thanks,
Simon.
-
I have the same problem. Any suggestions yet ?
-
@simbo said:
I was never able to sort out the programming issue using the stock Linux Arduino IDE package.
I spent some time installing the PlatformIO package on Arch Linux which allowed me to reliably upload to the sense bender. It was a bit of mucking about to get it installed, but it seems to work for me. Plus give me the command line any day over an IDE!
-
Hi simbo,
I run into similar problems. I was not able to flash one of my sensebenders once. I use an FTDI with 3,3v power supply.
I do get the serial debug output from the sensebender when running, but I am not able to flash any new sketch.In the board configuration I use the sensebender 8Mhz. I ordered from itead.
What board do you use in platform.io to flash?
I do not have an ISP. Do I need it to flash the sketch?
Thanks.
-
please note that you have to set the baudrate to 57k6.
Normal arduinos are using 112k, but since we are running at 8Mhz, and with internal RC oscillator, we decided to keep it safe, and use a lower baudrate.
In arduino, you can choose SenseBender Micro as target board (given that you have installed the board support packages from mysensors, in your arduino environment as describet here)
-
Thanks for the quick response.
Thats what I am using. Settings in Arduino IDE are:
board: Sensebender Micro
processor: Atmega328 8MhzEdit: I tried another FTDI, same result Both are 3.3v btw
Edit2: I was able to flash the sensebender with an ISP. Flashing via FTDI still not working.